Email Authentication Validator

Free DMARC checker. Look up and validate your DMARC record, plus SPF and DKIM, with policy grading and specific fixes to stop email spoofing.

Advertisement

Check the SPF, DKIM and DMARC records a domain actually publishes

Enter a domain and this tool queries its live DNS and reports what is really published: the SPF record with every mechanism parsed and its DNS lookups counted, a DKIM public key at whichever selector it can find, and the DMARC record with its policy, subdomain policy and reporting addresses broken out. Each of the three gets a score and a letter grade, and the three combine into an overall grade weighted SPF 35%, DKIM 30%, DMARC 35%.

This is a read of the published state. It is the tool for "what does this domain have configured right now, and what is wrong with it" — auditing your own domain before a migration, checking a domain you have inherited, or vetting a supplier. If you are instead trying to author a new DMARC record from scratch, build it with the DMARC generator and come back here to verify what you published.

How the lookups run

Queries go out server-side over DNS-over-HTTPS against Cloudflare's resolver, which means you get an authoritative public view rather than whatever your local resolver has cached — useful, because "it works on my machine" in email authentication is usually a stale cache. Three checks run in parallel: TXT at the domain for SPF, TXT at _dmarc.<domain> for DMARC, and TXT at <selector>._domainkey.<domain> for DKIM.

Results are presented as a summary plus a tab per mechanism, with the raw record text copyable from each. Nothing about the domain is stored.

SPF: the mechanisms and the 10-lookup limit

SPF answers one narrow question: is this sending IP allowed to use this domain in the envelope sender? The tool splits the record after v=spf1 and shows every term with its qualifier resolved, so you can read the policy without parsing it in your head:

QualifierMeaningEffect on non-matching mail
+ (default)PassExplicitly authorised
-FailHard fail — the domain says reject
~SoftFailSuspicious but accept, usually with a spam-score penalty
?NeutralNo assertion at all

The single most consequential thing SPF gets checked for is the 10-DNS-lookup limit in RFC 7208. Evaluating an SPF record must not require more than ten DNS-querying mechanisms. Exceed it and a conforming receiver returns permerror — and a permerror is not a pass. Under DMARC, SPF then contributes nothing, and if DKIM is not also passing and aligned, your mail fails DMARC entirely.

What counts and what does not:

MechanismCosts a lookup?Note
include:YesPlus everything inside it, recursively. The usual cause of overflow.
a, a:YesOne per mechanism.
mx, mx:YesResolving the returned MX names costs more on top.
ptrYesDeprecated. Slow, unreliable, and flagged here.
exists:YesOne per mechanism.
ip4:, ip6:NoFree. This is what flattening converts includes into.
allNoThe terminator.
redirect=YesReplaces the record rather than adding to it.

The counter here does the recursion for you: it follows each include:, fetches that domain's SPF record, parses it, and adds its lookup-causing mechanisms to the total, descending several levels. That is what makes the number meaningful, because a record with four includes routinely resolves to eleven or twelve real lookups — and the record looks fine to the eye. Over ten is reported as exceeding the limit and caps the SPF grade; over eight is reported as approaching it, because a vendor adding one include: to their own record can push you over without touching your DNS.

When you are over the limit, the options in order of preference are: remove senders you no longer use (audit before you engineer), replace a vendor's include: with the specific ip4: ranges it resolves to, use a subdomain for bulk sending so it carries its own SPF budget, or use a maintained flattening service. Flattening by hand is a trap — the vendor's IPs change and your record silently stops authorising real mail.

Other SPF findings the tool reports: +all, which authorises the entire internet to send as your domain and scores zero on its own; a missing terminator; ~all, noted because unauthenticated mail is only flagged rather than refused; ?all, which asserts nothing; and any use of ptr.

DKIM: finding the selector

DKIM is the awkward one to check, because there is no way to enumerate a domain's selectors from DNS. The public key lives at selector._domainkey.example.com, and unless you know the selector, you cannot ask. This is why DKIM checkers so often report "no record" for domains that sign perfectly well.

The tool works around it. If the selector you supply (or the default) returns nothing, it tries to discover which providers the domain uses and derive selectors from that. It reads the domain's MX records, its SPF record and its other TXT records, and matches them against a library of 48 email services — mailbox providers, ESPs, CRM and helpdesk platforms — each with the selector names it is known to use. Detect Google Workspace from the MX records and it tries google; detect Microsoft 365 and it tries selector1 and selector2; detect SendGrid, Mailgun, Postmark, Klaviyo, Zendesk and so on, and it tries theirs. A set of generic selectors is always included, and if nothing is detected it falls back to trying every service's selectors.

You can also supply your own selectors explicitly, which is what you want for a self-hosted signer or an internal naming convention.

Once a key is found, the record's tags are parsed:

  • v=DKIM1 — version. Missing or wrong is a real error.
  • p= — the base64 public key. An empty p= is a revoked key, not a broken record; it is the defined way to retire a selector.
  • k= — key type, RSA unless stated otherwise.
  • t=y — testing mode. Receivers are told to treat failures leniently, which means your DKIM is not actually being enforced. Flagged, because it gets left on after a migration and nobody notices.

Key strength is reported too, with 1024-bit flagged as deprecated and anything below it as too weak. Be aware this is estimated from the length of the encoded key rather than read out of the key structure, so treat it as a strong indicator rather than a precise measurement — it is there to catch a legacy 1024-bit key that should have been rotated, and it does that reliably.

What this cannot tell you is whether signing actually works. A published key proves a key exists; it does not prove your mail server is signing with the matching private key, signing the right headers, or that the signature survives your relay chain. For that you need a real message, and that is a different job from checking DNS.

DMARC and how policy reaches subdomains

The DMARC record at _dmarc.<domain> is parsed into its tags:

TagMeaning
p=Policy for the domain: none, quarantine or reject.
sp=Policy for subdomains. Optional — and its absence matters.
pct=Percentage of failing mail the policy is applied to. Defaults to 100.
rua=Where aggregate XML reports are sent. Without it you are blind.
ruf=Where forensic reports are sent. Sparsely supported.
adkim=, aspf=Alignment mode: r relaxed (default) or s strict.

Subdomain inheritance is the part people get wrong. The rules:

  • A receiver evaluating mail from news.example.com looks for _dmarc.news.example.com first. If that exists, it governs, and the organisational domain's record is irrelevant.
  • If it does not exist, the receiver falls back to the organisational domain's record — _dmarc.example.com.
  • In that fallback, sp= governs the subdomain if present. If sp= is absent, the subdomain inherits p=.

Two consequences follow. First, p=reject with no sp= means every subdomain is at reject, including ones you forgot about, including ones a team is about to start sending marketing mail from. Second, publishing sp=none alongside p=reject leaves a wide-open hole: attackers spoof accounts.example.com just as happily as the bare domain, and the recipient cannot tell the difference. The tool flags a missing sp= for this reason.

It also flags p=none as monitoring-only with no enforcement, and caps the DMARC grade accordingly. A domain sitting at p=none for a long time gets all the reporting and none of the protection — it is a starting position, not a destination. A missing rua= is flagged too, because without aggregate reports you have no way to know what you would break by tightening the policy.

One important behaviour to know: this checks the exact name you enter. To see what actually applies to a subdomain, check the subdomain and the organisational domain and apply the inheritance rules above — the tool does not walk up the tree for you.

Alignment: why SPF passes and DMARC still fails

This is the single most confusing thing in email authentication, and it explains most "but SPF passes!" tickets.

SPF and DKIM authenticate different identifiers, and neither of them authenticates the address your recipient sees:

  • SPF authenticates the envelope sender — the MAIL FROM / Return-Path domain, used for bounces. It is invisible in a mail client.
  • DKIM authenticates the domain in the signature's d= tag — whoever's key signed the message.
  • The From: header is what the recipient actually reads, and on its own nothing verifies it.

DMARC's contribution is to tie those together. It passes only if at least one of SPF or DKIM passes and the identifier it authenticated aligns with the From: header domain. In relaxed mode alignment means the same organisational domain, so mail.example.com aligns with example.com. In strict mode it means an exact match.

Now the classic failure. You send through an email service provider. The ESP sets the Return-Path to its own bounce domain — bounces.esp-vendor.net — because it needs to process your bounces. SPF is evaluated against that domain, against that domain's SPF record, and it passes cleanly. Your headers say spf=pass. But the authenticated domain is the ESP's, and your From: says example.com. They do not align. SPF contributes nothing to DMARC, and if DKIM is not signing with an aligned d=, the message fails DMARC despite a green SPF result.

The fix is one of two things, and usually both:

  • Set up a custom return path with the ESP — a CNAME to a subdomain of yours — so the envelope sender is a subdomain of example.com and SPF aligns.
  • Set up DKIM with the ESP using a selector under your own domain, so d=example.com and DKIM aligns. This is the more robust of the two, because DKIM survives forwarding and SPF does not — a forwarded message is relayed from an IP your SPF never authorised, while the DKIM signature travels with the message.

That last point is worth restating: DKIM alignment is what keeps mailing lists and forwarding working under a strict DMARC policy. If you are moving toward p=reject, aligned DKIM on every sending path is the prerequisite.

Reading the grades

Each mechanism starts from a baseline and loses points for each finding, with the weightings noted at the top. The letter is a shorthand for triage, not a compliance verdict — a domain can grade well and still fail in production because a signing key is not deployed, or grade poorly on a domain that never sends mail at all.

For a domain that sends no email, the strongest configuration is not a good grade but a deliberate null configuration: v=spf1 -all, a DMARC record at p=reject, and a wildcard DKIM record publishing an empty key. That combination tells the world nothing legitimate ever comes from this domain, and it is the right answer for parked domains, look-alikes you defensively registered, and anything that only serves a website.

Limits worth knowing

  • This examines published DNS records. It does not evaluate a message, verify a signature, or compute alignment for real traffic — alignment mode is read from the DMARC tags, not measured.
  • DNS caching means a change you just made may not appear immediately; TTLs on the old record still apply.
  • DKIM selectors that no service library covers and that you do not supply will not be found. "No DKIM record" here means "not at the selectors tried", never "this domain does not sign".
  • The 10-lookup count reflects the includes as they resolve at this moment. Vendors change their records; a record that passes today can permerror next month without you editing anything, which is a good argument for re-checking on a schedule.

What Is Email Authentication Validation

Email authentication validation checks whether a domain has properly configured the three core email security protocols: SPF (Sender Policy Framework), DKIM (DomainKeys Identified Mail), and DMARC (Domain-based Message Authentication, Reporting and Conformance). Together, these DNS-based protocols prevent email spoofing, phishing, and unauthorized use of your domain in email headers.

Email remains the primary attack vector for phishing and business email compromise (BEC). Without authentication protocols, anyone can send email that appears to come from your domain. SPF, DKIM, and DMARC work together to verify sender identity and instruct receiving mail servers on how to handle unauthenticated messages—making them foundational to email security.

How Email Authentication Protocols Work

SPF (Sender Policy Framework) publishes a DNS TXT record listing IP addresses and servers authorized to send email on behalf of your domain. When a receiving server gets an email, it checks the sending server's IP against the SPF record. If the IP isn't listed, the message fails SPF.

DKIM (DomainKeys Identified Mail) adds a cryptographic signature to outgoing emails using a private key. The corresponding public key is published as a DNS TXT record. Receiving servers use the public key to verify the signature, confirming the message was not altered in transit and originated from an authorized sender.

DMARC (Domain-based Message Authentication, Reporting and Conformance) ties SPF and DKIM together with a policy that tells receivers what to do when authentication fails: none (monitor), quarantine (spam folder), or reject (block entirely). DMARC also enables aggregate and forensic reporting, giving domain owners visibility into authentication results.

ProtocolDNS RecordPurposeAuthentication Method
SPFTXT on domainAuthorize sending IPsIP address matching
DKIMTXT on selector._domainkeySign message contentCryptographic signature
DMARCTXT on _dmarc.domainSet policy + reportingAlignment of SPF/DKIM

Common Use Cases

  • Domain security auditing: Verify that SPF, DKIM, and DMARC are correctly configured and aligned
  • Email deliverability troubleshooting: Diagnose why legitimate emails land in spam folders
  • Vendor risk assessment: Check third-party domains for proper email authentication before trust decisions
  • Compliance requirements: Many frameworks (NIST, FedRAMP, CMMC) require DMARC enforcement
  • Brand protection: Prevent attackers from spoofing your domain in phishing campaigns targeting customers or employees

Best Practices

  1. Deploy DMARC progressively — Start with p=none to monitor, move to p=quarantine, then p=reject once you've identified all legitimate sending sources
  2. Include all third-party senders in SPF — Marketing platforms, CRMs, and ticketing systems all need to be in your SPF record
  3. Keep SPF under 10 DNS lookups — The SPF specification limits DNS lookups to 10; exceeding this causes authentication failures
  4. Rotate DKIM keys annually — Use 2048-bit keys and rotate them periodically to limit exposure from key compromise
  5. Monitor DMARC reports — Aggregate reports reveal unauthorized senders and configuration issues; review them weekly

Frequently Asked Questions

What is email authentication?+

Email authentication verifies sender identity using SPF, DKIM, and DMARC protocols. SPF lists authorized mail servers, DKIM adds cryptographic signatures, DMARC defines policy for failures. Prevents spoofing, phishing, domain impersonation. Improves deliverability - unauthenticated emails often marked spam. Required by Google/Yahoo (2024) for bulk senders. Authenticate your domain to protect brand reputation and ensure inbox delivery.

What is SPF and how does it work?+

Sender Policy Framework (SPF) is DNS TXT record listing authorized mail servers for your domain. Example: v=spf1 ip4:192.0.2.0 include:_spf.google.com ~all. Recipient checks: sending server IP matches SPF record? Pass = authenticated, fail = potential spoof. Mechanisms: ip4, ip6, include, a, mx. Qualifiers: + (pass), - (fail), ~ (softfail), ? (neutral). Limit: 10 DNS lookups maximum.

What is DKIM and why is it important?+

DomainKeys Identified Mail (DKIM) adds cryptographic signature to email headers. Private key signs email, public key in DNS validates signature. Proves: email from authorized server, content unmodified in transit. Example DNS record: selector._domainkey.example.com TXT "v=DKIM1; k=rsa; p=MIGfMA0GCS...". Survives forwarding. Required with SPF/DMARC. Multiple selectors supported (rotate keys). Signature header: DKIM-Signature: v=1; a=rsa-sha256...

What is DMARC and how to configure it?+

Domain-based Message Authentication, Reporting and Conformance (DMARC) builds on SPF/DKIM. Defines policy for authentication failures: none (monitor), quarantine (spam folder), reject (block). Example DNS record: _dmarc.example.com TXT "v=DMARC1; p=quarantine; rua=mailto:reports@example.com". Provides aggregate reports (rua) and forensic reports (ruf). Start with p=none, monitor reports, gradually enforce to p=reject.

Why do emails fail authentication?+

Common failures: SPF - sending from unauthorized server, too many DNS lookups, missing include. DKIM - invalid signature, key rotation without DNS update, email modified in transit. DMARC - SPF/DKIM alignment failure, no policy defined. Forwarding breaks SPF (but DKIM survives). Check: DNS records correct, selectors match, domains aligned (envelope vs header). Use email authentication validators to diagnose issues.

How to prevent email spoofing?+

Implement all three: SPF (authorize servers), DKIM (sign emails), DMARC (enforce policy). Set DMARC policy p=reject for maximum protection. Enable DMARC reports to monitor. Add BIMI (Brand Indicators for Message Identification) for logo display. Monitor: spoofed domains using your brand, authentication failures. Train employees: verify sender, check for phishing. Use email security gateway. Report spoofing to authorities (FBI IC3).

What is DMARC alignment?+

DMARC requires identifier alignment - domain in From: header matches authenticated domain. SPF alignment: From header domain aligns with Return-Path domain (relaxed or strict mode). DKIM alignment: From header domain aligns with d= domain in DKIM signature. Example: email from @example.com must pass SPF/DKIM with @example.com domain. Alignment prevents display name spoofing. Check alignment in DMARC reports.

How to improve email deliverability?+

Authentication is foundation. Configure: SPF (authorize servers), DKIM (sign with 2048-bit key), DMARC (p=quarantine/reject). Best practices: warm up new IPs, maintain clean email list, low bounce/complaint rates, authenticate subdomains, enable BIMI, monitor blacklists, use dedicated IP for bulk sending, avoid spam trigger words, provide unsubscribe, follow CAN-SPAM/GDPR. Monitor inbox placement with seed lists.

This tool is provided for informational and educational purposes only. All processing happens in your browser — no data is sent to or stored on our servers. While we strive for accuracy, we make no warranties about the completeness or reliability of results.