Skip to content
iBlockSpam
Free tool

Email Health Check

Scan a domain's public DNS and get a plain-English report on how its mail is routed, authenticated, secured in transit and reported on.

We only read public DNS records. Nothing is changed and no email address is needed.

What the Email Health Check looks at

The Email Health Check reads your domain's public DNS and groups what it finds into four pillars. Each pillar answers one question.

Pillar The question Records checked
Inbound routing Where does mail for this domain go? MX, Null MX (RFC 7505)
Sender authentication Can receivers tell real mail from forged mail? SPF (RFC 7208), DKIM (RFC 6376), DMARC (RFC 9989)
Transport security Is mail to this domain protected from TLS downgrade? MTA-STS (RFC 8461)
Reporting Will you hear about problems? DMARC rua, TLS-RPT (RFC 8460)

It does not log in to anything, send test mail or read your mailboxes. Everything comes from DNS and, for MTA-STS, the public policy file.

How each check is graded

Every individual check gets one of five statuses:

  • Pass. The record exists, is valid and follows current guidance.
  • Warning. It works, but something is weak or risky. Examples: SPF ending in ?all, DMARC at p=none, MTA-STS in testing mode, or SPF close to its limit of 10 DNS lookups.
  • Fail. The record is missing where it's needed, is invalid, or will cause errors. Examples: two SPF records, SPF over the 10-lookup limit, or a DMARC record with a syntax error.
  • Not tested. We couldn't run the check from outside. The usual case is DKIM: you choose the selector name, and if we can't find it, the result is unknown, not broken.
  • Not applicable. The check doesn't make sense for this domain. A domain that publishes Null MX doesn't need MTA-STS, for example.

How the score is calculated

Each pillar shows its own status, so you can see at a glance which area needs work.

The overall score is calculated only over the checks that could run. Not tested and Not applicable checks are left out, not counted as failures. Next to the score we show a coverage figure: the share of checks that actually ran. A score of 90 with 60% coverage tells you less than a score of 90 with full coverage. Read them together.

Email intent: what the domain is for

Before grading, we classify the domain by what its DNS says it does with mail. This changes which checks apply.

Intent Typical DNS signals What changes
Receives mail One or more MX records point to mail hosts All four pillars apply
Sends only No usable MX, but SPF or DKIM authorizes senders Inbound routing and MTA-STS become Not applicable; authentication is graded in full
No mail Null MX (MX 0 .), or SPF v=spf1 -all with no MX We check that spoofing is blocked: SPF -all and DMARC p=reject
Unknown Signals conflict or are missing We grade what we can and mark the rest Not tested

A domain that intentionally doesn't receive mail isn't failing because it has no MX. It should say so explicitly. The recommended setup for a parked or no-mail domain is:

example.com.          MX   0 .
example.com.          TXT  "v=spf1 -all"
_dmarc.example.com.   TXT  "v=DMARC1; p=reject;"

RFC 7505 says a domain that publishes Null MX must not publish any other MX record, and that domains used in From addresses shouldn't publish Null MX.

Common problems and fixes

No DMARC record. Start in monitoring mode and add a reporting address:

_dmarc.example.com.  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@example.com"

Then move toward quarantine and reject once your reports show all legitimate mail passing. Our guide on moving DMARC from none to reject has the steps.

SPF PermError. Usually too many includes or two SPF records. Merge into one record and remove unused senders. See fixing too many SPF DNS lookups.

MTA-STS missing. Publish a TXT record and a policy file served over HTTPS:

_mta-sts.example.com.  TXT  "v=STSv1; id=20261009T000000"

Policy at https://mta-sts.example.com/.well-known/mta-sts.txt:

version: STSv1
mode: testing
mx: mail.example.com
max_age: 604800

Start in testing, watch TLS-RPT reports, then switch to enforce. Change the id every time you edit the policy.

No TLS-RPT. Add a reporting address so senders can tell you about TLS failures:

_smtp._tls.example.com.  TXT  "v=TLSRPTv1; rua=mailto:tls-reports@example.com"

Limitations

  • The score is about DNS configuration, not spam-filtering effectiveness. It can't tell you how much spam or phishing reaches your users.
  • An MX record pointing at a filtering service doesn't prove mail is filtered. A sender can still deliver straight to your mail server if it accepts direct connections.
  • DKIM can only be checked for selectors we can find. Use the DKIM Checker with your own selector.
  • DNS is cached. A change you just made may take time to appear, depending on its TTL.
  • Results are a snapshot. Records change; re-run the check after any change.

New to these records? Start with SPF vs DKIM vs DMARC: what each one proves.

Frequently asked questions

Does a high score mean my spam filtering is good?

No. The score only reflects DNS configuration: MX, SPF, DKIM, DMARC, MTA-STS and TLS-RPT records. It can't see how well any service filters spam, phishing or malware, and it can't prove mail is actually filtered.

Why isn't my coverage complete?

Some checks can't run from the outside. For example, we can only test DKIM if we can find a selector, and some checks don't apply to a domain that sends no mail. Those checks are marked Not tested or Not applicable and are left out of the score.

My domain doesn't receive email. Why isn't it failing?

If a domain publishes a Null MX record (MX 0 .), we classify it as a no-mail domain. Inbound routing checks become Not applicable. We then check that it also blocks spoofing with SPF -all and a DMARC reject policy.

Do you store the domains I scan?

The tool reads public DNS records only. It doesn't need access to your mailboxes or mail server, and it doesn't send test messages.

How often should I run it?

Run it after any DNS or mail provider change, and before and after moving MX records. iBlockSpam customers also get domain monitoring that alerts on MX, SPF or DMARC changes: weekly on Protect, daily on Protect Plus.