DMARC Policy Modes: p=none vs p=quarantine vs p=reject Comparison (RFC 7489 §6.3)

A head-to-head comparison deep dive of the three DMARC policy modes: p=none (monitoring only), p=quarantine (spam-folder enforcement), and p=reject (SMTP-level enforcement). This page covers per-mode semantics from RFC 7489 section 6.3, when to use and when not to use each mode, a side-by-side comparison table across 11 dimensions, receiver behaviour at the major mailbox providers (Gmail, Microsoft 365, Yahoo, Apple iCloud), how the pct= sampling tag interacts with each mode (including the dmarcbis removal of pct=), how sp= and np= subdomain policy modes interact with the apex p= tag, a scenario-based decision matrix, common mistakes operators make, and an 8-question FAQ.

This reference is provided in English. DMARC is specified in English-language RFCs (RFC 7489, RFC 9091, draft-ietf-dmarc-dmarcbis) and the canonical vocabulary (p=none, p=quarantine, p=reject, pct=, sp=, np=, rua, ruf, "monitoring mode", "aggregate report") does not translate. We keep the body in the source language so technical terms remain consistent with the specifications.

TL;DR

  • Three policy modes defined by RFC 7489 section 6.3: p=none (monitoring only, no enforcement), p=quarantine (route failing mail to spam folder), p=reject (refuse failing mail at SMTP RCPT TO).
  • Canonical progression: p=none → p=quarantine → p=reject. Never skip quarantine - the spam folder is a recoverable failure mode that surfaces problems without dropping mail.
  • p=none is NOT defensive. It gathers reports but takes no enforcement action. Spoofed mail flows normally to recipient inboxes. Use ONLY during the initial Discovery phase (typically the first 2 to 4 weeks of a DMARC deployment).
  • p=reject is the steady-state target. Only mode that fully prevents domain spoofing, only mode that satisfies BIMI requirements, only mode recommended by CISA BOD 18-01 for U.S. federal agencies, only mode that defeats business email compromise via brand impersonation.
  • pct= sampling applies the named policy to a percentage of failing mail and downgrades the rest one stage. Being removed in the draft-ietf-dmarc-dmarcbis successor draft.
  • sp= and np= set subdomain and non-existent-subdomain policies independently of the apex p= tag. Publish sp=reject and np=reject from day one to block spoofing from non-sending subdomains immediately.

1. Overview: what is a DMARC policy mode?

A DMARC policy mode is the value assigned to the mandatory p= tag in the _dmarc.example.com TXT record. The policy mode is the single most important DMARC deployment decision: it tells receiving mail servers what to do when a message claiming to be from your domain fails DMARC evaluation (fails either SPF alignment OR DKIM alignment OR both).

RFC 7489 section 6.3 defines exactly three policy values:

  • p=none - the Domain Owner requests no specific action from receivers regarding DMARC failures. This is monitoring mode. Receivers send aggregate reports describing observed DMARC outcomes but do not change message disposition based on DMARC failure. Mail flows normally regardless of DMARC pass / fail status.
  • p=quarantine - the Domain Owner requests that DMARC-failing messages be treated as suspicious. The standard receiver interpretation is to deliver to the recipient's spam or junk folder rather than the inbox. The message reaches the recipient and can be rescued from spam, but its visibility is degraded.
  • p=reject - the Domain Owner requests that DMARC-failing messages be refused outright. The standard receiver interpretation is to issue an SMTP 5xx response at the RCPT TO stage so the message is bounced back to the sending system before any delivery attempt is made. The message never reaches the recipient mailbox.

The three modes form the canonical Discovery to Quarantine to Reject deployment progression. Each mode has explicit semantics, explicit receiver behaviour, and explicit use cases. The next three sections cover each mode in detail.

2. p=none in detail (monitoring mode)

2.1 Semantics

Per RFC 7489 section 6.3: "The Domain Owner requests no specific action be taken regarding delivery of messages."

p=none is the only DMARC policy mode that does NOT change message disposition. Mail flows normally regardless of DMARC outcome. The only effect of publishing p=none is that receivers send aggregate (rua) reports describing the observed mail traffic.

2.2 Example record

_dmarc.example.com.  IN  TXT  "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com; fo=1; adkim=r; aspf=r; pct=100"

2.3 When to use p=none

  • Discovery phase only. The first 2 to 4 weeks of a fresh DMARC deployment, while you build the sender inventory by reading aggregate reports.
  • Pre-Triage validation. While you are still in Phase 2 alignment fixing and before you advance to p=quarantine.
  • Short-term rollback. If a production p=quarantine or p=reject deployment causes user-visible issues, fall back to p=none while you diagnose - mail flow restores immediately.

2.4 When NOT to use p=none

  • NOT a permanent state. p=none provides no defensive value: attackers can spoof your domain freely, and recipient mailboxes will accept the spoofed mail. Many organisations publish p=none "to set up DMARC" and then never advance - this is a deployment anti-pattern. Steady-state production domains belong at p=quarantine or p=reject.
  • NOT a BIMI prerequisite. BIMI requires p=quarantine or p=reject; p=none domains are not eligible for the BIMI brand-logo benefit at major receivers.
  • NOT compliant with major frameworks. CISA BOD 18-01, M3AAWG, and NIST SP 800-177 Rev. 1 all recommend p=reject (or at minimum p=quarantine) for production domains.

2.5 What receivers do under p=none

  • Disposition: deliver normally to inbox (no DMARC-driven action).
  • Aggregate reports: sent daily to the rua= mailbox listed in the record.
  • Forensic reports: sent per-failure to the ruf= mailbox if configured (most major receivers do not send forensic reports).
  • SMTP response code: normal 250 OK at RCPT TO and DATA stages - DMARC failure does not change the SMTP outcome.

3. p=quarantine in detail (spam-folder enforcement)

3.1 Semantics

Per RFC 7489 section 6.3: "The Domain Owner wishes to have email that fails the DMARC mechanism check be treated by Mail Receivers as suspicious."

The exact disposition is at the receiver's discretion, but the universally-adopted convention is to deliver the message to the recipient's spam or junk folder. The message reaches the recipient's mailbox but its visibility is degraded.

3.2 Example record

_dmarc.example.com.  IN  TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com; fo=1; adkim=r; aspf=r; pct=100"

3.3 When to use p=quarantine

  • Safety-net stage between the Triage phase (alignment fixing) and the Enforcement phase (p=reject) of a deployment. Typical duration: 2 to 4 weeks at pct=100.
  • Ramp visibility. Optionally start at pct=10 and ramp to pct=25, pct=50, pct=100 over 4 to 8 weeks to limit exposure during the quarantine window (see Section 7).
  • Final defensive tier for organisations that cannot reach a fully-aligned sender estate. p=quarantine is the maximum enforcement compatible with a few stubbornly-misaligned legitimate senders, because the spam folder is recoverable while SMTP reject is not.

3.4 When NOT to use p=quarantine

  • NOT a permanent destination. Quarantine is a safety-net stage. The spam folder is a worse user experience than reject + bounce because there is no automatic feedback to the sending system that the message was not delivered. Always advance to p=reject when exit criteria are satisfied.
  • NOT a Phase 1 starting point. Skipping p=none Discovery and starting at p=quarantine misses the chance to inventory senders without enforcement risk - legitimate senders that were quietly misaligned will hit the spam folder before you have data to diagnose them.

3.5 What receivers do under p=quarantine

  • Disposition: spam or junk folder (receiver discretion; universally adopted convention).
  • Aggregate reports: sent daily to the rua= mailbox.
  • Forensic reports: sent per-failure to ruf= if configured.
  • SMTP response code: normal 250 OK at RCPT TO and DATA stages - the receiver accepts the message and then routes it to spam post-delivery.
  • Recipient visibility: message reaches the recipient's spam folder; the recipient can rescue it manually. No automatic feedback to the sender that the message landed in spam.

4. p=reject in detail (SMTP-level enforcement)

4.1 Semantics

Per RFC 7489 section 6.3: "The Domain Owner wishes for Mail Receivers to reject email that fails the DMARC mechanism check."

The receiver issues an SMTP 5xx response code at the RCPT TO stage, refusing to accept the message for delivery. The sending mail server receives the rejection in real time and bounces the message back to the original sender with a permanent failure notification.

4.2 Example record

_dmarc.example.com.  IN  TXT  "v=DMARC1; p=reject; sp=reject; np=reject; rua=mailto:dmarc-reports@example.com; fo=1; adkim=r; aspf=r"

4.3 When to use p=reject

  • Steady-state production policy. Once Phase 3 quarantine exit criteria are satisfied, advance to p=reject and stay there indefinitely. p=reject is the canonical end state of every well-executed DMARC rollout.
  • BIMI deployment. BIMI requires p=quarantine or p=reject; p=reject is strongly preferred by every major BIMI-supporting receiver (Gmail, Yahoo, Apple iCloud Mail, AOL).
  • Regulatory compliance. CISA Binding Operational Directive 18-01 mandates p=reject for U.S. federal civilian executive branch agencies. The European Banking Authority, the UK NCSC, and the Australian ACSC all recommend p=reject as the production target.
  • Brand impersonation defence. Business email compromise (BEC) and brand impersonation attacks are blocked at the SMTP layer under p=reject - the spoofed mail never reaches recipient mailboxes, so no human can be tricked by it.

4.4 When NOT to use p=reject

  • Not before Phase 3 exit criteria. Advancing to p=reject before the quarantine exit criteria are satisfied means legitimate senders still failing alignment will hit hard SMTP bounces and the messages will be lost. The cost of one extra week at quarantine is small; the cost of advancing prematurely is dropped legitimate mail.
  • Not without an aggregate-report monitoring pipeline. p=reject without active monitoring of aggregate reports means you will not notice when a previously-aligned sender breaks alignment (rotated DKIM key without updating selector, moved IP range without updating SPF). p=reject demands a running monitoring discipline.

4.5 What receivers do under p=reject

  • Disposition: SMTP RCPT TO rejection with 5xx response code (most receivers emit 550 5.7.1 with a DMARC-specific reason phrase).
  • Aggregate reports: sent daily to the rua= mailbox.
  • Forensic reports: sent per-failure to ruf= if configured.
  • SMTP response code: 550 5.7.1 or similar at RCPT TO. The sending mail server receives the rejection synchronously.
  • Bounce notification: the sending mail server generates a DSN (delivery status notification) and sends it back to the original sender, providing automatic feedback that the message failed.
  • Recipient visibility: zero - the message never reaches the recipient mailbox.

5. Side-by-side comparison

The same observable behaviour, the same security posture, and the same operational consequence, laid out side-by-side across the three modes.

Dimension p=none p=quarantine p=reject
Disposition on DMARC fail Deliver to inbox Deliver to spam folder SMTP RCPT TO rejection (5xx)
Aggregate (rua) reports Yes Yes Yes
Spoofing prevention None Partial (recipient can rescue) Full (message never delivered)
Sender feedback on failure None None (silent quarantine) Automatic (DSN bounce)
BIMI eligibility No Yes (Gmail requires p=quarantine+) Yes (preferred by receivers)
CISA BOD 18-01 compliant No No (transitional only) Yes
Risk to legitimate mail Zero Low (spam folder, recoverable) Higher (hard bounce if misaligned)
Defensive value Zero Moderate Full
Typical use duration 2 to 4 weeks (Discovery) 2 to 4 weeks (transitional) Indefinite (steady state)
pct= sampling downgrade No effect (no enforcement) Downgrades to p=none Downgrades to p=quarantine
Recovery path on issue N/A Lower to p=none (mail flows) Lower to p=quarantine (mail flows to spam)

6. Receiver behaviour: Gmail, Outlook, Yahoo, Apple iCloud

RFC 7489 section 6.3 defines the Domain-Owner-requested action but leaves the final disposition to the receiver. In practice every major receiver honours the canonical interpretation:

6.1 Gmail (Google Workspace and consumer)

  • p=none - deliver to inbox; emit Authentication-Results: dmarc=fail (p=NONE) header for DMARC-failing mail.
  • p=quarantine - deliver to the Spam label; emit Authentication-Results: dmarc=fail (p=QUARANTINE). Subject prefix not modified by Gmail.
  • p=reject - SMTP 550-5.7.26 rejection at RCPT TO with the reason phrase "This message does not have authentication information or fails to pass authentication checks."
  • Gmail also enforces from February 2024 onward that bulk senders (5000+ messages per day to Gmail addresses) must publish at least p=none with a valid rua= tag.

6.2 Microsoft 365 / Outlook.com

  • p=none - deliver to inbox or junk based on other anti-spam signals; emit Authentication-Results: dmarc=fail action=none.
  • p=quarantine - route to Junk Email folder; emit Authentication-Results: dmarc=fail action=oreject in some configurations (Microsoft historically used a non-canonical action code).
  • p=reject - SMTP 550 5.7.509 rejection in newer configurations; some legacy tenants downgrade to oreject (route to Junk) depending on anti-spoof policy settings. Operators publishing p=reject should verify actual enforcement by inspecting aggregate reports from Microsoft.

6.3 Yahoo Mail / AOL

  • p=none - deliver to inbox; emit Authentication-Results: dmarc=fail (p=NONE).
  • p=quarantine - deliver to Bulk folder.
  • p=reject - SMTP 553 5.7.1 rejection at RCPT TO. Yahoo enforces consistently and is one of the strictest DMARC enforcers since their 2014 policy breakage that drove the industry-wide DMARC adoption push.

6.4 Apple iCloud Mail / @me.com / @mac.com

  • p=none - deliver to inbox.
  • p=quarantine - route to Junk.
  • p=reject - SMTP 5xx rejection at RCPT TO. iCloud Mail enforces the canonical DMARC behaviour consistently.

6.5 Smaller receivers and corporate filters

Corporate Exchange installations, custom MTAs, Proofpoint, Mimecast, Cisco IronPort, Barracuda, SonicWall, and similar enterprise filters all consume the DMARC policy but apply it with site-local interpretation. Some receivers quarantine even under p=none if other anti-spam signals are negative; others under-enforce p=reject if the site administrator has relaxed the anti-spoof policy. Aggregate reports from these receivers are the only authoritative source of truth for your domain's actual enforcement experience.

7. pct= sampling tag interaction

7.1 Semantics

The pct= tag (RFC 7489 section 6.3, "pct" definition) tells receivers what percentage of failing mail to apply the named policy to. The remainder is treated as the next less-strict policy.

  • p=quarantine; pct=10 - 10 percent of failing mail is quarantined; 90 percent is treated as p=none (delivered to inbox, reported only).
  • p=reject; pct=10 - 10 percent of failing mail is rejected; 90 percent is treated as p=quarantine (routed to spam).
  • p=none; pct=X - no effect. pct= only modulates enforcement, and p=none has no enforcement to sample.

7.2 Typical ramp pattern

Operators historically ramp the pct= value as a confidence-building mechanism during the Quarantine and Reject phases:

Week 0:  p=quarantine; pct=10
Week 1:  p=quarantine; pct=25
Week 2:  p=quarantine; pct=50
Week 3:  p=quarantine; pct=100
Week 4:  p=reject; pct=10
Week 5:  p=reject; pct=25
Week 6:  p=reject; pct=50
Week 7:  p=reject; pct=100  <-- steady state

7.3 dmarcbis removal of pct=

The in-progress draft-ietf-dmarc-dmarcbis removes the pct= tag entirely. The rationale is that the sampling semantics are confusing (operators routinely interpret pct=10 as "10 percent of all mail" instead of "10 percent of failing mail"), several large receivers (Microsoft notably) inconsistently honour it, and the staged ramp use case is better served by simply staying longer at the lower-strict policy.

For new deployments starting in 2025 or later, consider skipping the pct= ramp:

Week 0:  p=quarantine     <-- pct=100 implicit, no sampling
Week 4:  p=reject         <-- only after the quarantine exit criteria are satisfied

7.4 What pct= does NOT do

  • Does NOT sample reporting. Aggregate reports cover all DMARC outcomes regardless of pct=; only the enforcement disposition is sampled.
  • Does NOT randomly downgrade per-message. Receivers may implement per-message sampling (random) or per-source sampling (consistent per source IP) or per-day sampling - the RFC does not mandate a sampling granularity. Different receivers behave differently.

8. sp= and np= subdomain policies

8.1 sp= (subdomain policy, RFC 7489 section 6.3)

The sp= tag sets the policy for all subdomains under the apex. If sp= is omitted, the apex p= tag applies to subdomains automatically.

Common usage during a phased rollout: publish the apex with p=none during Discovery but sp=reject from day one to block spoofing from non-sending subdomains immediately, then ramp the apex p= through quarantine to reject on its own schedule.

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

8.2 np= (non-existent subdomain policy, RFC 9091)

The np= tag from RFC 9091 sets the policy specifically for non-existent subdomains (NXDOMAIN). Independent of sp=; takes precedence over sp= for NXDOMAIN subdomains when both are present.

_dmarc.example.com.  IN  TXT  "v=DMARC1; p=quarantine; sp=quarantine; np=reject; rua=mailto:dmarc-reports@example.com"

np=reject is a free defensive win: NXDOMAIN subdomains never send legitimate mail by definition, so any mail claiming to come from nonexistent.example.com is by definition an attacker - rejecting it has zero legitimate-mail risk.

8.3 Per-subdomain DMARC records

When a subdomain has its own DMARC rollout pace distinct from the apex, publish a per-subdomain DMARC record at _dmarc.sub.example.com with its own p= value. Per-subdomain records take precedence over both sp= and the inherited apex p=.

_dmarc.example.com.            IN  TXT  "v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc-reports@example.com"
_dmarc.marketing.example.com.  IN  TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com"

Here the apex example.com and most subdomains use p=reject, while the marketing.example.com subdomain (still in its Quarantine phase) uses p=quarantine.

9. Choosing the right mode for your scenario

9.1 Brand-new domain, no mail flow yet

Publish p=reject; sp=reject; np=reject on day one. The domain has no legitimate senders to break and the strictest policy prevents any attacker from establishing spoofing as a baseline.

9.2 Established domain, never deployed DMARC

Standard four-phase rollout: p=none Discovery (2 to 4 weeks) -> p=quarantine Phase 3 (2 to 4 weeks) -> p=reject steady state. Always publish rua= from day one. Consider publishing sp=reject; np=reject from day one (apex p= ramps independently).

9.3 Established domain, already at p=none for months

Advance immediately. p=none provides no defensive value; staying at p=none indefinitely is the most common DMARC anti-pattern. If you have aggregate reports from the existing p=none deployment, you already have most of the sender inventory needed for the Quarantine advance. If you do not have aggregate report ingestion in place, set that up first (this DMARC Analyzer instance is one option), then advance.

9.4 Parked / non-sending domain

Publish p=reject; sp=reject; np=reject immediately. There is no legitimate mail flow to break, and the strict policy prevents attackers from using the parked domain for phishing.

9.5 Subsidiary or acquired domain

Treat the acquired domain as a fresh deployment. Do not merge the rollout calendar with the parent domain - each domain advances on its own exit criteria. If the acquired domain sends low-volume mail (or no mail), you may short-circuit by going straight to p=reject after a 2-week Discovery phase.

9.6 Domain with a stubbornly-misaligned legacy sender

If one legitimate sender cannot be aligned and moving it off your domain is not possible, the maximum enforcement compatible with that sender is p=quarantine. Document the misaligned sender as an explicit accepted exception, monitor aggregate reports for any second misaligned sender appearing, and revisit the migration plan annually. Do NOT accept indefinite p=none as the alternative - even p=quarantine with one accepted exception provides significantly more protection than p=none.

9.7 Domain with active BIMI deployment

BIMI requires p=quarantine or p=reject. p=reject is strongly preferred by every major BIMI-supporting receiver - it is the only policy that fully proves the domain controls the From: header it advertises via BIMI.

10. Common mistakes

  • Treating p=none as a defensive policy. p=none provides ZERO spoofing protection. Attackers can spoof your domain freely under p=none. The only operational role of p=none is the initial Discovery phase. Domains that stay at p=none for months or years are advertising "we deployed DMARC" without actually deploying DMARC.
  • Jumping from p=none straight to p=reject. Skipping the Quarantine safety-net stage means legitimate senders still failing alignment hit hard SMTP bounces and the messages are dropped. This is the single most common cause of self-inflicted DMARC outages. Always pass through p=quarantine first.
  • Forgetting sp= and np=. The apex p= tag only protects the apex. Without sp=reject attackers can spoof from sub-subdomains like billing.example.com. Without np=reject attackers can spoof from non-existent subdomains.
  • Misinterpreting pct=. pct=10 does NOT mean "apply DMARC to 10 percent of all mail". It means "apply the named policy to 10 percent of FAILING mail and downgrade the rest one stage". The semantic confusion is one of the reasons pct= is being removed in dmarcbis.
  • Removing pct= from a p=reject record too early. Some operators publish p=reject; pct=10 and ramp toward 100 over weeks, but accidentally drop pct= mid-ramp - this jumps enforcement from 10 percent to the default 100 percent overnight. If you are using pct=, drop it only when you reach pct=100.
  • Lowering DNS TTL only on the apex. Lower the TTL on every per-subdomain DMARC record AND the apex during rollout. A subdomain record with an 86400 TTL means a 24-hour wait to roll back if something breaks.
  • Publishing p=reject without an aggregate-report monitoring pipeline. p=reject without active monitoring is fragile - a future DKIM key rotation that fails to update the published selector will hard-fail every outbound message until the operator notices through user complaints. Aggregate reports are the primary signal during steady-state p=reject; monitor them.

11. Frequently asked questions

What are the three DMARC policy modes?
DMARC defines three policy values for the p= tag in the _dmarc TXT record. p=none requests no enforcement: receivers report DMARC outcomes via aggregate (rua) reports but take no action on failing mail. p=quarantine requests that receivers route DMARC-failing mail to the spam or junk folder. p=reject requests that receivers refuse DMARC-failing mail at the SMTP RCPT TO stage so the message is bounced before delivery. The three modes are defined in RFC 7489 section 6.3 and form the canonical Discovery to Quarantine to Reject deployment progression.
What is the difference between p=none and p=quarantine?
p=none is monitoring mode with no enforcement action. p=quarantine is the first enforcement stage: DMARC-failing mail lands in the spam folder, so spoofed mail is contained but recoverable. The transition from p=none to p=quarantine is the moment your sender inventory must be complete - every legitimate sender must produce DMARC-aligned mail before this advance.
What is the difference between p=quarantine and p=reject?
p=quarantine is recoverable: DMARC-failing mail lands in the spam folder. p=reject is non-recoverable: the receiver refuses the message at SMTP RCPT TO with a 5xx error so the message is bounced back to the sender with no delivery attempt. Reject is the only mode that fully prevents spoofed mail from reaching mailboxes.
When should I use p=none?
Use p=none ONLY during the initial Discovery phase of a DMARC deployment, typically the first 2 to 4 weeks. p=none gathers aggregate reports without taking enforcement action, letting you inventory every legitimate sender. p=none is NOT a defensive policy: spoofed mail flows normally to recipient inboxes under p=none, so attackers can impersonate your domain without obstruction.
When should I use p=quarantine?
Use p=quarantine as a 2 to 4 week safety-net stage between Triage and Enforcement. At p=quarantine, DMARC-failing mail lands in the spam folder, so any legitimate sender still misaligned becomes visible as user complaints about missed mail rather than silent SMTP bounces.
When should I use p=reject?
Use p=reject as the steady-state policy for any domain that sends mail. p=reject fully prevents domain spoofing, satisfies BIMI requirements, and is the only mode recommended by CISA Binding Operational Directive 18-01 for U.S. federal agencies.
What does pct= do under each policy mode?
The pct= tag samples enforcement: receivers apply the named policy to a percentage of failing mail and downgrade the rest one stage. Under p=quarantine pct=10, 10 percent of failing mail is quarantined and 90 percent is treated as p=none. Under p=reject pct=10, 10 percent of failing mail is rejected and 90 percent is treated as p=quarantine. pct= has no effect under p=none and is being removed in draft-ietf-dmarc-dmarcbis.
How do sp= and np= interact with the apex p= tag?
sp= sets the policy for all subdomains under the apex regardless of whether they send mail. If sp= is omitted, the apex p= tag applies to subdomains. np= (RFC 9091) sets the policy for non-existent subdomains specifically. Common configuration: publish the apex with p=none during Discovery but sp=reject from day one to block spoofing from non-sending subdomains immediately.

13. Check your current DMARC policy mode now

DMARC Analyzer's free Domain Security Checker performs live DMARC + SPF + DKIM + MTA-STS + BIMI lookups against any domain. Use it to confirm your current DMARC policy mode (the value of the p= tag in your published _dmarc TXT record), the subdomain policy (sp=) and non-existent subdomain policy (np=) if set, and the sampling tag (pct=) if present. The DNS Record Generator builds syntactically-correct DMARC records with the right p= + sp= + np= + rua= tags for any phase of the rollout. Imported DMARC aggregate reports (via includes/DmarcParser.php) drive the per-source-IP pass and fail dashboard that powers your sender registry under every policy mode.

Check my current DMARC policy mode Sign up — Free plan