<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Email Decoded]]></title><description><![CDATA[A companion blog to Email Decoded — deep dives into SPF, DKIM, DMARC, ARC, and the header-forensics side of email that most guides skip past. Real headers, real]]></description><link>https://iovo.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6a4bbe74ac0169854fccd902/451fafe9-d3cb-403d-b4d5-429d28276634.png</url><title>Email Decoded</title><link>https://iovo.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 14:19:26 GMT</lastBuildDate><atom:link href="https://iovo.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[DMARC Just Got 3 New RFCs. Your DNS Record Doesn't Need to Change.]]></title><description><![CDATA[If you've ever pasted v=DMARC1; p=reject; into a TXT record and moved on with your life, here's something worth two minutes: the spec behind that record just changed. Not the syntax — the actual stand]]></description><link>https://iovo.hashnode.dev/dmarc-just-got-3-new-rfcs-your-dns-record-doesn-t-need-to-change</link><guid isPermaLink="true">https://iovo.hashnode.dev/dmarc-just-got-3-new-rfcs-your-dns-record-doesn-t-need-to-change</guid><category><![CDATA[DMARC]]></category><category><![CDATA[email]]></category><category><![CDATA[dns]]></category><category><![CDATA[Security]]></category><category><![CDATA[email security]]></category><dc:creator><![CDATA[iovo]]></dc:creator><pubDate>Mon, 06 Jul 2026 15:02:25 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a4bbe74ac0169854fccd902/650061f9-7e54-4bba-87be-70c37fa44d75.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you've ever pasted <code>v=DMARC1; p=reject;</code> into a TXT record and moved on with your life, here's something worth two minutes: the spec behind that record just changed. Not the syntax — the actual standard.</p>
<h2>The old situation</h2>
<p>For over a decade, DMARC lived in <strong>RFC 7489</strong>, published back in 2015 as <em>Informational</em> — meaning it documented existing practice rather than being a formal Internet Standard. Every DMARC implementation since then has effectively been building against a well-written but non-binding memo.</p>
<h2>What changed</h2>
<p>The IETF's DMARC working group (nicknamed "DMARCbis" internally — more on that name in a second) split the spec into three separate documents, all promoted to full Standards Track:</p>
<table>
<thead>
<tr>
<th>RFC</th>
<th>Covers</th>
</tr>
</thead>
<tbody><tr>
<td><strong>RFC 9989</strong></td>
<td>Core DMARC spec — policy syntax, alignment rules, how receivers apply <code>p=</code></td>
</tr>
<tr>
<td><strong>RFC 9990</strong></td>
<td>Aggregate (<code>rua</code>) report format and handling</td>
</tr>
<tr>
<td><strong>RFC 9991</strong></td>
<td>Failure (<code>ruf</code>) report format and handling</td>
</tr>
</tbody></table>
<p>Splitting it this way means aggregate reporting can evolve without reopening the core policy syntax — the kind of change a working group makes after ten years of real-world deployment has shown exactly where the seams are.</p>
<h2>What you actually need to do</h2>
<p>For most people running an existing DMARC record: <strong>nothing.</strong> <code>v=DMARC1</code> is unchanged. <code>p=none</code> / <code>quarantine</code> / <code>reject</code> are unchanged. Your record is already compliant with the new RFCs as written.</p>
<p>Two things worth checking anyway:</p>
<ol>
<li><p><strong>If you're still at</strong> <code>p=none</code> years after your initial rollout — this is a fine excuse to actually check your aggregate reports and move to <code>quarantine</code> or <code>reject</code>. <code>p=none</code> collects data but enforces nothing.</p>
</li>
<li><p><strong>If you built any tooling that parses DMARC records or reports</strong>, double check it doesn't hardcode a reference to RFC 7489 in a way that would confuse anyone reading your docs. RFC 7489 is now formally obsoleted (though still technically resolvable, just marked historic).</p>
</li>
</ol>
<h2>The naming trap</h2>
<p>"DMARCbis" is the working group's internal nickname for this update effort. It is <strong>not</strong> a new protocol, and you will not see <code>v=DMARCbis1</code> in a DNS record anywhere. If you see content using "DMARCbis" as if it's a distinct standard from DMARC — that's a sign the writer conflated the working-group nickname with the actual spec name. The standard is still called DMARC. It always was.</p>
<h2>Why this matters beyond trivia</h2>
<p>If you're maintaining documentation, internal wikis, or onboarding material that cites DMARC's spec — updating the RFC reference from 7489 to 9989 (plus 9990/9991 for reporting) is a small, correct thing to fix. It's also a decent signal, if you're writing publicly about this, that your content is current — a lot of existing "how DMARC works" articles online still only cite 7489 and haven't caught up.</p>
<hr />
<p><em>I put together a full reference on the entire email authentication stack (SPF, DKIM, DMARC, ARC, BIMI) with real header examples throughout, if anyone wants to go deeper —</em> <a href="https://emaildecoded.wiki"><em>Email Decoded</em></a><em>. Happy to answer questions on DMARC, ARC, or email forensics in the comments.</em></p>
]]></content:encoded></item></channel></rss>