DMARC Policy Explained: none, quarantine, and reject

The DMARC policy (p= tag) controls what happens to email that fails authentication. Learn when to use none, quarantine, and reject, and how to migrate safely between them.


The most important decision when configuring DMARC is choosing the right policy. The p= tag determines what receiving mail servers do with messages that fail DMARC authentication. Too lenient, and phishing emails slip through. Too strict, too soon, and you risk blocking your own legitimate email. This guide explains each policy level and how to deploy them safely.

The Three DMARC Policies

DMARC defines three policy values for the p= tag:

PolicyAction on FailureProtection LevelRecommended Stage
p=noneDeliver message normallyNone (monitoring only)Initial deployment
p=quarantineSend to spam/junk folderMediumTesting and gradual rollout
p=rejectReject at SMTP levelFull enforcementAfter authentication is confirmed

p=none: Monitor Mode

When the policy is set to none, failing emails are still delivered to the recipient's inbox — exactly as they would be without DMARC. The only effect is that DMARC aggregate reports are generated and sent to the rua= address.

text
_dmarc.example.com. 300 IN TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com"

When to use: Always start here. Before you can safely enforce a stricter policy, you need to know who is legitimately sending email on behalf of your domain. Aggregate reports reveal all sending sources — your ESP, transactional email service, CRM, mailing lists, and any unauthorized senders — without any risk of blocking legitimate email.

p=none provides no protectionPhishing emails and spoofed messages from your domain will still be delivered to recipients when p=none is active. Do not remain at p=none indefinitely. It is a diagnostic starting point, not a security measure.

p=quarantine: Spam Folder Enforcement

With p=quarantine, emails that fail DMARC authentication are moved to the recipient's spam or junk folder rather than being rejected outright. The message still reaches the recipient, but is flagged as suspicious.

text
_dmarc.example.com. 300 IN TXT "v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc-reports@example.com"

When to use: Move to quarantine once you have analyzed your aggregate reports and are confident that the major legitimate sending sources are properly authenticated. Start with a low pct= value (e.g., 10% or 25%) to reduce risk, then increase as you verify no legitimate email is being quarantined.

Advantages: Recipients can still access quarantined messages if needed, reducing the impact of false positives. It provides real protection against most spoofing while allowing recovery if a legitimate sender is misconfigured.

p=reject: Full Enforcement

With p=reject, emails that fail DMARC are rejected at the SMTP level. The receiving server sends a bounce notification back to the sender. The message never reaches the recipient's inbox, spam folder, or any other mailbox.

text
_dmarc.example.com. 300 IN TXT "v=DMARC1; p=reject; pct=100; rua=mailto:dmarc-reports@example.com"

When to use: Only move to p=reject when you are confident all legitimate sending sources are properly configured with SPF and DKIM alignment. This typically takes weeks to months of monitoring reports and fixing authentication issues.

Benefits: Maximum protection against spoofing, phishing, and brand impersonation. Google, Yahoo, and other major providers explicitly require p=reject or p=quarantine for high-volume senders.

Google and Yahoo requirementsAs of 2024, Google and Yahoo require all bulk senders (sending over 5,000 messages per day to Gmail/Yahoo) to have a DMARC policy of at least p=none. However, to meet best practices and protect your domain fully, aim for p=reject.

The pct= Tag: Gradual Policy Rollout

The pct= tag specifies the percentage of DMARC-failing messages to which the policy is applied. The default is 100 (all failing messages). Using a lower percentage allows you to gradually increase enforcement while monitoring for issues.

text
# Apply quarantine to 10% of failing messages "v=DMARC1; p=quarantine; pct=10; rua=mailto:dmarc@example.com" # Increase to 50% "v=DMARC1; p=quarantine; pct=50; rua=mailto:dmarc@example.com" # Full enforcement "v=DMARC1; p=reject; pct=100; rua=mailto:dmarc@example.com"

Messages that fall outside the pct= percentage are treated as if the next lower policy applies. For p=reject; pct=50, 50% of failing messages are rejected and 50% are quarantined.

The sp= Tag: Subdomain Policy

By default, the p= policy applies to the root domain and all subdomains. The sp= tag allows a separate policy for subdomains.

text
# Root domain at reject, subdomains at quarantine "v=DMARC1; p=reject; sp=quarantine; rua=mailto:dmarc@example.com"

This is useful when your root domain is fully locked down but some subdomains are used for bulk sending or third-party services that you haven't fully authenticated yet.

Recommended DMARC Rollout Timeline

StagePolicyDurationGoal
1. Monitorp=none2–4 weeksCollect reports, identify all senders
2. Soft enforcementp=quarantine; pct=101–2 weeksTest quarantine on small percentage
3. Increase coveragep=quarantine; pct=501–2 weeksExpand while monitoring reports
4. Full quarantinep=quarantine; pct=1001–2 weeksConfirm no legitimate email affected
5. Full enforcementp=reject; pct=100PermanentMaximum protection

Frequently Asked Questions

What happens to legitimate email if I set p=reject too early?

Legitimate email that fails DMARC (due to misconfigured SPF/DKIM or unauthenticated third-party senders) will be rejected and bounce. Recipients will never see the message. This is why careful monitoring and fixing authentication issues before enforcing reject is critical.

Does p=none do anything useful?

Yes — it enables DMARC reporting. Even though no policy is enforced, you receive aggregate reports showing who is sending email on behalf of your domain. This information is essential for safely deploying stricter policies.

Can I go directly to p=reject?

Technically yes, but it is risky unless you have already verified that all your legitimate sending sources pass SPF and DKIM with proper alignment. Skipping the monitoring phase is a common mistake that results in legitimate email being blocked.

How do I check my current DMARC policy?

Use the ShowDNS DMARC Lookup tool or run dig _dmarc.yourdomain.com TXT +short from the command line.

Related Articles