Blog · Dmarc
Does DMARC at p=none Protect Against Spoofing? What It Actually Does
Does DMARC at p=none Protect Against Spoofing? What It Actually Does
No. DMARC at p=none does not protect against spoofing - it only monitors it.
If you set your DMARC record to p=none, receiving mail servers will still accept and deliver emails that fail DMARC checks. They will not block them, move them to spam, or flag them as suspicious. Your record tells them: "send me reports about what you see, but do nothing yourself."
Attackers who spoof your domain benefit from exactly the same p=none policy you chose. Your DMARC record gives them a free pass.
This is why p=none is often described as decorative. It looks like security. It sounds like a policy. But it places no obstacle between spoofed emails and your recipients' inboxes.
What Does DMARC at p=none Actually Do?
DMARC has three policy levels:
- p=none - receive aggregate reports about authentication results, but receivers take no action on failures
- p=quarantine - receivers should route emails that fail DMARC to spam or junk folders
- p=reject - receivers should refuse to deliver emails that fail DMARC outright
The word "policy" in "DMARC policy" is accurate but easy to misunderstand. It describes what you ask receivers to do, not what they are required to do. At p=none, you are asking receivers to log failures and send you reports. You are not asking them to act on those failures.
Most major receivers - Google, Microsoft, Yahoo - honor p=none by respecting it literally: they deliver everything regardless. Your aggregate reports may show thousands of authentication failures, but not a single message was blocked.
Why p=none is Often Called Decorative
The core issue is the word "none." A DMARC policy of p=none tells receivers: "do nothing with failures." Not quarantine. Not reject. Nothing.
This means a spoofed email - one claiming to be from your domain but sent from an unauthorized server - will reach your recipient's inbox just as easily as a legitimate message. Your DMARC record at p=none does not make spoofing harder. It does not add friction for attackers. It does not protect your recipients from phishing that wears your domain as a disguise.
The false sense of security comes from having a DMARC record at all. Many domain owners see "we have DMARC configured" as equivalent to "we are protected." p=none is not protection. It is visibility.
A real threat actor sending email from infrastructure they control does not care about your p=none policy. They only care whether their spoofed message reaches the inbox. With p=none, it will.
How to Score Whether Your Domain Has Real Protection
Before changing your DMARC policy, score your current protection level honestly. Most domains at p=none score lower than they expect. Use these five checks:
Check 1: Do you have a valid SPF record?
An SPF record lists IP addresses authorized to send email for your domain. If you have no SPF record, any server can claim to be sending for your domain and pass SPF checks.
Check 2: Do you have a valid DKIM record?
DKIM adds a cryptographic signature to outgoing messages. Without a DKIM record, your legitimate emails cannot be verified and attackers cannot be distinguished from you by this signal.
Check 3: Do your authorized sending services use aligned domains?
Many organizations use third-party email providers, marketing platforms, or cloud services that send on their behalf. If these services send from a domain different from your From address, DMARC alignment fails even though authentication passes. DMARCFlow's analyzer flags these gaps automatically across all your sending sources.
Check 4: What do your aggregate reports show about pass and fail rates?
Your reports tell you what receivers actually see. If you see high failure rates but no blocks or quarantines, your p=none policy is doing exactly what you asked: nothing.
Check 5: Have you moved beyond p=none to enforcement?
p=none is a starting point, not a destination. Once you understand your legitimate sending patterns and have fixed alignment issues, moving to p=quarantine is the minimum credible protection. p=reject is the target for domains that have fully audited their sending infrastructure.
A domain with p=none and unaligned sending sources is fully exposed to spoofing regardless of how many authentication records it has. Visibility without enforcement is a false floor.
What Real Email Protection Requires
Real protection from spoofing requires two things working together: valid authentication and alignment.
Authentication means the sending server can prove it is authorized to send on behalf of your domain. This comes from two records:
- SPF - confirms the sending server's IP is authorized
- DKIM - confirms the message was signed with your domain's private key
Alignment means the domain in the From header matches the domain that passed SPF or DKIM. A message can have valid SPF and DKIM signatures but still fail DMARC if the From address domain does not match the authenticated sending domain.
This is where most p=none setups fall short. They may have valid SPF and DKIM records for their own sending infrastructure. But when an attacker spoofs their domain from elsewhere, the spoofed message has no valid signature at all. DMARC checks fail. With p=none, delivery continues anyway.
Genuine protection requires:
1. All legitimate sending sources are covered by SPF or DKIM
2. All legitimate senders use aligned domains
3. A DMARC policy set to p=quarantine or p=reject
Until you reach step three, you have monitoring - not protection.
What to Do If You Are Still at p=none
Moving from p=none to enforcement safely requires a deliberate sequence:
Step 1: Read your aggregate reports
Your reports show which IPs and domains are sending email for your domain. Before changing any policy, confirm you know every legitimate source. Missing sources when you move to p=quarantine or p=reject will cause legitimate email to be blocked or quarantined.
Step 2: Fix alignment issues
If your own sending infrastructure does not align - for example, if your marketing platform sends from a different subdomain - resolve this before changing your policy. Misalignment at p=none is noise in reports. Misalignment at p=reject is a service outage.
Step 3: Move to p=quarantine first
Set your policy to p=quarantine and monitor for two to four weeks. Watch your aggregate reports for unexpected failures. If legitimate messages start appearing in quarantine, you have a misconfiguration to fix.
Step 4: Move to p=reject once quarantine is clean
When p=quarantine produces no false positives for at least two weeks, move to p=reject. This tells receivers to refuse delivery of any message that fails DMARC - the strongest available protection against spoofing.
DMARCFlow's free DMARC analyzer scores your protection level across all five checks at once, flags alignment gaps, and visualizes aggregate report data without requiring you to parse raw XML files. It is the fastest way to move from p=none to genuine enforcement without guessing which misconfigurations will cause problems.
FAQ
Does p=none help with phishing?
p=none does not stop phishing emails. It only tells receivers to send you reports about what they see. Attackers sending phishing from outside your infrastructure face no obstacle from your p=none policy. The only protection against phishing is moving to p=quarantine or p=reject.
Can attackers see my DMARC record?
Yes. Your DMARC record is published in DNS and is publicly visible to anyone who looks it up. Attackers can see exactly what policy you have set. If you are at p=none, they know you have no enforcement in place.
What happens if I set p=reject without proper alignment?
Your legitimate email will be blocked. Messages from your own infrastructure that do not pass DKIM alignment will be refused by receivers honoring your p=reject policy. This is why p=quarantine first is the safe path: it reveals alignment problems before they become hard bounces.
How long does it take to move from p=none to p=reject safely?
Typically four to eight weeks if you have a complex sending infrastructure. Simple domains with a single sending source can move faster - sometimes in two to three weeks. The minimum time at p=quarantine before moving to p=reject should be two weeks with no false positives observed.
The Short Version
DMARC at p=none is monitoring, not protection. It gives you visibility into who is sending email for your domain but does not stop unauthorized senders from delivering messages to your recipients.
Real protection requires moving to p=quarantine or p=reject once you have confirmed your sending infrastructure is properly aligned. Until then, your DMARC record is decorative - it looks like security but adds no defense against spoofing.
Use a free analyzer to score your current protection level before changing any policy. Understanding what you have is the prerequisite to knowing what you need.