DMARC rollout: from p=none to p=reject without breaking mail
An evidence-led path from monitoring-only DMARC to tested enforcement under RFC 9989, with checkpoints that protect legitimate mail.
DMARC enforcement is the single most consequential email change you'll ever make. Done right, you eliminate domain spoofing forever. Done wrong, you reject your own legitimate mail. The difference is entirely about how patient you are with the rollout.
If you want the broader auth map before changing policy, start with the email authentication hub and then come back to the rollout steps below.
What DMARC actually does
DMARC sits on top of SPF and DKIM. It does two things: tells receivers what to do when authentication fails, and asks them to send aggregate reports. Crucially, DMARC requires that the From-header domain align with either the SPF authenticated domain or the DKIM signing domain. Either passing is enough. Use the free DMARC checker to confirm the published policy before changing enforcement.
The starting record
| Host | Type | Value | TTL |
|---|---|---|---|
| _dmarc.example.com | TXT | v=DMARC1; p=none; rua=aggregate-report-mailbox; ruf=forensic-report-mailbox; fo=1; adkim=r; aspf=r | 3600 |
- `p=none` — monitoring only. Receivers report failures but don't act on them.
- `rua=` — aggregate report destination. Daily summaries from each receiver.
- `ruf=` — forensic report destination. Per-message failure details (most receivers no longer send these for privacy reasons).
- `fo=1` — forensic on any failure (vs default
0, which only reports if everything fails). - `adkim=r` / `aspf=r` — relaxed alignment. Subdomains of the From domain count as aligned.
Tag reference
| Tag | Values | What it does |
|---|---|---|
v | DMARC1 | Required version tag |
p | none / quarantine / reject | Policy for the main domain |
sp | Same as p | Policy for subdomains (defaults to p) |
rua | Report mailbox URI | Aggregate report destination |
ruf | Forensic mailbox URI | Forensic report destination |
t | y / n | Test one policy level lower, or apply the declared policy |
adkim | r (relaxed) / s (strict) | DKIM alignment mode |
aspf | r / s | SPF alignment mode |
fo | 0 1 d s | Forensic reporting trigger |
An evidence-led rollout
From monitoring to enforcement
- 01
Week 1 — Publish p=none
Set up an inbox or DMARC report processor (free options: dmarcian, EasyDMARC, Postmark DMARC Digests). Publish the monitoring record. Verify with
dig +short txt _dmarc.example.com. - 02
Week 2 — Read the reports
Aggregate reports arrive daily. You'll discover senders you didn't know existed: SaaS tools, marketing automation, that one Cron job from 2019. Make a list. For each, decide: legitimate (fix auth), illegitimate (block at source), or shadow IT (have a conversation).
- 03
Weeks 3–4 — Fix every legitimate sender
Add their IPs to SPF or get them DKIM-signing. Verify each fix in the next week's reports. Do not move forward until every legitimate sender is producing aligned passes.
- 04
Week 5 — Test quarantine
Change to
p=quarantine; t=y. RFC 9989 asks receivers to apply one level lower, so failures remain at none while you validate the declared quarantine policy and watch reports for legitimate senders.v=DMARC1; p=quarantine; t=y; rua=aggregate-report-mailbox - 05
Week 6 and beyond — Remove testing mode
If reports remain clean, remove
t=yto request quarantine normally. General-purpose domains should stay at quarantine unless their interoperability analysis justifies reject; non-sending or tightly controlled domains can test reject witht=ybefore removing testing mode.v=DMARC1; p=quarantine; rua=aggregate-report-mailbox
Reading aggregate reports
Aggregate reports are gzipped XML files emailed daily by each receiver. Manually reading XML is masochism — use a processor. The data you care about: which IPs are sending as your domain, what their auth result was, and whether they're aligned.
| Result | What it means | Action |
|---|---|---|
| SPF pass + aligned, DKIM pass + aligned | Healthy sender | None |
| SPF fail, DKIM pass + aligned | Forwarded mail | Usually fine; DKIM survives forwarding |
| SPF pass but unaligned | Sender uses your IP but their own domain | Fix their config or remove from SPF |
| Both fail | Either spoof or misconfigured legitimate sender | Investigate immediately |
Quarantine vs reject: when to graduate
After quarantine, some domains face a choice: stay there or consider reject. RFC 9989 says general-purpose email domains should not deploy reject without weighing mailing-list and forwarding interoperability. Non-sending and tightly controlled domains have a clearer path; every domain still needs evidence that legitimate mail will not be lost.
| Policy | Receiver action on failure | User impact |
|---|---|---|
| none | Deliver normally; report to rua | None — monitoring only |
| quarantine | Deliver to the spam folder | Likely missed unless the user checks spam |
| reject | Drop the message; SMTP 5.7.1 | Bounce to the sender; never seen by the recipient |
One nuance on quarantine: most major receivers honor it, but some smaller hosts treat it as tag-and-deliver to the inbox. Reject is honored more uniformly because the action is unambiguous — which is exactly why it belongs at the end of the rollout, not the start.
The graduation gate
Read your last 30 days of aggregate reports. For every source that sent mail with your From domain, ask: is this expected, and does SPF or DKIM align? Move from quarantine to reject only when the answer is yes for effectively all of your volume, sustained across multiple stable reporting cycles. If unexpected sources are still showing up, attribute and fix them first — the guide to unknown senders in aggregate reports walks through that process.
| Question | Quarantine readiness | Reject readiness |
|---|---|---|
| Legitimate senders identified? | Mostly, with active remediation | Yes, with owners recorded |
| Legitimate volume aligned? | High and improving | Sustained near-complete coverage |
| Unknown volume explained? | Investigating low residual volume | No material unexplained source |
| Reporting stable? | At least one representative cycle | Multiple stable cycles |
When to stay at quarantine
- You carry mailing-list traffic — forwards break SPF and often DKIM, so reject would bounce real conversations.
- Third-party billing or CRM senders are not authenticated yet.
- Reports still show unexplained sources you cannot attribute to an owner.
- Reporting has only been clean for one cycle — give it more time at
p=quarantinebefore concluding.
Two things hold at every stage. Keep the rua= address published even at p=reject, because new senders pop up forever. And set sp=reject for unused subdomains early — spammers love subdomains that have no explicit policy, and you can run p=quarantine on the org domain while subdomains are already at reject. DMARC monitoring keeps the source inventory labeled so the next policy decision is evidence-based too.
DMARC rollout timeline
- 01
Publish reporting first
Start with p=none and rua reporting so aggregate reports expose real senders without asking receivers to quarantine or reject failures.
- 02
Label every legitimate source
Record the owner, sending stream, ESP, SPF domain, DKIM domain, and expected volume before changing policy.
- 03
Fix alignment gaps
Use aligned SPF or aligned DKIM for each important sender. Raw SPF or DKIM pass is not enough when the authenticated domain does not match the visible From domain.
- 04
Move enforcement gradually
Use quarantine before reject when evidence is still stabilizing, and keep rollback instructions ready for critical product mail.
| Stage | Evidence required | WillItInbox page |
|---|---|---|
| p=none | RUA reports arriving and parsed | /docs/dmarc-monitoring |
| quarantine | Legitimate high-volume senders aligned | /tools/dmarc-monitoring |
| reject | Unknown sender volume explained or intentionally blocked | /blog/dmarc-aggregate-reports-unknown-senders |
Use the DMARC checker for publication, SPF checker for sender authorization, and DMARC monitoring for real sender inventory before changing policy.
Continue this dmarc monitoring and sender authentication workflow with the commercial page, the core guide, the implementation docs.
Frequently asked questions
Last updated July 29, 2026.
Sources reviewed
- RFC 7208: Sender Policy Framework(standard)
- RFC 7489: DMARC(standard)
Factual review: June 13, 2026 by WillItInbox Editorial.
Keep reading