Email deliverability Q&A
How do I move from DMARC p=none to p=reject?

By Samuel Chenard · CEO & Co-Founder, Palisade · Reviewed July 20, 2026
Move in stages: monitor at p=none with rua reporting, fix alignment for every legitimate sender the reports reveal, step up to p=quarantine with a low pct, ramp the percentage to 100, then switch to p=reject. Google says a week of daily reports at p=none is usually representative of all your mail streams; hold each later step until reports run clean, and expect four to twelve weeks end to end.
| At a glance | |
|---|---|
| The stages | p=none with rua reporting, then p=quarantine with a pct ramp, then p=reject |
| Minimum monitoring | Google: one week at p=none is usually enough for reports to cover all mail streams |
| Realistic total | 4 to 6 weeks for a simple single-vendor domain; 2 to 4 months for a domain with many sending services |
| The gate for each step | Every legitimate sender passing DMARC alignment in your aggregate reports, not a date on a calendar |
| Rollback | One DNS TXT edit back to the previous policy or a lower pct; receivers honor it as soon as the record's TTL expires |
| Why bother | Only quarantine and reject stop spoofed mail; p=none is a camera, not a lock |
The move from monitoring to enforcement is the whole point of DMARC, and it is also where domains get hurt. Jump straight to p=reject and every legitimate tool that sends as your domain but fails alignment (a CRM, a billing system, a newsletter platform someone connected two years ago) starts getting its mail refused. The staged rollout exists so you find those senders in reports before receivers find them for you.
The mechanics are simple: DMARC policy is one DNS TXT record, and the policy tag steps through three values. What each value does is covered in the glossary entries for p=none (/learning/glossary/dmarc-p-none), p=quarantine (/learning/glossary/dmarc-p-quarantine), and p=reject (/learning/glossary/dmarc-p-reject), with the pct sampling tag at /learning/glossary/dmarc-pct. This page is about the order, the evidence to collect at each stage, and when you are actually ready to advance.
Both major receivers publish rollout guidance. Microsoft's walks the full sequence: none, then quarantine, then reject. Google's has you start at p=none with aggregate reporting and phase in quarantine with pct, and presents reject as the stricter option you "can use instead of the quarantine if required." Finishing at reject is this page's recommendation (it matches Microsoft's sequencing), because only enforcement stops spoofing. Google's tutorial says a week of daily reports is usually representative; Microsoft's guidance is to start with a low-volume subdomain and save the parent domain for last. Neither vendor publishes a total timeline, because the honest answer is that your report data decides it.

What Google and Microsoft actually recommend
| Source | Published rollout guidance | Notes |
|---|---|---|
| Google Workspace (Recommended DMARC rollout) | Start at p=none with rua; monitor daily reports; move to quarantine with a low pct (its example uses pct=5); gradually increase the percentage to 100%; reject can be used instead of quarantine if required | One week at p=none is usually enough for reports to represent all mail streams |
| Google (Email sender guidelines) | Bulk senders (5,000+ messages/day to Gmail) must publish a DMARC record; enforcement policy can be none | p=none satisfies the mandate; it does not stop spoofing |
| Microsoft 365 (Set up DMARC) | Gradual rollout to p=reject; suggested pct increments of 10, 25, 50, 75, 100 at each policy level; start with a low-volume subdomain, parent domain last | pct defaults to 100 when omitted |
| Microsoft (Outlook.com postmaster + high-volume sender announcement) | Since May 5, 2025, domains sending 5,000+ messages/day to Outlook consumer addresses must pass SPF, DKIM, and DMARC; non-compliant mail is junked, then rejected | Microsoft's announcement of the requirements sets the minimum DMARC policy at p=none; enforcement remains your job |
All sources checked 2026-07-20; links in Sources below. Read the mandates correctly: Google and Microsoft require you to HAVE a DMARC record, and p=none satisfies that. Moving past p=none is what protects your domain rather than their inboxes.
Reading aggregate reports: the gate between every stage
Aggregate reports are the evidence that says advance or wait. Each report lists every source IP that sent mail claiming to be your domain, the volume, and whether SPF and DKIM aligned. Your job at p=none is to sort those sources into three buckets: legitimate and passing (fine), legitimate and failing (fix before you enforce), and not yours (the spoofers enforcement will cut off).
The legitimate-and-failing bucket is the work. For each source, get it aligned: add the service to your SPF record, or turn on custom DKIM signing with your domain at the service, so at least one of the two aligns with your From domain. The common trap where raw SPF passes but DMARC still fails is alignment, covered in the sibling page linked below on DMARC failing while SPF passes.
You are ready to leave p=none when the failing-but-legitimate bucket has been empty (or a knowingly accepted loss, like unfixable forwarded mail) for a full reporting cycle across all your mail streams. Monthly newsletters mean a monthly stream; if you send one on the 1st, a week of reports in mid-month never saw it. That is the strongest argument for stretching the monitoring stage past Google's one-week minimum.
Realistic timelines, and what actually sets them
A single domain that only sends through one platform, say Google Workspace plus one ESP, can go end to end in four to six weeks: one to two weeks at p=none, two to three weeks ramping pct through quarantine, then reject. A domain with eight SaaS tools sending as it, some owned by marketing and some by nobody, is a two-to-four-month project, and almost all of that time is chasing the owners of misaligned senders, not editing DNS.
The calendar is not the constraint; coverage is. Each stage ends when a full cycle of every mail stream has reported clean, and slow streams (monthly invoices, quarterly statements) stretch the schedule. Rushing a stage does not make the misaligned sender go away; it just moves the discovery from a report you read to a bounce your CEO forwards you.
Set the record's TTL to something short (an hour) while you ramp. It makes every step, forward or backward, take effect quickly, and it costs nothing.
Rollback: quarantine misfires are recoverable, reject misfires are not
The rollback mechanism is the same DNS edit as the rollout: drop pct back down, or drop the policy back a level, and receivers honor the new record as soon as the TTL expires. There is no penalty box for retreating; DMARC has no memory of your previous policy.
The asymmetry between the two enforcement levels is why the quarantine stage exists at all. Mail wrongly quarantined lands in spam folders and can be found, released, and used to diagnose which sender you missed. Mail wrongly rejected is gone; the sender gets a bounce and the recipient gets nothing. So spend your risk budget at p=quarantine: ramp pct there, watch reports and spam-folder complaints, and only take the last step when quarantine at 100% has run clean.
One caveat on partial enforcement: pct sampling makes a misfire smaller, not visible earlier. A sender that fails alignment at pct=10 fails at 100 too. The ramp buys you a smaller blast radius while you confirm the reports were telling the truth, which is exactly what it is for.
Stage-by-stage: what you see, what it means, what to do
| Where you are | What the reports show | What to do |
|---|---|---|
| p=none, week 1 | Unknown source IPs failing alignment | Identify each: your tools first (check vendor docs for their sending IPs), then treat the rest as spoofing |
| p=none, ready to advance | All legitimate sources aligned for a full cycle of every mail stream | Move to p=quarantine with a low pct and a short TTL |
| p=quarantine, pct ramping | A legitimate source starts failing after a vendor-side change | Drop pct back, fix the source's SPF or DKIM alignment, resume the ramp |
| p=quarantine at pct=100 | Clean reports; spoofed volume being quarantined | Hold one more full cycle, then switch the policy tag to reject |
| p=reject | Spoofed mail rejected at the door; occasional forwarding losses | Keep rua reporting on forever; every new sending tool must be aligned before launch |
| Any stage, valid mail bouncing | Recipients' servers refusing your legitimate mail | Roll back one step, match the bounce code in the SMTP reference at /learning/smtp-error-codes, fix, re-advance |
Rejections for missing or failing authentication surface as hard bounces with provider-specific codes (Gmail's 550 5.7.26, Microsoft's 550 5.7.509 among them). Each code has its own walkthrough in the SMTP error-code reference at /learning/smtp-error-codes.

How to fix it
Check what your domain publishes today
Run your domain through the free DMARC checker below. It shows your current policy, pct, and reporting addresses, so you know which stage you are starting from and whether reports are flowing at all.
Run the check now
Enter your sending domain and the check runs instantly on the next page. Free, no signup.
Publish p=none with a rua address you will actually read
If you have no record yet, publish
v=DMARC1; p=none; rua=mailto:...with a dedicated mailbox or a report-parsing service as the destination. Raw reports are gzipped XML; nobody reads them by hand at any real volume.Inventory every sender from the aggregate reports
After a week or more of reports, list every source sending as your domain and classify it: legitimate and aligned, legitimate but failing, or spoofing. The middle bucket is your work queue; the sibling page on aggregate reports (linked below) covers how to read them.
Fix alignment for each legitimate source
Per source, make SPF or DKIM align with your From domain: add the service to SPF, or enable custom DKIM signing with your domain at the service. Validate each change with the checkers at /tools/spf and /tools/dkim before moving on.
Step up to p=quarantine and ramp pct
Once a full cycle of every mail stream reports clean, change the policy to quarantine with a low pct (Google's example starts at 5; Microsoft suggests 10, 25, 50, 75, 100). Hold each increment until reports stay clean, and keep the record's TTL short.
Switch to p=reject
After quarantine at pct=100 has run clean for a full cycle, change the policy tag to reject. Spoofed mail now bounces off receivers instead of reaching spam folders.
Keep monitoring; enforcement is a state you maintain
Leave rua reporting on permanently. The next misconfigured tool someone connects will surface in a report, and at p=reject the cost of missing it is rejected mail, not a dashboard anomaly.
Related free tools: SPF checker · DKIM checker · DMARC record generator
The playbook is well documented; executing it is the grind
Nothing above is secret. Google and Microsoft both publish the stages, and every DMARC monitoring product will show you the failing senders. What monitoring tools do not do is the middle of the playbook: chasing alignment fixes across eight SaaS vendors, deciding when a stream has truly run clean, moving the pct, and rolling back when a vendor silently changes their sending infrastructure. That is why so many domains sit at p=none for years with a dashboard nobody opens.
This ramp, from first report to a held p=reject, is exactly what Palisade's agent executes: it hosts the DMARC record, reads the reports, walks the policy up as sources come into alignment, and holds enforcement afterward. Monitoring is the means; p=reject is the product.
DMARC software that does the work
Palisade's AI agent hosts your SPF, DKIM, and DMARC records and takes every domain to p=reject automatically. Your first domain is free.
First domain free forever
Why it matters for MSPs
Across a client book, run the rollout as a portfolio, not fifty parallel snowflakes. Baseline every client domain at p=none with reporting on day one of onboarding; the aggregate reports then tell you which clients are two DNS edits from reject and which have a shadow-IT sender problem. Sequence by risk and simplicity: parked domains straight to reject, single-vendor domains next, the multi-tool marketing domains last. The stage gates are identical for every tenant, which is what makes this automatable: Palisade hosts the SPF, DKIM, and DMARC records per client domain, walks each one to p=reject as its reports run clean, and holds enforcement after, with ConnectWise, HaloPSA, and Autotask integrations so stage changes and new-sender alerts land in your PSA. Your own MSP domain is a free NFR domain to run the ramp on first.
Frequently asked questions
Sources
Every benchmark above was verified against the vendor's own documentation on the date shown.
- Google's recommended rollout: p=none with rua first, then quarantine with a low pct (example pct=5), gradually increasing the percentage over time to cover 100% of messages; reject can be used instead of quarantine if required; one week at p=none is usually enough for daily reports to represent all mail streams. Google Workspace Help: Recommended DMARC rollout (checked 2026-07-20)
- Bulk senders (5,000+ messages/day to Gmail) must set up DMARC; the enforcement policy can be set to none, and the From domain must align with SPF or DKIM. Google Email sender guidelines (checked 2026-07-20)
- Microsoft recommends a gradual rollout to p=reject with pct increments of 10, 25, 50, 75, 100, starting with a low-volume subdomain and saving the parent domain for last; pct defaults to 100 when omitted. Microsoft Learn: Set up DMARC to validate email in Microsoft 365 (checked 2026-07-20)
- Since May 5, 2025, Outlook.com enforces SPF, DKIM, and DMARC for domains sending over 5,000 messages/day; non-compliant mail is junked, with rejection to follow. Outlook.com postmaster (sender policies) (checked 2026-07-20)
- Outlook's high-volume sender requirements target consumer addresses (outlook.com, hotmail.com, live.com) for domains sending over 5,000 messages/day; DMARC must at least be p=none and align with SPF or DKIM; non-compliant mail is routed to Junk after May 5, 2025, with rejection to follow. Microsoft Tech Community: Strengthening Email Ecosystem: Outlook's New Requirements for High-Volume Senders (checked 2026-07-20)