DMARC p=none Explained: What It Means and How Long to Stay There

VigilDog Team · October 28, 2026 · 6 min read

Nearly every DMARC record starts life the same way: v=DMARC1; p=none. It is the safest policy you can publish, and also the most misunderstood. p=none does not protect your domain from spoofing, it simply asks the world's mailbox providers to start telling you who is sending mail as you. Used well, it is the observation deck you climb before you enforce. Used badly, it is a record that sits at p=none for years and does nothing at all.

What DMARC p=none actually does

A DMARC record is a TXT record at _dmarc.yourdomain.com. The p= tag is the policy you are asking receiving servers to apply when a message claims to be from your domain but fails DMARC. With p=none, the answer is: apply nothing. Deliver the message as you normally would, based on your other spam signals, and, this is the important part, send the domain owner an aggregate report about what happened.

For a message to pass DMARC it needs at least one of SPF or DKIM to both authenticate and align. Alignment means the domain that passed SPF or signed with DKIM matches the domain in the visible From header. A message can pass SPF for its bounce address and still fail DMARC if that address is a different organizational domain, alignment is what DMARC adds on top of the older checks.

So p=none changes nothing about delivery. A spoofed email that fails DMARC under p=none still lands wherever the receiver decides. The value is entirely in the reports you begin collecting the moment the record goes live.

Senderyour domainSPFauthorised IP?DKIMsignature valid?AlignmentFrom matches?DMARC policynone / quarantine / rejectInbox
How SPF, DKIM and DMARC verify an email

Why you start at p=none

Almost no organization has a complete, accurate list of everything that sends email in its name. Marketing automation, invoicing systems, help desks, payroll, the CRM, a booking widget, that one vendor set up three years ago, each is a potential sender, and each needs SPF or DKIM configured and aligned before enforcement is safe.

If you jump straight to p=reject before that inventory is complete, you don't spoof-proof your domain, you delete your own legitimate mail. A payroll notification or a customer receipt that was never set up for DKIM will simply vanish. p=none is the policy that lets you discover the full list without breaking anything, because the reports name every source sending as you, aligned or not.

  • Publish a record with rua= pointing at a mailbox or a report processor: v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com
  • Leave delivery untouched while reports accumulate, you are gathering evidence, not enforcing yet
  • Use the data to bring every legitimate sender into SPF and DKIM alignment

Reading the reports p=none gives you

Aggregate reports (the rua stream) arrive as gzipped XML, usually once a day from each major provider. Each report groups messages by sending IP and tells you the volume, the SPF result, the DKIM result, and whether each aligned with your From domain. Raw XML is unpleasant to read by hand, so most teams pipe it into a parser or a dashboard.

What you are hunting for is a clean picture: every IP that sends legitimate mail should show SPF or DKIM passing and aligned. Anything passing but unaligned is a sender you still need to fix. Anything you don't recognize sending real volume is worth investigating, it may be a forgotten service, or it may be abuse. You can sanity-check your published record at any point with the DMARC checker to confirm the syntax and policy the world actually sees.

The forensic (ruf) stream, which sends per-message failure samples, is barely supported today for privacy reasons, don't build your rollout around it. Aggregate reports carry the information you need.

How long should you stay at p=none?

There is no fixed number, but there is a clear finish line: you leave p=none when every legitimate sender in your reports authenticates and aligns, and you have watched enough days to trust that the picture is stable. For a simple domain with one or two senders, that can be two to three weeks. For an enterprise with a long tail of vendors, monthly-billing systems, and quarterly campaigns, six to eight weeks is realistic, you want to capture senders that only fire occasionally.

The failure mode is treating p=none as a destination. A record parked at p=none for a year is publishing a public statement that you are watching but will do nothing, and spoofers reading your policy know it. If your reports have been clean for several weeks and you still haven't moved, that is the signal to advance, not more waiting.

Moving from p=none to quarantine and reject

Enforcement is a ramp, not a switch. Move to p=quarantine first, and use the pct tag to phase it in: p=quarantine; pct=25 applies the policy to a quarter of failing mail, letting you catch any surprise before it affects everyone. Raise the percentage as the reports stay clean, then go to pct=100, then finally to p=reject, which tells receivers to refuse failing mail outright.

Keep the rua reports flowing the whole way through, they are how you confirm each step is safe before taking the next. The step-by-step reject rollout walks through the percentages and timing in detail, and if a sender is still failing, the SPF, DKIM and DMARC fix guide covers the record changes that bring it into alignment.

The whole point of p=none is that it ends. It is the phase where you learn; quarantine and reject are where that learning finally protects your domain.

Questions

Frequently asked

Does p=none stop email spoofing?

No. p=none tells receivers to take no DMARC-based action on failing mail, so a spoofed message is delivered exactly as it would be without any DMARC record. Its only effect is turning on the aggregate reports. Spoofing protection begins at p=quarantine and p=reject.

Is it bad to leave DMARC at p=none forever?

Yes, if it is unintentional. p=none is a monitoring stage meant to end once your senders are aligned. A record left at p=none indefinitely publicly signals that you never enforce, which offers spoofers no resistance. Treat clean reports over several weeks as your cue to advance to quarantine.

Will publishing p=none affect my email deliverability?

No. p=none does not change how any message is delivered, it only requests reports. It is specifically designed to be risk-free so you can gather sender data before enforcing. Deliverability changes only become possible once you move to quarantine or reject.

Watch your DMARC posture without watching the XML

VigilDog monitors your SPF, DKIM and DMARC records for agencies and flags the moment a sender drifts out of alignment or a policy changes, so p=none actually turns into p=reject instead of stalling. See how [deliverability monitoring](/monitoring) fits your client domains.

Your first domain is free forever