esc

DMARC Checker

Validate a domain DMARC policy, inspect p=none/quarantine/reject, SPF/DKIM alignment, reporting addresses and DNS TXT tags.

Enter a domain above to validate its DMARC record, inspect every tag and review policy, alignment and reporting settings.

Guide

Reading a DMARC record

DMARC (Domain-based Message Authentication, Reporting & Conformance) ties SPF and DKIM together and tells receivers what to do when a message fails alignment. This DMARC record checker looks up the single DNS TXT record at _dmarc.<domain> and explains each tag=value pair.

The p tag is the policy: none (monitor only — take no action), quarantine (send failing mail to spam) or reject (block it outright). Most domains start at p=none to gather reports, then escalate to quarantine and finally reject once they're confident every legitimate sender passes.

DMARC only passes when SPF or DKIM passes and is aligned — the authenticated domain has to match the visible From: domain. adkim and aspf control whether that match is r (relaxed) or s (strict). The rua address is where daily aggregate reports go, but DMARC still does not guarantee inbox placement or block every phishing attempt.

Examples

DMARC record examples and results

Three stages of a typical policy for example.com, all published at _dmarc.example.com, and what the checker shows for each.

Monitoring only

v=DMARC1; p=none; rua=mailto:[email protected]

Policy None (badge: Monitor), coverage 100%, alignment Relaxed, reporting On. Six checks pass and two need review: the policy takes no action, and there is no sp= tag. This is the normal starting point.

Partial enforcement

v=DMARC1; p=quarantine; pct=25; sp=quarantine; rua=mailto:[email protected]

Policy Quarantine (badge: Partial) with coverage 25%: a quarter of failing mail is quarantined, and the other 75% falls back to p=none. The policy and coverage checks ask for review until you reach p=reject and pct=100.

Full enforcement

v=DMARC1; p=reject; sp=reject; adkim=s; aspf=s; rua=mailto:[email protected]; ruf=mailto:[email protected]

Policy Reject (badge: Enforcing), coverage 100%, alignment Strict, and all eight checks pass. The Reporting destinations card lists both addresses, and the ladder footer reads "rua + ruf".

Results

How to read the DMARC check results

  • Policy and the enforcement ladder — the p= value, highlighted on a None / Quarantine / Reject scale.
  • Coverage — the pct= value: the share of failing mail the policy applies to. It is 100% when the tag is absent, and values outside 0–100 are clamped. Below 100%, the coverage check explains what happens to the remaining mail: under p=reject it is quarantined instead, under p=quarantine it gets p=none (RFC 7489, section 6.6.4).
  • Alignment — Relaxed when both adkim and aspf are r (the default when the tags are missing), Strict when both are s, and Mixed otherwise.
  • Reporting — On when at least one rua address is present. The Reporting destinations card lists every rua and ruf address with the mailto: prefix and any size limit such as !10m removed.
  • Validation — eight checks: record found, version tag, policy, coverage, aggregate reporting, alignment mode, subdomain policy, and a single DMARC record. p=none, p=quarantine, coverage below 100%, a missing rua and a missing sp are flagged for review; a missing p= tag or more than one DMARC record fails.
  • Record tags and Raw TXT record — each tag with its name, with v and p marked Required, and the record as a zone-file line.
Rollout

Rolling out a DMARC policy safely

  1. Publish p=none with a rua address. Receivers that send aggregate reports start mailing them, usually once a day.
  2. Find every sender in the reports. Each service that sends as your domain must pass SPF or DKIM with an aligned domain. Fix sender lists with the SPF lookup-limit checker and confirm each provider's signing key with the DKIM key checker.
  3. Move to p=quarantine gradually. Raise pct in steps (for example 25, 50, 100) and watch the reports between steps. Failing mail outside the percentage gets the next lower policy: quarantine falls back to none, reject falls back to quarantine.
  4. Finish at p=reject and set sp=. An explicit subdomain policy makes it clear how mail from names like news.example.com is treated.

Alignment in practice

For a message with From: [email protected]:

  • A DKIM signature with d=mail.example.com aligns in relaxed mode (same organizational domain) but not with adkim=s.
  • An envelope sender of [email protected] passes SPF alignment only in relaxed mode.
  • A newsletter service that signs with d=example.net and uses its own bounce domain passes SPF and DKIM for example.net, yet fails DMARC for example.com. Ask the provider for a custom DKIM domain or custom return path.

Keep relaxed alignment unless every source signs and bounces with the exact From: domain.

Troubleshooting

Fixing common DMARC problems

The checker finds no record

DMARC must be a TXT record on the _dmarc host, such as _dmarc.example.com, not on the domain itself; in DNS panels that append the zone name, enter only _dmarc. The record must have v=DMARC1 as its first tag, or receivers ignore it. DNS errors and timeouts are reported the same way as a missing record.

A subdomain has no record

Checking mail.example.com queries only _dmarc.mail.example.com and nothing above it. Receivers that find nothing there fall back to the organizational domain's record and apply its sp= (or p=) policy, so check example.com as well.

Multiple DMARC records or no p= tag

With two v=DMARC1 records, receivers skip DMARC for the domain; merge them into one (the checker shows the first one it receives). Without a valid p= tag, receivers either ignore the record or, when a valid rua is present, treat it as p=none. Always state the policy explicitly.

Aggregate reports are not arriving

Check the address in the Reporting destinations card and the mailto: prefix in the raw record. When reports go to another domain, for example rua=mailto:[email protected] on example.com, the receiving domain must publish an authorization record at example.com._report._dmarc.example.net containing v=DMARC1. This checker does not query that name — look it up with the DNS lookup tool. Not every mailbox provider sends reports.

Limitations

What this DMARC checker does not do

  • It reads the published policy only. Whether your mail actually passes SPF, DKIM and alignment shows up in real message headers and aggregate reports, which this tool does not collect or parse.
  • It queries the exact _dmarc name for the domain you enter, with no organizational-domain fallback. A leading www. or _dmarc. is removed, and internationalized names are converted to punycode.
  • fo, ri and rf are listed but not evaluated; the "Daily XML" label on rua addresses describes the default report interval, not your ri value. Tags the tool does not recognise are shown with their raw key.
  • Answers come from the DNS resolver used by the helpers.work server, so a just-published change can still show the cached value. For the full picture of how the three records interact, read SPF, DKIM and DMARC explained.
FAQ

Frequently asked questions

What is a DMARC record checker?

A DMARC record checker looks up the TXT record at _dmarc.domain, parses tags such as p, rua, ruf, adkim, aspf, pct, and sp, and explains the domain policy and reporting setup.

What do p=none, quarantine, and reject mean?

p=none monitors failures without taking action, p=quarantine asks receivers to send failing mail to spam, and p=reject asks receivers to reject failing mail. Roll out gradually after SPF and DKIM align.

What are rua and ruf reports?

rua receives aggregate XML reports that summarize DMARC pass and fail activity. ruf receives forensic failure samples when receivers support them, but many do not send ruf reports for privacy reasons.

Does DMARC guarantee deliverability?

No. DMARC helps receivers evaluate spoofed mail and alignment, but inbox placement also depends on reputation, content, sending infrastructure, list quality, and recipient engagement.