Common DMARC errors and how to fix them
These are the messages that other checkers, bounce messages and the Authentication-Results header show when DMARC is missing, too weak or failing, with what to change.
DMARC policy not enabled
Why. The record exists, but its policy is p=none: receivers send reports and still deliver forged mail.
Fix. Read the aggregate reports for two to four weeks, make every legitimate sender pass SPF or DKIM with your domain, then move to p=quarantine and, a few weeks later, to p=reject.
No DMARC record found
Why. Nothing is published at _dmarc.<domain>. The record was put on the domain itself, or the DNS panel added the zone twice (_dmarc.example.com.example.com).
Fix. Create a TXT record named _dmarc (the panel adds the domain) with v=DMARC1; p=none; rua=mailto:dmarc@your-domain to start. The DMARC generator writes it for you.
550 5.7.26 Unauthenticated email from example.com is not accepted due to domain's DMARC policy
Why. Gmail refused a message that failed DMARC on a domain at p=reject (or sent it to spam at quarantine). If it was your own mail, one of your senders is not aligned, such as a newsletter tool that signs with its own domain.
Fix. Set up DKIM for that service with your own domain (the CNAME records it gives you), or a custom return path so that SPF aligns. The DMARC report reader shows which sources fail.
550 5.7.509 Access denied, sending domain does not pass DMARC verification and has a DMARC policy of reject
Why. The same refusal at Outlook.com and Microsoft 365: the message failed DMARC and the domain asks for reject.
Fix. Align the sender that failed, as above. Forwarded mail and mailing lists are the usual exception: keep DKIM signing so that the signature survives forwarding.
External domains in your DMARC are not giving permission for your reports to be sent to them
Why. rua or ruf points to an address on another domain that has not published the authorisation record, so receivers send nothing there.
Fix. Ask the report service to publish <your domain>._report._dmarc.<its domain> with v=DMARC1 (most services do it for their customers), or use an address on your own domain.
Multiple DMARC records found
Why. Two TXT records at _dmarc start with v=DMARC1. Receivers then apply no DMARC policy at all, as if the domain had none.
Fix. Keep a single record, starting with v=DMARC1; then p=, with tags separated by semicolons.
DMARC record does not start with v=DMARC1
Why. A TXT record at _dmarc that does not begin with v=DMARC1 (text before it, a typo, a quotation mark left inside) is not a DMARC record: receivers skip it. If it is the only one, the domain has no DMARC.
Fix. Make v=DMARC1; the very first characters of the value, then p=. The checker reads only the records that start this way.