Email testing checklist
Seventeen checks before a service starts sending mail, or before it changes how it sends. The published records come first, because every later reading is compared against them, and because the failure they cause has no error message: a record that parses and a record that is correct look the same from the sending side. The middle group covers the connection, which is where a test environment quietly sends real mail to real people. The last group is the message a recipient opens, checked as the bytes that arrive rather than as the template that was written. Run everything against a domain and a server you own.
17 checksabout 150 min end to end
What receivers will read before they read the message
- How to check SPF record
Read the whole record rather than the part a grep cuts off, since one qualifier decides between a mark and a rejection. - How to check SPF lookup limit
The count that matters is the one after every include is expanded, and it grows when a provider edits a record you do not own. - How to check DKIM record
A published key that does not match the signer produces a valid-looking signature that fails every verification. - How to check DKIM selector
No query lists a domain's selectors, so the one in use has to come from a message the domain actually sent. - How to check DMARC record
The policy decides what a receiver does with the two results above, and p=none decides nothing. - How to check DMARC alignment
A passing SPF or DKIM result that is not aligned with the visible sender does not satisfy DMARC, which is the failure that surprises people.
Where the mail goes and how it gets there
- How to check mx records
Mail routing fails without an error page, so a missing or misordered MX reads as silence. - How to check ptr record
The reverse record belongs to whoever owns the address block rather than to the zone, which is why it is the usual orphan after a move. - How to test SMTP connection
Confirm the server answers, greets and advertises what the sending code expects before blaming the sending code. - Test SMTP with STARTTLS
An advertised STARTTLS that fails to negotiate downgrades to plaintext without stopping the send. - How to check MTA-STS
The policy is what turns an opportunistic upgrade into a requirement, and it is served over HTTPS rather than published in DNS.
Send one and read what arrives
- How to test email sending in a test environment
The first thing to establish is that a test environment cannot reach a real recipient, which is a configuration question rather than a discipline question. - How to check if an email has passed SPF DKIM and DMARC
The receiving server writes its own verdict into the headers, which is the only reading that reflects what a receiver actually did. - How to verify DKIM signature
Verifying against the message tests the signer, the canonicalisation and the published key together, which reading the record alone cannot.
The message the recipient opens
- How to test transactional email rendering
What arrives is the bytes after the sending library has rewritten them, which is frequently not the template that was reviewed. - How to check List-Unsubscribe header
The header is what mailbox providers surface as a one-click option, and its absence pushes recipients towards the spam button instead. - How to check if email bounced
A bounce that nothing reads turns a delivery failure into a silent one, and repeated sending to a dead address is what costs a sender its reputation.
Take it with you
The file is the same list as Markdown checkboxes, ready to paste into a release ticket or a pull request description.
Ticks are kept in this browser only. They are not sent anywhere and other people do not see them.