Email is not arriving
Start with the bounce message if there is one. It usually names the problem in its first few lines, and most of the rest of this page is about understanding what it said.
Sending or receiving?
These are two separate problems with separate causes, so be clear which one you have.
- Your mail isn't reaching other people. It bounces back, or they say it never came, or it lands in their spam. That is usually about how your domain proves you are allowed to send.
- Other people's mail isn't reaching you. They get a bounce, or nothing happens at all. That is usually about where your domain says mail should be delivered.
Read the bounce
A bounce is the "undeliverable" or "delivery failure" email that comes back to you. Somewhere in it is a three digit code, often followed by a longer one such as 550 5.7.1. A code starting with 5 is a permanent refusal. A code starting with 4 is temporary and the sending server will keep trying for a while.
Or skip the reading: paste the whole bounce into the bounce explainer and it tells you what went wrong and what to do.
| The bounce mentions | It usually means |
|---|---|
| User unknown, no such user, address rejected | The address doesn't exist. Check the spelling, then check with the recipient. |
| Mailbox full, quota exceeded | The recipient's mailbox has no room. If it's your own mailbox, delete or archive mail. |
| SPF, DKIM, DMARC, not authorised, unauthenticated | The receiving server doesn't believe you are allowed to send for your domain. See the records below. |
| Blocked, listed, poor reputation | The server that sent your mail is on a blocklist. If you use a mail provider, tell them. If your mail goes out through your web host, that shared server may have been used for spam by somebody else. |
The four records that decide where mail goes
All four live in your domain's DNS, wherever that is managed. Your mail provider tells you exactly what each should contain.
-
MX: where your mail is delivered
Points at the servers that accept mail for your domain. If you have moved to a new mail provider and these still point at the old one, mail keeps going there.
-
SPF: who may send as you
A text record starting
v=spf1that lists the services allowed to send mail from your domain. Every service that sends as you needs to be in it: your mailboxes, your newsletter tool, your booking system, your website. -
DKIM: a signature on each message
Your mail provider signs each message, and publishes the key to check the signature in your DNS. Receiving servers use it to confirm the message wasn't forged or altered on the way.
-
DMARC: what to do when the checks fail
A text record at
_dmarcon your domain. It tells receiving servers whether to accept, quarantine or reject mail that fails, and where to send reports. Start with a policy ofnoneand tighten it once the reports show your own mail passing.
Put together, they look something like this. The names are examples; yours come from your provider.
example.co.uk. MX 10 mail.provider.example.
example.co.uk. TXT "v=spf1 include:spf.provider.example ~all"
_dmarc.example.co.uk. TXT "v=DMARC1; p=none; rua=mailto:reports@example.co.uk"
Gmail and Microsoft's consumer mail now junk or refuse a great deal of mail that fails these checks, and they require large senders to have all three of SPF, DKIM and DMARC. A small business that never set them up can find its mail quietly going to spam.
Only ever one SPF record
The commonest single mistake. A new service tells you to "add this SPF record", so a second record starting v=spf1 appears beside the first. Two is an error, and receiving servers treat the whole check as failed. Merge them into one record instead. The SPF merger does it for you, and can start from the records your domain has now.
There is also a limit on how many other services one SPF record can refer to, ten lookups in all. A record that has grown over the years can pass that limit without anybody noticing.
Mail from your website's contact form
A contact form often sends its message from the web server, using your domain as the sender. The web server isn't in your SPF record and doesn't sign with your DKIM key, so the message looks forged and lands in spam, or disappears.
The fix is to make the website send through your real mail provider, using a proper login, or through a sending service that is included in your SPF record and signs its mail. WordPress has well known plugins for the first.
Mail that isn't reaching you
- Check the MX records point at the provider you use now. After a move they are often left pointing at the old one.
- Check spam and quarantine. Microsoft 365 holds suspect mail in a quarantine that isn't your junk folder, and it has to be looked at separately.
- Check the mailbox isn't full.
- Check for rules you didn't create. A mailbox that has been broken into often gets a rule that forwards or deletes incoming mail, so that the owner doesn't notice. If you find one, change the password and turn on two step sign in straight away.
Checking the records yourself
These work in the Command Prompt on Windows and the Terminal on a Mac. Put your own domain in place of the example.
nslookup -type=mx example.co.uk
nslookup -type=txt example.co.uk
nslookup -type=txt _dmarc.example.co.uk
The first shows where mail is delivered. The second shows the SPF record among any others, and you are looking for exactly one line containing v=spf1. The third shows the DMARC record, if there is one.
If you would rather somebody sorted it
Ask me
If you would rather somebody set it up properly, I provide mailboxes at your own domain, with the records above done for you and your existing mail moved across.
Business email, set up by a person, or write to info@dalaric.com and say what's wrong.
Short answers
Questions people actually ask
What does my bounce message mean?
Paste the whole thing into the bounce explainer. It reads the codes and the wording and tells you what went wrong, whose problem it is and what to do. To read one yourself, look for a code like 550 5.1.1: what the codes mean.
Why are my emails going to spam?
Most often because the receiving server cannot confirm you are allowed to send from your domain. That is what the SPF, DKIM and DMARC records are for, and a domain missing one of them, or with two SPF records, is treated with suspicion. The four records, explained.
Can I have two SPF records on my domain?
No. Two records starting v=spf1 is an error, and a receiving server treats the whole check as failed. When you add a new service that sends as you, add it to the existing record rather than creating a second one. The SPF merger builds the combined record.
My emails bounce when I send to Gmail addresses but arrive everywhere else. Why?
Gmail and Microsoft's consumer mail are the strictest about authentication, so they are where a missing or broken record shows first. Read the bounce: it will usually say whether the problem is SPF, DKIM or DMARC, and it often includes a link to Google's explanation.
Somebody is sending emails that look like they come from my address.
First look in your Sent folder. If the messages are there, your mailbox has been broken into: change the password, turn on two step sign in, and check for forwarding rules you did not create. If they are not there, somebody is forging your address, and a DMARC record with a policy of quarantine or reject is how you tell other servers to refuse them.
More guides
The browser says my site is not secure
What the warning actually means, and the five things that cause it.
My WordPress site has been hacked
The first hour, in order, and the one thing not to do.
Who actually controls your domain
Owning a domain and being able to change it are two different things.