In May 2026, the IETF officially published DMARCbis — the new version of the DMARC (Domain-based Message Authentication, Reporting, and Conformance) standard. This update replaces RFC 7489 from 2015 with three new documents: RFC 9989, RFC 9990, and RFC 9991.
But what actually changes? Is this a revolution or an evolution? What are the concrete implications for you — whether you’re a domain administrator, email service provider, or email security specialist?
This article demystifies DMARCbis, explains its innovations, and helps you understand its impact on your infrastructure.
Context: A Long-Awaited Update
Why a New RFC?
RFC 7489 (2015) served for 11 years. During that time, several limitations and ambiguities emerged:
- Unclear policy discovery: Using an external Public Suffix List (PSL) creates implementation divergences and performance issues.
- Confusing tags: The
pct=tag (sampling rate) is misused;rf=andri=are rarely supported. - Poor report structure: No clarity on which discovery method was used, no explicit test mode.
- Ambiguous SPF alignment: Which address to use for SPF — HELO, EHLO, or MAIL FROM?
DMARCbis addresses all these problems.
Standard Status
| Version | Type | Status |
|---|---|---|
| RFC 7489 (2015) | “Informational” publication | Informal, non-binding |
| RFC 9989/9990/9991 (2026) | IETF Standards Track | Formal, binding |
The move to Standards Track means future implementations must comply strictly.
The Most Important Change: DNS Tree Walk
Before (RFC 7489 + PSL)
Policy discovery used an external Public Suffix List, hosted and maintained centrally:
mail.example.com → Check PSL → Retrieve example.com policy
Problems:
- Divergence between implementations (which PSL version?)
- Dependency on a centralized operator (Mozilla maintains the public PSL)
- Inflexibility for complex domain structures
Now (RFC 9989 - DNS Tree Walk)
Discovery uses a decentralized DNS tree walking algorithm:
Domain: mail.example.com
↓
Look up _dmarc.mail.example.com → Not found
↓
Look up _dmarc.example.com → Found ✓
↓ (limit: max 8 labels, anti-DoS)
Advantages:
- ✅ Decentralized — each domain controls its own discovery
- ✅ Transparent — no external list to maintain
- ✅ Flexible — supports complex structures (*.co.uk, *.github.io, etc.)
Where Divergences Occur
Example: news.fr.example.com
| Approach | Path Taken | Result |
|---|---|---|
| PSL | Consults list → example.com | Looks for _dmarc.example.com |
| Tree Walk | _dmarc.news.fr.example.com → _dmarc.fr.example.com → _dmarc.example.com | Same result here |
Critical case: mycompany.co.uk
| Approach | Result |
|---|---|
| PSL | .co.uk is a PSD → looks for policy co.uk |
| Tree Walk | Looks for mycompany.co.uk then co.uk → may find a different policy |
Recommended action: When migrating to RFC 9989, test your domain with both methods to detect any divergence.
New Tag: psd= for Public Suffix Domains
With tree walk comes a new responsibility for operators of “public” domains (.co.uk, .github.io, etc.).
v=DMARC1; p=none; psd=y; rua=mailto:dmarc@example.com
psd=y: This is a Public Suffix Domainpsd=n: No, it’s not a PSD (default)psd=u: Uncertain
Receivers then know how to handle discovery for subdomains of this PSD.
Deprecated Tags: What Disappears
These tags still exist in the DNS record but will be ignored by RFC 9989 implementations:
| Tag | Old Function | Why Deprecated | Replacement |
|---|---|---|---|
pct | Sampling rate (%) | Bad practice, confusing | t=y (test mode) |
rf | Failure report format | Rarely implemented | RFC 9991 clarifies |
ri | Reporting interval | Rarely used | Recommendation in RFC 9990 |
⚠️ Important: If your policy contains
pct=50, an RFC 9989 receiver will completely ignore it and apply the policy at 100%. Don’t rely onpct=for testing anymore.
New Tags: What Arrives
t= — Explicit Test Mode
The clean replacement for the misused pct=0.
Before (RFC 7489):
v=DMARC1; p=none; pct=0; rua=mailto:...
→ Ambiguous: are you testing reject, or did you just forget to raise the policy?
Now (RFC 9989):
v=DMARC1; p=reject; t=y; rua=mailto:...
→ Explicit: “I’m testing reject, but apply quarantine or none during this test.”
RUA reports will show testing: y to confirm the active mode.
np= — Non-existent Subdomain Policy
Protects against attackers sending from random or non-existent subdomains.
v=DMARC1; p=reject; np=reject; rua=mailto:...
np=reject: Reject emails from non-existent subdomainsnp=quarantine: Quarantine themnp=none: No action (default)
Use case: An attacker sends from fakesupport.example.com which doesn’t exist in your DNS. With np=reject, the email is rejected.
SPF in DMARC: An Important Clarification
The Problem (RFC 7489)
Some implementations used the HELO/EHLO domain to validate SPF in DMARC. Others used MAIL FROM. Total ambiguity.
The Rule (RFC 9989)
SPF domain scope = MAIL FROM only. No HELO fallback.
Example:
MAIL FROM: <sender@subdomain.example.com>
HELO: smtp.cloudflare.com
From: user@example.com
For DMARC, SPF must validate subdomain.example.com (MAIL FROM), not smtp.cloudflare.com (HELO).
RUA Report Format (RFC 9990)
New Fields in Reports
Aggregate reports now include two key fields absent from RFC 7489:
<policy_published>
<discovery_method>treewalk</discovery_method> <!-- treewalk or psl -->
<testing>y</testing> <!-- y if t=y active -->
<np>none</np> <!-- np= policy applied -->
</policy_published>
What These Fields Tell You
| Field | Value | Meaning |
|---|---|---|
discovery_method | treewalk | Receiver used RFC 9989 |
discovery_method | psl | Receiver still using RFC 7489 |
testing | y | Your test mode is active |
testing | n | You are in production |
Implications for Senders
What Stays the Same
- ✅ Your existing policies continue to work
- ✅ Tags
v,p,sp,rua,rufare unchanged - ✅ No urgent action required
What Needs Attention
- ⚠️
pct=will be ignored by RFC 9989 receivers → migrate tot=y - ⚠️ Test PSL vs tree walk divergences if your domain has a complex structure
- ⚠️ Verify your SPF validates MAIL FROM (not HELO)
Recommended Migration Path
| Phase | Policy | Duration |
|---|---|---|
| Audit | Test PSL vs tree walk, verify SPF | 1-2 weeks |
| Transition | Replace pct= with t=y; p=reject | 2-6 months |
| Production | Switch to p=reject (without t=y) + add np= | 6 months+ |
Implications for Mailbox Providers (Receivers)
Increased Complexity
Tree walk implementation is more complex than consulting a PSL:
- Additional DNS queries per email
- Tree traversal algorithm to manage
- Dual support PSL + tree walk during transition
Estimated Deployment Timeline
| Period | Status |
|---|---|
| 2026 | RFC published, implementations begin |
| 2026-2027 | Major providers (Gmail, Microsoft, Yahoo) announce support |
| 2027-2028 | Main deployment, dual PSL + tree walk support |
| 2028+ | RFC 7489 marked “Historic”, formal deprecation |
The transition will take 2 to 3 years. Supporting both methods is mandatory during this period.
Backward Compatibility: The Summary
Backward compatibility level: Moderate ⚠️
| Aspect | Impact | Risk |
|---|---|---|
| Existing policies | ✅ Compatible | Low |
Tags pct, rf, ri | ⚠️ Ignored by RFC 9989 | Medium (if used for testing) |
| PSL vs Tree Walk | ⚠️ May diverge | High for complex domains |
| SPF MAIL FROM only | ✅ Most already implemented this | Low |
Recommendations
- Test your domain with PSL and tree walk — check for divergence
- Replace
pct=witht=y; p=rejectnow - Monitor
discovery_methodin your RUA reports - Your report provider should support both methods until 2028
Summary: RFC 7489 vs RFC 9989
| Feature | RFC 7489 | RFC 9989 |
|---|---|---|
| Policy discovery | External PSL | DNS Tree Walk |
| Test mode | pct=0 (ambiguous) | t=y (explicit) |
| Non-existent subdomains | Not handled | np= |
| SPF scope | Ambiguous (HELO or MAIL FROM) | MAIL FROM only |
| IETF status | Informational | Standards Track |
| RUA report | No discovery_method | discovery_method + testing |
Official Resources
- RFC 9989 — DMARC Specification (Protocol core)
- RFC 9990 — DMARC Aggregate Reporting
- RFC 9991 — DMARC Failure Reporting
- dmarc.org — Community resources
- IETF DMARC WG — IETF Working Group
DMARCbis is a major evolution, not a revolution for most domain administrators. Your existing policies remain valid, but leveraging the new features (test mode, np=, tree walk) will give you better protection and more flexibility.
Next step: Read our DMARCbis Practical Guide for concrete actions to take on your domain.