What p=reject means
p=reject is the strictest DMARC policy. It asks receivers to refuse mail that claims to come from your domain but fails DMARC, usually during the SMTP conversation, so the message never reaches the recipient's inbox or spam folder. It is the only policy that actually stops direct spoofing of your domain.
_dmarc.example.com. 3600 IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com"
Receivers still make the final call. RFC 7489 lets them deviate from the policy, for example for mailing lists or known forwarders, and some deliver to spam instead of rejecting.
What it looks like
For a message that passes, nothing changes. For a spoofed or misconfigured one, the receiver writes the result in Authentication-Results:
Authentication-Results: mx.google.com;
spf=fail smtp.mailfrom=example.com;
dmarc=fail (p=REJECT sp=REJECT dis=REJECT) header.from=example.com
The sending server gets an SMTP rejection. Gmail answers with 550 5.7.26 and a message that the email is unauthenticated and not accepted due to the domain's DMARC policy; see 550 5.7.26. Other providers use other wording and sometimes 550 5.7.1 (550 5.7.1). If you have a bounced message, the Email Header Analyzer shows which check failed.
Getting there safely
- Start at
p=nonewithrua=reports and fix every legitimate source. - Move to
p=quarantine, rampingpctfrom a small value to 100. - Switch to
p=reject, again optionally withpct, and keep watching the reports.
Each legitimate source needs at least one aligned pass. DKIM is the one that matters most: it survives forwarding, while SPF does not.
v=DMARC1; p=reject; sp=reject; adkim=r; aspf=r; rua=mailto:dmarc-reports@example.com
Domains that don't send mail
Parked domains and domains used only for websites are attractive for spoofing because nobody watches them. Lock them down completely:
example.net. TXT "v=spf1 -all"
_dmarc.example.net. TXT "v=DMARC1; p=reject; sp=reject"
example.net. MX 0 .
The null MX (RFC 7505) also tells senders the domain receives no mail.
Side effects to expect
- Mailing lists. A list that changes the subject or adds a footer breaks DKIM. Mail from your users to such lists can be rejected by other members' providers. Most modern list software rewrites the From address for domains with strict policies.
- Plain forwarding. SPF fails after a forward; DKIM usually survives unless the forwarder modifies the message.
- Your own forgotten senders. A server that sends cron mail or alerts "from" your domain with no DKIM will be rejected. Give it a subdomain or route it through your provider.
- Subdomains. Without
sp=, they inheritp=reject. That is usually what you want, but check reports for subdomain senders first.
Related
- DMARC p=quarantine: the softer step before reject.
- DMARC fail: diagnosing a message that fails.
- DMARC alignment: how From, SPF and DKIM domains must match.
See your current policy in the DMARC Checker, and check SPF, DKIM and DMARC together with the Email Checker.