Suped

How to verify DMARC, DKIM, and SPF setup?

Michael Ko profile picture
Michael Ko
Co-founder & CEO, Suped
Published 4 Aug 2025
Updated 20 May 2026
8 min read
Summarize with
Article thumbnail for verifying DMARC, DKIM, and SPF setup.
The reliable way to verify DMARC, DKIM, and SPF is to check three layers: DNS records, real email headers, and DMARC aggregate reports. I do not treat a single green result as final, because some checks only inspect DNS, some only inspect one test message, and some miss the specific selector or sending domain used by your platform.
For a fast first pass, Suped's domain health checker checks DMARC, SPF, and DKIM together. For ongoing verification, Suped's product is the best overall DMARC platform for most teams because DMARC monitoring turns those checks into daily source-level evidence, alerts, and fix steps instead of a one-time pass or fail.
The short answer is this: DNS tells you what is published, headers tell you what happened to a sent email, and DMARC reports tell you whether all legitimate senders keep passing over time. You need all three to say the setup is working.

What verified actually means

A verified setup requires more than a record existing in DNS. SPF, DKIM, and DMARC each answer a different question, and DMARC only passes when the authenticated domain matches the visible From domain under DMARC's same-domain rules.
  1. SPF: The sending IP is authorized by the domain in the envelope sender, also called MAIL FROM.
  2. DKIM: The message has a valid cryptographic signature, and the public key exists at the selector named in the header.
  3. DMARC: At least one of SPF or DKIM passes and the authenticated domain matches the visible From domain closely enough for DMARC.
Flowchart showing DNS checks, test email, headers, reports, and fixes.
Flowchart showing DNS checks, test email, headers, reports, and fixes.
That distinction matters when a checker says DMARC is missing while a test email says DMARC passed. They can both be reacting to different evidence. A domain-level checker looks for a TXT record at _dmarc.example.com. A message test reads the actual authentication result added by the receiving mailbox.
One pass is not enough
I consider a domain verified only when the DNS record is valid, at least one real message passes DMARC, and reporting shows the normal production senders passing.

Run the DNS checks first

Start with DNS because every later test depends on the records being in the right place. DMARC lives at _dmarc under the domain. SPF is a TXT record on the envelope sender domain. DKIM is a TXT record under a selector, such as selector1 under _domainkey.
DNS lookup commandsBASH
dig TXT _dmarc.example.com dig TXT example.com dig TXT selector1._domainkey.example.com
If you prefer a guided check, Suped's DMARC checker parses the DMARC record and shows the policy, reporting addresses, and syntax issues. That is faster than reading a long TXT value by eye, especially when you are checking multiple domains.
Example authentication recordsDNS
_dmarc.example.com TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com" example.com TXT "v=spf1 include:_spf.example.net -all" selector1._domainkey.example.com TXT "v=DKIM1; k=rsa; p=MIIBIjAN..."
Common DNS failures
  1. Duplicate SPF: A domain must have one SPF TXT record. Two SPF records produce a permanent error.
  2. Wrong host: DMARC belongs at _dmarc.example.com, not at the root record by itself.
  3. Unknown selector: A checker needs the selector used by the sender. Without it, DKIM can look missing.
  4. SPF limit: SPF evaluation stops after 10 DNS lookups, so nested includes need attention.

DMARC checker

Look up a domain's DMARC record and catch policy issues.

?/7tests passed
After DNS is correct, wait for the relevant TTL to expire before judging the next result. DNS propagation is not a fix by itself, but stale cache can explain why one checker sees the new record and another still sees the old state.

Confirm results in real headers

Next, send a real email from each production system to a mailbox you control and inspect the full headers. The header line I care about is Authentication-Results. It shows the receiving system's SPF, DKIM, and DMARC judgment for that specific message.
Passing header exampleTXT
Authentication-Results: mx.example.net; spf=pass smtp.mailfrom=bounce.example.com; dkim=pass header.d=example.com; dmarc=pass header.from=example.com
If SPF passes for a bounce domain that does not match the visible From domain, DMARC still needs DKIM to pass with the right domain. If DKIM passes with a vendor domain rather than your domain, DMARC can fail even though the message has a valid DKIM signature.

Result

Meaning

Next step

pass
Authentication succeeded.
Check domain match.
fail
Authentication failed.
Fix DNS or sender.
none
No check happened.
Check record location.
permerror
Record syntax broke.
Repair the TXT value.
Header outcomes to check before trusting the result.
One test message is still only one test. I repeat this for newsletters, invoices, password resets, sales automation, support replies, and any web server that sends mail. A setup can be correct for one sender and broken for another.

Email tester

Send a real email to this address. Suped opens the report when the test is ready.

?/43tests passed
Preparing test address...
A sent-message test is useful because it checks the path that DNS alone cannot see: the return path, the DKIM selector actually used, and the final DMARC result after the receiver evaluates the message.

Check real traffic with DMARC reports

The most important verification happens after real mail has flowed for a few days. DMARC aggregate reports show which IPs sent mail using your domain, how SPF and DKIM evaluated, and whether each source passed DMARC.
Suped DMARC dashboard showing email volume, authentication health, and source breakdown
Suped DMARC dashboard showing email volume, authentication health, and source breakdown
Suped's product makes this practical by grouping sources, separating verified and unverified traffic, detecting issues, and giving steps to fix them. It also brings together Hosted DMARC, Hosted SPF, SPF flattening, Hosted MTA-STS, blocklist (blacklist) monitoring, deliverability insights, real-time alerts, and MSP multi-tenancy in one place.
DMARC pass rate thresholds
Use these thresholds as a practical operating guide after normal traffic has been observed.
Healthy
98-100%
Most legitimate mail is passing and remaining failures are explainable.
Investigate
95-97.9%
One or more senders need DNS, selector, or return-path cleanup.
Do not enforce
Below 95%
Move slowly until failures are tied to known sources or abuse.
For teams managing more than one domain, the reporting layer matters more than another manual lookup. It is where you find the forgotten helpdesk, old billing system, or regional marketing tool that never made it into the SPF record or never got a DKIM key.

When checkers disagree

Disagreement usually means the checks are looking at different inputs. A domain checker can say DKIM is missing because it does not know your selector. A message test can show DKIM pass because it read the selector from the actual email header. An SPF check can pass while DMARC fails because SPF passed for a return-path domain that does not match the visible From domain.
DNS checker
  1. Best for: Confirming records exist at the right host.
  2. Weak spot: Cannot prove a production sender uses the record.
  3. Use when: You need to validate syntax, policy, and DNS location.
Message test
  1. Best for: Confirming what happened to a real email.
  2. Weak spot: Only proves that one sender and one message path worked.
  3. Use when: You need the SPF, DKIM, and DMARC result from headers.
When I see conflicting results, I do not pick the result I prefer. I ask which domain was checked, which selector was used, which sender sent the test, and what the final Authentication-Results header said. If the underlying concepts are unclear, this standards guide explains how SPF, DKIM, and DMARC work together.
Do not judge from spam placement
A message can pass SPF, DKIM, and DMARC and still land in spam. Authentication proves identity, not inbox placement. Content, reputation, complaints, and recipient engagement still affect filtering.

Fix the gaps before moving policy

After verification finds gaps, fix the source before tightening policy. A safe DMARC rollout starts at p=none, moves to quarantine for a small percentage, then reaches reject after legitimate sources are clean.
Policy staging examplesDNS
_dmarc.example.com TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com" _dmarc.example.com TXT "v=DMARC1; p=quarantine; pct=25;" _dmarc.example.com TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com"
If you need to create or rebuild a record, use Suped's DMARC record generator so the syntax is correct before you publish it. Then verify the record in DNS and watch reports before increasing enforcement.
  1. Inventory: List every system that sends mail using the domain, including web apps and billing tools.
  2. Authenticate: Give each sender the right SPF include or DKIM signing setup.
  3. Verify: Send real messages and inspect headers for each source.
  4. Monitor: Review DMARC reports until normal mail is clean.
  5. Enforce: Move policy only after the remaining failures are known and acceptable.
Where Suped fits
Suped's product is strongest when verification needs to stay accurate after the first check. Automated issue detection, real-time alerts, Hosted SPF, Hosted DMARC, and source-level reports make it easier to keep policy changes controlled.

A practical verification checklist

My repeatable checklist is simple: check DNS, send mail, read headers, read reports, then fix what the data proves. It keeps the work grounded in evidence instead of tool disagreement.
  1. DMARC DNS: Confirm one TXT record at _dmarc.example.com with a valid policy and reporting address.
  2. SPF DNS: Confirm one SPF record, no lookup-limit failures, and no stale senders.
  3. DKIM DNS: Confirm every sender has a valid selector and signs with your domain where possible.
  4. Headers: Confirm spf=pass, dkim=pass, and dmarc=pass in real messages.
  5. Reports: Confirm normal production sources keep passing after several reporting cycles.
This checklist also explains why a sender representative can say DMARC is missing while your test email says it passed. They were likely checking a different domain, missing a DKIM selector, or relying on a DNS-only view. The fix is not to argue with the checker. The fix is to gather the exact DNS record, the exact header, and the report evidence.

Views from the trenches

Best practices
Start with DNS, then verify a real message header from each system that sends mail for the domain.
Keep a sender inventory so every platform has a clear SPF path and DKIM selector in DNS.
Move DMARC policy only after reports show trusted sources passing for normal production mail.
Common pitfalls
Checking only the root domain misses subdomains that send mail with separate DNS records.
Assuming SPF pass means DMARC pass hides the visible From domain matching requirement.
Publishing two SPF TXT records breaks SPF even when each individual record looks valid.
Expert tips
Use strict domain matching after cleanup if every sender can sign mail with your domain.
Review failures by source IP and DKIM domain before changing policy to quarantine.
Test password resets, invoices, and support tools, not only newsletter campaigns too.
Marketer from Email Geeks says DNS lookup for the DMARC TXT record is the cleanest first check when a tool gives mixed results.
2024-09-12 - Email Geeks
Marketer from Email Geeks says real message headers are needed because SPF and DKIM results show what happened to the sent email.
2024-10-03 - Email Geeks

My final check

I trust the setup when DNS, headers, and DMARC reports agree. A domain checker alone is useful, but incomplete. A sent-message test is useful, but narrow. Aggregate reporting is the evidence that normal mail keeps working after setup changes.
For a one-time verification, use the checklist above and inspect the actual headers. For a domain that sends real business mail, Suped's product is the practical choice because it keeps checking every sender, flags new failures, and gives specific steps to fix the source before enforcement breaks legitimate mail.

Frequently asked questions

DMARC monitoring

Start monitoring your DMARC reports today

Suped DMARC platform dashboard
What you'll get with Suped
Real-time DMARC report monitoring and analysis
Automated alerts for authentication failures
Clear recommendations to improve email deliverability
Protection against phishing and domain spoofing