Blog · Dmarc
Does DMARC p=none Protect Your Domain? Why Monitoring-Only Records Are Just Decoration
Does DMARC p=none Protect Your Domain?
No.
A DMARC record set to p=none tells receivers to accept every email that arrives at your domain, regardless of whether it passes authentication. You have published a record. You have not configured protection.
This distinction matters because most administrators who set up DMARC follow a common sequence: publish the record with p=none to start monitoring, then stop. The record is there. The domain is not protected.
How DMARC Policy Levels Work
DMARC has three policy settings:
- p=none -- receivers accept all mail, with no special handling for authentication failures. Your record is visible. Your mail is not protected.
- p=quarantine -- receivers should junk mail that fails DMARC, rather than delivering it to the inbox.
- p=reject -- receivers should refuse delivery entirely for mail that fails DMARC.
The policy level is the p= value in your _dmarc.yourdomain.com DNS record. It is the only part of your DMARC configuration that tells receivers what to do with non-compliant mail.
With p=none, that instruction is: do nothing differently. Mail that passes authentication goes through. Mail that fails authentication also goes through. The policy level makes no distinction.
Why p=none Does Not Stop Spoofing
Email spoofing works by sending mail with a forged From address. The receiver checks whether the sending server is authorized to send mail for that domain (SPF), whether the message was signed by the domain's private key (DKIM), and whether the From domain aligns with the authenticated sending domain (DMARC alignment).
When a spoofed message arrives and fails those checks, DMARC's policy tells the receiver what to do next. At p=none, the instruction is to do nothing. Deliver the mail anyway.
This is why p=none is monitoring mode. You are collecting information about who is sending mail from your domain. You are not instructing anyone to act on that information.
The practical consequence: an attacker who sends forged email from your domain will have that mail delivered to recipients at gmail.com, outlook.com, or anywhere else, because those receivers have no instruction from your DMARC policy to block it. Your record exists. Your protection does not.
The Numbers Behind DMARC Decoration
A July 2026 analysis of the Cloudflare Radar Top 1M domains found that 70.9% of mail-enabled domains with a published DMARC record were still spoofable.
The primary reason is policy level. Domains that publish p=none have made their presence known but have not configured enforcement. Receivers who honor DMARC will check the record and see p=none, and then deliver the spoofed mail because that is what p=none instructs them to do.
That 70.9% figure is not a theoretical vulnerability. It is a measurement of real-world spoofing risk across millions of domains that have technically completed DMARC setup.
How to Check Your Current DMARC Policy
Run a DNS lookup for _dmarc.yourdomain.com (using dig, an online DNS checker, or any DNS lookup tool). Look at the p= value.
If p=none, your domain is in monitoring mode. You are collecting aggregate reports if your rua tag is configured. You are not blocking anything.
If p=quarantine or p=reject, your domain has enforcement configured. That does not mean it is working perfectly, but it does mean receivers have instructions to act on authentication failures.
The second thing to check is whether your rua tag points to a monitored address. The rua tag tells participating receivers where to send your aggregate DMARC reports. If it is missing or points to an unmonitored inbox, you have the monitoring infrastructure in place but nobody reading it.
If you are using p=none without reading the reports, you have the cost of the configuration without the benefit of the visibility.
What to Do If Your Domain Is at p=none
The move from p=none to enforcement is not a single step. It is a process that requires understanding your mail first.
Review your aggregate reports. Before changing anything, look at what your DMARC reports show. You are looking for two things: whether you have any spoofing activity (messages failing DMARC that are not from your legitimate sending infrastructure), and whether your legitimate mail streams are already passing DMARC or failing it.
Legitimate mail can fail DMARC for several reasons: a mailing service that does not sign with your domain's DKIM key, a partner who forwards mail on your behalf, an internal relay that changes the From address. Each of those is fixable, but you need to know about them first.
This is where most teams get stuck. Parsing raw DMARC aggregate reports in XML format is not how most IT administrators want to spend their time. DMARCFlow reads those reports and presents the patterns in a structured dashboard with alerts for new failure types, so you can review your mail activity in minutes instead of hours.
Move to p=quarantine once your legitimate mail is clean. When you are confident that your normal mail streams pass DMARC, setting p=quarantine tells receivers to junk rather than reject non-compliant messages. This gives you a safety buffer: if something misconfigured still slips through, it goes to spam instead of bouncing entirely.
Move to p=reject when p=quarantine is stable. Full enforcement. Any message that does not pass DMARC alignment is refused. At this policy level, you need to be certain that every legitimate sender for your domain is authenticated correctly.
The transition typically looks like this: p=none with active report monitoring, then p=quarantine after 30-60 days of clean reports, then p=reject once p=quarantine shows no unexpected failures.
The Short Version
Publishing DMARC p=none is not protection. It is a DNS record that says "we are watching" while leaving the door open. The 70.9% of mail-enabled domains that remain spoofable despite having DMARC records are mostly sitting at p=none.
The path forward requires using those reports to understand your mail, then moving the policy level up as your confidence in your mail infrastructure grows. DMARCFlow makes the monitoring part automatic so you can focus on fixing mail flows instead of reading XML. When your reports show clean legitimate traffic and you are ready to enforce, p=reject is the configuration that actually stops spoofed mail from arriving in inboxes.