DMARC record syntax errors that make receivers skip your policy
DMARC records are strict. The v=DMARC1 tag must come first, the p= tag is mandatory, and tag values are constrained to specific keywords. A record that looks close enough to a human is often invalid to a parser.
An invalid record is treated as no record: no enforcement, no reports.
How to fix it
- 1Confirm the record begins with exactly v=DMARC1 and that the tag is first.
- 2Confirm p= is present and is one of none, quarantine or reject.
- 3Confirm adkim= and aspf=, if present, are r or s.
- 4Confirm pct=, if present, is an integer between 0 and 100.
- 5Separate tags with semicolons and re-scan.
Check whether your domain has this problem
Free, no signup, about two seconds. You get the exact record to paste.
Related guides
- DKIM record with empty p= — a revoked key still in use
- SPF include points at a domain with no SPF record — a silent PermError
- DMARC external destination not authorized — why you receive no reports
- Two DMARC records at _dmarc — why your policy is being ignored
- Multiple SPF records on one domain (PermError) — how to merge them