Skip to main content

Email deliverability troubleshooting

When mail goes to spam or bounces: diagnose authentication, reputation and configuration.

"It sent but they did not get it" has a short list of causes. Work through them in order.

1. Did it actually send?

Check your provider's logs / the panel's mail queue. A message stuck in the queue means delivery never started — usually a connection or authentication problem on the sending server.

2. Is authentication correct?

bash
dig example.com TXT +short            # SPF present and syntactically valid?
dig _dmarc.example.com TXT +short     # DMARC present?
dig selector._domainkey.example.com TXT +short   # DKIM key present?

Use the SPF/DMARC checker. Common faults: two SPF records, a lookup that exceeds the 10-lookup limit, -all before a sender is authorised, a DKIM key published at the wrong selector.

3. Reputation

Send a test to a mailbox you control at Gmail/Outlook and read the full headers. Look for Authentication-Results — it says whether SPF, DKIM and DMARC passed. It also often explains a spam filing.

Check whether your sending IP is on a blocklist: DNS blacklist checker.

4. Reverse DNS

Your PTR must match the hostname your mail server announces itself as (EHLO). Mismatch is a common silent spam-filter trigger. Set PTR with your provider — it cannot be set in your own DNS zone.

5. Content and behaviour

Even with perfect authentication, these get you filtered:

  • Sending to old or purchased lists (the fastest way to a blocklist).

  • Sudden spikes in volume from a domain with no history.

  • Shorteners, all-caps subjects, deceptive claims, too many images, too few words.

  • A single domain sending both transactional and bulk marketing mail.

6. Warm up sending

A new IP or domain has no reputation. Ramp volume gradually, send to engaged recipients first, and process bounces and complaints promptly.

The step-by-step test

  1. Send from your domain to a Gmail/Outlook address you control.

  2. View full headers → Authentication-Results.

  3. If SPF/DKIM/DMARC fail → fix DNS first.

  4. If all pass but it is in spam → reputation/content/PTR.

  5. If it bounces → read the bounce code; it says which rule triggered.

Related reading