Email deliverability Q&A

How do I move from DMARC p=none to p=reject?

Samuel Chenard

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 stagesp=none with rua reporting, then p=quarantine with a pct ramp, then p=reject
Minimum monitoringGoogle: one week at p=none is usually enough for reports to cover all mail streams
Realistic total4 to 6 weeks for a simple single-vendor domain; 2 to 4 months for a domain with many sending services
The gate for each stepEvery legitimate sender passing DMARC alignment in your aggregate reports, not a date on a calendar
RollbackOne DNS TXT edit back to the previous policy or a lower pct; receivers honor it as soon as the record's TTL expires
Why botherOnly 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.

Six-step rollout from DMARC p=none to p=reject: publish p=none with rua reporting, inventory every sender from aggregate reports, fix SPF and DKIM alignment, step up to p=quarantine with a pct ramp, switch to p=reject, keep monitoring

What Google and Microsoft actually recommend

SourcePublished rollout guidanceNotes
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 requiredOne 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 nonep=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 lastpct 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 rejectedMicrosoft'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 areWhat the reports showWhat to do
p=none, week 1Unknown source IPs failing alignmentIdentify each: your tools first (check vendor docs for their sending IPs), then treat the rest as spoofing
p=none, ready to advanceAll legitimate sources aligned for a full cycle of every mail streamMove to p=quarantine with a low pct and a short TTL
p=quarantine, pct rampingA legitimate source starts failing after a vendor-side changeDrop pct back, fix the source's SPF or DKIM alignment, resume the ramp
p=quarantine at pct=100Clean reports; spoofed volume being quarantinedHold one more full cycle, then switch the policy tag to reject
p=rejectSpoofed mail rejected at the door; occasional forwarding lossesKeep rua reporting on forever; every new sending tool must be aligned before launch
Any stage, valid mail bouncingRecipients' servers refusing your legitimate mailRoll 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.

Six-step rollout from DMARC p=none to p=reject: publish p=none with rua reporting, inventory every sender from aggregate reports, fix SPF and DKIM alignment, step up to p=quarantine with a pct ramp, switch to p=reject, keep monitoring

How to fix it

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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

Google's tutorial says one week of daily reports is usually representative of all your mail streams, and that is the floor, not the target. Stay until every legitimate sender has aligned through a full cycle of your slowest stream; a monthly newsletter means at least a month of monitoring.

You can. Microsoft's rollout steps through the sequence none, quarantine, reject without skipping; Google permits reject in place of quarantine, while warning that rejected messages are never delivered. Our advice is not to skip it: quarantine misfires land in spam folders where they can be found and diagnosed, reject misfires destroy the mail, and ramping pct at quarantine is a cheap dress rehearsal that only costs you days.

The pct tag asks receivers to apply your policy to a sampled percentage of failing mail and treat the rest one level softer. It shrinks the blast radius of a mistake while you verify reports match reality. It defaults to 100 when omitted; the glossary entry covers the mechanics.

Edit the DNS TXT record back to the previous policy or a lower pct; receivers honor the change as soon as the record's TTL expires, which is why you keep TTL short during the ramp. There is no penalty for retreating. Fix the misaligned sender the reports point to, then re-advance.

No. Both mandates (Gmail's bulk-sender rules and Outlook's May 2025 requirements for 5,000+ messages/day) require a DMARC record and alignment, and both accept p=none as the minimum policy. Reject is not for their benefit; it is what stops other people spoofing your domain.

Forwarded mail and mailing lists, where the intermediary breaks SPF and sometimes DKIM, plus any sending tool connected after the rollout without alignment. The first category is a known, usually small loss; the second is why rua reporting stays on permanently after enforcement.

Yes, eventually; a permissive subdomain is a spoofing loophole. Microsoft's guidance is to roll out per subdomain, starting with low-volume ones and saving the parent for last, since the parent record covers subdomains without their own. Parked domains that never send should go straight to reject.

Sources

Every benchmark above was verified against the vendor's own documentation on the date shown.

Related reading

Email deliverability, fixed: the full guide