Something Inc.LoginSchedule a free consultation
STRATEGY

Cold Email DMARC Is Running On A Retired Spec

The IETF replaced the DMARC standard in May. The cold email DMARC records sitting on your sending domains were written for the version it obsoleted, and two of the changes land directly on outbound.

COLD EMAILDELIVERABILITYAUTHENTICATION

Every outbound team has a domain spreadsheet. Twenty, forty, sometimes a hundred and fifty sending domains, each with the same three DNS records pasted in at provisioning time and never looked at again. That paste dates from whenever the team first set up, and it encodes assumptions from a specification the IETF retired this year. The records still resolve. Mail still flows. Nothing has broken loudly, which is exactly why nobody has checked.

TL;DR · 60 SECONDSIn May 2026 the IETF published RFC 9989, 9990 and 9991, which obsolete RFC 7489, the DMARC specification every deliverability guide of the last decade was written against. Three changes matter for outbound: the pct tag is gone, so partial enforcement is no longer a thing you can publish; the Public Suffix List has been replaced by a DNS tree walk, which changes how a receiver decides which record governs a sending subdomain; and non-existent subdomains now have their own policy tag. If you run dedicated sending infrastructure, all three of those touch you before they touch your marketing team.

Cold Email DMARC Was Written Against A Spec That Is Gone

The document set published in May is worth naming precisely, because the vendor coverage has been loose about it. RFC 9989 is the core protocol, published as a Standards Track document and obsoleting both RFC 7489 and RFC 9091. RFC 9990 covers aggregate reporting. RFC 9991 covers failure reporting. Together they are what practitioners have been calling DMARCbis for roughly six years, and the long gestation is part of why the publication landed so quietly. People stopped waiting for it.

The quiet matters more for outbound than for anyone else, because outbound owns more DNS than anyone else. A brand team manages one authenticated domain and maybe a subdomain for its ESP. An outbound programme manages a fleet: lookalike domains, redirect domains, a warm-up pool, and whatever was inherited from the last agency. Every one of those carries a DMARC record that somebody wrote once, and the fleet is large enough that nobody re-reads it. We have made the argument before that outbound teams pick the wrong threshold to measure their sending domains against. This is the same failure in a different register: the configuration is not wrong on its own terms, it is answering a question the standard no longer asks.

May 2026
publication date of RFC 9989, 9990 and 9991, which obsolete RFC 7489 and RFC 9091
8
maximum DNS queries in the tree walk, the anti-abuse limit RFC 9989 sets on policy discovery
78%
of domains had a DMARC record in Valimail's 2026 State of DMARC report
42%
of those domains were at enforcement, quarantine or reject, in the same dataset

Two of those numbers come from Valimail's annual study, published in February 2026 across data from more than 100,000 companies. Valimail sells DMARC management, so read the framing with that in mind. The raw split is still useful: adoption at 78%, enforcement at 42%, a 36-point gap between having a record and having a record that does anything. That gap is the population this change is aimed at, and outbound fleets live disproportionately inside it.

The Tree Walk Changes Which Record Governs Your Sending Domains

Under the old specification, a receiver deciding which DMARC policy applied to a message had to work out the Organizational Domain, and it did that by consulting the Public Suffix List. The PSL is a community-maintained text file. RFC 9989 is candid about the consequence, noting that the previous version mandated no requirement for a specific list and acknowledged the possibility of interoperability issues caused by receivers choosing different ones. Two receivers, two copies of the list, two different answers about whose policy governs your mail.

The replacement is a procedure RFC 9989 calls the DNS Tree Walk. Instead of looking your domain up in a list, the receiver queries upward through the name itself, one level at a time, until it finds a policy record. The spec caps the work: author domains with more than eight labels do not result in more than eight DNS queries. The effect is that policy discovery becomes a DNS question with a DNS answer, and the authority moves from a file somebody else maintains to records you publish.

Illustrative: how the tree walk resolves policy for a sending subdomain● LIVE
Author domain: outbound.acme-partners.com
 
1. _dmarc.outbound.acme-partners.com -> no record
2. _dmarc.acme-partners.com -> p=none; sp=none
3. stop, acme-partners.com is the Organizational Domain
 
Result: the sending subdomain is governed by the parent record,
found by query rather than by lookup in a maintained list.

For a single corporate domain this is a tidying-up exercise. For an outbound fleet it is a structural change, and it cuts both ways. The good half: a subdomain architecture is now genuinely governable, because you can publish a record at the sending subdomain and know it will be found, rather than hoping the receiver's copy of a list agrees with your intent. The bad half: a permissive record sitting at the parent now reliably governs every sending subdomain beneath it that lacks one of its own. Under the old arrangement that inheritance was probable. Under the tree walk it is deterministic, and determinism cuts against you when the inherited record says p=none.

That is the part worth acting on this quarter, because it quietly reprices the long-running argument about lookalike domains versus subdomains. A fleet of unrelated lookalike domains means a fleet of independent policy records, each needing its own audit. A subdomain architecture under one parent means one record governs the lot, discoverable by query, with per-subdomain overrides where you want them. The deliverability case for lookalikes has always rested on reputation isolation. The governance case just moved against them, and governance is what gets audited when a receiver decides your programme looks like a spoofing surface.

Losing pct Removed The Half Measure Everyone Quietly Relied On

The pct tag let a domain owner publish a strict policy while asking receivers to apply it to only a percentage of failing mail. It was the standard on-ramp: publish reject at pct=10, watch the reports, walk it up. RFC 9989 removes it, and Red Sift's Faisal Misle, writing the day the documents landed, put the practical reading plainly in his note on the new standard: audit out any reliance on pct, because enforcement now applies to all traffic or none of it. The replacement for the ramp use case is the t tag, a test-mode signal that asks receivers to apply one step below your stated policy while you validate.

TAGSTATUS UNDER RFC 9989WHAT IT WAS DOING FOR OUTBOUNDTHE MOVE NOW
pctRemovedLet a fleet publish a strict-looking policy while enforcing on a slice of failing mail, usually during rampStrip it from every record. A leftover pct is not a safety net, it is a comment. Your published policy is already fully live
tNewNothing, it did not existUse t=y for a genuine validation window. It requests handling one level below the stated policy rather than a percentage of it
npPolicy tag for non-existent subdomainsNothing. Invented subdomains under your sending domains were governed by whatever the parent happened to saySet np=reject wherever you send. A subdomain that does not exist has no legitimate mail and no ramp to protect
spClarified scopeAmbiguous. Teams assumed it covered everything below the domainRead it as covering existing subdomains of the Organizational Domain, not the domain itself. Confirm your sending subdomain inherits what you intended
rf and riRemovedReport format and interval knobs nobody tuned and most parsers ignoredDelete them. They add noise to a record you now want short enough to audit at a glance
psdFormalised, defaults to uNot applicable to normal sendersLeave at the default and let the tree walk resolve it, unless you actually operate a public suffix

The np tag is the one outbound teams should be most interested in, and it is the one getting the least attention. RFC 9989 defines it as the assessment policy for non-existent subdomains, applying only to those and not to existing subdomains or the domain itself. Think about where impersonation of an outbound programme actually happens. Not at your sending subdomain, which has records and reputation. At invented ones, which have neither, and which previously fell back to whatever the parent said. If the parent said p=none, they were unguarded. np=reject closes that specific hole without touching a single live sender, which makes it the rarest thing in deliverability work: a change with upside and no ramp risk.

Cold Email DMARC Enforcement Is Now The Stated Direction

There is a reasonable objection to all of this, and it deserves a straight answer rather than a dismissal. Nothing in RFC 9989 breaks an existing record. A domain at p=none today will be at p=none tomorrow, receivers will keep accepting mail, and no deadline forces a change. On the letter of it, the objection is correct.

It is still the wrong read, for a reason that has nothing to do with the document and everything to do with who follows it. Receiver policy has moved in one direction for three years: Google and Yahoo's bulk sender requirements, then Microsoft's, each tightening what unauthenticated or loosely authenticated mail is worth. When the standards body those receivers participate in publishes a Standards Track document that deletes partial enforcement and frames monitoring mode as a stage rather than a destination, it is describing where enforcement is going next. The teams that got caught out by Microsoft's reporting changes were not caught by a rule. They were caught by a direction they had decided not to read.

Domains publishing a DMARC record78%
Domains at enforcement (quarantine or reject)42%
Domains at enforcement entering 202535%
Domains publishing BIMI4%

DMARC adoption against actual enforcement. Figures from Valimail's 2026 State of DMARC report, February 2026, drawn from data across more than 100,000 companies. Valimail sells DMARC management, so treat the framing as interested and the split as directional.

Seven percentage points of enforcement growth across a year is not a stampede. It is a slow tide, and slow tides are the ones that catch people, because there is never a week when moving becomes urgent. The outbound-specific version of the risk is worse than the corporate one: a brand domain at p=none that gets spoofed generates a support ticket, while a sending domain at p=none that gets spoofed generates complaints against a reputation you are actively trying to build, on a domain whose only job is to be trusted by strangers.

Worth separating two things that get conflated here. Authentication posture is not a compliance posture. A domain at p=reject with immaculate alignment can still be sending mail that breaks the rules in the recipient's country, which is a different audit with a different decision tree. Fixing your records does not fix your consent basis, and nobody should walk out of this thinking it does.

Audit The Records Before A Receiver Does It For You

The work here is small and boring, which is the only reason it does not get done. For most fleets it is an afternoon with a DNS export and a script.

1Export every record in the fleet and diff them against each otherPull the DMARC record for every domain and sending subdomain you own, including the ones parked and the ones inherited from a previous agency. Sort by record string. On most fleets, three or four distinct strings cover everything, which tells you how many decisions were ever actually made and when.
2Delete pct, rf and ri wherever they appearThese are now unrecognised tags. The specific hazard is a record like p=reject; pct=10, which somebody published believing it enforced on a tenth of failing mail. It does not any more. Confirm you are comfortable with the stated policy applying in full, then remove the tag so the record says what it means.
3Set np=reject on every domain that sendsNon-existent subdomains have no legitimate mail, no reputation to protect and no ramp to respect. This is the one change in the set that carries essentially no deliverability risk, so there is no reason to stage it behind the others.
4Walk the tree by hand for one sending subdomainPick a live sender, query upward one label at a time, and find out which record a receiver would actually land on. Teams are regularly surprised, most often when a parent nobody thinks of as a mail domain turns out to be governing a fleet of subdomains beneath it.
5Use t=y instead of reaching for the old ramp patternWhen you do move a domain toward enforcement, the test-mode tag is the supported way to validate without the full effect. It is not a percentage, so stop planning ramps in percentages. Read aggregate reports for a fortnight, confirm alignment, then drop the tag.

One caveat on scope. None of this is a deliverability lever in the sense that outbound teams usually mean. Fixing a DMARC record will not lift your reply rate, and anyone selling it that way is overselling. Authentication is a gate, not a dial: it decides whether you are eligible to be judged on your content, and nothing beyond that. The actual reply-rate work stays where it was, in list quality, targeting and the warm-up discipline behind your sending pool. We make the same point to every outbound engagement we run, and it applies with particular force to B2B SaaS teams who have already automated everything downstream of the send and are looking for one more knob.

Do this next. Export the DMARC record for every domain in your sending fleet into one column of a spreadsheet, then add a second column for the parent that a tree walk would resolve to. Two things will fall out within the hour. You will find records carrying pct, which are no longer doing what whoever wrote them believed, and you will find sending subdomains whose governing policy lives somewhere nobody on the team has thought about in a year. Neither will be breaking anything today. That is precisely the window you have, and windows like this close when a receiver decides they should, not when you are ready.

See where you are cited today

A free snapshot audit of your rankings and AI citations before we ever talk.

JB
Josh BernsteinMANAGING PARTNER, SOMETHING INC.

Josh leads work at the intersection of SEO and generative engines at Something Inc., helping B2B brands get ranked and cited across every major AI engine.

Free consultation

Let us be the last SEO agency you ever work with

A 30 minute call and a free audit of your SEO and GEO position. You keep the findings either way.