How to Move from DMARC p=none to p=reject Without Breaking Email
Moving DMARC from monitoring to enforcement is the most important step in email security — and the most dangerous if done wrong. Here's the safe path from p=none to p=reject.
Why p=none isn't protection
DMARC p=none means monitor only — emails that fail authentication are still delivered to recipients. It provides visibility into who's sending as your domain, but zero protection against spoofing.
Many organizations stay at p=none indefinitely because moving to enforcement is perceived as risky. The risk is real: if you enforce DMARC before all your legitimate sending sources pass authentication, you'll block your own legitimate email.
But the risk of staying at p=none is also real: attackers can impersonate your domain in phishing and BEC attacks with zero consequences. The path below is the safe approach used by security teams.
- 1
Publish p=none with RUA reporting address
v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com — Collect aggregate reports before making any enforcement decisions.
- 2
Analyze reports for 2–4 weeks
Identify every server sending email as your domain. Classify each as legitimate (known ESP, internal system) or unauthorized (spoofing).
- 3
Authorize all legitimate senders
Add legitimate senders to your SPF record. Enable DKIM signing in each service. Verify alignment passes in subsequent reports.
- 4
Advance to p=quarantine pct=10
Start enforcement at 10% of failing messages. Monitor reports closely for legitimate traffic that's failing authentication.
- 5
Increase pct gradually: 25 → 50 → 100
Spend at least 1 week at each percentage. Fix any legitimate authentication failures found before increasing further.
- 6
Move to p=reject
Once p=quarantine pct=100 shows zero false positives for 2+ weeks, advance to p=reject. Full spoofing protection achieved.
- 7
Maintain: rotate DKIM keys, monitor reports
New services, infrastructure changes, and key rotation can break authentication. Review DMARC reports monthly and act on failures immediately.
Step 1: Audit your sending sources
Review your DMARC aggregate reports (rua) for all sources claiming your domain. For each IP or domain in the report:
1. Identify which service it represents (Google Workspace, SendGrid, Mailchimp, HubSpot, etc.) 2. Verify it's a legitimate authorized sender 3. Check whether it passes SPF alignment and DKIM alignment 4. For sources with DMARC failures: configure SPF (add to your SPF record) and/or DKIM (enable signing in the service)
Common surprises during audits: old marketing automation platforms, forgotten CRMs, server-generated emails from developer tools, support ticketing systems.
Step 2: Use pct= for gradual rollout
The pct= tag in your DMARC record specifies what percentage of failing emails the policy applies to. This lets you enforce gradually:
v=DMARC1; p=quarantine; pct=10; rua=mailto:reports@yourdomain.com
This applies quarantine to 10% of failing messages while monitoring the other 90%. Increase pct in stages: 10% → 25% → 50% → 100%.
At each stage, watch DMARC reports for legitimate traffic that's failing. Fix any issues before increasing pct.
Step 3: quarantine first, then reject
Move to p=quarantine before p=reject. Quarantine sends failing emails to spam rather than rejecting them outright. This gives you a safety net — if you accidentally block legitimate email, it's in spam (recoverable) rather than rejected (gone).
Spend 2-4 weeks at p=quarantine, pct=100 while monitoring for false positives.
Only move to p=reject once you're confident all legitimate senders pass authentication and quarantine hasn't caught any legitimate email.
Common blockers and fixes
Email forwarding: Forwarded emails often break SPF alignment. This is expected and unavoidable — DKIM alignment should still pass if the forwarding server doesn't modify the message. Forwarding that strips DKIM signatures is a problem.
Marketing platforms with shared infrastructure: Some platforms send from their own domain and use your domain in the From: header only — these need DKIM set up with your domain.
Server-generated email: Developer tools, monitoring systems, cron job notifications — often sent from the server's localhost without authentication.
Mailing lists: List software that rewrites the From: header breaks DMARC. Use DMARC-compatible mailing list software or SRS (Sender Rewriting Scheme).
DMARC blocking scenarios and fixes
| Scenario ↕ | Why DMARC Fails ↕ | Fix ↕ |
|---|---|---|
| Email forwarding (aliasing) | SPF fails (new server IP), DKIM may survive | Ensure DKIM is signed — it survives forwarding if message is unmodified |
| Mailing list software | Rewrites From: or modifies message body breaking DKIM | Use DMARC-compatible list software (Mailman 3+) or configure SRS |
| Third-party ESP using your From: | ESP signs with their domain, not yours — DKIM d= mismatch | Configure DKIM in the ESP using your own domain and selector |
| Server-generated email (cron, alerts) | No SPF/DKIM configured for server's IP | Route through authenticated relay or configure server SPF/DKIM |
| Old marketing platform still in SPF | Legitimate sender not in SPF record | Add to SPF record; enable DKIM signing in the platform |
Check your domain's email health
Run a free scan against 60 blacklists. Validate SPF, DKIM, DMARC, and MX records in seconds.
Related free tools