What it is
DMARC (RFC 7489) is a TXT record at _dmarc.<domain> that tells receiving servers what to do with mail claiming to be from your domain when it fails authentication, and where to send reports about it. A message passes DMARC when SPF or DKIM passes and the domain that passed is aligned with the domain in the visible From: header. That alignment is what finally protects the address people actually see.
_dmarc.example.com. 3600 IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; adkim=r; aspf=r"
The tags
| Tag | Meaning | Default |
|---|---|---|
v=DMARC1 |
Version; must be the first tag | required |
p= |
Policy: none (monitor only), quarantine (spam folder), reject (refuse) |
required |
sp= |
Policy for subdomains | same as p |
rua= |
Where to send daily aggregate reports (mailto: URIs, comma-separated) |
none |
ruf= |
Where to send per-message failure reports; few providers send them | none |
pct= |
Percentage of failing mail the policy applies to (0-100) | 100 |
adkim=, aspf= |
Alignment: r relaxed or s strict |
r |
fo= |
When to send failure reports (0, 1, d, s) |
0 |
Alignment. Relaxed means the domains share the same organisational domain: a DKIM signature with d=mail.example.com aligns with From: news@example.com. Strict requires an exact match. SPF aligns on the Return-Path domain, which is why mail sent through a vendor using its own bounce domain only passes DMARC through DKIM.
Subdomains without their own _dmarc record fall back to the organisational domain's record and its sp= policy.
Common setups
- Start with
p=none; rua=mailto:...and read the aggregate reports (XML; a report-processing service makes them readable) for a few weeks to find every service sending as you. - Fix SPF and DKIM for each legitimate source.
- Move to
p=quarantine, optionally withpct=to ramp up, then top=reject.
A domain that never sends mail can go straight to v=DMARC1; p=reject;.
Gmail and Yahoo (since February 2024). Senders of more than about 5,000 messages a day to their users must have SPF and DKIM, a DMARC record (p=none is enough), a From: domain aligned with SPF or DKIM, one-click unsubscribe for marketing mail, and a spam rate under 0.3%. Every sender needs at least SPF or DKIM.
How to check it
The DMARC checker parses the policy and flags problems; the email authentication check shows it with SPF and DKIM. From a terminal:
dig +short TXT _dmarc.example.com
nslookup -type=TXT _dmarc.example.com
Common mistakes
- Record at the wrong name. It must be at
_dmarc.example.com, not atexample.com. - More than one DMARC record, which receivers treat as no record at all.
- Reports to another domain without authorisation. If
ruapoints atreports@vendor.net, that domain must publishexample.com._report._dmarc.vendor.netTXTv=DMARC1; report services do this for their customers. - Jumping to
p=rejectwithout reading reports, which bounces your own invoices or newsletters. - Staying at
p=noneforever. It satisfies the bulk-sender rule but stops no spoofing, and BIMI needs quarantine or reject.
Related record types
- SPF record and DKIM record: the two checks DMARC builds on.
- BIMI record: brand logos, available once DMARC is enforced.
- MTA-STS record: enforces TLS for mail coming in.