<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.2.3) -->
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-moccia-dkim2-deployment-profile-07" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="DKIM2 Deployment Profile">A Deployment Profile for DKIM2 via Milter Interface</title>
    <seriesInfo name="Internet-Draft" value="draft-moccia-dkim2-deployment-profile-07"/>
    <author initials="V." surname="Moccia" fullname="Vittorio Moccia">
      <organization>ITB.it</organization>
      <address>
        <email>v.moccia@itb.it</email>
      </address>
    </author>
    <date year="2026" month="August" day="02"/>
    <area>Applications and Real-Time</area>
    <workgroup>DKIM Working Group</workgroup>
    <keyword>DKIM2</keyword>
    <keyword>milter</keyword>
    <keyword>email authentication</keyword>
    <keyword>deployment profile</keyword>
    <abstract>
      <?line 121?>

<t>This document defines a deployment profile for DomainKeys Identified Mail v2 (DKIM2) that is implementable via the existing milter interface without modifications to Mail Transfer Agent (MTA) core software. It identifies a mandatory core profile (DKIM2-core) covering envelope binding, chain of custody, header accountability, replay prevention and DSN authentication and an optional extended profile (DKIM2-extended) covering body recipes and Message-Instance headers. The separation is motivated by deployment realism: the core profile addresses the primary threat models identified in the DKIM2 motivation document and is deployable incrementally across heterogeneous infrastructure, including small operators, universities and research institutions, using the same milter-based deployment model that has proven effective for DKIM1 and ARC.</t>
      <t>The intent of this document is not to obstruct DKIM2 but to make it deployable. DKIM2-core can be deployed incrementally across the heterogeneous ecosystem in a short timeframe. DKIM2-extended requires significantly longer implementation cycles and may not be deployable in jurisdictions with stricter privacy requirements. Both profiles are part of DKIM2 - the separation serves adoption, not opposition.</t>
    </abstract>
  </front>
  <middle>
    <?line 127?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>DomainKeys Identified Mail v2 (DKIM2) addresses significant limitations of DKIM1 <xref target="RFC6376"/> and the experimental ARC protocol <xref target="RFC8617"/>, including DKIM replay attacks, backscatter from unauthorized use of envelope senders and the absence of cryptographic binding between message signatures and SMTP envelope parameters.</t>
      <t>The core technical contribution of DKIM2 - binding the MAIL FROM and RCPT TO values of each SMTP transaction to the message signature at every hop - is a genuine improvement over both DKIM1 and ARC and is sufficient to address the primary threat models identified in <xref target="I-D.ietf-dkim-dkim2-motivation"/>.</t>
      <t>However, the current specification also includes a body recipe mechanism that allows intermediaries to describe modifications made to the message body in sufficient detail to reconstruct previous versions. This mechanism introduces significant architectural complexity: it requires stateful milter implementations with persistent shared storage, JSON parsing in the delivery critical path and software modifications across the entire ecosystem of intermediaries. The body recipe mechanism also raises data protection concerns under GDPR and equivalent frameworks that have not yet been addressed in the specification.</t>
      <t>This document proposes a structured separation of DKIM2 functionality into two profiles:</t>
      <ul spacing="normal">
        <li>
          <t>DKIM2-core: a mandatory profile implementing envelope binding, chain of custody, header accountability, replay prevention and DSN authentication. DKIM2-core is fully implementable via the milter interface without MTA core modifications, using header formats already familiar to the ecosystem through ARC deployment. Critically, DKIM2-core requires no persistent state between SMTP sessions - all information needed for signing and verification is available within the current session and the message headers themselves. State management is only required for body recipe generation, which belongs exclusively to DKIM2-extended.</t>
        </li>
        <li>
          <t>DKIM2-extended: an optional profile adding body recipe generation and verification via Message-Instance headers and JSON-encoded recipes. DKIM2-extended may require stateful milter implementations or MTA core integration and is appropriate for operators who require full body accountability and are willing to accept the associated architectural cost.</t>
        </li>
      </ul>
      <t>This separation is consistent with the DKIM working group charter <xref target="DKIM-CHARTER"/>, which states that "the working group will prefer a result that is incremental to the deployed ecosystem" and that "proposed solutions are expected to be robust in terms of interoperability and scalability".</t>
      <t>The approach taken in this document is explicitly constructive: it does not propose to replace DKIM2 but to define a deployment path that allows the ecosystem to adopt the core benefits of DKIM2 incrementally, without requiring simultaneous changes to every node in the delivery chain.</t>
      <section anchor="relationship-to-dkim2-specifications">
        <name>Relationship to DKIM2 Specifications</name>
        <t>This document is a deployment profile, not a competing specification. It references and depends on <xref target="I-D.ietf-dkim-dkim2-spec"/> for the underlying mechanisms. Where this document proposes alternative encoding formats - specifically for envelope binding fields - these are offered as contributions to the ongoing design discussion in the working group.</t>
      </section>
      <section anchor="motivation">
        <name>Motivation</name>
        <t>The Internet email infrastructure is not composed solely of large providers with dedicated engineering teams. A substantial portion of email is handled by operators of all sizes outside the largest commercial providers: small ISPs, universities and research institutions, regional hosting providers, non-profit organizations and small businesses. What these operators have in common is not small scale per se - a university may handle millions of messages per day - but limited engineering resources dedicated to mail infrastructure. Their administrators depend on the milter interface for incremental deployment of new authentication features precisely because it allows them to adopt new protocols without modifying MTA core software, waiting for upstream vendor releases or dedicating engineering cycles to core system changes. Every authentication protocol that has achieved broad adoption - SPF, DKIM1, DMARC and to a limited extent ARC - has been deployable via this model. DKIM2 as currently specified breaks this pattern.</t>
        <t>Furthermore, the body recipe mechanism encounters a fundamental operational obstacle: the nodes most likely to make substantial body modifications - security gateways, DLP systems, URL rewriting proxies, antivirus engines - are precisely the nodes least likely to implement recipe generation. These nodes will systematically produce null recipes, which provide no additional accountability over incremental body hash chaining. The overhead of the recipe infrastructure is therefore paid by the entire ecosystem while the benefit accrues only to the minority of cases where all intermediaries cooperate fully.</t>
        <t>The pragmatic approach to body integrity documented in <xref target="RFC6376"/> Appendix B - using relaxed canonicalization to tolerate common benign transformations rather than requiring intermediaries to declare or reconstruct them - has proven effective in practice and has contributed to the broad adoption of DKIM1. It should be noted however that relaxed canonicalization does not address all categories of involuntary body transformation: base64 line-width re-encoding, for example, breaks both simple and relaxed canonicalization equally. DKIM2-core preserves the relaxed canonicalization approach for body integrity while adding the cryptographic envelope binding and header accountability that DKIM1 lacks. The body recipe mechanism of DKIM2-extended represents a deliberate departure from this model toward deterministic reconstruction - a departure whose operational cost and deployment implications are addressed in Section 4.</t>
      </section>
      <section anchor="design-philosophy">
        <name>Design Philosophy</name>
        <t>This document is guided by three principles that reflect the deployment realities described in Section 1.2.</t>
        <t>Additive, not transformative - every mechanism defined in DKIM2-core adds new header fields or new signed content to existing messages. Nothing in DKIM2-core requires existing software to change its core behavior. A legacy node that does not implement DKIM2 passes DKIM2 headers through without interpreting them, exactly as it handles any unrecognized header field today. This is the same property that allowed SPF, DKIM1, DMARC and ARC to be deployed incrementally across a heterogeneous ecosystem without flag-day transitions.</t>
        <t>Milter-first - the milter interface is the deployment mechanism that has enabled incremental adoption of every successful email authentication protocol. DKIM2-core is designed so that every mandatory feature is implementable as a milter without MTA core modifications. This is not a constraint imposed from outside - it is a deliberate architectural choice that maximizes the probability of adoption across the full range of operators described in Section 1.2, from large providers to small ISPs and universities.</t>
        <t>The term "milter" in the title of this document refers to the most widely deployed mechanism for extending MTA behavior without core modifications. The architectural arguments presented here apply to any filter interface that provides access to envelope callbacks during the SMTP transaction. Milter is used as the reference implementation because it is the dominant deployment model for email authentication protocols and because prototype DKIM2 implementations - including those demonstrated at the IETF hackathon - have converged on this interface independently.</t>
        <t>Stateless by design - DKIM2-core requires no persistent state between SMTP sessions. All information needed for signing and verification is available within the current session and the message headers themselves. This eliminates the need for shared storage between milter instances, reduces operational complexity and removes a category of failure modes that stateful implementations introduce. State management is only required for body recipe generation, which belongs exclusively to DKIM2-extended.</t>
        <t>These three principles together define the boundary between DKIM2-core and DKIM2-extended. Any mechanism that requires MTA core modifications, persistent inter-session state or content parsing beyond what the milter interface provides belongs in DKIM2-extended. Any mechanism that can be implemented additively, via milter and statelessly belongs in DKIM2-core.</t>
      </section>
    </section>
    <section anchor="terminology-and-definitions">
      <name>Terminology and Definitions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" and "OPTIONAL" in this document are to be interpreted as described in <xref target="RFC2119"/>.</t>
      <t>This document uses terminology from <xref target="RFC5598"/> (Internet Mail Architecture) and inherits definitions from <xref target="I-D.ietf-dkim-dkim2-spec"/>. The following additional terms are defined for use in this document.</t>
      <dl>
        <dt>DKIM2-core:</dt>
        <dd>
          <t>The mandatory deployment profile defined in this document. DKIM2-core implements envelope binding, chain of custody, header accountability, replay prevention and DSN authentication. It is fully implementable via the milter interface without MTA core modifications and requires no persistent state between SMTP sessions.</t>
        </dd>
        <dt>DKIM2-extended:</dt>
        <dd>
          <t>The optional deployment profile defined in this document. DKIM2-extended adds body recipe generation and verification via Message-Instance headers and JSON-encoded recipes. It may require stateful milter implementations with persistent shared storage or MTA core integration.</t>
        </dd>
        <dt>Milter-capable node:</dt>
        <dd>
          <t>An MTA deployment that implements DKIM2-core functionality via the milter interface. A milter-capable node requires no modifications to the MTA core software.</t>
        </dd>
        <dt>Legacy node:</dt>
        <dd>
          <t>A node in the delivery chain that does not implement DKIM2 in any form. Legacy nodes pass DKIM2 headers through the delivery chain without interpreting them, exactly as they handle unrecognized header fields today.</t>
        </dd>
        <dt>Transparent relay:</dt>
        <dd>
          <t>A node that adds only trace headers (Received:, Return-Path:) and makes no other modifications to the message. Transparent relays do not need to participate in DKIM2 signing or verification. Note however that in practice many nominally transparent relays introduce involuntary body transformations - base64 re-encoding at different line widths, MIME reassembly by antivirus engines, whitespace normalization - that affect body hash values.</t>
        </dd>
        <dt>Reviser:</dt>
        <dd>
          <t>A node that makes intentional modifications to message headers or body. A Reviser MUST declare its modifications using DKIM2-Mod headers (DKIM2-core) or Message-Instance recipes (DKIM2-extended) and MUST add a new DKIM2 signature covering the modified message.</t>
        </dd>
        <dt>Inbound milter:</dt>
        <dd>
          <t>The milter instance responsible for verifying incoming DKIM2 signatures during the SMTP session. The inbound milter operates at EndOfBody and has access to the complete envelope state accumulated during the session via MailFromRequest and RcptToRequest callbacks.</t>
        </dd>
        <dt>Outbound milter:</dt>
        <dd>
          <t>The milter instance responsible for generating DKIM2-Mod headers and adding DKIM2 signatures to outgoing messages. The outbound milter is positioned last in the milter chain, after all other milters that may modify the message and signs the final state of the message.</t>
        </dd>
        <dt>DKIM2-Mod header:</dt>
        <dd>
          <t>A signed header field added by a Reviser to declare a modification made to an existing header field. DKIM2-Mod headers carry an instance index (i=) aligned with the DKIM2-Signature hop number, a sequence index (seq=) for multiple modifications to the same field at the same hop and an optional frame index (fr=) to split values longer than 998 characters per <xref target="RFC5322"/>.</t>
        </dd>
        <dt>Envelope binding:</dt>
        <dd>
          <t>The cryptographic binding of SMTP MAIL FROM and RCPT TO values to the DKIM2 signature at each hop, implemented via DKIM2-Sig-mf and DKIM2-Sig-rt header fields. Envelope binding prevents DKIM replay attacks by making it impossible to reuse a valid signature for a different recipient without breaking the chain.</t>
        </dd>
        <dt>Chain of custody:</dt>
        <dd>
          <t>The verifiable record of all entities that have handled a message, established by the sequence of DKIM2 signatures and envelope bindings from originator to final recipient. Each hop in the chain signs the current state of the message and references the previous hop's signature.</t>
        </dd>
        <dt>Null recipe:</dt>
        <dd>
          <t>A Message-Instance declaration that a modification was made to the message body but that the previous state cannot be reconstructed. Null recipes are only relevant in DKIM2-extended. In DKIM2-core, body modifications are declared implicitly through a changed bh= value with attribution to the signing hop.</t>
        </dd>
        <dt>Relaxed domain match:</dt>
        <dd>
          <t>The relaxed domain matching algorithm for matching the signing domain (d=) against the MAIL FROM domain, allowing subaddress schemes used for bounce handling. Labels are removed from the left side of the MAIL FROM domain until a match is found or no labels remain. Implementations MUST NOT remove more than two labels - that is, the MAIL FROM domain MUST be at most two levels below the d= domain. For example, bounce.mail.example.com matches d=example.com (two labels removed) but a.b.c.example.com does not (three labels would need to be removed). This limit is consistent with the subdomain matching defined in <xref target="RFC6376"/> Section 3.5.</t>
        </dd>
      </dl>
      <t>This document inherits definitions from <xref target="I-D.ietf-dkim-dkim2-spec"/>. Where terms are used without definition in this document, the definitions in that document apply.</t>
    </section>
    <section anchor="dkim2-core-mandatory-profile">
      <name>DKIM2-core: Mandatory Profile</name>
      <t>DKIM2-core is the mandatory deployment profile. All nodes that wish to participate in DKIM2 MUST implement DKIM2-core. Nodes that implement only DKIM2-core are fully interoperable with nodes that implement DKIM2-extended.</t>
      <t>The milter interface is an integration point, not a replacement for MTA functionality. DKIM2-core uses the milter interface to observe, verify and sign messages as they flow through the MTA's normal processing pipeline. Functions that belong to the MTA - transaction management, BCC splitting, queue handling, routing - remain with the MTA. The milter does not substitute for these functions and is not designed to do so. This separation of concerns is what makes milter-based deployment non-invasive and compatible with existing MTA infrastructure.</t>
      <section anchor="envelope-binding">
        <name>Envelope Binding</name>
        <t>Envelope binding is the primary technical contribution of DKIM2 over DKIM1 and ARC. By cryptographically binding the SMTP MAIL FROM and RCPT TO values to the message signature at every hop, DKIM2-core makes it impossible to replay a valid signature for a different recipient or sender without breaking the chain.</t>
        <t>Envelope binding is implemented via two new signed header fields: DKIM2-Sig-mf (carrying the MAIL FROM value) and DKIM2-Sig-rt (carrying the RCPT TO values).</t>
        <section anchor="envelope-binding-format">
          <name>Envelope Binding Format</name>
          <t>The DKIM2-Sig-mf field carries exactly one address - the SMTP MAIL FROM value. The DKIM2-Sig-rt field carries one or more RCPT TO values, using one header per address.</t>
          <t>Both fields use the i= instance indexing convention already established by ARC <xref target="RFC8617"/>, where ARC-Seal, ARC-Message-Signature and ARC-Authentication-Results use the same i= numbering to build a verifiable chain across multiple hops. Implementers familiar with ARC will recognize this pattern immediately. Major email providers including Google and Microsoft implement ARC natively in their infrastructure and ARC milter implementations are deployed across the ecosystem. DKIM2-Sig-mf and DKIM2-Sig-rt extend this existing pattern to carry envelope values, requiring no new parsing concepts beyond what ARC implementations already handle.</t>
          <artwork><![CDATA[
DKIM2-Sig-mf: i=1; addr=bounce@mailchimp.com
DKIM2-Sig-rt: i=1; v=1; addr=dest1@esempio.com
DKIM2-Sig-rt: i=1; v=2; addr=dest2@esempio.com
DKIM2-Sig-rt: i=1; v=3; addr="john;doe"@rare.com
]]></artwork>
          <t>One header per address, including recipients with quoted local parts. The v= tag provides a sequence number that distinguishes multiple DKIM2-Sig-rt headers at the same hop. DKIM2-Sig-mf always carries exactly one address and does not require v=.</t>
          <t>This format handles all RFC5321 local part cases including quoted local parts containing special characters - within a single header value there is no separator ambiguity regardless of the characters present in the local part. The format copies exactly the ARC instance indexing pattern, requires no new parsing logic beyond what ARC implementations already provide and produces output directly inspectable in mail logs and headers without decoding tools.</t>
          <t>The design avoids the parsing complexity that arises when envelope addresses with display names, quoted local parts or multiple addresses are embedded in more complex header formats. DKIM2-Sig-rt carries only the bare RFC5321 addr-spec - the envelope address without display name - one per header. This is the natural format for SMTP envelope values, which by definition do not carry display names. It avoids the parsing complexity of RFC5322 address-list syntax, which includes display names, group syntax and other constructs that are irrelevant for envelope binding purposes.</t>
          <t>This format could produce more bytes than the JSON+base64 encoding currently specified in <xref target="I-D.ietf-dkim-dkim2-spec"/> for messages with very many recipients. For the common case of messages with a small number of recipients - which represents the substantial majority of real-world email traffic - the size difference is negligible or absent. It remains directly human-readable without decoding tools, has a parsing complexity of O(1) per header rather than O(n) on the full recipient list and allows individual recipient membership verification without deserializing the complete list.</t>
          <t>DKIM2-core lists each RCPT TO value as an individual DKIM2-Sig-rt header, all covered by a single DKIM2-Signature. This provides per-address cryptographic binding: a verifier can confirm that the message was signed for exactly these recipients and no others. Replaying the message to a recipient not listed in a DKIM2-Sig-rt header produces a verifiable mismatch, even if that recipient is at the same domain as the original recipients. Alternative approaches such as DARA bind at the domain level - all recipients at the same destination domain share a single signature via darn=. DARA prevents replay to a different domain but does not prevent replay to a different recipient at the same domain. DKIM2-core closes this gap without requiring any additional MTA splitting beyond the standard per-domain delivery that MTAs already perform. The base specification <xref target="I-D.ietf-dkim-dkim2-spec"/> encodes rt= values as base64 without JSON in its current revision, which reduces parsing overhead but retains opacity - the values are not directly human-readable without decoding. DKIM2-core's plaintext tag-value format for envelope binding fields remains directly inspectable without tooling. DKIM2-core achieves equivalent cryptographic binding of each recipient to the signed message via the standard milter envrcpt callback, listing all transaction recipients in DKIM2-Sig-rt fields. No MTA modification is required, making the mechanism deployable by any operator regardless of infrastructure.</t>
          <t>It is worth noting that quoted local parts containing special characters such as semicolons are permitted by <xref target="RFC5321"/> but are not observed in practice in real-world email infrastructure. The format handles them correctly without any special-casing.</t>
        </section>
        <section anchor="relationship-to-existing-fromto-headers">
          <name>Relationship to Existing From:/To: Headers</name>
          <t>The DKIM2-Sig-mf and DKIM2-Sig-rt fields carry the SMTP envelope values, which may differ significantly from the RFC5322 From:, To: and Cc: header fields. This distinction is particularly important in two scenarios:</t>
          <t>Programmatic and bulk email - the envelope sender is typically a bounce handling address such as bounce-12345@mail.mailchimp.com and the envelope recipients are individual subscriber addresses that may not appear in the message headers at all. Using RFC5322 headers to infer envelope values would fail for this common case.</t>
          <t>Group syntax and empty groups - RFC5322 permits constructs such as To: Empty Group:; where the To: header carries no actual recipient addresses. The envelope RCPT TO values are the only reliable source of recipient information in these cases.</t>
          <t>It is also worth noting that the support for multiple rt= values - rather than a single recipient per message - was motivated by a specific operational requirement from a large mailbox provider whose anti-fraud system relies on verifying consistency between envelope recipients and To:/Cc: header fields to detect messages fraudulently presented as sent to multiple recipients but actually sent to only one. This use case requires that all RCPT TO values for a given SMTP transaction be visible in the signed envelope binding.</t>
        </section>
        <section anchor="relaxed-domain-match">
          <name>Relaxed Domain Match</name>
          <t>The relaxed domain match algorithm is retained unchanged. The signing domain (d=) must match the domain of the DKIM2-Sig-mf address via relaxed domain match, allowing subaddress schemes used for bounce handling such as bounce-12345@mail.mailchimp.com to match d=mailchimp.com. The MAIL FROM domain MUST be at most two levels below the d= domain, consistent with <xref target="RFC6376"/> Section 3.5.</t>
        </section>
        <section anchor="bcc-recipients">
          <name>BCC Recipients</name>
          <t>BCC recipients require separate SMTP transactions to prevent disclosure of BCC addresses to other recipients, consistent with <xref target="RFC5322"/> Section 3.6.3. This is already best practice for correct BCC semantics independent of DKIM2 - most MTAs already split BCC recipients into separate transactions for privacy reasons. DKIM2-core makes this a cryptographic requirement in addition to a privacy requirement.</t>
          <t>The milter processes two distinct transaction types:</t>
          <t>For the To:/Cc: transaction, the milter receives all RCPT TO values in a single transaction, compares them against the To: and Cc: header fields and includes only the visible recipients in DKIM2-Sig-rt. The comparison requires address extraction from RFC5322 headers - display names and comments must be stripped to obtain bare addr-spec values - followed by case-insensitive comparison on the domain part. Note that a recipient appearing in both To: and BCC is possible but rare; in that case the milter correctly includes the address in rt= since it is a visible recipient. The signed DKIM2-Sig-rt reflects exactly the recipients who will see the message.</t>
          <t>For each BCC transaction, the MTA generates a separate SMTP transaction per BCC recipient. The milter signs each transaction independently with a single DKIM2-Sig-rt carrying that recipient's address. No special handling is required - the milter processes each BCC transaction as a normal single-recipient message.</t>
          <t>Including BCC recipients in the To:/Cc: transaction with all addresses listed in DKIM2-Sig-rt would reveal BCC addresses in the signed headers, visible to all recipients and any archiving system. This directly violates <xref target="RFC5322"/> Section 3.6.3 and MUST NOT be done.</t>
          <t>This design requires no MTA core modifications. BCC splitting is already standard MTA behavior for RFC 5322 compliance - DKIM2-core formalizes an existing practice rather than introducing a new operational burden. A future standardized mechanism for BCC signaling at the SMTP level would simplify this comparison but is not required for correct operation.</t>
          <t>The milter buffers RCPT TO values during the envrcpt callbacks and performs the comparison against To: and Cc: headers in the eom callback, when all header fields are available. Recipients present in RCPT TO but absent from To: and Cc: are identified as BCC recipients. The MTA is responsible for splitting BCC recipients into separate transactions: this is standard MTA behavior already implemented by Sendmail and Postfix for privacy reasons. The milter signs each transaction as presented, generating DKIM2-Sig-rt headers only for the recipients the MTA includes in that transaction. The splitting cost is operational, not architectural and it requires no changes to the MTA core.</t>
        </section>
        <section anchor="synthetic-hops-and-intra-admd-signing">
          <name>Synthetic Hops and Intra-ADMD Signing</name>
          <t>The base specification requires that the chain of custody form a contiguous sequence where the rt= value at hop i aligns with the mf= value at hop i+1. In deployment scenarios where multiple signatures are applied within the same administrative domain, such as an Email Service Provider signing on behalf of a brand or a vanity domain forwarded through a mailbox provider, no SMTP transaction occurs between the two signing identities.</t>
          <t>The base specification addresses this by generating synthetic DKIM2-Signature headers representing hops that never occurred at the SMTP level, requiring the invention of email addresses for transactions that never took place. Working group discussion has converged toward a declarative mechanism in which a signature asserts the domain expected to produce the next signature within the same administrative boundary, avoiding the need for an invented address - though the exact syntax remained under discussion at the time of this writing.</t>
          <t>DKIM2-core does not require this mechanism. Because DKIM2-Sig-mf and DKIM2-Sig-rt are separate header fields rather than tags within the DKIM2-Signature, the chain of custody is established by the sequence of signed headers, not by address matching between consecutive signatures. Each hop signs its own envelope values as observed in the actual SMTP transaction. If no SMTP transaction occurs, as in the ESP/brand scenario, no DKIM2-core signature is generated for that non-existent hop. The relationship between brand and ESP is a contractual arrangement, not a cryptographic assertion in the message chain.</t>
        </section>
        <section anchor="formal-syntax">
          <name>Formal Syntax</name>
          <t>The following ABNF defines the header fields introduced by this document. Rules are imported from <xref target="RFC5234"/> and <xref target="RFC5321"/> as noted.</t>
          <sourcecode type="abnf"><![CDATA[
; DKIM2-Sig-mf header field
; Carries exactly one SMTP MAIL FROM address
dkim2-sig-mf     = "DKIM2-Sig-mf:" SP dkim2-mf-params CRLF
dkim2-mf-params  = dkim2-hop-index ";" SP dkim2-addr

; DKIM2-Sig-rt header field
; Carries exactly one SMTP RCPT TO address per header
; Multiple recipients use multiple headers with incrementing v=
dkim2-sig-rt     = "DKIM2-Sig-rt:" SP dkim2-rt-params CRLF
dkim2-rt-params  = dkim2-hop-index ";" SP
                   dkim2-rcpt-index ";" SP
                   dkim2-addr

; DKIM2-Mod header field
; Declares a modification made to an existing header field
dkim2-mod        = "DKIM2-Mod:" SP dkim2-mod-params CRLF
dkim2-mod-params = dkim2-hop-index ";" SP
                   dkim2-mod-seq ";" SP
                   dkim2-field-tag
                   [ ";" SP dkim2-fr-tag ]
                   ";" SP dkim2-mod-value

dkim2-field-tag  = "field=" header-field-name
dkim2-fr-tag     = "fr=" 1*2DIGIT
                 ; DKIM2-core implementations MUST NOT use fr= values greater than 2
                 ; fragment index, 1-20
                 ; OPTIONAL - absent when value fits in single header

dkim2-mod-value  = 1*(VCHAR / WSP)
dkim2-del-tag    = "del=" dkim2-mod-value
                 ; MUST appear last in header
dkim2-new-tag    = "new=" dkim2-mod-value
                 ; MUST appear last in header

; del= and new= MUST be on separate header lines
; Presence rules per complete operation:
;   del= only  -> removal
;   new= only  -> addition
;   del= + new= -> modification

; Shared index rules
dkim2-hop-index  = "i=" 1*2DIGIT
                 ; hop sequence number, 1-20, starts at 1
dkim2-rcpt-index = "v=" 1*3DIGIT
                 ; recipient sequence number for DKIM2-Sig-rt
                 ; starts at 1, increments per recipient at same hop, 1-500
dkim2-mod-seq    = "seq=" 1*2DIGIT
                 ; modification sequence number for DKIM2-Mod, 1-20

; Address rule
dkim2-addr       = "addr=" addr-spec
                 ; addr-spec as defined in [RFC5321] Section 4.1.2
                 ; including quoted local parts

; Header field name
header-field-name = 1*( ALPHA / DIGIT / "-" )
                 ; as defined in [RFC5322] Section 2.2

; Supporting rules
tag-list         = tag-spec *( ";" tag-spec ) [ ";" ]
tag-spec         = tag-name "=" tag-value
tag-name         = ALPHA *( ALPHA / DIGIT / "_" )
tag-value        = *( %x21-3A / %x3C-7E )
                 ; printable ASCII except semicolon

domain-name      = sub-domain *("." sub-domain)
sub-domain       = 1*( ALPHA / DIGIT / "-" )
selector-name    = 1*( ALPHA / DIGIT / "-" / "_" )
base64string     = 1*( ALPHA / DIGIT / "+" / "/" / "=" )
                 ; standard base64 alphabet per [RFC4648]

; Core rules imported from [RFC5234]
ALPHA            = %x41-5A / %x61-7A
DIGIT            = %x30-39
SP               = %x20
CRLF             = %x0D %x0A
VCHAR            = %x21-7E
WSP              = SP / %x09
]]></sourcecode>
          <t>The <tt>base64string</tt> production uses the standard base64 alphabet defined in <xref target="RFC4648"/>.</t>
        </section>
      </section>
      <section anchor="header-accountability">
        <name>Header Accountability</name>
        <t>When a Reviser modifies, removes or adds a header field, it MUST declare the change by adding one or more DKIM2-Mod headers before signing. These headers MUST be included in the signed header set of the modifying hop and all subsequent hops, making the declaration cryptographically bound to the chain.</t>
        <section anchor="modification-cases">
          <name>Modification Cases</name>
          <t>Modification - header existed and its value was changed. del= and new= on separate headers with same i= and seq=:</t>
          <artwork><![CDATA[
DKIM2-Mod: i=2; seq=1; field=Subject; del="Original subject text"
DKIM2-Mod: i=2; seq=1; field=Subject; new="Modified subject text"
]]></artwork>
          <t>Removal - header existed and was removed. Only del=:</t>
          <artwork><![CDATA[
DKIM2-Mod: i=2; seq=1; field=Subject; del="Removed subject text"
]]></artwork>
          <t>Addition - header did not exist and was added. Only new=:</t>
          <artwork><![CDATA[
DKIM2-Mod: i=2; seq=1; field=List-Id; new=<lista@esempio.com>
]]></artwork>
          <t>Note that new= is technically redundant for additions since the added value is already visible in the message headers. It is declared explicitly to provide an unambiguous cryptographic binding between the modification declaration and the hop signature, particularly in cases where multiple headers of the same type exist in the message.</t>
          <t>When a DKIM2-Mod header with del= and a DKIM2-Mod header with new= share the same (i=, seq=, field=) tuple, they MUST be interpreted as a single modification operation representing a value change. Implementations MUST NOT interpret them as independent operations - that is, as a removal followed by an unrelated addition. The tuple (i=, seq=, field=) is the sole correlating key. When present as a pair, the del= header MUST precede the new= header in the message.</t>
          <t>The dkim2-mod-value production requires at least one character - empty string values are not permitted. A header field whose value is the empty string is treated as absent for the purposes of DKIM2-Mod declarations.</t>
        </section>
        <section anchor="multiple-modifications">
          <name>Multiple Modifications</name>
          <t>Multiple instances of the same field, each with its own seq=:</t>
          <artwork><![CDATA[
DKIM2-Mod: i=2; seq=1; field=X-EVALUATION; del="pippo"
DKIM2-Mod: i=2; seq=1; field=X-EVALUATION; new="paperino"
DKIM2-Mod: i=2; seq=2; field=X-EVALUATION; del="pluto"
DKIM2-Mod: i=2; seq=2; field=X-EVALUATION; new="paperone"
]]></artwork>
          <t>Successive hops use their own i=:</t>
          <artwork><![CDATA[
DKIM2-Mod: i=2; seq=1; field=Subject; del="Value before hop 2"
DKIM2-Mod: i=2; seq=1; field=Subject; new="Value after hop 2"
DKIM2-Mod: i=3; seq=1; field=Subject; del="Value after hop 2"
DKIM2-Mod: i=3; seq=1; field=Subject; new="Value after hop 3"
]]></artwork>
          <t>The del= and new= tags MUST appear last in the DKIM2-Mod header field value. All other tags (i=, seq=, field=, fr=) MUST precede them.</t>
        </section>
        <section anchor="long-values">
          <name>Long Values</name>
          <t>For values that exceed practical inline length, implementations MAY use the optional fr= tag to split across multiple headers with incrementing fr= values. fr= is independent for del= and new=:</t>
          <artwork><![CDATA[
DKIM2-Mod: i=2; seq=1; field=X-Microsoft-Antispam; fr=1; del="first part..."
DKIM2-Mod: i=2; seq=1; field=X-Microsoft-Antispam; fr=2; del="...second part..."
DKIM2-Mod: i=2; seq=1; field=X-Microsoft-Antispam; fr=3; del="...third part"
DKIM2-Mod: i=2; seq=1; field=X-Microsoft-Antispam; new="new value"
]]></artwork>
          <t>fr= absent means value is complete in that single header. When fr= is present, headers with same i=, seq=, field= and same tag type (del= or new=) are concatenated in fr= order.</t>
          <t>Implementations that do not support fr= MUST treat a fragmented declaration as a null declaration for that field.</t>
          <t>Fragments MUST be concatenated without any intervening whitespace or separators. The reconstructed value is the exact concatenation of the fragment values in fr= order.</t>
          <t>The fr= tag value MUST be a positive integer starting at 1. A value of 0 or any negative value is malformed and MUST cause verification of that DKIM2-Mod declaration to fail. Fragments MAY appear in any physical order within the header set - implementations MUST reassemble them by fr= value rather than by physical position. If the fr= sequence contains a gap - that is, if fragment N is present but fragment N-1 is absent - verification of that DKIM2-Mod declaration MUST fail. Partial reconstruction from available fragments MUST NOT be attempted. A gap in the fr= sequence or a malformed fr= value SHOULD be logged as a potential integrity violation.</t>
        </section>
        <section anchor="relationship-to-existing-conventions">
          <name>Relationship to Existing Conventions</name>
          <t>DKIM2-Mod headers formalize and cryptographically bind the informal X-Original- convention already widely deployed in the ecosystem. Systems using X-Original-From, X-Original-Subject and similar headers preserve previous header values across intermediary modifications - the same semantic goal as the del= tag in DKIM2-Mod. The key difference is that DKIM2-Mod declarations are included in the signed header set and cryptographically bound to the chain of custody, making them verifiable rather than merely informational.</t>
          <t>This pattern is already practiced informally in the ecosystem - for example, Google Groups preserves the original sender address in an X-Original-Sender header alongside its own Sender: field. DKIM2-Mod formalizes this existing convention by making the declaration cryptographically signed and part of the verifiable chain of custody, rather than an informational annotation with no authentication binding.</t>
          <t>This approach has precedent in <xref target="I-D.chuang-mailing-list-modifications"/>, which proposed X-Prior- headers and Content-Footer headers as ARC extensions for the same purpose, declaring mailing list modifications in human-readable form without JSON encoding. DKIM2-Mod formalizes and generalizes this approach within the DKIM2 chain of custody framework.</t>
        </section>
      </section>
      <section anchor="chain-of-custody-and-signature">
        <name>Chain of Custody and Signature</name>
        <t>Each hop in the delivery chain MUST add a DKIM2-Signature header field signing the current state of the message. The chain of custody is established by the sequence of signatures and envelope bindings from originator to final recipient.</t>
        <t>DKIM2-core verification is hop-by-hop, not end-to-end. Each hop verifies the previous signature against the body it actually receives at the time of receipt. Attribution of body modifications does not require post-facto reconstruction: if bh= changes between hop N and hop N+1, the signing domain at hop N+1 is cryptographically identified as the modifier at the moment N+1 signs. No subsequent reconstruction is needed to establish who modified the body - the chain of signatures provides this attribution directly and verifiably.</t>
        <section anchor="dkim2-signature-formal-syntax">
          <name>DKIM2-Signature Formal Syntax</name>
          <sourcecode type="abnf"><![CDATA[
; DKIM2-Signature envelope tags
; These tags appear within the DKIM2-Signature header field
; as defined in [I-D.ietf-dkim-dkim2-spec]

dkim2-sig-tag-i  = %x69 "=" 1*2DIGIT
                 ; i= hop sequence number
                 ; REQUIRED in every DKIM2-Signature
                 ; MUST start at 1 and increment by 1 at each signing hop
                 ; gaps in sequence MUST be treated as making the message unsigned

dkim2-sig-tag-v  = %x76 "=" 1*3DIGIT
                 ; v= ordering index for multiple DKIM2-Signature
                 ; instances sharing the same i= value (e.g. parallel
                 ; algorithm signatures at the same hop)
                 ; OPTIONAL - absent when only one signature exists at this hop
                 ; ascending: v=1 is signed first; a higher v= signature
                 ; chains over all lower v= signatures at the same i=
                 ; same tag name and index semantics as v= in DKIM2-Sig-rt,
                 ; which orders multiple recipients at the same hop instead

dkim2-sig-tag-d  = %x64 "=" domain-name
                 ; d= signing domain
                 ; REQUIRED in every DKIM2-Signature

dkim2-sig-tag-s  = %x73 "=" selector-name
                 ; s= selector
                 ; REQUIRED in every DKIM2-Signature

dkim2-sig-tag-a  = %x61 "=" sig-a-tag-alg
                 ; a= signing algorithm
                 ; REQUIRED in every DKIM2-Signature
sig-a-tag-alg    = "rsa-sha256" / "ed25519-sha256"

dkim2-sig-tag-c  = %x63 "=" sig-c-tag-header "/" sig-c-tag-body
                 ; c= canonicalization algorithm, header/body pair
                 ; REQUIRED in every DKIM2-Signature
                 ; consistent with the DKIM1 and ARC c= convention
sig-c-tag-header = "relaxed"
                 ; header canonicalization MUST be relaxed (Section 3.3.5)
                 ; no other value is syntactically valid
sig-c-tag-body   = "relaxed" / "simple"

dkim2-sig-tag-h  = %x68 "=" header-field-name *( ":" header-field-name )
                 ; h= colon-separated list of additional header field
                 ; names the signer chooses to protect, beyond the
                 ; structural DKIM2 header set defined in Section 3.3.2
                 ; the order of names is significant: it determines
                 ; concatenation order for the header hash computation
                 ; OPTIONAL - absent when the signer adds no
                 ; discretionary headers beyond the mandatory core

dkim2-sig-tag-bh = %x62 %x68 "=" base64string
                 ; bh= body hash
                 ; REQUIRED in every DKIM2-Signature

dkim2-sig-tag-b  = %x62 "=" base64string
                 ; b= signature value
                 ; REQUIRED in every DKIM2-Signature

dkim2-sig-tag-hh = %x68 %x68 "=" base64string
                 ; hh= header hash
                 ; hash of all non-excluded message header fields
                 ; computed before signing, using alphabetical ordering by lowercase field name
                 ; OPTIONAL in DKIM2-core signatures

Tags MAY appear in any order within the header field; each tag kind MUST appear at most once.
]]></sourcecode>
        </section>
        <section anchor="signed-header-set">
          <name>Signed Header Set</name>
          <t>The DKIM2 signature at each hop covers a specific set of header fields. The signed header set MUST include:</t>
          <ul spacing="normal">
            <li>
              <t>All DKIM2-Authentication-Results headers with i= values less than or equal to the current hop</t>
            </li>
            <li>
              <t>All DKIM2-Sig-mf headers with i= value equal to the current hop</t>
            </li>
            <li>
              <t>All DKIM2-Sig-rt headers with i= value equal to the current hop</t>
            </li>
            <li>
              <t>All DKIM2-Mod headers with i= value less than or equal to the current hop. DKIM2-Mod headers are subject to the same canonicalization rules as other signed headers per <xref target="RFC6376"/> Section 3.4. The del= and new= values are canonicalized as header field values - line endings are normalized and folding whitespace is handled per the canonicalization algorithm specified in the signature.</t>
            </li>
            <li>
              <t>Any message header fields declared in the signer's h= tag</t>
            </li>
            <li>
              <t>All previous DKIM2-Signature headers with i= value less than the current hop, or with i= value equal to the current hop and v= value less than the current signature's v= value</t>
            </li>
            <li>
              <t>The incomplete current DKIM2-Signature header with the b= value set to empty or a placeholder as defined in <xref target="I-D.ietf-dkim-dkim2-spec"/></t>
            </li>
          </ul>
          <t>When multiple DKIM2-Signature headers share the same i= value, the h=, d= and c= tags MUST be identical across all of them: the same signing domain, the same discretionary header list in the same order, and the same canonicalization protect the same hop, differing only in signing algorithm. The s= tag MAY differ, since a signer commonly uses a distinct key selector per algorithm. Because h=, d= and c= are fixed, bh= and hh= are necessarily identical as well - both describe the same canonicalized content. A mismatch in bh= or hh= between signatures declared at the same i= is itself evidence of tampering and MUST be treated as a verification failure. This is not a novel constraint: the same body hash routinely appears unchanged across a DKIM1 signature and an ARC-Message-Signature covering the same message.</t>
          <t>DKIM2-Authentication-Results is defined in Section 3.5.1.</t>
          <t>Received:, Return-Path: and other transport trace headers are excluded from the signed header set. They are also excluded from the hh= computation as specified in Section 3.3.5.</t>
          <t>Which header fields are declared in the signer's h= tag is at the signer's discretion. Signers SHOULD include headers that have security relevance for the message - From:, To:, Subject:, Date: - and SHOULD declare their inclusion or exclusion consistently across all messages.</t>
          <t>The b= value is calculated over the signed header set using the canonicalization algorithm specified in the signature, following the same procedure defined in <xref target="RFC6376"/> Section 3.7. The header fields MUST be concatenated in the order listed above. This profile defines this order itself rather than relying on <xref target="I-D.ietf-dkim-dkim2-spec"/>, which does not define DKIM2-Sig-mf, DKIM2-Sig-rt, DKIM2-Mod or DKIM2-Authentication-Results as header types and therefore does not specify an ordering for them.</t>
          <t>Implementations MUST NOT assume that header fields arrive in a specific order. The signed header set is identified by field name and instance index (i=, seq=), not by physical position in the message. Intermediate MTA software may reorder header fields during transit without affecting chain of custody verification, since canonical ordering is established through the i= and seq= index values embedded in DKIM2-Sig-mf, DKIM2-Sig-rt and DKIM2-Mod headers. Implementations MUST use these index values, not header field position, to reconstruct the chain of custody.</t>
        </section>
        <section anchor="sequence-numbering">
          <name>Sequence Numbering</name>
          <t>DKIM2-Signature headers are numbered sequentially starting at i=1. Gaps in the sequence MUST be treated as making the message unsigned. Implementations MUST enforce the following per-type limits as a denial-of-service mitigation:</t>
          <ul spacing="normal">
            <li>
              <t>i= (hop index): MUST NOT exceed 20. A realistic worst-case delivery path including nested mailing lists and security gateways at both ends does not exceed 15-16 hops; 20 provides margin without permitting pathological chains.</t>
            </li>
            <li>
              <t>v= (recipient sequence): MUST NOT exceed 500 per hop. This is consistent with the recipient limits enforced by major MTA implementations.</t>
            </li>
            <li>
              <t>seq= (modification sequence): MUST NOT exceed 20 per hop per field. A single hop modifying more than 20 instances of the same header field is not a legitimate scenario.</t>
            </li>
            <li>
              <t>fr= (fragment index): In DKIM2-core, implementations MUST NOT exceed 2 fragments per declaration. This limit reflects the practical constraint that a standard <xref target="RFC5322"/> header field value cannot exceed 998 characters, requiring at most one continuation frame when combined with the DKIM2-Mod tag overhead of approximately 30 characters. A limit of 20 fragments would only be relevant if recipe content were transported in DKIM2-Mod headers - a use case that depends on architectural decisions about recipe storage not yet resolved in the base specification <xref target="I-D.ietf-dkim-dkim2-spec"/>. DKIM2-extended implementations MAY increase this limit when recipe transport in headers is formally specified.</t>
            </li>
          </ul>
          <t>In addition, implementations MUST reject messages whose total size of DKIM2-specific headers (DKIM2-Signature, DKIM2-Sig-mf, DKIM2-Sig-rt and DKIM2-Mod) exceeds 128KB. This global byte cap is a secondary defense-in-depth measure; the per-type limits above are the primary mitigation.</t>
        </section>
        <section anchor="body-hash-bh">
          <name>Body Hash (bh=)</name>
          <t>Each hop MUST calculate and include a body hash (bh=) of the current message body using the canonicalization algorithm specified in the signature. The bh= value changes whenever the body is modified, providing implicit notification that a modification occurred and attribution of that modification to the signing hop.</t>
          <t>No body recipe or reconstruction is required or expected in DKIM2-core. The change in bh= value between hops, combined with the identity of the signing domain at the modifying hop, provides sufficient accountability for delivery decisions.</t>
          <t>DKIM2-core replaces accountability-by-reconstruction with accountability-by-attribution: who modified the message and what they declared, not how to reconstruct the previous state. This substitution is not a reduction in security - it is a recognition that reconstruction is not required for the operational objectives of message routing and delivery decisions. Attribution is verifiable at each hop, applies uniformly to all intermediaries, and remains available even for modifications that are irreversible by construction. The forensic value of reconstruction - where it exists - is preserved in DKIM2-extended as an optional layer for operators who require it.</t>
        </section>
        <section anchor="header-hash-hh">
          <name>Header Hash (hh=)</name>
          <t>The hh= tag contains a hash of all message header fields not excluded from the signed header set. This tag is OPTIONAL in DKIM2-core signatures. When present, it enables additional hop-by-hop integrity verification of declared modifications: while b= and DKIM2-Mod already provide cryptographic proof of each hop's own declarations, hh= with the rollback mechanism described in Section 3.3.7 allows each hop to verify that its predecessor has not omitted undeclared header modifications.</t>
          <t>The following header fields are excluded from the hh= computation:</t>
          <ul spacing="normal">
            <li>
              <t>Already covered by b=: DKIM2-Signature, DKIM2-Sig-mf, DKIM2-Sig-rt, DKIM2-Mod, DKIM2-Authentication-Results</t>
            </li>
            <li>
              <t>Ephemeral or self-consistent, changing legitimately at every hop regardless of DKIM2 participation: Received, Return-Path, Authentication-Results (<xref target="RFC8601"/>), ARC-*, DKIM-Signature</t>
            </li>
            <li>
              <t>Vendor-specific diagnostic headers: X-MS-<em>, X-GM-</em></t>
            </li>
            <li>
              <t>Exceptions to the vendor-specific exclusion apply to individual headers that cross organizational boundaries despite carrying a vendor-associated prefix. These exceptions are normatively defined, not a matter of prefix alone, and are detailed in Section 8.6.</t>
            </li>
          </ul>
          <t>All remaining header fields, including other X-* headers, are included in the hh= computation. The rationale for including non-vendor X-* headers and the security implications of excluding them are discussed in Section 8.6.</t>
          <t>The hash algorithm used for hh= MUST match the algorithm used for bh= in the same DKIM2-Signature, as specified in the a= tag.</t>
          <t>Canonicalization follows the DKIM1 relaxed algorithm per <xref target="RFC6376"/> Section 3.4: header field names are lowercased, whitespace is normalized and continuation lines are unfolded.</t>
        </section>
        <section anchor="header-order-and-multiple-instances">
          <name>Header Order and Multiple Instances</name>
          <t>DKIM2-core signatures cover a defined set of header fields, specified in Section 3.3.2.</t>
          <t>DKIM2-core signatures protect header fields at two levels. The signed header set covered by b= - the structural DKIM2 headers described in Section 3.3.2, together with any fields the signer additionally declares in h= - provides value-level protection consistent with DKIM1: any change to an included field's value invalidates the signature. The optional hh= tag provides set-level integrity for all non-excluded header fields, detecting undeclared additions and removals, as described in Section 3.3.5.</t>
          <t>When multiple header fields with the same name exist, their relative physical order in the message may be altered by intermediate systems - milters, antivirus scanners and content filters routinely reconstruct messages in ways that can reorder header fields with identical names. If the signed header set includes such fields and their order changes, any existing signature covering the original order will no longer validate.</t>
          <t>DKIM2-core addresses this through a two-level ordering strategy that minimises the surface area of ambiguous sorting.</t>
          <t>The first level covers all header fields included in the hh= computation. These are sorted alphabetically by lowercase field name. For most header fields, <xref target="RFC5322"/> prohibits multiple instances at origination, so this sort operates on unique keys and is fully deterministic. This ordering is required at every hop that computes hh=, making it a wire-level constraint - but one that operates on field names only, not on field values, and that produces a fixed-size hash rather than an ordered sequence that downstream verifiers must reconstruct.</t>
          <t>The second level handles duplicate instances of the same header field using explicit i= and seq= index values declared via DKIM2-Mod, rather than physical position in the message. This is an integer lookup, not a string sort, and is unambiguous by construction. Section 3.3.7 defines the precise verification procedure.</t>
          <t>A residual case exists: header fields that <xref target="RFC5322"/> permits in multiple instances at origination (such as Comments: and Keywords:) and that have no corresponding DKIM2-Mod entries. These instances are not attributed to any DKIM2-Mod declaration and must be disambiguated by a secondary sort on canonicalised field value. This sort is limited in scope - it applies only to the narrow set of <xref target="RFC5322"/> multi-instance fields, which are rare in production traffic. If a field that <xref target="RFC5322"/> defines as singular appears in multiple instances without a corresponding DKIM2-Mod declaration, this is a protocol violation; the verifier's required handling of this case is given in Section 3.3.7.</t>
          <t>Both DKIM2-core and the DKIM2 base specification <xref target="I-D.ietf-dkim-dkim2-spec"/> require ordering computations. The difference is in the scope and determinism of the sort. The base specification mandates alphabetical ordering of all header field names with bottom-up ordering for duplicate names - a sort that operates on the full header set including body recipes, whose size grows with message complexity and delivery path length. The sort result depends on the stability of the sort implementation, on tie-breaking rules for headers with the same name and on how headers containing non-ASCII characters are ordered - all points where independent implementations can and do diverge. Interoperability testing at the IETF 124 hackathon in March 2026 confirmed failures between independent implementations attributable to disagreements on tag ordering within DKIM2-Signature fields - a simpler problem than duplicate header ordering, yet sufficient to cause failures. The base specification has since clarified that tags within a single header field may appear in any order, resolving that narrow point. This does not address the underlying problem: the ordering computation the base specification requires - full alphabetical sorting with bottom-up tie-breaking across the entire header set, including body recipes - is unnecessarily rigid and complex.</t>
          <t>DKIM2-core reduces the surface of ordering ambiguity to the minimum achievable without eliminating ordering entirely. Field-name sorting is deterministic on unique ASCII-lowercase keys. Duplicate ordering uses explicit integer indices for all hop-introduced instances. Value-based sorting is confined to the residual case of originals not attributed to any DKIM2-Mod declaration for <xref target="RFC5322"/> multi-instance fields - a corner case that is rare in practice and bounded in scope. The base specification has no equivalent mechanism for disambiguating duplicates without relying on physical header position, which intermediate systems may alter.</t>
        </section>
        <section anchor="hop-by-hop-header-integrity-verification">
          <name>Hop-by-Hop Header Integrity Verification</name>
          <t>When a verifier at hop i=N receives a message carrying an hh= tag, it performs verification in two sequential steps. This mechanism requires that all hops in the chain include hh= in their DKIM2-Signature.</t>
          <t>The verifier first establishes the canonical header set: all header fields present in the received message are ordered alphabetically by lowercase field name. Duplicate fields are ordered using the DKIM2-Mod declarations of hop i=N-1: fields without a corresponding DKIM2-Mod entry are originals; fields declared via DKIM2-Mod are ordered by their i= and seq= values. A duplicate field instance that cannot be explained by any DKIM2-Mod declaration in the chain is treated as an original field present at origination. If a header field defined as single-instance by <xref target="RFC5322"/> appears more than once, each additional instance beyond the first MUST be accounted for by a corresponding DKIM2-Mod with a new= declaration. Unaccounted duplicates of single-instance fields constitute a protocol violation and the verifier MUST treat it as a verification failure.</t>
          <t>The first step verifies the integrity of what hop i=N-1 signed. The verifier recomputes hh= over the canonical header set and compares the result against the hh= value declared in the DKIM2-Signature of hop i=N-1. If the values differ, the header set has been altered since hop i=N-1 signed it and the verifier MUST treat this as a verification failure.</t>
          <t>The second step is OPTIONAL and verifies that hop i=N-1 has not lied about its own declared modifications. The verifier applies the DKIM2-Mod declarations of hop i=N-1 in reverse: additions declared via new= are removed from the header set and removals declared via del= are restored to the header set with their original values. Modifications declared via both del= and new= are reversed by removing the new= value and restoring the del= value. The result is the header state as it should have been at hop i=N-2 according to what hop i=N-1 has declared. The verifier then recomputes hh= over this reconstructed header set and compares it against the hh= value declared in the DKIM2-Signature of hop i=N-2. If the values differ, hop i=N-1 has declared modifications that do not account for all changes it made and the verifier MUST treat this as a verification failure. In the transitional deployment phase described in Section 5.6, the verifier MAY record a dkim2=fail result in the DKIM2-Authentication-Results header rather than rejecting the message.</t>
          <t>This check is a single step backward, not a full chain traversal. Each honest hop performs the same check on its predecessor, so a lie introduced at any point in the chain is detected at the immediately following hop rather than at the final receiver. This property means that the chain self-validates during transit without requiring the receiver to reconstruct the entire message history.</t>
          <t>At i=1 there are no DKIM2-Mod declarations. The hh= value at i=1 covers the original header set and serves as the baseline against which hop i=2 will perform its rollback check.</t>
          <t>The mechanism does not require trust in intermediaries. Each hop verifies the previous signature cryptographically before signing its own. A hop that modifies a header without declaring it in DKIM2-Mod will produce a reconstructed header set that does not match the hh= of its predecessor and the discrepancy will be detected by the next honest verifier in the chain.</t>
          <t>The h= tag in DKIM2-Signature already provides cryptographic protection for the mandatory security-critical header fields. The hh= rollback mechanism extends this protection to the full non-excluded header set. The two mechanisms are complementary: h= provides hard guarantees on critical fields regardless of whether hh= is present and hh= provides additional assurance that no undeclared modification has occurred across the complete header set.</t>
          <t>Working group discussion has confirmed that localising a verification failure to a specific hop requires hop-by-hop verification, even when end-to-end verification is used as the primary mechanism.</t>
        </section>
      </section>
      <section anchor="replay-prevention">
        <name>Replay Prevention</name>
        <t>Replay prevention is a direct consequence of envelope binding. Since DKIM2-Sig-mf and DKIM2-Sig-rt are cryptographically signed at every hop and contain the actual SMTP envelope values, it is impossible to reuse a valid signature for a different recipient without breaking the chain. An attacker who attempts to replay a message to a recipient not listed in DKIM2-Sig-rt will produce a mismatch between the signed rt= value and the actual RCPT TO of the new transaction, which MUST be rejected by a conformant verifier.</t>
        <t>Mailing list redistribution is not a replay attack. When a mailing list receives a message and redistributes it to subscribers, it adds its own DKIM2 signature with its own mf= and rt= values, explicitly declaring the redistribution. The chain of custody shows the original sender, the mailing list and the final recipient as distinct entities in the chain.</t>
      </section>
      <section anchor="verification-reporting-enforcement-and-dsn-handling">
        <name>Verification Reporting, Enforcement and DSN Handling</name>
        <t>This section defines how DKIM2-core verification results are reported and enforced, and how the resulting accept/reject decisions propagate through delivery status notifications (DSNs) without causing backscatter to innocent sender domains.</t>
        <section anchor="dkim2-authentication-results">
          <name>DKIM2-Authentication-Results</name>
          <t>DKIM2-core defines a per-hop verification result header analogous to ARC-Authentication-Results. The header is produced by the inbound verifier and records the outcome of chain verification for the hop index at which verification was performed.</t>
          <artwork><![CDATA[
dkim2-ar-header   = "DKIM2-Authentication-Results:" [CFWS]
                    "i=" dkim2-hop-index ";" [CFWS]
                    authserv-id ";" [CFWS]
                    "dkim2=" dkim2-ar-result
                    [ [CFWS] "(" dkim2-ar-comment ")" ]

dkim2-hop-index   = 1*DIGIT
                    ; hop index of the verified signature

authserv-id       = dot-atom
                    ; FQDN of the verifying MTA

dkim2-ar-result   = "pass" / "fail" / "none" /
                    "temperror" / "permerror"

dkim2-ar-comment  = *( [FWS] ccontent ) [FWS]
                    ; as defined in RFC 5322
]]></artwork>
          <t>The <tt>i=</tt> value identifies the hop whose signature was verified. The <tt>authserv-id</tt> is the FQDN of the MTA performing verification. DKIM2-Authentication-Results carries no header.d= value: the <tt>i=</tt> index already identifies which DKIM2-Signature the result applies to, and the signing domain can be read directly from that signature's own d= tag, so reporting it a second time here would be redundant. This differs from Authentication-Results for DKIM1 <xref target="RFC8601"/>, where header.d= is needed because a message can carry multiple unordered DKIM-Signature fields with no equivalent index to disambiguate among them.</t>
          <t>The verifier produces one DKIM2-Authentication-Results header per verified hop. On a three-hop chain the inbound verifier at the final destination produces three headers, one for each i= value present in the message.</t>
          <artwork><![CDATA[
DKIM2-Authentication-Results: i=1; dns.itb.it; dkim2=none

DKIM2-Authentication-Results: i=1; dns.itb.it; dkim2=pass

DKIM2-Authentication-Results: i=2; dns.itb.it;
    dkim2=fail (hh rollback mismatch)
]]></artwork>
        </section>
        <section anchor="verification-result-reporting-and-graduated-enforcement">
          <name>Verification Result Reporting and Graduated Enforcement</name>
          <t>The base specification defines a binary delivery model: a message either passes chain verification and is accepted or fails and is rejected during the SMTP session. No mechanism is provided for recording intermediate verification results, for communicating partial chain validity or for expressing graduated enforcement policy.</t>
          <t>This is a structural gap, not a missing edge case. During any realistic deployment period - and operational experience with ARC suggests this period may be indefinite - messages will transit legacy nodes that break the chain without malicious intent. A binary accept/reject model applied to these messages produces either false rejections of legitimate mail or no enforcement at all. Neither outcome is acceptable.</t>
          <t>The adoption burden this implies is materially heavier than for comparable mechanisms. DMARC enforcement requires a single DNS policy record: sender and receiver agree and intermediate nodes do not need to participate at all - they simply pass mail through. Even so, DMARC's interaction with mailing lists produced well-documented, severe breakage. DKIM2's chain of custody instead requires every node in the delivery path - every forwarder, list and gateway - to be DKIM2-aware before a binary enforcement model behaves as the base specification implies. Treating full-path participation as a precondition for accepting mail does not describe a transition path - it describes rejecting legitimate mail as routine behavior for as long as any non-participating node remains anywhere on the path, which may be years or may never fully resolve.</t>
          <t>DKIM2-core requires the DKIM2-Authentication-Results header described above to record the outcome of chain verification with the full set of verdicts. This result is consumed by downstream filtering systems for policy decisions, exactly as Authentication-Results is consumed today.</t>
          <t>The critical distinction for enforcement policy is between verification failures that constitute cryptographic proof of dishonesty by a DKIM2-participating node and failures whose cause cannot be determined from the message alone. These two cases are not always distinguishable from the raw failure codes and getting this distinction right is what makes rejection safe.</t>
          <t>The following enforcement model applies:</t>
          <t><strong>Structural failure</strong> - a DKIM2-Signature with an unresolvable or invalid signing key, an unknown algorithm, a syntax error or a sequence gap - constitutes a permerror. Verification cannot be attempted at all. The message MUST be rejected in enforcement mode regardless of transition period considerations. These failures cannot be produced by an innocent legacy node: they indicate either a misconfigured DKIM2 implementation or a forged header.</t>
          <t><strong>Cryptographic proof of dishonesty</strong> is present when the b= verification of the most recent DKIM2-Signature succeeds and the hh= value it covers matches the current header set, but the rollback of declared DKIM2-Mod modifications does not reconstruct the hh= value committed by the preceding hop. If b= is valid, then hh= and all DKIM2-Mod declarations are guaranteed intact. If the rollback then fails, the signing node at i=N declared modifications that do not account for all differences between the header state it received and the header state i=N-1 signed. This is cryptographic proof that i=N misrepresented its modifications. The message MUST be rejected in enforcement mode.</t>
          <t><strong>Undetermined-cause failure</strong> covers every other outcome in which b= itself verifies: hh= mismatch alone, bh= mismatch alone or both together, as well as rollback failure when hh= has already failed and cannot be trusted as an input to it. In each of these cases b= confirms that the DKIM2-Signature header field the signing node produced is genuinely what that node signed - nothing about the signing node's own declaration is in question. What has changed is content outside that guarantee: header fields not covered by the signed header set, the body or both. The verifier cannot determine whether that change was made by a non-participating legacy node performing ordinary message handling or by an attacker exploiting the same absence of a signature. No reconstruction mechanism resolves this. Recipes and DKIM2-Mod declarations both depend on the modifying party participating and declaring what it changed - a non-participating node does neither by definition, so the ambiguity is not a gap in the reconstruction machinery. It is what non-participation means and no mechanism can close it after the fact. In enforcement mode, the message MUST be delivered with the verification result recorded in DKIM2-Authentication-Results as failed with cause undetermined, rather than attributed to any specific actor. Downstream policy systems MAY use this result to apply local filtering.</t>
          <t>This model ensures that the only messages rejected in enforcement mode are those for which a DKIM2-participating node has demonstrably lied about its modifications. Legitimate mail transiting legacy infrastructure is never lost.</t>
        </section>
        <section anchor="verification-during-smtp-session">
          <name>Verification During SMTP Session</name>
          <t>DKIM2-core verification is performed during the SMTP session at two distinct points:</t>
          <t>During RCPT TO - the inbound milter MAY perform local policy checks based on the envelope sender and recipient, for example checking against local allowlists or denylists. No DKIM2-specific verification is possible at this stage because the message headers, including DKIM2 signatures, have not yet been received.</t>
          <t>At EndOfBody - full signature verification is performed when the complete message and accumulated envelope state are available. The inbound milter verifies the DKIM2 signature chain, the envelope binding in DKIM2-Sig-mf and DKIM2-Sig-rt and the consistency of DKIM2-Mod declarations with the signed header set. The milter then returns one of the following to instruct the MTA:</t>
          <ul spacing="normal">
            <li>
              <t>SMFIS_CONTINUE - the message passes verification or the failure does not constitute cryptographic proof of dishonesty by a DKIM2-participating node; the MTA proceeds with delivery and the result is recorded in DKIM2-Authentication-Results</t>
            </li>
            <li>
              <t>SMFIS_REJECT - a structural failure or proven dishonesty is detected per the graduated enforcement model in Section 3.5.2; the MTA issues a 5xx rejection to the connected peer</t>
            </li>
            <li>
              <t>SMFIS_TEMPFAIL - a transient error occurred, for example a DNS timeout during key lookup; the MTA issues a 4xx temporary failure to the connected peer</t>
            </li>
          </ul>
          <t>When the milter returns SMFIS_REJECT, the MTA issues a 5xx rejection directed at the connected peer - the system currently delivering the message over the active SMTP connection. This rejection is never directed at the original envelope sender. This is the fundamental mechanism that prevents backscatter: no DSN is ever generated toward an address that was not the source of the current SMTP session.</t>
        </section>
        <section anchor="reject-propagation-and-backscatter-prevention">
          <name>Reject Propagation and Backscatter Prevention</name>
          <t>When a DKIM2-core node rejects a message with 5xx during the SMTP session, the connected peer (the previous hop in the delivery chain) receives the rejection and is responsible for generating its own rejection toward its own peer in turn. Each hop manages its own rejection independently. The original sender is reached through this chain of independent rejections without generating backscatter at any point.</t>
          <t>A node that accepts a message with an invalid or missing DKIM2 signature and subsequently generates a DSN to the original envelope sender violates a MUST NOT in the protocol and produces backscatter. During the transition period, nodes MAY accept messages with invalid or missing DKIM2 signatures as a matter of local policy while adoption is incomplete. Nodes that do so MUST NOT generate DSNs to the original envelope sender - they MUST either discard silently or generate DSNs only to the connected peer.</t>
        </section>
        <section anchor="authenticated-dsn-generation">
          <name>Authenticated DSN Generation</name>
          <t>A node that has accepted a DKIM2-signed message and needs to generate a DSN does not need to possess a signing key aligned with the rt= value of the incoming signature. It needs only to sign the DSN with a key authorized for its own domain and direct it to the connected peer that delivered the original message. The DSN propagates back along the chain via the same hop-by-hop rejection mechanism described in Section 3.5.4.</t>
          <t>This is ordinary outbound signing, not a DSN-specific mechanism. The DSN itself is produced by standard MTA bounce-generation logic, independently of DKIM2; the milter's role is limited to signing it as a newly originated message, exactly as it would sign any other outbound mail from the domain. The bounce carries no DKIM2 signatures from the original delivery chain and there is no chain-of-custody state to extract, redact or forward from the rejected message into the bounce - a class of complexity that arises only when a DSN mechanism is required to carry and selectively strip prior chain state.</t>
          <t>When the DSN envelope sender is the null address per <xref target="RFC5321"/>, the DKIM2-Sig-mf field carries an empty addr= value. The d=/mf= alignment check defined in Section 3.1.3 is not applicable for null-sender messages. The verifier identifies the message as a DSN by the empty mf= value; the signing domain's identity is established by the d= tag and the corresponding DNS key record. The verifier MUST proceed with full chain verification - including signature validation, hop sequence integrity and the hh= rollback check where present - and record the result in DKIM2-Authentication-Results as for any other message.</t>
          <t>The verifier MUST NOT issue a rejection response to a null-sender message regardless of verification outcome. This is a permanent protocol requirement, not a transitional measure: rejection of a null-sender message risks a mail loop if the sending MTA does not correctly implement <xref target="RFC5321"/> Section 6.1 null-sender loop prevention. The verification result is recorded for downstream policy evaluation.</t>
          <t>During the transition period, and for as long as any non-participating node remains on a delivery path, null-sender messages without DKIM2 signatures will continue to arrive. This is not a condition that a mature deployment eliminates: per Section 3.5.2, full-path DKIM2 participation is never guaranteed, and the MUST NOT reject rule above applies unconditionally regardless of deployment maturity.</t>
        </section>
        <section anchor="transition-period-behavior">
          <name>Transition Period Behavior</name>
          <t>During the transition period when DKIM2-capable and legacy nodes coexist, a receiver that gets a message without a valid DKIM2 signature cannot perform DKIM2-specific verification - envelope binding, chain of custody validation and authenticated DSN generation toward the connected peer are not available. The receiver falls back to pre-DKIM2 behavior: verify DKIM1 signatures if present, apply DMARC policy if configured and generate DSNs as today. Whether this fallback alone justifies rejection is governed by the graduated enforcement model of Section 3.5.2 - it does not, on its own.</t>
        </section>
      </section>
      <section anchor="cryptographic-algorithms">
        <name>Cryptographic Algorithms</name>
        <t>DKIM2-core mandates support for RSA-SHA256 and Ed25519-SHA256 signing algorithms as defined in <xref target="I-D.ietf-dkim-dkim2-spec"/>. Verifiers MUST implement both algorithms. Signers SHOULD implement both algorithms and MAY sign a message with multiple algorithms simultaneously - for example RSA-SHA256 for compatibility with legacy verifiers and Ed25519-SHA256 for efficiency. Multiple DKIM2-Signature headers sharing the same i= value are ordered by the v= tag defined in Section 3.3.1 - the same index used for DKIM2-Sig-rt; see Section 3.3.2 for how this affects the signed header set. The tag-value format of DKIM2-Signature imposes no constraints on the signing algorithm beyond producing a binary output encodable in base64. This ensures forward compatibility with post-quantum algorithms when they are standardized for use in email authentication.</t>
        <t>When a message carries signatures for multiple algorithms at the same hop, a verifier that supports all those algorithms MUST treat the failure of any one signature as invalidating the entire hop. A partial pass - where one algorithm verifies and another fails - MUST be treated as a verification failure. This prevents downgrade attacks where an attacker invalidates the stronger algorithm signature to force acceptance based solely on the weaker one.</t>
        <t>For body hash calculation, DKIM2-core supports both relaxed and simple canonicalization as defined in <xref target="RFC6376"/> Section 3.4. The choice of canonicalization algorithm is indicated in the signature and is a per-hop decision.</t>
        <t>The choice between relaxed and simple canonicalization for body hashing reflects a fundamental tradeoff documented in <xref target="RFC6376"/> Appendix B. Relaxed canonicalization tolerates common benign transformations made by intermediate systems - whitespace normalization, line ending conversion, quoted-printable to 8bit transcoding - at the cost of reduced sensitivity to intentional modifications. Simple canonicalization detects all byte-level changes but is more sensitive to involuntary transformations. DKIM2-core implementations that include legacy infrastructure in their deployment path SHOULD use relaxed canonicalization for body hashing to maximize chain continuity.</t>
      </section>
      <section anchor="milter-implementation">
        <name>Milter Implementation</name>
        <t>DKIM2-core is designed to be implementable via the milter interface without modifications to MTA core software. This section describes the recommended deployment patterns.</t>
        <section anchor="two-milter-pattern">
          <name>Two-Milter Pattern</name>
          <t>The recommended implementation uses two milter instances. The protocol flow described in Section 3.5 maps to the milter callbacks as follows:</t>
          <t>Inbound milter - runs on the receiving MTA. Operates at two points in the SMTP session:</t>
          <ul spacing="normal">
            <li>
              <t>During RCPT TO: MAY perform local policy checks based on the envelope sender and recipient - for example checking against local allowlists or denylists. No DKIM2-specific verification is possible at this stage because the message headers, including DKIM2 signatures, have not yet been received.</t>
            </li>
            <li>
              <t>At EndOfBody: performs full DKIM2 verification with access to the complete message and accumulated envelope state from MailFromRequest and RcptToRequest callbacks. The milter verifies the DKIM2 signature chain, the envelope binding in DKIM2-Sig-mf and DKIM2-Sig-rt and the consistency of DKIM2-Mod declarations with the signed header set. The milter applies the graduated enforcement model defined in Section 3.5.2 to determine the appropriate return value: SMFIS_REJECT for structural failures or proven dishonesty, SMFIS_TEMPFAIL for transient errors, SMFIS_CONTINUE otherwise.</t>
            </li>
          </ul>
          <t>The inbound milter requires no persistent state between sessions - all information needed for verification is available within the current SMTP session.</t>
          <t>Implementations using RSA-SHA256 MAY initiate DNS key lookup at EndOfHeaders as an optimization when d= and s= are available from the DKIM2-Signature header, reducing the time spent waiting for DNS resolution at EndOfBody. Implementations using Ed25519-SHA256 or supporting multiple algorithms MUST defer all DNS lookups and signature operations to EndOfBody, where the complete signed header set is available. Full signature verification including body hash comparison MUST be performed at EndOfBody regardless of algorithm.</t>
          <t>Outbound milter - runs on the transmitting MTA, positioned last in the milter chain after all other milters that may modify the message. Operates at EndOfBody with access to:</t>
          <ul spacing="normal">
            <li>
              <t>The complete message in its final state after all other milters</t>
            </li>
            <li>
              <t>Envelope values accumulated via MailFromRequest and RcptToRequest callbacks</t>
            </li>
            <li>
              <t>All DKIM2-Mod headers added by modifying entities earlier in the chain</t>
            </li>
          </ul>
          <t>Constructs DKIM2-Sig-mf and DKIM2-Sig-rt from envelope values, validates the formal correctness of any DKIM2-Mod headers present and adds the DKIM2 signature covering the final state of the message. Requires no persistent state between sessions.</t>
          <t>The inbound milter is inactive on outbound traffic and the outbound milter is inactive on inbound traffic - this is standard milter behavior already implemented and deployed.</t>
          <t>The two milter instances do not need to run on the same server. Each hop in the delivery chain signs independently with its own key. The inbound milter of hop N and the outbound milter of hop N+1 have no need to communicate - the chain of custody is established through the signed headers in the message itself.</t>
        </section>
        <section anchor="responsibility-for-declaring-modifications">
          <name>Responsibility for Declaring Modifications</name>
          <t>A fundamental principle of DKIM2-core is that every entity that modifies a message MUST declare its modifications via DKIM2-Mod headers at the time of modification. This responsibility belongs to the entity that makes the modification, not to the signing milter.</t>
          <t>This principle has an important architectural consequence: the outbound milter does not need to reconstruct what was changed by comparing the current message with a previously cached version. It trusts that modifications have already been declared by whoever made them and signs the message as presented. This eliminates the need for stateful milter implementations with persistent shared storage in the DKIM2-core profile.</t>
          <t>Implementations that delegate modification declaration to the signing milter rather than to the modifying entity - requiring the milter to infer changes by comparing with a cached copy - are technically possible but architecturally unsound. They couple the signing infrastructure to the modification logic in ways that create operational fragility and are incompatible with the stateless deployment model described here.</t>
        </section>
        <section anchor="mailing-list-managers-delegating-to-an-mta">
          <name>Mailing List Managers Delegating to an MTA</name>
          <t>When a mailing list manager such as Mailman, mlmmj or Sympa passes messages to a local MTA for transmission, the recommended pattern is:</t>
          <ul spacing="normal">
            <li>
              <t>The list manager modifies the message - adding List-* headers, modifying Subject, appending footer</t>
            </li>
            <li>
              <t>The list manager adds DKIM2-Mod headers declaring each modification it made</t>
            </li>
            <li>
              <t>The list manager submits the message to the local MTA, forcing the MAIL FROM to the list bounce address</t>
            </li>
            <li>
              <t>The outbound milter on the MTA constructs DKIM2-Sig-mf and DKIM2-Sig-rt from the envelope values and signs the message</t>
            </li>
          </ul>
          <t>List managers that cannot be modified to add DKIM2-Mod headers MAY rely on the outbound milter to detect undeclared modifications by comparing the signed headers against the incoming DKIM2 signature. However this approach requires stateful milter operation and is therefore classified as DKIM2-extended behavior. It is NOT part of the DKIM2-core profile.</t>
        </section>
        <section anchor="mailing-list-managers-with-integrated-smtp">
          <name>Mailing List Managers with Integrated SMTP</name>
          <t>Some mailing list managers - including mlmmj and similar lightweight implementations - can open SMTP connections directly without passing through a local MTA. These implementations act as their own MTA for the purpose of message transmission and MUST implement DKIM2-core signing directly, without relying on an external milter.</t>
          <t>Such implementations MUST:</t>
          <ul spacing="normal">
            <li>
              <t>Declare all modifications made to the message via DKIM2-Mod headers before signing</t>
            </li>
            <li>
              <t>Construct DKIM2-Sig-mf from the MAIL FROM value used in the SMTP transaction</t>
            </li>
            <li>
              <t>Construct DKIM2-Sig-rt from the RCPT TO values used in the SMTP transaction</t>
            </li>
            <li>
              <t>Sign the message with a key authorized for the signing domain</t>
            </li>
          </ul>
          <t>Alternatively, these implementations MAY be configured to relay through a local MTA that carries an outbound milter, delegating signing responsibility to that MTA. This is the RECOMMENDED approach for operators who wish to minimize the scope of DKIM2-core implementation.</t>
        </section>
        <section anchor="hop-counting-and-multiple-hops-within-the-same-administrative-domain">
          <name>Hop Counting and Multiple Hops Within the Same Administrative Domain</name>
          <t>When a message passes through multiple MTAs within the same administrative domain - for example, a receiving MTA that passes to a list manager that passes to a transmitting MTA - each SMTP transaction that adds a new DKIM2 signature constitutes a new hop with an incremented i= value.</t>
          <t>Operators MAY choose not to add a DKIM2 signature at intermediate hops within their own administrative domain if the intermediate hop does not modify the message and does not need to be independently attributed in the chain of custody. Transparent internal relays that add only Received: headers do not need to participate in DKIM2 signing.</t>
          <t>However, any hop that modifies the message - including a list manager - MUST be represented in the chain of custody with its own DKIM2 signature, regardless of whether that hop is within the same administrative domain as adjacent hops. A list manager's signature may be generated by the list manager itself, when it signs directly as its own MTA, or by a downstream MTA to which it delegates signing.</t>
          <t>Signing both before and after mailing list processing is supported as an optional mode. In this configuration the inbound milter verifies the previous hop and signs at i=N, the list manager adds DKIM2-Mod declarations for its modifications and the outbound milter signs at i=N+1 covering the declared modifications. This mode ensures that all outbound messages carry a DKIM2 signature regardless of the delivery path - including cases where a single submission results in both list-processed and direct-delivery copies. Operators who do not require this coverage may use the single-hop model described above.</t>
        </section>
        <section anchor="confirmation-of-milter-based-implementability">
          <name>Confirmation of Milter-Based Implementability</name>
          <t>The feasibility of implementing DKIM2-core via the milter interface without MTA core modifications has been confirmed by multiple participants in the working group discussion.</t>
          <t>Murray Kucherawy, co-chair of the DKIM working group, confirmed publicly on the working group mailing list that core MTA modifications are not necessary to add DKIM2 support via milter - consistent with the deployment model used for DKIM1, SPF, DMARC and ARC.</t>
          <t>G.W. Haywood, maintainer of Sendmail::PMilter - a Perl milter implementation supporting both Sendmail and Postfix - noted that milter protocol version 6 already provides the necessary primitives: adding, deleting and modifying headers and replacing the message body. He assessed that implementing DKIM2 via milter would not be a significant implementation effort once the specification stabilizes and expressed intent to implement DKIM2 support. John Levine subsequently confirmed on the working group list that the primary difference from existing DKIM in terms of milter implementation is access to envelope addresses - and that SMFIC_MAIL and SMFIC_RCPT callbacks already provide these in the milter protocol. He characterized the milter-based implementation of DKIM2 as a Small Matter Of Programming. G.W. Haywood concurred with this assessment.</t>
          <t>A working milter implementation of DKIM2 in Perl using Sendmail::PMilter has been published by Bron Gondwana, co-author of the DKIM2 specification, in the working group interoperability repository at https://github.com/dkim2wg/interop/. This implementation demonstrates that the milter interface provides the primitives necessary for DKIM2 implementation - including Message-Instance generation and outbound signing - without MTA core modifications. The existence of this implementation confirms the milter-based deployment model described in this document, independently of whether the full DKIM2-extended profile or only DKIM2-core is implemented.</t>
          <t>These confirmations from active MTA implementers are consistent with the DKIM2-core design principle described in this document: all mandatory functionality is expressible within the existing milter interface without requiring changes to MTA core software. An implementation of the specific deployment profile described in this document is documented in the Implementation Status section.</t>
        </section>
      </section>
    </section>
    <section anchor="dkim2-extended-optional-profile">
      <name>DKIM2-extended: Optional Profile</name>
      <section anchor="overview-and-scope">
        <name>Overview and Scope</name>
        <t>DKIM2-extended is a superset of DKIM2-core. A node that implements DKIM2-extended implements all of DKIM2-core plus the body recipe mechanism described in this section. DKIM2-extended is not a separate protocol - it is an additional layer of functionality built on top of the mandatory core profile.</t>
        <t>The body recipe mechanism allows intermediaries to describe modifications made to the message body in sufficient detail to allow reconstruction of previous versions. This capability has forensic value for operators who need to investigate message handling after the fact, audit modification chains or satisfy compliance requirements that mandate retention of original message content. Body recipes cannot provide guidance as to whether content is safe - safety determination remains in the domain of content scanning and reputation systems. The operational value of reconstruction data depends on the receiver's capacity to process it at scale, which varies enormously across the ecosystem.</t>
        <t>However, the body recipe mechanism is not required for the primary operational objectives identified in the DKIM working group charter: replay prevention, backscatter mitigation and modification attribution. These objectives are fully satisfied by DKIM2-core. The working group charter states that "the working group will prefer a result that is incremental to the deployed ecosystem" and that "proposed solutions are expected to be robust in terms of interoperability and scalability." DKIM2-extended should be evaluated against these criteria by operators considering deployment.</t>
        <t>Operators who do not require forensic body reconstruction SHOULD implement DKIM2-core only. Operators who require body accountability for compliance or forensic purposes MAY implement DKIM2-extended, subject to the operational considerations described in this section.</t>
        <t>A note on enforcement models: the deployment of DKIM2-extended cannot rely on the policy decisions of individual large providers as an enforcement mechanism. <xref target="RFC3935"/> states that the IETF works for the benefit of the Internet as a whole, not for the interests of particular entities. A protocol whose correct operation depends on major receivers choosing to penalise non-conformant implementations introduces a dependency that is outside the scope of the protocol specification and that structurally disadvantages operators who lack leverage with those receivers. DKIM2-core provides verifiable security properties through cryptographic mechanisms alone, independent of any provider's enforcement decisions. This ensures that small operators, universities, regional ISPs and non-commercial organisations can participate on equal terms.</t>
      </section>
      <section anchor="body-recipes-and-message-instance-headers">
        <name>Body Recipes and Message-Instance Headers</name>
        <t>The body recipe mechanism is described in detail in <xref target="I-D.ietf-dkim-dkim2-spec"/>. This section summarizes the mechanism and identifies operational considerations relevant to deployment decisions.</t>
        <t>A Message-Instance header is added by each hop that modifies the message body. It contains a JSON-encoded recipe - a structured description of the modifications made - encoded in base64. The recipe provides sufficient information for a verifier to reconstruct the previous version of the message body from the current version by applying the recipe in reverse.</t>
        <t>A null recipe declares that a modification was made but that the previous state cannot or should not be reconstructed. Null recipes are discussed further in Section 4.5.</t>
        <t>An alternative approach of storing the original message content in the MIME preamble or epilogue area has been discussed in the working group. This approach has two significant limitations identified during discussion: first, a substantial fraction of modern email - particularly bulk and transactional mail - is sent as single-part HTML without MIME boundaries, making preamble and epilogue areas unavailable; second, the use of these areas for structured signed content has not been tested and their behavior across the heterogeneous ecosystem of MTA and filtering software is unknown. The approach requires extensive testing before it could be considered for standardization.</t>
        <t>A third storage option - encoding the recipe as a MIME attachment on the message - has also been considered. This avoids the header-size and MIME-availability constraints of the other two approaches, but makes the recipe visible to the end user: mail clients render attachments in the message view, and an opaque base64-encoded JSON blob attached to ordinary correspondence is both confusing to end users and inconsistent with normal mail presentation. Archiving and mail-storage systems would also retain and index this content as a distinct MIME part, compounding the privacy considerations discussed in Section 4.6.</t>
        <t>Furthermore, proposals to store original message content in the MIME epilogue and reference it via non-monotone copy instructions would require recipe processors to access arbitrary positions in the message rather than reading it sequentially. Working group discussion has confirmed that non-monotone recipes make streaming recipe processing with bounded memory impossible, as the processor must buffer the complete message before applying any recipe step. This eliminates the streaming processing model that DKIM1 and DKIM2-core support natively.</t>
        <t>Body recipe generation requires the signing component to access both the pre-modification and post-modification states of the message, which necessitates complete message buffering at the signing hop. This is distinct from recipe application, which can be performed sequentially for monotone recipes. The streaming constraint identified by the working group as fundamental applies to both signing and verification; body recipe generation violates it at the signing stage.</t>
        <t>The three architectural options for recipe transport each present fundamental limitations that cannot be resolved simultaneously. Storing recipes in message headers is subject to MTA header size limits that make the mechanism unusable for any recipe containing removed content of significant size, as documented in Section 4.3.1. Storing recipes as MIME attachments makes them visible to end users as message attachments, which is operationally unacceptable and raises additional privacy concerns. Storing recipes in the MIME preamble or epilogue requires non-monotone access patterns that make streaming processing impossible. No transport option exists that is simultaneously compatible with production MTA infrastructure, invisible to end users and streamable with bounded memory. Furthermore, any header-based recipe transport implicitly requires coordinated reconfiguration of header size limits across every MTA in the transit path - including nodes that do not implement DKIM2-extended - to prevent silent truncation. This represents a hidden dependency on ecosystem-wide MTA updates that contradicts the incremental deployment model that DKIM2 is intended to support.</t>
      </section>
      <section anchor="computational-and-traffic-overhead">
        <name>Computational and Traffic Overhead</name>
        <t>Operators considering DKIM2-extended deployment should be aware of the following overhead costs. This analysis assumes the header-based Message-Instance mechanism as currently specified in <xref target="I-D.ietf-dkim-dkim2-spec"/> - the only one of the three storage options discussed in Section 4.2 that has been standardized.</t>
        <t>JSON parsing in the delivery critical path - Message-Instance headers contain base64-encoded JSON that must be decoded and parsed at every verifying hop. JSON parsing introduces a dependency on a JSON library in the MTA or milter critical path. While JSON libraries are available in all languages, their presence in the delivery path introduces attack surface that does not exist in DKIM1 or DKIM2-core. Section 4.4 addresses the security implications.</t>
        <t>Traffic overhead - every message that transits DKIM2-extended-aware nodes accumulates Message-Instance headers with base64-encoded JSON recipes, additional DKIM2-Signature headers and potentially substantial body recipe content. These headers travel in the message to all recipients, including those on servers that do not implement DKIM2 at all. The overhead is not optional - it is imposed on the entire ecosystem by nodes that implement DKIM2-extended, regardless of whether downstream infrastructure can use it.</t>
        <t>Stateful milter requirement - unlike DKIM2-core, which is stateless by design, DKIM2-extended requires the signing milter to have access to the message state before and after modifications in order to calculate body recipes. This requires either a stateful milter implementation with persistent shared storage, accessible to both the inbound and outbound milter instances, or MTA core modifications that provide equivalent capability. This is a significant architectural difference from DKIM2-core and from all previous email authentication protocols.</t>
        <section anchor="recipe-size-limits-and-computational-overhead">
          <name>Recipe Size Limits and Computational Overhead</name>
          <t>The JSON recipe format introduces complexity dimensions that must be explicitly bounded to prevent denial of service attacks. Unlike DKIM1 and ARC whose computational cost is bounded and predictable, DKIM2-extended recipe processing has a cost that depends on recipe complexity - a parameter controlled by the sender or any intermediary in the delivery chain. Verification of a complete recipe chain has complexity O(n*m) where n is the number of hops with recipes and m is the maximum size of any version of the message. Both n and m grow with message complexity and delivery path length. DKIM2-core verification is O(1) per hop regardless of chain length or message size.</t>
          <t>The following limits MUST be enforced by all DKIM2-extended implementations:</t>
          <t>Maximum recipe object count</t>
          <t>Implementations MUST enforce a maximum limit on the number of top-level objects in a recipe. During the development of this specification, a limit of 50 top-level objects was proposed as a DoS mitigation measure. This value has not been formally validated and implementations MAY choose a different limit based on their operational experience. The need for any such limit is itself evidence of the attack surface introduced by the recipe mechanism.</t>
          <t>Maximum nesting depth</t>
          <t>The current specification does not define a maximum JSON nesting depth. Implementations MUST enforce a maximum nesting depth of 8 levels. This is sufficient for any legitimate MIME structure - real-world messages rarely exceed 4-5 levels of MIME nesting - while preventing attacks that use artificially deep nesting to exhaust parser stack space or trigger pathological behavior in JSON libraries.</t>
          <t>Maximum recipe size in bytes</t>
          <t>Implementations MUST enforce a maximum size for individual recipes and for the total accumulated Message-Instance header content in a message. Until normative limits are defined in <xref target="I-D.ietf-dkim-dkim2-spec"/>, implementations SHOULD enforce a maximum individual recipe size of 16KB and a maximum total Message-Instance header size of 32KB. These values are conservative estimates consistent with the header size limits enforced by production MTA software on default configurations.</t>
          <t>The recipe format uses copy-range instructions for unmodified content and literal data instructions for content that has been removed or replaced. For the common case of footer addition, copy-range instructions are compact. However, when an intermediary removes content - including attachments stripped by antivirus gateways, cloud security gateways performing DLP inspection or mailing list managers applying size or content-type policies - the removed content must be represented as literal data in the recipe. A removed attachment of n bytes produces a recipe of approximately n bytes, which then travels as a base64-encoded JSON structure in the Message-Instance header to all downstream recipients. This is the inverse of the intended purpose of attachment removal.</t>
          <t>When a removed attachment is represented as literal data in a recipe, the resulting Message-Instance header may reach sizes comparable to the removed content itself.</t>
          <t>Production MTA header size limits</t>
          <t>MTA implementations and milters that enforce header size limits - as most production systems do for operational reasons - may truncate or reject Message-Instance headers that exceed those limits, silently corrupting the recipe chain for all downstream verifiers. Postfix enforces a default header_size_limit of 102400 bytes per individual header; Sendmail enforces a default MaxHeadersLength of 32768 bytes for the total header block. A recipe containing a removed attachment of even modest size may exceed these limits on default-configured systems. The recipe size limits discussed in this section are therefore not merely a denial-of-service mitigation but a practical necessity imposed by the constraints of existing MTA infrastructure. However, any size limit that is low enough to be operationally safe is also low enough to exclude legitimate use cases involving common attachment removals and any limit high enough to accommodate those cases creates unacceptable memory pressure on constrained systems.</t>
          <t>Maximum header line count</t>
          <t>Operators with MTA configurations that enforce limits on header count or total header size MUST be aware that accumulated Message-Instance headers across multiple hops can exceed these limits, causing silent truncation that will break recipe chain verification downstream.</t>
          <t>The one concrete data point currently available is from an implementation demonstrated during the development of this specification: a message of six lines of plain text with a footer added produces a compact recipe. However, messages containing base64-encoded attachments require recipe content that describes base64 line-width re-alignment, which can produce Message-Instance headers substantially larger than the modified content itself. At the time of writing, no quantitative analysis of overhead across representative message types has been produced. Operators should evaluate this overhead against their specific traffic profiles before committing to DKIM2-extended deployment.</t>
          <t>The absence of a viable solution for attachment removal was confirmed during working group discussion at the April 2026 interim meeting <xref target="DKIM-INTERIM-2026-04"/>. The base specification authors proposed per-MIME-part hashing as a potential mechanism to allow cryptographic elision of removed attachments without null recipes. This approach was subsequently described by the lead author of the base specification as "super expensive" and "not worth the candle" - an acknowledgment that the body recipe mechanism as currently defined does not cover a fundamental use case and that the proposed alternative is operationally impractical. At the same meeting, Allen Robinson of Google confirmed that Google Workspace performs attachment removal actively in production - directly contradicting the characterization of this scenario as rare or legacy.</t>
          <t>It is worth noting that all four limits defined above are operationally motivated values derived from implementation experience rather than from principled bounds inherent in the protocol design. DKIM1 and ARC require no equivalent limits because their tag-value structure has bounded complexity by design: a tag-value list of N items has exactly N items, no recursive structures and no parser state beyond the current position in the list. The fact that DKIM2-extended requires explicit limits to prevent denial of service attacks is evidence that the recipe format introduces complexity that cannot be bounded by the protocol design itself. This is a qualitative difference from all previous email authentication protocols and should be evaluated as such by operators and implementers.</t>
          <t>Beyond CPU cycles, the requirement to reassemble Base64-encoded JSON buffers fragmented across folded header lines - <xref target="RFC5322"/> folding splits a single logical header value into multiple physical lines joined by CRLF plus whitespace - forces MTAs to move from a zero-copy or stream-oriented header processing model to a buffered model, significantly increasing the per-connection memory footprint and the pressure on memory allocation subsystems at scale. DKIM1, ARC and DKIM2-core tag-value headers can be processed in a streaming fashion with constant memory per header - each tag is read, processed and discarded. DKIM2-extended recipe processing requires accumulating the complete recipe content before any verification can begin.</t>
          <t>At tens of thousands of transactions per second, even a modest increase in per-message processing time - one millisecond of additional JSON parsing - translates to hundreds of core-seconds per second of additional load. On a server processing 50,000 messages per second, one additional millisecond per message requires 50 additional CPU cores dedicated exclusively to recipe processing.</t>
          <t>Containerized architectures support horizontal scaling to absorb this load, but scaling has latency. An attacker who sends a burst of messages with complex recipes can saturate the processing pool before the autoscaler responds. Operators running on-premise infrastructure without horizontal scaling - including universities, regional ISPs and small businesses, precisely the operators for whom milter-based deployment is most important - have no autoscaling fallback.</t>
          <t>The fundamental issue is that DKIM2-extended introduces a protocol component whose computational cost is controlled by potentially adversarial input - the recipe content - rather than being bounded by the protocol design itself. DKIM1 and ARC do not have this property.</t>
        </section>
        <section anchor="base64-re-encoding-and-recipe-complexity">
          <name>Base64 Re-encoding and Recipe Complexity</name>
          <t>Working group discussion has identified the need for additional recipe types beyond the initial design, including base64-decode-and-copy operations to handle transfer encoding changes. Each additional recipe type increases parser complexity and attack surface. This pattern of complexity growth under contact with real-world deployment scenarios is consistent with the general concern raised in this section about unbounded complexity.</t>
          <t>Base64 re-encoding with different line widths changes the body hash under both simple and relaxed canonicalization equally. Relaxed canonicalization per <xref target="RFC6376"/> Section 3.4.2 addresses trailing whitespace and internal whitespace compression but does not affect the CRLF line separators that determine base64 line boundaries. Re-wrapping base64 content at a different line width inserts CRLF sequences at different positions, producing a different hash regardless of canonicalization algorithm.</t>
          <t>The complexity of base64 re-wrapping in recipe generation has been acknowledged by the authors of the base specification. Maintaining synchronization between original and modified base64 line boundaries requires tracking both representations simultaneously and fails when the original line boundary information is unavailable due to prior intermediary processing. In practice, such cases are expected to produce null recipes.</t>
        </section>
      </section>
      <section anchor="security-considerations-for-body-recipes">
        <name>Security Considerations for Body Recipes</name>
        <t>The body recipe mechanism introduces security considerations beyond those of DKIM2-core. Three categories of concern are relevant to deployment decisions:</t>
        <t>JSON parsing attack surface - recipe processing introduces a JSON parser in the delivery critical path that processes untrusted external input. This creates attack surface that does not exist in DKIM2-core or DKIM1. The need for explicit resource limits, discussed in Section 4.3.1, is evidence that this attack surface is real.</t>
        <t>Recipe chain integrity - a malicious intermediary can construct a recipe that presents a clean original message to verifiers while delivering modified content to recipients. This attack is feasible for any compromised node in the chain.</t>
        <t>Recipe stripping - operators may strip recipe content for operational or compliance reasons, removing information that downstream verifiers depend on.</t>
        <t>These concerns are addressed in detail with normative requirements in Section 8.3.</t>
      </section>
      <section anchor="the-null-recipe-and-its-implications">
        <name>The Null Recipe and Its Implications</name>
        <t>A null recipe declares that a modification was made to the message body but that the previous state cannot be reconstructed. Null recipes are the correct response for several categories of intermediary that are common in real-world deployment:</t>
        <ul spacing="normal">
          <li>
            <t>Security gateways that rewrite URLs - the original URLs may be sensitive and should not be reconstructed</t>
          </li>
          <li>
            <t>Antivirus gateways that remove malicious attachments - the removed content should not be preserved or transmitted</t>
          </li>
          <li>
            <t>DLP systems that redact sensitive content - reconstruction would defeat the purpose of the redaction</t>
          </li>
          <li>
            <t>Legacy MTAs that perform 7bit/8bit conversion - the conversion may not be perfectly reversible</t>
          </li>
          <li>
            <t>Mailing list managers that strip attachments or filter content - Mailman supports configurable MIME type removal natively via its filter_content and filter_mime_types parameters, accessible to any list administrator without server-level configuration. Sympa supports attachment removal through custom delivery scenarios. Both represent active deployment options, not legacy configurations. A common operational variant replaces removed attachments with a URL pointing to a shared repository, preserving message flow while eliminating large or problematic content. The suggestion that lists simply reject messages containing attachments rather than stripping them does not reflect common operational practice - rejection is one option among several and stripping is frequently preferred to preserve the communication value of the message body. This is a currently deployed scenario, not a legacy or transitional case.</t>
          </li>
          <li>
            <t>Any intermediary that makes modifications it cannot or should not describe in a recipe</t>
          </li>
        </ul>
        <t>These categories collectively represent a substantial fraction of real-world email infrastructure. When any of these nodes is present in the delivery chain, the result is a null recipe at that hop - which provides no additional body accountability beyond the bh= change already available in DKIM2-core. If null recipes are acceptable at the nodes most likely to make substantial body modifications, the incremental benefit of DKIM2-extended over DKIM2-core for body accountability is limited to the cases where all intermediaries cooperate fully - which is the minority of real-world delivery paths.</t>
        <t>This is the deployment wall for DKIM2-extended: the obstacle is not only at the MTA level but throughout the entire content filtering pipeline. MIMEDefang - a widely deployed Perl-based milter framework for Sendmail used to strip viruses, remove HTML parts, redact content and replace attachments with URLs - exemplifies this class. Under DKIM2-extended, every MIMEDefang filter function that modifies message content would be required to generate a body recipe JSON structure declaring what it changed. A framework designed to make content filtering accessible to mail administrators would need to produce cryptographic diff structures for every modification. The same applies to Amavis, ClamAV integrations and Rspamd content rewriting rules. None of these tools know what a body recipe is, and none of them can produce one for the modifications that are their primary function. An entire class of legitimate and widely deployed intermediaries - antivirus engines, DLP systems, encryption gateways, content filters - exists precisely to apply irreversible modifications: remove the malware, redact the sensitive data, encrypt the content. Asking them for a reconstructive recipe is asking them to negate their own function. For antivirus and DLP systems the null recipe is at least technically available, even if it provides no accountability beyond what DKIM2-core already offers via the changed bh= value attributed to the modifying hop. For encryption gateways the incompatibility is structural: a content-bearing recipe would expose the pre-encryption plaintext, defeating the purpose of the gateway, while a null recipe leaves DKIM2-extended with no reconstruction to offer at all. The reconstruction model has nothing to attribute the message to beyond the fact that some transformation occurred. Working group discussion of this scenario surfaced no path that preserves the reconstruction model: the only arrangement compatible with the recipe mechanism specified in <xref target="I-D.ietf-dkim-dkim2-spec"/> is to tunnel the entire DKIM2-signed message as an encrypted MIME container, with the recipient unwrapping and verifying the inner chain after decryption - an approach that requires active support on the recipient side, moves verification from the server to the client and cannot be deployed unilaterally by the gateway.</t>
        <t>Under DKIM2-core the same gateway raises no special case. It is a Reviser like any other: it declares its modification via DKIM2-Mod, signs, and presents a changed bh= under a certain signing-domain identity. The recipient learns which domain encrypted the message and that it did so - which is what routing accountability requires - without any dependency on reconstructing the pre-encryption body. The recipient's ability to authenticate the original sender is not carried by a recipe in either model; it is carried by the surviving signed attribution in the chain. The alternative - null recipes at every hop - concedes the accountability property that DKIM2-extended exists to provide. DKIM2-core requires none of these tools to change: the signer milter downstream of the entire filter pipeline signs whatever emerges from it.</t>
        <t>The complexity of the body recipe mechanism produces normative ambiguity that translates directly into interoperability failures. Testing across four independent implementations of the DKIM2 specification in July 2026 revealed 14 failures on multi-hop chains in which intermediate hops made no modifications to the message - the simplest possible case. The failures arose from a normative conflict present in draft-ietf-dkim-dkim2-spec-04 (published 2026-07-05): one section stated a MUST requirement for recipe presence on non-originating Message-Instance headers, a second stated SHOULD for the same scenario, and a third permitted omitting the header entirely on unmodified hops. Three of the four implementations chose three mutually incompatible but each textually defensible readings. The conflict was acknowledged by the specification authors after testing and identified as requiring revision - but not before the working group chair noted that the keyword used did not satisfy the RFC 2119 criterion for its applicability to the case in question. A transparent hop relaying a message unchanged is not an edge case: it is one of the most common scenarios in real mail delivery paths.</t>
        <t>The readability and interpretability of the DKIM2 specification has been tested empirically. Three independent implementers working on distinct codebases within a three-week window each reported difficulty with the same areas of the base specification. The first is the normative conflict described above, encountered by an implementer of a C milter library. The second was found by an implementer of a Rust mail server: folding whitespace inside base64-encoded header fields, explicitly permitted by the specification, caused parsing failures in two of three reference implementations tested. The third was reported by an implementer working on an encryption gateway, who cited the null recipe and DSN reconstruction text verbatim, stated that it was difficult to follow, and requested worked examples. Three codebases, three weeks, three distinct failure modes in the same region of the specification - not an isolated difficulty but a pattern of implementation complexity that the DKIM2-core approach avoids by design.</t>
        <t>This is not a criticism of the body recipe mechanism. It is an accurate characterization of the deployment landscape that operators need to understand before committing to DKIM2-extended infrastructure.</t>
        <t><xref target="RFC6376"/> Appendix B already addressed the fragility of body signatures in DKIM1 through a pragmatic approach: relaxed canonicalization tolerates common benign transformations - whitespace normalization, line ending differences, quoted-printable to 8bit conversion - without requiring intermediaries to declare or reconstruct those changes. The recipe mechanism specified in <xref target="I-D.ietf-dkim-dkim2-spec"/> uses a fixed, always-simple body canonicalization with no relaxed alternative, representing a deliberate departure from this pragmatism in favor of a deterministic reconstruction model. The null recipe outcome is the price of that departure: cases that relaxed canonicalization would have handled silently become explicit failures under that mechanism. Operators should evaluate whether the forensic value of body reconstruction justifies this tradeoff for their specific deployment scenario.</t>
        <t>The systematic use of null recipes by security gateways is not a theoretical concern - it has been confirmed empirically by a major gateway vendor participating in this working group. Philip Guenther of Proofpoint, whose products perform substantial alteration of message headers and bodies under customer security policies, has stated explicitly on the working group list that reversibility of those changes is "the opposite of a goal" for their customers and that their products will use the null recipe mechanism "when necessary" - and will not follow the specification at all if null recipes are not available as an option.</t>
        <t>This confirmation from a major in-path gateway vendor illustrates the structural limitation of the body recipe mechanism: the nodes most likely to make substantial body modifications - security gateways, DLP systems, antivirus engines - are by design and by customer requirement the nodes that will systematically produce null recipes. The forensic value of body reconstruction is therefore unavailable precisely at the hops where attribution would matter most.</t>
        <t>A separate limitation applies even when reconstruction is technically available. Body recipes, as specified in <xref target="I-D.ietf-dkim-dkim2-spec"/>, reconstruct canonical content, not byte-exact content: reconstruction can differ from the original in the number of trailing empty lines and in the presence or absence of a final CRLF, a difference that is invisible to DKIM2 verification but material to other signature schemes. Re-verifying an end-to-end signature such as S/MIME or PGP against reconstructed content would require the external scheme to use a canonicalization that tolerates exactly this difference - a condition that does not hold for all deployed implementations of those schemes. Beyond this technical constraint lies a practical one: an intermediary that breaks an end-to-end signature is one that modifies the body without regard for it. Producing a recipe that enables reliable reconstruction requires the exact opposite disposition - rigorous tracking of MIME boundaries, transfer-encoding and line-width handling. These two behaviors rarely coexist in the same node. The intermediaries careful enough to produce reversible recipes are largely those that would not have broken the external signature in the first place. The forensic use case attributed to body recipes therefore cannot be relied upon for the re-verification of end-to-end signatures, even in the subset of deployments where null recipes are not used.</t>
        <t>This is not merely a question of adoption incentives. Allen Robinson of Google, addressing the security properties of body recipes on the working group list, noted that body hash verification is designed to require no trust in intermediaries, since each signature can be checked by reversing all later recipes back to the original content. He stated explicitly that null recipes break this property and "reintroduce the concept of trust to DKIM2," citing this as a reason not to support them. The mechanism therefore admits no resolution: disallowing null recipes is inconsistent with the operational requirements of major security gateway vendors, while allowing them concedes the trust-minimization property that is the stated rationale for body recipes in the first place.</t>
        <t>The positions documented in this section define a logical closure. Null recipes are necessary in practice: a major security-gateway operator has stated that reversibility is the opposite of a design goal and that its implementation will either use null recipes or not implement the reconstruction mechanism at all. Yet null recipes reintroduce trust: as recorded above, a major mailbox provider has objected on precisely this ground, holding that null recipes reintroduce the concept of trust that DKIM2 was intended to remove. Null recipes do not suffice for privacy-preserving intermediaries, whose service requires re-origination of the chain regardless of recipe setting. Null recipes do not suffice for encryption gateways: working group discussion acknowledged that the reconstruction model's central promise - the ability to look back through every modification - cannot hold for in-line encryption.</t>
        <t>The mechanism therefore functions cleanly only for modifications whose reversal carries little forensic value - subject tagging, footer appending - while for the transformations most relevant to security and privacy it either cannot be applied, produces null output or requires re-origination that leaves the model entirely. DKIM2-core documents this boundary as a design choice rather than a deficiency. It provides what the reconstruction model cannot provide uniformly: cryptographic attribution of every body-affecting hop through the changed bh= value under a signed domain identity, applied without exception to every intermediary, including those whose modifications are irreversible by construction.</t>
      </section>
      <section anchor="privacy-considerations-for-body-recipes">
        <name>Privacy Considerations for Body Recipes</name>
        <t>Body recipes raise data protection concerns that operators in GDPR and equivalent jurisdictions must evaluate before deployment. These concerns are addressed in detail in Section 6. A summary relevant to the deployment decision is provided here.</t>
        <t>Body recipes create structured, recoverable representations of previous message content that travel in the message to all downstream recipients and archiving systems. For most recipe types - range references, line counts - the privacy implications are limited. However for recipes that contain literal text from the original message or for the specific cases of DLP redaction and URL rewriting, the recipe mechanism may cause personal data or sensitive content to circulate in a form that was not intended by the operator that originally processed it.</t>
        <t>Operators subject to GDPR should evaluate whether body recipe generation and transmission is consistent with their data minimization obligations under Article 5 and whether their use of null recipes for sensitive content modifications is sufficient to meet their compliance requirements.</t>
      </section>
    </section>
    <section anchor="transition-and-interoperability">
      <name>Transition and Interoperability</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>The deployment of DKIM2 will occur incrementally across a heterogeneous ecosystem that includes DKIM2-core nodes, DKIM2-extended nodes, DKIM1-only nodes and legacy nodes that implement no cryptographic authentication. This section describes the expected behavior of each node type in the presence of the others and identifies the properties that are and are not achievable during the transition period.</t>
      </section>
      <section anchor="node-types-and-behaviors">
        <name>Node Types and Behaviors</name>
        <t>DKIM2-core node - implements envelope binding, chain of custody, header accountability, replay prevention and DSN authentication as defined in Section 3. Adds DKIM2-Sig-mf, DKIM2-Sig-rt, DKIM2-Mod, DKIM2-Signature and DKIM2-Authentication-Results headers - verifies incoming DKIM2 signatures. Passes DKIM2-extended headers through without interpreting them.</t>
        <t>DKIM2-extended node - implements all of DKIM2-core plus body recipe generation and verification as defined in Section 4. Adds Message-Instance headers with JSON-encoded recipes in addition to all DKIM2-core headers.</t>
        <t>DKIM1-only node - implements DKIM1 <xref target="RFC6376"/> but not DKIM2. Passes DKIM2 headers through as unrecognized header fields. Does not add DKIM2 signatures. Does not break DKIM2 chains - it simply does not extend them.</t>
        <t>ARC node - implements ARC <xref target="RFC8617"/>. ARC and DKIM2-core address overlapping problems with different mechanisms. The relationship between ARC and DKIM2-core is described in Section 5.5.</t>
        <t>Legacy node - implements no cryptographic authentication. Passes all authentication headers through without interpreting them. Does not add signatures. Does not break chains but does not extend them.</t>
      </section>
      <section anchor="chain-continuity-and-legacy-nodes">
        <name>Chain Continuity and Legacy Nodes</name>
        <t>The following considerations apply exclusively to non-DKIM2-participating legacy nodes - MTAs that are unaware of the protocol and cannot declare their modifications. A DKIM2-aware intermediary that modifies a message is never a legacy node in this sense; it MUST either declare all modifications via DKIM2-Mod or re-originate the message as described in Section 6.1.1.</t>
        <t>A legacy node in the delivery chain does not break the DKIM2 signature chain, it simply passes existing signatures through without adding new ones. A downstream receiver that encounters a message with a valid DKIM2 chain ending at a hop before the legacy node can verify the chain up to that point and apply local policy for the unsigned segment.</t>
        <t>A legacy node that makes modifications to the message - adding or changing headers, modifying the body, rewriting URLs - represents a more significant gap in the chain of custody than a transparent relay. Such modifications are not declared via DKIM2-Mod headers and cannot be attributed to any signing domain. A downstream receiver that encounters a changed bh= value or unexpected header differences between two consecutive DKIM2 signatures can identify that a modification occurred in the gap but cannot determine what was changed or by whom. Receivers that apply strict chain of custody policies SHOULD treat gaps containing undeclared modifications with additional suspicion, even if the signatures on either side of the gap are individually valid.</t>
        <t>This is a fundamental constraint of any deployment in which DKIM2-participating and non-participating nodes coexist. Operational experience with analogous mechanisms suggests that complete ecosystem participation is never fully achieved - some legacy infrastructure persists indefinitely. The properties achievable end-to-end therefore depend on the composition of each specific delivery path:</t>
        <t>Replay prevention - fully effective only when every hop adds a DKIM2 signature with envelope binding. A legacy node between the originator and the final recipient means that the rt= value at the last signed hop does not necessarily reflect the actual final recipient.</t>
        <t>Backscatter prevention - during the transition period, DSN and backscatter handling follow the graduated enforcement model of Section 3.5.2: a chain broken by a non-participating node yields an undetermined-cause result and MUST NOT trigger rejection on that basis alone.</t>
        <t>Chain of custody - provides attribution for all hops that participate in DKIM2. Legacy hops are visible as gaps in the i= sequence. A gap in the sequence does not invalidate the chain - it identifies the segment where accountability is absent.</t>
        <t>Header accountability - fully effective for all hops that implement DKIM2-core. Modifications made by legacy nodes are not declared but are detectable as changes in the signed header set between consecutive DKIM2 signatures.</t>
        <t>The accountability model described above does not depend on establishing whether the i=1 signer is the message's originator in the RFC5598 sense. It depends only on the signing domain at i=1 accepting responsibility for the message state it presents, regardless of whether that domain composed the message, generated it automatically, or admitted it into the DKIM2 ecosystem from a DKIM1-only or unsigned source. This is the same property described for re-origination in Section 6.1.1: a receiver has no signal to distinguish these cases and does not need one, because responsibility attaches to the act of signing at i=1, not to a reconstructed notion of authorship. A forwarder that introduces a previously DKIM1-only message into a DKIM2 chain is, for accountability purposes, indistinguishable from any other i=1 signer - and is equally responsible for replay prevention on the segment it introduces.</t>
      </section>
      <section anchor="coexistence-with-dkim1">
        <name>Coexistence with DKIM1</name>
        <t>DKIM2 reuses DKIM1 DNS key infrastructure. A domain that has DKIM1 keys deployed does not need to make DNS changes to support DKIM2 signing by an ESP or MTA acting on its behalf. This is a deliberate design decision in <xref target="I-D.ietf-dkim-dkim2-spec"/> that significantly reduces the barrier to adoption for domain owners.</t>
        <t>During the transition period, messages MAY carry both DKIM1 and DKIM2 signatures. Receivers that implement only DKIM1 will verify the DKIM1 signature and ignore the DKIM2 headers. Receivers that implement DKIM2 will verify the DKIM2 chain and MAY also verify the DKIM1 signature for compatibility with existing policy frameworks such as DMARC.</t>
      </section>
      <section anchor="coexistence-with-arc">
        <name>Coexistence with ARC</name>
        <t>ARC <xref target="RFC8617"/> and DKIM2-core address overlapping problems with different mechanisms. ARC provides a trust chain for mailing list redistribution by recording the authentication state of a message as it passes through intermediaries. DKIM2-core is a functional superset of ARC - it provides the same modification attribution and trust chain capabilities plus cryptographic envelope binding that ARC lacks.</t>
        <t>During the transition period, nodes that implement ARC but not DKIM2-core continue to provide ARC chains independently of the DKIM2 chain. The two chains coexist without conflict but do not bridge each other - a gap in the DKIM2 chain caused by a non-participating node remains a gap regardless of whether that node implements ARC. ARC does not compensate for the absence of DKIM2 participation.</t>
        <t>Operators that have deployed ARC should not remove it during the DKIM2 transition period. ARC continues to provide value for receivers that evaluate ARC chains as part of their local policy, independently of DKIM2 adoption status.</t>
        <t>The limited adoption of ARC after six years of availability - approximately 10,000 signing domains compared to 9.5 million DKIM1 records as reported in <xref target="I-D.adams-arc-experiment-conclusion"/> - is informative for DKIM2 deployment expectations. ARC is milter-deployable and architecturally simpler than the body recipe mechanism defined in <xref target="I-D.ietf-dkim-dkim2-spec"/>. Its adoption trajectory suggests that even milter-deployable protocols face significant ecosystem inertia. This reinforces the importance of the DKIM2-core profile: reducing deployment complexity to the minimum necessary to achieve the primary objectives of the protocol maximizes the probability of meaningful adoption.</t>
        <t>DKIM2-core enables a model of trust based on cryptographic chain of custody rather than direct domain alignment - a model that major providers already implement empirically through ARC evaluation. The approach taken in DKIM2-core is consistent with and builds upon experimental work already deployed in production. <xref target="I-D.chuang-replay-resistant-arc"/> proposes extending ARC with explicit envelope binding via dara= and darn= tags in the ARC-Seal, signing SMTP recipients at each hop and declaring the forwarding path. This protocol has been implemented in production by Google on Google Groups infrastructure, as evidenced by headers observed in real message flows. DKIM2-core formalizes and extends this approach with stronger cryptographic binding and a complete chain of custody model.</t>
        <section anchor="arc-header-selection-in-practice-google-and-microsoft">
          <name>ARC Header Selection in Practice: Google and Microsoft</name>
          <t>The following ARC-Message-Signature was captured from a live message relayed by Google's MTA during beta testing of a DKIM2-core milter implementation. It illustrates how production infrastructure interacts with DKIM2-core headers without any modification to Google's software:</t>
          <sourcecode type="example"><![CDATA[
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed;
  d=google.com; s=arc-20240605;
  h=dkim2-sig-rt:dkim2-sig-mf:dkim2-signature
    :dkim2-authentication-results:content-transfer-encoding:message-id
    :mail-reply-to:reply-to:subject:to:from:date:mime-version
    :dkim-signature;
  bh=ZH14BpgDWH4ekZ2qz7x5de78YDPKMtMIePHA1LzPCFw=;
  fh=cFHJjx+I/cl9v81+GadEx4bWcN+lzkRpBVPfbJvMiUQ=;
  b=[...]; dara=google.com
]]></sourcecode>
          <t>Google's ARC implementation includes dkim2-sig-rt, dkim2-sig-mf, dkim2-signature and dkim2-authentication-results in its signed header set without any explicit knowledge of DKIM2. This is the natural consequence of a defensive signing strategy: when an MTA encounters header fields that carry authentication or chain-of-custody semantics, it includes them in its ARC signature to prevent downstream manipulation. The DKIM2-core headers are recognized as structural metadata and protected accordingly.</t>
          <t>The contrast with Microsoft Exchange Online Protection is instructive. Microsoft's ARC implementation includes vendor-specific diagnostic headers in its signed set:</t>
          <sourcecode type="example"><![CDATA[
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed;
  d=microsoft.com; s=arcselector10001;
  h=From:Date:Subject:Message-ID:Content-Type:MIME-Version
    :X-MS-Exchange-AntiSpam-MessageData-ChunkCount
    :X-MS-Exchange-AntiSpam-MessageData-0
    :X-MS-Exchange-AntiSpam-MessageData-1;
  bh=LfoXw5zEEFL0p4CikYely3pA5A1KXLrtYuUMyQ04I/c=;
  b=[...]
]]></sourcecode>
          <t>By signing internal diagnostic headers, Microsoft's ARC seal cryptographically binds downstream MTA infrastructure to Microsoft's internal telemetry format. Any system that strips or modifies these headers - as many security gateways do - will invalidate the Microsoft ARC seal, effectively requiring the entire delivery chain to preserve proprietary diagnostic data. This is architecturally unsound: the chain of custody mechanism is being used to enforce transport of vendor-specific payload rather than to protect message identity.</t>
          <t>The two examples illustrate a principle that applies equally to DKIM2 deployment: a protocol designed around message identity and envelope binding will be adopted and protected by existing infrastructure automatically, because the headers it produces are recognizable as structural metadata. A protocol that embeds implementation-specific complexity in its headers will produce fragile seals that break at the first hop that does not share the same implementation assumptions. This distinction argues for the minimal, identity-focused approach of DKIM2-core over approaches that bind body content or vendor-specific data into the signed set.</t>
        </section>
      </section>
      <section anchor="incremental-deployment-path">
        <name>Incremental Deployment Path</name>
        <t>The recommended incremental deployment path for operators adopting DKIM2-core is:</t>
        <t>Phase 1 - outbound signing and inbound monitoring: deploy the outbound milter to add DKIM2-Sig-mf, DKIM2-Sig-rt and DKIM2-Signature headers to outgoing messages, and deploy the inbound milter to verify incoming DKIM2 signatures and record results in DKIM2-Authentication-Results headers. This phase operates in monitoring-only mode: the verifier MUST NOT reject or delay messages based on any verification result and all outcomes are simply recorded in the DKIM2-Authentication-Results header for downstream policy decisions and local monitoring, with delivery proceeding via SMFIS_CONTINUE regardless of outcome. Establishing outbound signing and inbound monitoring together lets the operator build chain-of-custody records for downstream receivers and assess the impact of verification before any enforcement is applied.</t>
        <t>The verifier MUST add a DKIM2-Authentication-Results header for every message processed, recording the outcome of chain verification per the format defined in Section 3.5.1. One header is produced per verified hop. Example:</t>
        <sourcecode type="example"><![CDATA[
DKIM2-Authentication-Results: i=1; dns.itb.it; dkim2=pass
]]></sourcecode>
        <t>where the i= value identifies the hop and the authserv-id is the verifying MTA FQDN. The full set of result values is defined in Section 3.5.1.</t>
        <ul spacing="normal">
          <li>
            <t>none - no DKIM2-Signature present in the received message</t>
          </li>
          <li>
            <t>temperror - a transient error prevented verification, such as a DNS lookup failure for the signing key; the condition may resolve on retry</t>
          </li>
          <li>
            <t>permerror - a structural error prevented verification, such as a gap in the chain, a missing required signature or a malformed key record</t>
          </li>
        </ul>
        <t>Phase 2 - policy enforcement: begin rejecting messages according to the graduated enforcement model defined in Section 3.5.2. This phase requires confidence that the majority of expected senders have deployed DKIM2 outbound signing. The mapping from verification result to milter action is not a simple one-to-one correspondence between dkim2= result and SMFIS action - it depends on the nature of the failure and whether cryptographic proof of dishonesty by a DKIM2-participating node is present. Consult Section 3.5.2 for the complete decision logic. In all cases where SMFIS_REJECT or SMFIS_TEMPFAIL is returned, no DKIM2-Authentication-Results header is written, as the message does not reach any downstream processor.</t>
        <t>Phase 3 - mailing list and intermediary participation: update mailing list managers and other intermediaries to add DKIM2-Mod headers for their modifications. This phase completes the chain of custody for messages that transit these systems.</t>
        <t>DKIM2-extended MAY be added at any phase by operators who require body accountability, subject to the operational considerations described in Section 4.</t>
      </section>
      <section anchor="the-dmarc-preject-mailing-list-problem">
        <name>The DMARC p=reject Mailing List Problem</name>
        <t>The DMARC p=reject mailing list problem is a known limitation of the current email authentication ecosystem that predates DKIM2. It arises from the interaction between DMARC's domain alignment requirement and the routing changes introduced by mailing list redistribution. The problem has been extensively documented, including in <xref target="I-D.levine-dmarc-listugh"/>, which describes forwarding failures, mailing list failures and various workarounds - none of which provide a satisfactory solution. That document concludes that the workarounds available today all impose unacceptable costs: those that preserve sender identity break DMARC alignment and those that achieve DMARC alignment do so by destroying sender identity or degrading the user experience in ways that make the message unreadable in standard mail clients. DKIM2-core addresses the structural gap that all those workarounds fail to close.</t>
        <t>The mechanism of failure: DMARC requires that at least one of SPF or DKIM provide a pass with domain alignment to the RFC5322 From: header. When a message passes through a mailing list two failure modes are possible depending on how the list handles the From: header.</t>
        <t>Case A - list without From: rewriting</t>
        <t>When a mailing list redistributes a message without modifying the From: header, SPF alignment fails because the mailing list infrastructure is not authorized by the original sender's SPF record. If the list rewrites the envelope-from for bounce handling - as most do - SPF may technically pass for the list's own domain, but that pass is not aligned with the From: domain and DMARC therefore fails. Similarly, DKIM alignment fails because the list's signing domain differs from the From: domain.</t>
        <t>It should be noted that Case A is only trivially resolved if the mailing list makes no modifications whatsoever to the message. In practice, mailing lists invariably add List-* headers (List-Id, List-Unsubscribe, List-Archive), subject tags and footers. These additions invalidate the original DKIM1 signature through header modification alone, regardless of body integrity - adding List-Unsubscribe: to a message whose DKIM1 signature covers that header field is sufficient to break alignment. Major email platforms including Gmail and Microsoft 365 now require List-Unsubscribe headers with one-click unsubscribe support to avoid messages being classified as spam and to protect the sending domain's reputation - making this header addition a de facto mandate for any mailing list that wishes to reach subscribers at these providers without deliverability penalties. The invariant addition of this header means that the "body unchanged, signature preserved" scenario is operationally irrelevant for any compliant mailing list.</t>
        <t>The following Authentication-Results header was observed on a message from itb.it that transited Google Groups and was delivered to a Microsoft Exchange recipient:</t>
        <artwork><![CDATA[
dmarc=fail header.from=itb.it
dkim=pass header.d=googlegroups.com
spf=pass smtp.mailfrom=googlegroups.com
arc=pass
]]></artwork>
        <t>DMARC failed on alignment grounds regardless: even a body-preserving signature from googlegroups.com would still fail alignment against the From: domain itb.it. Microsoft delivered the message via ARC override. Body recipes cannot fix this failure - even with full body reconstruction, the signing domain googlegroups.com is not aligned with the From: domain itb.it.</t>
        <t>Case A also applies to nested mailing lists - a list that redistributes to another list. Each list adds its own List-* headers and subject tags, producing multiple instances of the same header field. This creates the duplicate header problem documented in Section 3.3.6: signing software that relies on physical header position rather than explicit index values will compute different hashes depending on which instance it selects. This has been observed in production: OpenDKIM signing both instances of a duplicate header while Microsoft Exchange selecting only one, producing a hash mismatch and a DKIM verification failure despite the message being legitimate. DKIM2-Mod's explicit i= and seq= indexing eliminates this failure mode entirely.</t>
        <t>Case B - list with From: rewriting</t>
        <t>When a mailing list replaces the From: header with its own domain, DMARC passes because the list's signing domain is now aligned with the new From: domain. The following Authentication-Results header was observed on a message from vittorio.moccia@gmail.com that transited a mailing list on itb.it and was delivered to a Microsoft Exchange recipient:</t>
        <artwork><![CDATA[
dkim=pass header.d=itb.it
dmarc=pass header.from=itb.it
spf=pass smtp.mailfrom=itb.it
arc=pass
]]></artwork>
        <t>DMARC passed completely. But the original sender's identity was destroyed - the recipient sees "Lista Utenti utenti@itb.it" instead of the original author. This is the architectural hack that makes DMARC work today for mailing lists - and it is unsound because it destroys sender identity to achieve alignment, breaking the accountability chain that DKIM2 is designed to establish.</t>
        <t>In Case B, DMARC alignment is achieved at the cost of sender attribution. If the goal of DKIM2 is to enhance authentication, a solution that requires destroying the primary identity marker - the From: header - to function is self-defeating.</t>
        <t>Body recipes do not resolve this problem. DMARC fails due to an alignment failure - the signing domain does not match the From: domain. Body recipes address integrity - whether the body has been modified. These are orthogonal problems. In Case A, DMARC fails on domain alignment - a problem in the header and envelope layer that body reconstruction cannot address. In Case B, DMARC passes only because the From: header was replaced - a header modification that has nothing to do with body integrity. In neither case does body reconstruction affect the DMARC outcome.</t>
        <t>DKIM2-core offers a third path that neither Case A nor Case B provides today. A mailing list implementing DKIM2-core can:</t>
        <ul spacing="normal">
          <li>
            <t>Retain the original From: header - preserving the original sender's identity</t>
          </li>
          <li>
            <t>Declare the addition of List-* headers and any Subject: modifications via DKIM2-Mod headers</t>
          </li>
          <li>
            <t>Sign with its own DKIM2 key, cryptographically binding the envelope and the chain of custody</t>
          </li>
          <li>
            <t>Provide receivers with a verifiable record that the list handled the message and what modifications were made</t>
          </li>
        </ul>
        <t>This allows receivers that evaluate DKIM2 chain of custody - as Microsoft and Google already do empirically today - to make an informed trust decision without requiring From: rewriting or body reconstruction. The trust model is not theoretical - it is already deployed at scale. Critically, it achieves this without requiring new DNS records or SMTP capabilities.</t>
        <t>The concrete mechanism is not an override of DMARC but a transformation of the trust decision from probabilistic to deterministic. Today, receivers that accept mailing list messages despite DMARC failure do so based on reputation heuristics - an implicit judgment that the list infrastructure is trustworthy. This judgment cannot be verified cryptographically. DKIM2-core provides the substrate for a verifiable equivalent: the mailing list signs the message with its own DKIM2 key, binding its identity to the specific SMTP transaction via DKIM2-Sig-mf and DKIM2-Sig-rt and declaring any header modifications via DKIM2-Mod. The body hash bh= at each hop is not an isolated integrity check but a cryptographically attributed statement - any intermediary that modifies the body must sign the new hash with its own domain, making body modification traceable to a specific accountable identity in the chain. The receiver can then verify not just that a trusted party claims to have handled the message, but that a specific identifiable domain handled this specific message to this specific recipient with these specific declared modifications - a chain of custody that is cryptographically verifiable rather than reputationally assumed. If the intermediary is trusted, the chain confirms the message transited through known hands. If the intermediary is not trusted, the chain identifies exactly who touched the message. In both cases the decision is based on cryptographic proof of the transit path, not on body content or reputation alone.</t>
        <t>By utilizing the i= and rt= fields, DKIM2-core establishes a verifiable cryptographic link between the original message and the modified version distributed by the list. Trust is derived from the verifiable path of the message rather than from an obsolete and hidden body state. This approach maintains the "What You See Is What Was Authenticated" principle, which is abandoned by the body reconstruction mechanism.</t>
        <t>DKIM2-core provides the cryptographic substrate necessary for an evolved DMARC policy evaluation that can recognize transitive trust through a verified chain of custody. This allows receivers to distinguish between messages that fail DMARC due to spoofing and those that fail due to legitimate mailing list redistribution where the original sender's authentication chain remains intact - a distinction that current DMARC cannot make. The trust model is not theoretical: major providers already apply equivalent heuristics empirically today when evaluating forwarded mail, accepting messages that fail strict DMARC alignment when the handling chain is verifiable. DKIM2-core formalizes and strengthens this existing practice by adding cryptographic envelope binding that makes the trust decision verifiable through cryptographic proof rather than dependent on external reputation systems or allow lists.</t>
        <t>The ongoing tightening of DMARC enforcement by major providers - including the adoption of strict alignment requirements that mandate exact domain matches rather than subdomain tolerance - makes the mailing list problem more acute over time. Solutions based on From: rewriting become less viable as strict alignment prevents subdomain matches that relaxed alignment would have tolerated. Body reconstruction addresses neither strict nor relaxed alignment failures. DKIM2-core chain of custody provides the only path that preserves original sender identity while remaining compatible with evolving DMARC enforcement requirements.</t>
        <t>Ultimately, DKIM2-core restores DMARC interoperability with mailing lists by authenticating the modification path, whereas DKIM2-extended fails to address the root cause of misalignment while introducing significant privacy and security overhead.</t>
        <t>Working group review of the companion best current practices document (<xref target="I-D.ietf-dkim-dkim2-bcp"/>) identified this gap: the base specification does not define alignment between the From: header and any signing domain in the chain. DKIM2-core's chain of custody model - where each hop's signing domain is bound to the version of the From: header it introduced via DKIM2-Mod - provides the structural basis for such an alignment definition. Formalizing it as a normative rule remains a question for the base specification.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>This section addresses privacy implications of DKIM2-core and DKIM2-extended in accordance with <xref target="RFC6973"/>, which provides guidance on privacy considerations in Internet protocol design.</t>
      <section anchor="dkim2-core-privacy-properties">
        <name>DKIM2-core Privacy Properties</name>
        <t>DKIM2-core adds the following information to messages in transit:</t>
        <t>DKIM2-Sig-mf and DKIM2-Sig-rt headers - these fields carry the SMTP envelope values, which may include email addresses not present in the RFC5322 headers. In the common case of direct delivery, these values are already implicit in the message routing. For mailing list redistribution, the rt= value at each hop reveals the address of the individual subscriber receiving that copy of the message. This is not new information - the SMTP envelope already contains this information - but it is now carried in a signed header field that persists in the message and may be archived by downstream systems.</t>
        <t>DKIM2-Mod headers - these fields carry previous values of modified header fields. For header modifications that involve personal data - for example a From: header that is rewritten by a mailing list - the original value is preserved in a signed header that travels with the message. Operators that modify headers containing personal data should be aware that the original values will be visible to all downstream recipients and archiving systems.</t>
        <t>This pattern is already practiced informally in the ecosystem, as described in Section 3.2.4.</t>
        <t>Authentication-Results headers - these fields record the outcome of DKIM2 verification at each hop. They do not contain message content or personal data beyond what is already present in the message headers.</t>
        <t>The privacy impact of DKIM2-core is limited and proportionate to its functional objectives. The additional data carried in DKIM2-core headers is necessary for the envelope binding and chain of custody mechanisms and does not represent a material increase in the personal data surface of the message beyond what is already present in the SMTP transaction.</t>
        <section anchor="re-origination-by-privacy-preserving-intermediaries">
          <name>Re-origination by Privacy-Preserving Intermediaries</name>
          <t>This profile recognizes intentional re-origination by privacy-preserving intermediaries as a legitimate deployment pattern. Some intermediaries exist specifically to remove identifying information from messages - relay services that strip tracking content and redact sender identity or alias and forwarding services with similar goals. For these intermediaries the chain of custody model described above is structurally unavailable at any recipe setting. A content-bearing recipe would disclose exactly the information the service exists to remove. A null recipe does not avoid this either: as noted above, mf= and rt= persist in signed header fields and may be archived by downstream systems, so retaining prior DKIM2-Signature header fields still exposes the originating envelope addresses and signing domain to every recipient.</t>
          <t>The correct behavior in this case is re-origination: the privacy-preserving intermediary terminates the inbound chain and signs as a new i=1, using its own domain and envelope. This was confirmed in working group discussion of an equivalent case: an intermediary that deliberately does not provide chain of custody through its systems is not extending the original message under DKIM2, but creating a new message from selected content, and is correctly treated as the originator of that new message once it re-enters the network. This is distinct from chain termination to conceal non-compliance with donotmodify, where the original message is forwarded without its provenance rather than replaced by a new message.</t>
          <t>This profile requires the re-originating intermediary to remove all prior DKIM2 header fields - DKIM2-Signature, DKIM2-Sig-mf, DKIM2-Sig-rt, DKIM2-Mod and DKIM2-Authentication-Results - before signing as the new i=1. Retaining any of them would misrepresent a newly originated message as a continuation of the prior chain, defeating the purpose of re-origination.</t>
          <t>A re-originating intermediary signing at i=1 is indistinguishable from any other first-hop originator: the absence of a prior chain is the normal state of any message entering the DKIM2 ecosystem for the first time. This indistinguishability is not a limitation of the model but a correct property of it. A recipient cannot and need not identify whether a given i=1 message was composed by a human user, generated by an automated system or re-originated by a privacy-preserving relay - in all three cases the signing domain takes full accountability for the message it presents. Requests for special receiver treatment of re-originating services - such as a normative preference based on the absence of a prior chain - are therefore not implementable: the receiver has no signal to act on. The absence of a prior chain MUST NOT be treated as a negative indicator in enforcement policy; it is the expected state of any message that legitimately begins its DKIM2 chain at the current hop.</t>
        </section>
      </section>
      <section anchor="dkim2-extended-privacy-considerations">
        <name>DKIM2-extended Privacy Considerations</name>
        <t>DKIM2-extended raises privacy concerns that are qualitatively different from those of standard email processing. Email messages already transit through systems that read, analyze and archive them - existing data protection frameworks address this reality. What DKIM2-extended adds is the systematic creation of structured, cryptographically signed records of previous versions of message content that did not previously exist as discrete data objects. A standard email message represents the current state of a communication. A message with body recipes represents both the current state and a signed history of previous states distributed to every downstream recipient and archiving system in cryptographically immutable form.</t>
        <t>This distinction is relevant to data protection law in the ways described below.</t>
        <section anchor="the-null-recipe-mechanism">
          <name>The Null Recipe Mechanism</name>
          <t>The null recipe is the primary technical instrument available to intermediaries for managing privacy risk in DKIM2-extended deployments. An intermediary that modifies message content may declare null rather than generating a content-bearing recipe, signalling that a modification occurred and who made it without creating any structured record of the previous content.</t>
          <t>The null recipe preserves the core accountability property of DKIM2 - the modification is declared and attributed - while avoiding the creation of personal data records that would otherwise travel with the message to all downstream recipients and archiving systems. It is the correct response in any situation where generating a content-bearing recipe would conflict with data protection obligations or organizational security policy.</t>
          <t>The current specification does not provide normative guidance on when intermediaries are obligated to use null recipes. This document addresses that gap for specific deployment scenarios in the sections that follow.</t>
        </section>
        <section anchor="data-minimization">
          <name>Data Minimization</name>
          <t>GDPR Article 5(1)(c) requires that personal data be adequate, relevant and limited to what is necessary for the purposes for which it is processed. The primary operational objectives of DKIM2 - replay prevention, backscatter mitigation, modification attribution - are achievable without body recipes as argued in Section 4.5. Body recipe data collection may therefore not meet the necessity test under Article 5(1)(c).</t>
          <t>The specific minimization problem of body recipes is not that personal data is processed - it is that body recipes create a new category of structured data that did not previously exist: recoverable representations of previous message content, distributed in signed form to all downstream systems. This is qualitatively different from the processing that occurs in standard email transit and raises minimization questions that do not arise for DKIM2-core.</t>
          <t>This is not a definitive legal assessment. Operators subject to GDPR should seek legal advice on whether their specific use of body recipes is consistent with their data minimization obligations.</t>
        </section>
        <section anchor="data-retention">
          <name>Data Retention</name>
          <t>GDPR Article 5(1)(e) requires that personal data be kept in a form that permits identification of data subjects for no longer than necessary. Body recipes travel in the message and may be archived by any system that receives or intercepts it - including the final recipient's mail store, compliance archiving systems and, in some jurisdictions, systems operated under lawful interception or judicial oversight obligations. Unlike the message body itself, body recipes embedded in signed headers cannot be selectively removed without invalidating the signature chain. This creates a retention problem that has no clean technical resolution: the data persists in signed form in every copy of the message held by any system that archived it, regardless of the originating organization's retention policy.</t>
          <t>Furthermore, intermediaries that implement DKIM2-extended may find that the body recipe itself constitutes an audit trail of modifications - and in many jurisdictions, audit records are subject to mandatory retention obligations that may exceed the retention period applicable to the communication content itself. An intermediary may therefore find itself obligated to retain recipe content as an audit record for extended periods, regardless of its normal data retention policy. This obligation did not exist before DKIM2-extended because no structured modification record was created during transit.</t>
          <t>Operators should evaluate whether their archiving systems can handle recipe content consistently with applicable obligations under <xref target="GDPR"/> Article 5(1)(e) and any sector-specific retention requirements in their jurisdiction.</t>
        </section>
        <section anchor="dlp-systems-and-body-recipes">
          <name>DLP Systems and Body Recipes</name>
          <t>A Data Loss Prevention system that redacts sensitive content does so precisely because that data must not circulate. A body recipe that allows reconstruction of the content before redaction creates a structured record of the very data the DLP system was designed to protect - a structural contradiction between the purpose of the system and what DKIM2-extended asks it to generate.</t>
          <t>Operators deploying DLP systems in conjunction with DKIM2-extended MUST use null recipes as described in Section 6.2.1 for all modifications that involve redaction of sensitive content.</t>
        </section>
        <section anchor="antivirus-gateways-and-body-recipes">
          <name>Antivirus Gateways and Body Recipes</name>
          <t>When an antivirus gateway removes a malicious attachment, the removed content should be eliminated, not preserved. A content-bearing recipe for such a removal creates a structured record of content that should not exist downstream.</t>
          <t>Operators deploying antivirus gateways in conjunction with DKIM2-extended MUST use null recipes as described in Section 6.2.1 for all modifications that involve removal of malicious or suspicious content.</t>
        </section>
        <section anchor="url-rewriting-and-body-recipes">
          <name>URL Rewriting and Body Recipes</name>
          <t>Security gateways that rewrite URLs generate recipes containing the original URLs, which may reveal sensitive communication content or internal infrastructure details not intended for downstream exposure.</t>
          <t>Operators who cannot expose original URLs in recipe content MUST use null recipes as described in Section 6.2.1.</t>
        </section>
        <section anchor="encryption-gateways-and-body-recipes">
          <name>Encryption Gateways and Body Recipes</name>
          <t>Encryption represents the limiting case of the pattern above. Where DLP, antivirus and URL-rewriting systems face a choice between content-bearing and null recipes, an encryption gateway has no meaningful recipe to generate at all: the content it processes is opaque ciphertext, and no reconstruction model - content-bearing or null - can meaningfully describe a transformation the mechanism was never designed to see. Section 4.4 addresses the technical consequences of this gap. From a privacy standpoint the outcome is favorable: because DKIM2-extended cannot represent the encrypted content in the first place, no structured record of plaintext is ever created, regardless of recipe policy.</t>
        </section>
        <section anchor="compliance-with-data-subject-rights">
          <name>Compliance with Data Subject Rights</name>
          <t>GDPR Articles 16 and 17 grant data subjects the right to rectification of inaccurate personal data and the right to erasure. Body recipes create structural conflicts with both rights that manifest differently depending on the stage of the message lifecycle. In addition to GDPR, operators must consider Directive 2002/58/EC (ePrivacy Directive) <xref target="ePrivacy"/>, which mandates the confidentiality of communications. By creating structured, cryptographically signed records of previous body states that are durably embedded in the message itself, DKIM2-extended converts transient communication content into a verifiable content history that travels with the message to every downstream system. This conversion raises questions about the applicability of mere conduit exemptions under Article 12 of the e-Commerce Directive and its successor provisions, which condition that exemption on the intermediary not modifying the information transmitted. Generating a body recipe may be considered a form of content processing that goes beyond mere transport, potentially requiring an explicit legal basis for the creation and retention of such records at intermediate hops.</t>
          <t>The erasure problem - the null recipe described in Section 6.2.1 is a preventive instrument: if applied consistently before personal data enters the recipe, no erasure conflict arises. However it is not a remedial instrument. Once a content-bearing recipe has been generated and distributed, the Right to Erasure under Article 17 GDPR becomes technically unenforceable: the organization that generated the recipe can delete its own copy, but the recipe exists in cryptographically signed form in every downstream copy of the message. GDPR Article 17 imposes an obligation on the controller to erase data - but it provides no mechanism to compel deletion from systems in other administrative domains, other jurisdictions or operated by parties who are not data controllers under the same legal framework.</t>
          <t>Furthermore, an intermediary that generated a recipe may itself face conflicting obligations: the erasure request requires deletion, but audit trail or documentary evidence obligations - contractual, regulatory or legal - may require retention of records of modifications made. These two obligations cannot be simultaneously fulfilled. This conflict is not a gap in the legal framework - it is a structural consequence of DKIM2-extended creating cryptographically immutable records at transit nodes.</t>
          <t>The rectification problem - the rectification conflict is structurally irresolvable and arises specifically when the message is in archival state. During transit the message exists transiently and the problem does not arise. The problem emerges when the message is archived - by any system at any point in the delivery chain - with a recipe containing inaccurate personal data.</t>
          <t>At that point three obligations come into direct conflict. First, GDPR Article 16 requires that the inaccurate personal data be corrected. Second, correcting the value in the recipe invalidates the cryptographic signature of the hop that generated it, which cascades through all subsequent signatures in the chain. Third, if the archive is used as certified documentary evidence - for compliance, audit or legal purposes - its integrity must be preserved. Modifying it to fulfill the rectification request destroys its evidentiary value. Not modifying it violates the data subject's right.</t>
          <t>This three-way conflict between data subject rights, cryptographic integrity and documentary evidence obligations has no technical resolution within the current DKIM2-extended architecture. It does not arise in standard email archiving, where an organization can modify or delete its own archives without affecting cryptographic chains, because standard email archives do not carry immutable signed records of previous content versions.</t>
          <t>Joint controllership - an intermediary that generates body recipes is no longer merely transporting the message - it is creating a new structured record of personal data by determining what previous content to include in the recipe and ensuring its persistence through cryptographic binding. This may constitute joint controllership under GDPR Article 26, with associated obligations including the potential requirement for a Data Protection Impact Assessment under Article 35. Operators should evaluate whether their recipe generation activities trigger these obligations.</t>
        </section>
        <section anchor="privacy-review-recommendation">
          <name>Privacy Review Recommendation</name>
          <t>At the time of writing, <xref target="I-D.ietf-dkim-dkim2-spec"/> does not include a Privacy Considerations section and the Security Considerations section is marked TBA. Subsequent versions may address some of the concerns raised here following discussion on the ietf-dkim mailing list initiated in March 2026.</t>
          <t>For a specification intended to become an IETF Standards Track document, privacy and security considerations are required per <xref target="RFC3552"/> (BCP 72). This document provides suggested privacy considerations text based on <xref target="RFC6973"/> for consideration by the working group as a contribution to the base specification.</t>
          <t>Note on <xref target="RFC6973"/>: this is an IAB document rather than an IETF document. However IAB documents on protocol design are explicitly relevant to IETF Standards Track work - the IAB and IETF coordinate on architectural and privacy matters as part of the overall Internet standards process. The privacy considerations in this document are consistent with both <xref target="RFC6973"/> and the security considerations requirements of <xref target="RFC3552"/>.</t>
        </section>
        <section anchor="architectural-conclusion">
          <name>Architectural Conclusion</name>
          <t>The privacy considerations described in this section lead to a clear architectural conclusion: DKIM2-extended MUST remain optional and loosely coupled to DKIM2-core. This is not merely a deployment preference - it is a requirement derived from data protection principles.</t>
          <t>An operator subject to <xref target="GDPR"/> and <xref target="ePrivacy"/> who activates DKIM2-extended takes on explicit data processing obligations for the personal data contained in body recipes, including obligations that may not arise under standard email processing - among them the creation of audit-trail records at transit nodes, potential joint controllership under GDPR Article 26 and questions about mere conduit exemptions under the e-Commerce Directive. An operator who implements only DKIM2-core has no such obligations beyond those that exist today for standard email processing. The optional nature of DKIM2-extended is therefore not a technical convenience but a legal necessity for a significant portion of the global email infrastructure.</t>
          <t>The interoperability dimension of this concern extends beyond individual operators. The Digital Markets Act (DMA) requires gatekeepers to ensure interoperability with third-party services and prohibits technical measures that create barriers to entry for smaller operators. An email authentication standard that is only practically implementable by large providers with dedicated engineering teams and legal resources to manage GDPR obligations for body recipe processing raises questions about compliance with DMA interoperability requirements. DKIM2-core, by contrast, is implementable by any operator regardless of size and imposes no data processing obligations beyond those that exist today.</t>
          <t>DKIM2-core and DKIM2-extended are designed to coexist cleanly. A DKIM2-core-only node passes Message-Instance headers through as opaque signed content without interpreting them, preserving the integrity of the chain without requiring participation in body recipe processing. A DKIM2-extended node adds full body recipe functionality on top of the core.</t>
          <t>This is a deliberate application of graceful degradation: a core-only deployment does not break DKIM2-extended deployments - it simply does not extend them. The chain of custody remains intact, the envelope binding remains verifiable and the signed header accountability remains functional. Operators who cannot or choose not to implement body recipe processing - whether for technical, operational or legal reasons - remain full participants in the DKIM2 ecosystem. Activating DKIM2-extended adds capabilities; not activating it does not degrade the core functionality in any way.</t>
          <t>This clean separation is the architectural property that makes DKIM2 deployable across the heterogeneous ecosystem and across jurisdictions with different data protection requirements.</t>
        </section>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>Note to RFC Editor: please remove this section, and the reference to <xref target="RFC7942"/>, before publication.</t>
      <t>This section records the status of known implementations of the profile described in this document, per <xref target="RFC7942"/>. Please note that the listing of any individual implementation here does not imply endorsement by the IETF. Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features. Readers are advised to note that other implementations may exist. This section covers implementations of the specific deployment profile described in this document; implementations of other aspects of the DKIM2 ecosystem, such as body recipe tooling, are out of scope here and are not surveyed.</t>
      <section anchor="darkchain-darkchains">
        <name>DarkChain / DarkChains</name>
        <t>Organization: Independent</t>
        <t>Implementation: https://github.com/darkglobe-project/darkglobe-suite</t>
        <t>Description: DarkChain (verifier) and DarkChains (signer) implement the DKIM2-core profile described in this document as two independent milter processes. Written in C against libmilter, deployed on live mail infrastructure with Sendmail. No MTA core modifications required.</t>
        <t>Coverage: Envelope binding via DKIM2-Sig-mf and DKIM2-Sig-rt with per-recipient granularity. Chain of custody verification hop-by-hop. Header modification tracking via DKIM2-Mod (signing and verification of declarations produced by modifying components). Header integrity hash (hh=). SRS envelope rewriting for forwarding via smfi_chgfrom(). Full optional attestation mode (pre/post mailing list signing). Configurable X-* prefix exclusion.</t>
        <t>Level of maturity: Beta, deployed on live mail infrastructure processing traffic from Microsoft Exchange Online and Google MTA infrastructure.</t>
        <t>Licensing: Apache 2.0</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="security-properties-of-dkim2-core">
        <name>Security Properties of DKIM2-core</name>
        <t>Replay prevention - a valid DKIM2 signature cannot be reused for a different recipient without breaking the chain. The cryptographic binding of RCPT TO values in DKIM2-Sig-rt to the signature at every hop makes replay attacks detectable by any conformant verifier.</t>
        <t>DKIM2-core envelope binding uses one DKIM2-Sig-rt header per recipient address. A verifier checks that the RCPT TO of the current SMTP session matches exactly the addr= value of the corresponding DKIM2-Sig-rt header. This provides complete replay prevention - a message signed for recipients A, B and C cannot be replayed to only recipient A because the DKIM2-Sig-rt header carrying addr=A was signed as part of a chain that also includes headers for B and C. This is a structural improvement over designs that aggregate all recipients in a single signed blob, where a subset of recipients could be used without breaking the signature.</t>
        <t>The base specification <xref target="I-D.ietf-dkim-dkim2-spec"/> addresses this risk through an optional "exploded" flag (Section 8.10) that signals a message was sent to multiple recipients. However this mitigation has structural weaknesses: the flag is optional and depends on the signer including it and if the signer omits it or an attacker removes it, the protection fails. The flag also does not prevent replay to a subset of the original recipients - it only signals that multiple recipients existed. DKIM2-core's one-header-per-address design eliminates this category of attack without requiring any optional flag: the signed set of DKIM2-Sig-rt headers is cryptographically bound to the chain and any attempt to replay the message to a recipient subset or a different recipient produces a verifiable mismatch.</t>
        <t>Sender accountability - the signing domain at each hop is cryptographically bound to the message and the envelope. A receiver can establish a verifiable chain of custody from originator to final recipient, identifying every entity that handled the message and declared its modifications.</t>
        <t>Backscatter prevention - DSN generation is authenticated through the chain of custody. A receiver that rejects a message during the SMTP session directs the rejection to the connected peer, never to the envelope sender. This prevents backscatter to innocent sender domains.</t>
        <t>Header integrity - modifications to header fields are declared via DKIM2-Mod headers and are covered by the signature of the modifying hop. Undeclared header modifications are detectable as inconsistencies between the signed header set and the declared modifications.</t>
        <t>Body integrity - the bh= value at each hop provides a hash of the current message body. Changes in bh= between consecutive signatures identify hops where body modifications occurred and attribute them to the signing domain. Full body reconstruction is not provided in DKIM2-core and is not required for the primary security objectives.</t>
        <section anchor="the-binary-trust-model">
          <name>The Binary Trust Model</name>
          <t>The three-outcome model described in this section applies to messages that have transited an entirely DKIM2-participating chain. When a non-participating legacy node is present in the delivery path and has modified the message, the resulting verification failure does not fall into any of these three categories: the verifier cannot attribute the modification to any signing domain, and the graduated enforcement model defined in Section 3.5.2 applies instead. The binary trust model described here is therefore a property of mature deployment environments, not of the transition period.</t>
          <t>The security model of DKIM2 relies on the chain of custody established by envelope binding. In operational environments, trust in an intermediary is a binary decision based on reputation and verifiable identity - there is no partial trust in email authentication. This has a direct consequence for the role of body recipes in security decisions.</t>
          <t>If a receiver does not trust intermediary B, body recipes provide no additional assurance. B could have inserted malicious content, removed a legal disclaimer or rewritten URLs to phishing sites - a JSON recipe documenting those changes does not make them safe. As the authors of the base specification have acknowledged, recipes "don't stop B from adding bad things."</t>
          <t>If a receiver does trust intermediary B, the chain of custody established by DKIM2-core is sufficient. The cryptographic binding of MAIL FROM and RCPT TO at every hop, combined with DKIM2-Mod declarations for header modifications, provides the verifiable path that enables the trust decision. This is precisely the model that Microsoft and Google already apply empirically today when evaluating forwarded mail.</t>
          <t>Body recipes are a descriptive capability for forensic and archival purposes. Envelope binding is the mandatory security foundation. Furthermore, body recipes provide zero protection against replay attacks where the content remains identical - only the envelope binding of DKIM2-core addresses this fundamental vulnerability. In summary: if trust is binary, recipes are a descriptive luxury, not a security necessity. The separation between DKIM2-core and DKIM2-extended reflects this distinction: core provides the security properties that matter for delivery decisions, extended provides additional accountability for operators who need it and can afford the operational cost.</t>
          <t>DKIM2 verification produces three qualitatively different outcomes that operators must distinguish in their delivery policy. A message that transits the chain without body modifications and with a complete chain of valid signatures provides the strongest assurance - full cryptographic accountability from originator to recipient. A message with body modifications declared via recipes provides weaker assurance - the modifications are attributed and reversible, but the displayed content differs from what was originally signed. A message with null recipes at one or more hops provides assurance equivalent to DKIM2-core: the chain of custody and envelope binding are intact, but no body reconstruction is possible for those hops. These three outcomes have different risk profiles and MUST NOT be treated equivalently in delivery policy. In particular, the second and third outcomes do not provide the same level of assurance as the first for purposes of domain reputation, BIMI display or any policy that depends on content integrity rather than transit accountability. DKIM2-core provides the properties common to all three outcomes - envelope binding, chain of custody, header accountability - without requiring operators to distinguish between them or to deploy the additional infrastructure that the second outcome requires. DKIM2-extended adds the distinction between the second and third outcomes at the deployment cost documented in Section 4 - a cost that is only justified for operators with the infrastructure to benefit from body reconstruction data.</t>
        </section>
        <section anchor="implementation-robustness-and-reduced-attack-surface">
          <name>Implementation Robustness and Reduced Attack Surface</name>
          <t>DKIM2-core uses the tag-value syntax of DKIM1 <xref target="RFC6376"/> throughout, without nested or opaque data structures such as JSON-encoded values within header fields. This design choice has direct security implications.</t>
          <t>The elimination of multi-layered parsing - JSON-in-base64 embedded in header fields - removes a category of attack surface that does not exist in DKIM1 or ARC. Parser vulnerabilities in JSON libraries, including memory exhaustion and type confusion attacks, cannot be triggered by DKIM2-core header processing. This is consistent with the attack surface analysis in Section 8.3.1.</t>
          <t>All DKIM2-core declarations - envelope binding, modification attribution, chain of custody - are in cleartext tag-value format, directly inspectable in mail logs without specialized tooling. This transparency supports real-time threat detection and incident response in ways that base64-encoded opaque blobs do not. The need for dedicated tooling to render DKIM2 header fields in human-readable form confirms that the current encoding is not suitable for operational diagnostics without specialised software, a property that tag-value encoding does not share.</t>
          <t>The interoperability failures documented above - tag ordering within DKIM2-Signature fields (Section 3.3.6) and JSON key case sensitivity in header recipes (Section 10.2) - share a common cause: multi-layered, order-sensitive or case-sensitive encoding creates ambiguity that independent implementations resolve differently even when each is acting in good faith. DKIM2-core's use of explicit i= and seq= index values in cleartext tag-value format eliminates this category of implementation ambiguity entirely.</t>
          <t>The practical consequence of these design choices is immediate implementability. DKIM2-core header processing requires only the tag-value parser already present in every DKIM1 and ARC implementation - no new libraries, no new data structures, no new parsing infrastructure. A conformant DKIM2-core milter can be built by extending an existing ARC milter with envelope binding and modification declaration. The incremental implementation cost above a working ARC milter is measured in a few weeks, not months. This stands in contrast to DKIM2-extended, which requires JSON parsing infrastructure, stateful message buffering and persistent shared storage, none of which are present in existing DKIM1 or ARC implementations.</t>
        </section>
      </section>
      <section anchor="security-limitations-of-dkim2-core">
        <name>Security Limitations of DKIM2-core</name>
        <t>Legacy node gap - a legacy node in the delivery chain does not extend the DKIM2 chain. Modifications made by legacy nodes are not declared and cannot be attributed to any signing domain. The gap is not visible as a sequence discontinuity - legacy nodes do not add DKIM2-Signature headers and do not increment i=. The gap manifests instead as a mismatch between the current message state and the last DKIM2 signature: a changed bh= value, an hh= mismatch, or a rollback failure at the final signed hop. The verifier knows that something changed after the last DKIM2-participating node but cannot determine what was changed or by whom. The graduated enforcement model defined in Section 3.5.2 governs how receivers handle this case.</t>
        <t>Key compromise - compromise of a signing key allows an attacker to generate valid signatures for that domain. Key rotation procedures as defined in <xref target="RFC6376"/> apply to DKIM2 keys. The i= sequence provides some mitigation - an attacker who generates a forged signature must insert it into a plausible position in the chain.</t>
        <t>DNS security - DKIM2 inherits the DNS security properties of DKIM1. Key publication relies on DNS, which is subject to cache poisoning and other attacks unless DNSSEC is deployed. Operators SHOULD deploy DNSSEC for their signing domains.</t>
        <t>Relaxed domain match - the relaxed domain match algorithm for mf= allows subaddress schemes used for bounce handling. Operators should be aware that this algorithm permits signatures from subdomains of the MAIL FROM domain, which may be exploitable if subdomain delegation is not carefully controlled.</t>
      </section>
      <section anchor="security-considerations-for-dkim2-extended">
        <name>Security Considerations for DKIM2-extended</name>
        <t>DKIM2-extended introduces additional attack surface beyond DKIM2-core. Operators considering DKIM2-extended deployment should evaluate the following.</t>
        <section anchor="json-parsing-attack-surface">
          <name>JSON Parsing Attack Surface</name>
          <t>Message-Instance headers contain base64-encoded JSON that must be decoded and parsed at every verifying hop. JSON parsers process untrusted external input in the delivery critical path and are subject to algorithmic complexity attacks that cause excessive CPU consumption, memory exhaustion through deeply nested structures, parser inconsistency across implementations and buffer overflows in poorly implemented parsers.</t>
          <t>A specific concern is Type Confusion: differences in JSON parser implementations regarding duplicate keys and numerical precision can cause a recipe to be interpreted differently by intermediaries and final recipients. An attacker could craft a recipe that validates correctly at intermediate hops - where the signature is verified - but is interpreted differently at the final recipient, causing signature validation to succeed on a message body that differs from what the signer intended. This attack exploits parser inconsistency rather than cryptographic weakness and cannot be mitigated by stronger signing algorithms.</t>
          <t>The JSON recipe syntax also exhibits semantic ambiguity: the same construct - an empty array [] - is used in different contexts with different meanings. In backward-looking recipes it declares that a header field was added by the current hop and had no previous value. In forward-looking recipe proposals discussed in the working group, the same construct declares that a header field should be ignored during verification of a future message. This dual meaning requires implementations to determine the correct interpretation from context, introducing a category of parser confusion that does not exist in the tag-value formats used by DKIM1 and DKIM2-core.</t>
          <t>The need to define explicit limits on object count, nesting depth and total recipe size - as discussed in Section 4.3.1 - demonstrates that this attack surface has been recognized. Operators MUST ensure that their JSON parsing implementation enforces strict resource limits on input size, nesting depth and object count appropriate to their operational environment. Implementations SHOULD use a JSON parser that strictly conforms to <xref target="RFC8259"/> and rejects input that is ambiguous under that specification - in particular, implementations MUST reject JSON objects with duplicate keys rather than silently selecting one value. Sandboxing the JSON parser from the MTA delivery process is RECOMMENDED where operationally feasible.</t>
        </section>
        <section anchor="recipe-chain-integrity">
          <name>Recipe Chain Integrity</name>
          <t>A malicious intermediary that controls a node in the delivery chain can construct a recipe that presents a clean original message to the verifier while the delivered content is malicious. This attack requires control of a node in the chain and the ability to generate a valid signature for that node's domain, but is feasible for a compromised or malicious intermediary. Verifiers MUST validate the complete recipe chain from originator to final recipient and MUST NOT rely on individual recipes in isolation.</t>
        </section>
        <section anchor="semantic-gap-between-verification-and-visualization">
          <name>Semantic Gap Between Verification and Visualization</name>
          <t>DKIM2-extended introduces a structural discrepancy between the reconstructed body - the previous state that is cryptographically verified - and the transferred body - the modified state that is rendered to the end user. This creates a semantic gap that undermines the fundamental premise of email authentication: that the content being displayed is the content that was authenticated.</t>
          <t>When a receiver applies a body recipe to validate a DKIM signature on a version of the message that is no longer present, a verification pass result is semantically ambiguous. The user is presented with a verified status - a positive Authentication-Results header or a trust indicator in a mail client - but the content displayed does not correspond to the cryptographically covered data.</t>
          <t>This gap is a vector for social engineering. A compromised intermediary can craft modifications that are functionally malicious while providing a valid reconstruction recipe that produces a clean original. The receiver's verification passes on the ghost version; the user sees and acts on the malicious version.</t>
          <t>There is no standardized mechanism to communicate a "reconstructed authentication" state to human recipients without creating UI confusion or warning fatigue. The DKIM2-extended body recipe mechanism therefore constitutes a departure from the "What You See Is What Was Signed" principle. It should be treated as a specialized tool for automated forensic processing rather than a general-purpose body integrity mechanism for end-user trust decisions.</t>
          <t>This concern is distinct from but related to the Recipe Injection attack described in Section 8.3.2. Recipe Injection exploits the gap to authenticate a stolen message. The semantic gap concern exists even without malicious intent - any legitimate body modification creates a divergence between what was authenticated and what is displayed.</t>
        </section>
        <section anchor="attribution-of-change-vs-verification-of-state">
          <name>Attribution of Change vs. Verification of State</name>
          <t>It has been argued that body recipes provide attribution for modifications. However, attribution of a state change is not equivalent to verification of the previous state. In mixed environments (DKIM1/DKIM2), an intermediary can provide a cryptographically consistent recipe for a state that never existed, effectively signing a fabrication. As long as the fabrication is consistent with a previously obtained DKIM1 signature, the mechanisms described in the DKIM2-extended profile validate the lie as truth.</t>
          <t>The attack proceeds as follows: a malicious intermediary in possession of a stolen DKIM1-signed message receives a legitimate but unsigned message. It provides a signed recipe that, when applied to the legitimate message, reconstructs the stolen DKIM1 message. The intermediary's DKIM2 signature validates the recipe's integrity. The recipe validates the stolen message's DKIM1 signature. The receiver sees a valid chain and believes the trusted domain sent the stolen message in the current delivery.</t>
          <t>DKIM2-core avoids this entirely. An intermediary declares what it received and what it changed - attestation of flow, not reconstruction of state. There is no recipe mechanism that can be used as a payload injector because there is no mechanism for claiming what the previous state was.</t>
          <t>DKIM2-core provides a stateless chain of custody over message headers and body content as transmitted. This property is well-suited to general Internet mail flow across administrative boundaries. DKIM2-extended introduces stateful body reconstruction across those same boundaries, with the verification limitations described above. Implementers SHOULD carefully evaluate the operational, security and legal implications of deploying DKIM2-extended before adoption and MUST NOT treat a passing DKIM2-extended verification result as equivalent to verification of the reconstructed prior message state.</t>
        </section>
        <section anchor="null-recipe-ambiguity">
          <name>Null Recipe Ambiguity</name>
          <t>A null recipe declares that a modification was made but provides no information about the nature or extent of the modification. A malicious intermediary can use a null recipe to conceal arbitrary body modifications while remaining nominally compliant with the protocol. Receivers that rely on body recipe verification for security decisions MUST treat null recipes as untrusted modifications equivalent to a complete body replacement.</t>
        </section>
        <section anchor="recipe-stripping">
          <name>Recipe Stripping</name>
          <t>An intermediary that strips body recipe content from a message removes information that downstream verifiers depend on. The specification does not currently define how receivers should handle messages with stripped or truncated recipes. Implementations MUST handle this case gracefully without crashing or producing incorrect verification results. Stripped recipes SHOULD be treated as null recipes for the purpose of verification policy.</t>
        </section>
        <section anchor="stateful-milter-attack-surface">
          <name>Stateful Milter Attack Surface</name>
          <t>The persistent shared storage required by stateful DKIM2-extended milter implementations is an additional attack surface. Compromise of the shared storage allows an attacker to manipulate cached message state and cause the milter to generate incorrect recipes or signatures. Operators MUST apply appropriate access controls to stateful milter storage and MUST monitor for unexpected modifications.</t>
        </section>
      </section>
      <section anchor="cryptographic-agility">
        <name>Cryptographic Agility</name>
        <t>DKIM2-core mandates support for RSA-SHA256 and Ed25519-SHA256, as specified in Section 3.6. DKIM2-core evaluates the body hash independently of signature generation: the bh= value is computed first and included as a tag in the DKIM2-Signature header, which is then signed as a whole. This pre-hashed input model is essential for streaming processing of message bodies and must be preserved by any future signing algorithm. Working group discussion has confirmed this constraint in the context of seeking post-quantum algorithm guidance from the Crypto Forum Research Group. Some post-quantum signature schemes incorporate their own hash function and do not accept pre-hashed input, which would be incompatible with this architecture. The tag-value format of DKIM2-Signature imposes no constraints on the signing algorithm beyond producing a binary output encodable in base64 and accepting pre-hashed input. This ensures forward compatibility with post-quantum algorithms that meet these requirements when they are standardized for use in email authentication. Operators should monitor the development of post-quantum algorithm standards and be prepared to add support for new algorithms as they are standardized.</t>
        <t>The base specification's chain matching model binds mf= and rt= as tags within DKIM2-Signature itself, alongside d=, s=, a=, b=, bh= and optional flags. A prior working group proposal to carry sender and recipient binding in separate plaintext header fields was not adopted. Combined with the working group's direction toward dual-algorithm signing - a classical algorithm alongside a post-quantum algorithm - within a single DKIM2-Signature header, this concentration of content into one field compounds under size pressure: post-quantum signature material must coexist with envelope binding tags and modification flags in the same field. A DKIM2-Signature carrying RSA-SHA256 and ML-DSA-44 signatures together with mf=, rt=, d=, s= and flags would exceed 4000 characters in a single header field. With separated envelope binding, each DKIM2-Signature carries only signature material - approximately 350 characters for RSA-SHA256 or 3300 for ML-DSA-44 - and the envelope headers remain unchanged regardless of algorithm count. DKIM2-core's separation of envelope binding into dedicated header fields (DKIM2-Sig-mf, DKIM2-Sig-rt) avoids this concentration - a second algorithm is accommodated by an additional DKIM2-Signature header field carrying only signature material, not by enlarging a single field that also carries envelope and modification state.</t>
        <t>The use of both RSA-SHA256 and Ed25519-SHA256 in parallel is RECOMMENDED during the transition period to provide cryptographic agility. Ed25519 signatures are significantly shorter than RSA signatures and impose lower computational overhead at scale.</t>
      </section>
      <section anchor="timestamp-handling">
        <name>Timestamp Handling</name>
        <t>DKIM2 signatures include a timestamp. Receivers MUST reject signatures with timestamps more than 5 minutes in the future. This prevents pre-generated signature replay while accommodating normal clock skew between NTP-synchronized systems. A tolerance of 5 minutes is sufficient for any NTP-synchronized infrastructure and eliminates the replay window that a looser future timestamp check would create.</t>
        <t>Signatures with timestamps more than 15 days in the past SHOULD be treated as potential replays and rejected subject to local policy. The 15-day threshold accommodates legitimate redistribution delays including mailing list queuing, temporary delivery failures and held messages without creating an excessive replay window. Note that mailing list redistribution introduces a new signature at the time of redistribution - the relevant timestamp is when the list signed the message, not when the original sender signed it. Operators SHOULD NOT configure thresholds beyond 15 days without explicit operational justification.</t>
      </section>
      <section anchor="header-inclusion-in-hh-functional-classification">
        <name>Header Inclusion in hh=: Functional Classification</name>
        <t>The DKIM2 base specification excludes all X-* header fields from the signed header set. The hh= mechanism defined in this profile takes a more granular approach based on the functional role of each header, not its prefix alone.</t>
        <t>The critical constraint is interoperability: the classification of any given header as included or excluded in hh= MUST be consistent across all DKIM2-participating nodes. A header included by one verifier and excluded by another will produce hh= mismatches between conforming implementations on unchanged messages, indistinguishable from a real modification. The classification is therefore not a per-deployment choice but a normative requirement that applies uniformly. The authoritative list will be defined in the base specification or a companion document; this profile documents the functional principle and provides a working default for the current deployment period.</t>
        <t>The classification operates at three levels with explicit priority:</t>
        <t><strong>Level 1 - Structural exclusions</strong> (always active, not overridable): headers managed by the authentication protocol itself and headers that change legitimately at every hop. These include DKIM2-Signature, DKIM2-Sig-mf, DKIM2-Sig-rt, DKIM2-Mod, DKIM2-Authentication-Results, DKIM-Signature, ARC-*, Received, Return-Path and Authentication-Results. Including these would create circular dependencies or cause verification failures on every legitimate hop regardless of implementation choices.</t>
        <t><strong>Level 2 - Functional exclusions</strong> (normatively defined, uniform across implementations): headers whose function is exclusively internal to the operator that adds them - vendor-specific diagnostic telemetry, tracing identifiers and operational metadata that does not cross organizational boundaries. These are legitimately stripped at domain boundaries and have no security relevance to downstream receivers. The category is not limited to the X-* prefix: any header whose function is purely internal to the adding operator belongs here regardless of its naming convention. Examples include vendor-internal X-MS-* diagnostic headers (Microsoft Exchange Online Protection), X-GM-* (Google internal tracing) and equivalent vendor-internal namespaces. The authoritative list of excluded prefixes and header names is not a per-deployment configuration - it must be agreed upon across the ecosystem and defined normatively.</t>
        <t><strong>Level 3 - Cross-organizational inclusion overrides</strong> (normatively defined, take precedence over Level 2): individual headers that, despite carrying a vendor-associated prefix, serve a function that crosses organizational boundaries - abuse reporting mechanisms, feedback loop identifiers, authenticated identity assertions used across organizational perimeters. These MUST be included in hh= regardless of any prefix-based exclusion at Level 2. The structural exclusions of Level 1 are not overridable by Level 3.</t>
        <t>This three-level model resolves an apparent contradiction in the evidence: X-MS-Exchange-SenderADCheck carries a prefix (X-MS-<em>) whose vendor-internal instances Level 2 excludes, but its function - recording an authentication check result consumed across organizational boundaries - places it in Level 3. The security relevance of this category is not hypothetical. A message carrying to the working group the position that X-</em> headers are "generally specific to services" and should not be signed was itself authenticated with a DKIM1 signature whose h= tag includes X-MS-Exchange-SenderADCheck - a vendor-specific header carrying authentication-relevant information that Microsoft itself treats as significant enough to sign, yet that the proposed blanket exclusion would leave unprotected. The contradiction is contained within a single artifact: the body of the message argues that this class of header lacks security relevance while the header set of that same message places one such header under cryptographic protection. The contradiction is not in the model; it is in treating the entire X-* namespace as functionally uniform when it manifestly is not.</t>
        <section anchor="security-relevance-of-the-distinction">
          <name>Security Relevance of the Distinction</name>
          <t>All headers not excluded at Level 1 or Level 2 are included in the hh= computation. This is a deliberate security decision. Headers with cross-organizational or security-relevant functions carry metadata between trusted components across operator boundaries: antispam scores, phishing detection results, authenticated user identities, original envelope information, abuse complaint addresses, feedback loop tokens and compliance annotations. An attacker who can inject such a header without detection can attempt to influence downstream security decisions. Including them in hh= closes this attack surface: any undeclared addition or modification will cause the rollback check to fail at the next honest verifying hop.</t>
          <t>The position that the X-* namespace has no security implications outside the organizations that add the headers is contradicted by current production practice at four independent operators, on four continents, covering four distinct use cases: Google signs X-Original-Sender for identity preservation, Microsoft signs X-MS-Exchange-SenderADCheck for authentication result, Mailjet signs X-CSA-Complaints and X-REPORT-ABUSE-TO for abuse compliance, LinkedIn signs X-LinkedIn-fbl as a feedback loop identifier. In each case the operator has judged the header significant enough to place under cryptographic protection. The same LinkedIn message that carries the cross-organizational X-LinkedIn-fbl also carries X-LinkedIn-Class, X-LinkedIn-Template and X-LinkedIn-Id - all signed together. The first three are Level 2 (internal telemetry); the fourth is Level 3 (cross-organizational mechanism). A blanket exclusion cannot make this distinction.</t>
          <t>X-CSA-Complaints is administered by a third party (eco.de) and used cross-organization for abuse reporting. X-LinkedIn-fbl is returned by recipient providers to LinkedIn when a user marks a message as spam. A feedback loop that did not cross organizational boundaries would not be a feedback loop. If these headers have no cross-organizational security relevance, the category is empty.</t>
          <t>The IETF DKIM working group's own mailing list infrastructure adds X-Spam-Status, X-Virus-Scanned and X-Original-To to every message it processes - on infrastructure operated by participants in the same discussion that proposed excluding them. A major mailbox provider operating at global scale confirmed in working group discussion that these headers exist because multiple parties introduce them for legitimate delivery-path purposes and that they are subject to attack in practice.</t>
          <t>Body recipes do not close this gap. A recipe declares a voluntary modification. An attacker injecting a forged header has no incentive to declare it and the specification provides no mechanism to compel or detect an undeclared injection independently of hh=.</t>
        </section>
        <section anchor="standardization-gap">
          <name>Standardization Gap</name>
          <t>The three-level model described in this section addresses a gap in the base specification. Working group discussion has surfaced proposals to introduce explicit normative tag namespaces - vendor-diagnostic prefixes and trace-field designators - that would allow the exclusion and inclusion rules to be expressed formally rather than derived from functional analysis. Until such normalization is achieved, no implementation can correctly determine which headers belong in the signed set by relying on prefix alone: the X-* namespace contains both internal diagnostic telemetry and cross-organizational security mechanisms that require opposite treatment, and the same applies to other vendor-associated header conventions. The functional three-level model described in this section provides the principled basis for a future normative classification.</t>
          <t>Operators who use headers for internal trust signals between their own components MUST ensure these headers are stripped before external delivery, independently of DKIM2.</t>
        </section>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>Header field names defined in this profile use the DKIM2- prefix in preference to X- in accordance with <xref target="RFC6648"/>.</t>
      <t>This document requests the registration of the following header fields in the Permanent Message Header Field Registry maintained by IANA in accordance with <xref target="RFC3864"/>: DKIM2-Sig-mf, DKIM2-Sig-rt and DKIM2-Mod. These headers are part of the DKIM2-core protocol and appear in messages in transit.</t>
      <section anchor="dkim2-sig-mf">
        <name>DKIM2-Sig-mf</name>
        <ul spacing="normal">
          <li>
            <t>Header field name: DKIM2-Sig-mf</t>
          </li>
          <li>
            <t>Applicable protocol: mail</t>
          </li>
          <li>
            <t>Status: standard</t>
          </li>
          <li>
            <t>Author/Change controller: IETF</t>
          </li>
          <li>
            <t>Specification document: this document, Section 3.1</t>
          </li>
          <li>
            <t>Related information: carries the SMTP MAIL FROM value bound to a DKIM2 signature at a specific hop, indexed by i=</t>
          </li>
        </ul>
      </section>
      <section anchor="dkim2-sig-rt">
        <name>DKIM2-Sig-rt</name>
        <ul spacing="normal">
          <li>
            <t>Header field name: DKIM2-Sig-rt</t>
          </li>
          <li>
            <t>Applicable protocol: mail</t>
          </li>
          <li>
            <t>Status: standard</t>
          </li>
          <li>
            <t>Author/Change controller: IETF</t>
          </li>
          <li>
            <t>Specification document: this document, Section 3.1</t>
          </li>
          <li>
            <t>Related information: carries exactly one SMTP RCPT TO address per header, bound to a DKIM2 signature at a specific hop. Multiple recipients use multiple headers with incrementing v= sequence index. Indexed by i= for hop and v= for recipient sequence.</t>
          </li>
        </ul>
      </section>
      <section anchor="dkim2-mod">
        <name>DKIM2-Mod</name>
        <ul spacing="normal">
          <li>
            <t>Header field name: DKIM2-Mod</t>
          </li>
          <li>
            <t>Applicable protocol: mail</t>
          </li>
          <li>
            <t>Status: standard</t>
          </li>
          <li>
            <t>Author/Change controller: IETF</t>
          </li>
          <li>
            <t>Specification document: this document, Section 3.2</t>
          </li>
          <li>
            <t>Related information: declares a modification made to a header field by a Reviser node, using:
            </t>
            <ul spacing="normal">
              <li>
                <t>field= - identifies the modified header field name</t>
              </li>
              <li>
                <t>del= - previous value, present for removals and modifications</t>
              </li>
              <li>
                <t>new= - new value, present for additions and modifications</t>
              </li>
              <li>
                <t>fr= - optional frame index for splitting long values across multiple headers</t>
              </li>
              <li>
                <t>i= - hop index</t>
              </li>
              <li>
                <t>seq= - field instance index</t>
              </li>
              <li>
                <t>del= and new= MUST appear on separate header lines and MUST be last in the header field value</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="dkim2-authentication-results-1">
        <name>DKIM2-Authentication-Results</name>
        <ul spacing="normal">
          <li>
            <t>Header field name: DKIM2-Authentication-Results</t>
          </li>
          <li>
            <t>Applicable protocol: mail</t>
          </li>
          <li>
            <t>Status: standard</t>
          </li>
          <li>
            <t>Author/Change controller: IETF</t>
          </li>
          <li>
            <t>Specification document: this document, Section 3.5.1</t>
          </li>
          <li>
            <t>Related information: records the outcome of DKIM2 chain verification performed by the receiving MTA at a specific hop. Carries i= (hop index), authserv-id (verifying MTA FQDN) and dkim2= result (pass, fail, none, temperror, permerror). One header is produced per verified hop. Part of the signed header set at every hop, cumulative from i=1 (Section 3.3.2). Excluded from the hh= computation.</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3552">
          <front>
            <title>Guidelines for Writing RFC Text on Security Considerations</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="B. Korver" initials="B." surname="Korver"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak. This document provides guidelines to RFC authors on how to write a good Security Considerations section. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="72"/>
          <seriesInfo name="RFC" value="3552"/>
          <seriesInfo name="DOI" value="10.17487/RFC3552"/>
        </reference>
        <reference anchor="RFC3864">
          <front>
            <title>Registration Procedures for Message Header Fields</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="J. Mogul" initials="J." surname="Mogul"/>
            <date month="September" year="2004"/>
            <abstract>
              <t>This specification defines registration procedures for the message header fields used by Internet mail, HTTP, Netnews and other applications. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="90"/>
          <seriesInfo name="RFC" value="3864"/>
          <seriesInfo name="DOI" value="10.17487/RFC3864"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC5321">
          <front>
            <title>Simple Mail Transfer Protocol</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document is a specification of the basic protocol for Internet electronic mail transport. It consolidates, updates, and clarifies several previous documents, making all or parts of most of them obsolete. It covers the SMTP extension mechanisms and best practices for the contemporary Internet, but does not provide details about particular extensions. Although SMTP was designed as a mail transport and delivery protocol, this specification also contains information that is important to its use as a "mail submission" protocol for "split-UA" (User Agent) mail reading systems and mobile environments. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5321"/>
          <seriesInfo name="DOI" value="10.17487/RFC5321"/>
        </reference>
        <reference anchor="RFC5322">
          <front>
            <title>Internet Message Format</title>
            <author fullname="P. Resnick" initials="P." role="editor" surname="Resnick"/>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5322"/>
          <seriesInfo name="DOI" value="10.17487/RFC5322"/>
        </reference>
        <reference anchor="RFC6376">
          <front>
            <title>DomainKeys Identified Mail (DKIM) Signatures</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="T. Hansen" initials="T." role="editor" surname="Hansen"/>
            <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
            <date month="September" year="2011"/>
            <abstract>
              <t>DomainKeys Identified Mail (DKIM) permits a person, role, or organization that owns the signing domain to claim some responsibility for a message by associating the domain with the message. This can be an author's organization, an operational relay, or one of their agents. DKIM separates the question of the identity of the Signer of the message from the purported author of the message. Assertion of responsibility is validated through a cryptographic signature and by querying the Signer's domain directly to retrieve the appropriate public key. Message transit from author to recipient is through relays that typically make no substantive change to the message content and thus preserve the DKIM signature.</t>
              <t>This memo obsoletes RFC 4871 and RFC 5672. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="76"/>
          <seriesInfo name="RFC" value="6376"/>
          <seriesInfo name="DOI" value="10.17487/RFC6376"/>
        </reference>
        <reference anchor="RFC6648">
          <front>
            <title>Deprecating the "X-" Prefix and Similar Constructs in Application Protocols</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="June" year="2012"/>
            <abstract>
              <t>Historically, designers and implementers of application protocols have often distinguished between standardized and unstandardized parameters by prefixing the names of unstandardized parameters with the string "X-" or similar constructs. In practice, that convention causes more problems than it solves. Therefore, this document deprecates the convention for newly defined parameters with textual (as opposed to numerical) names in application protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="178"/>
          <seriesInfo name="RFC" value="6648"/>
          <seriesInfo name="DOI" value="10.17487/RFC6648"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC8617">
          <front>
            <title>The Authenticated Received Chain (ARC) Protocol</title>
            <author fullname="K. Andersen" initials="K." surname="Andersen"/>
            <author fullname="B. Long" initials="B." role="editor" surname="Long"/>
            <author fullname="S. Blank" initials="S." role="editor" surname="Blank"/>
            <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>The Authenticated Received Chain (ARC) protocol provides an authenticated "chain of custody" for a message, allowing each entity that handles the message to see what entities handled it before and what the message's authentication assessment was at each step in the handling.</t>
              <t>ARC allows Internet Mail Handlers to attach assertions of message authentication assessment to individual messages. As messages traverse ARC-enabled Internet Mail Handlers, additional ARC assertions can be attached to messages to form ordered sets of ARC assertions that represent the authentication assessment at each step of the message-handling paths.</t>
              <t>ARC-enabled Internet Mail Handlers can process sets of ARC assertions to inform message disposition decisions, identify Internet Mail Handlers that might break existing authentication mechanisms, and convey original authentication assessments across trust boundaries.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8617"/>
          <seriesInfo name="DOI" value="10.17487/RFC8617"/>
        </reference>
        <reference anchor="I-D.ietf-dkim-dkim2-spec">
          <front>
            <title>DomainKeys Identified Mail Signatures v2 (DKIM2)</title>
            <author initials="R." surname="Clayton">
              <organization/>
            </author>
            <author initials="W." surname="Chuang">
              <organization/>
            </author>
            <author initials="B." surname="Gondwana">
              <organization/>
            </author>
            <date year="2026" month="July"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dkim-dkim2-spec-04"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8601">
          <front>
            <title>Message Header Field for Indicating Message Authentication Status</title>
            <author fullname="M. Kucherawy" initials="M." surname="Kucherawy"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This document specifies a message header field called "Authentication-Results" for use with electronic mail messages to indicate the results of message authentication efforts. Any receiver-side software, such as mail filters or Mail User Agents (MUAs), can use this header field to relay that information in a convenient and meaningful way to users or to make sorting and filtering decisions.</t>
              <t>This document obsoletes RFC 7601.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8601"/>
          <seriesInfo name="DOI" value="10.17487/RFC8601"/>
        </reference>
        <reference anchor="RFC3935">
          <front>
            <title>A Mission Statement for the IETF</title>
            <author fullname="H. Alvestrand" initials="H." surname="Alvestrand"/>
            <date month="October" year="2004"/>
            <abstract>
              <t>This memo gives a mission statement for the IETF, tries to define the terms used in the statement sufficiently to make the mission statement understandable and useful, argues why the IETF needs a mission statement, and tries to capture some of the debate that led to this point. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="95"/>
          <seriesInfo name="RFC" value="3935"/>
          <seriesInfo name="DOI" value="10.17487/RFC3935"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC5598">
          <front>
            <title>Internet Mail Architecture</title>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <date month="July" year="2009"/>
            <abstract>
              <t>Over its thirty-five-year history, Internet Mail has changed significantly in scale and complexity, as it has become a global infrastructure service. These changes have been evolutionary, rather than revolutionary, reflecting a strong desire to preserve both its installed base and its usefulness. To collaborate productively on this large and complex system, all participants need to work from a common view of it and use a common language to describe its components and the interactions among them. But the many differences in perspective currently make it difficult to know exactly what another participant means. To serve as the necessary common frame of reference, this document describes the enhanced Internet Mail architecture, reflecting the current service. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5598"/>
          <seriesInfo name="DOI" value="10.17487/RFC5598"/>
        </reference>
        <reference anchor="RFC6973">
          <front>
            <title>Privacy Considerations for Internet Protocols</title>
            <author fullname="A. Cooper" initials="A." surname="Cooper"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="J. Morris" initials="J." surname="Morris"/>
            <author fullname="M. Hansen" initials="M." surname="Hansen"/>
            <author fullname="R. Smith" initials="R." surname="Smith"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document offers guidance for developing privacy considerations for inclusion in protocol specifications. It aims to make designers, implementers, and users of Internet protocols aware of privacy-related design choices. It suggests that whether any individual RFC warrants a specific privacy considerations section will depend on the document's content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6973"/>
          <seriesInfo name="DOI" value="10.17487/RFC6973"/>
        </reference>
        <reference anchor="I-D.chuang-replay-resistant-arc">
          <front>
            <title>Replay Resistant Authenticated Receiver Chain</title>
            <author initials="W." surname="Chuang">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-chuang-replay-resistant-arc-11"/>
        </reference>
        <reference anchor="I-D.adams-arc-experiment-conclusion">
          <front>
            <title>Wrap-up of the ARC Experiment</title>
            <author initials="T." surname="Adams">
              <organization/>
            </author>
            <author initials="J." surname="Levine">
              <organization/>
            </author>
            <date year="2026" month="January"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-adams-arc-experiment-conclusion-01"/>
        </reference>
        <reference anchor="I-D.ietf-dkim-dkim2-motivation">
          <front>
            <title>DKIM Version 2 Motivation</title>
            <author initials="T." surname="Herr" fullname="Todd Herr">
              <organization/>
            </author>
            <date year="2025"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dkim-dkim2-motivation"/>
        </reference>
        <reference anchor="I-D.ietf-dkim-dkim2-bcp">
          <front>
            <title>DKIM2 Best Practices</title>
            <author initials="T." surname="Herr" fullname="Todd Herr">
              <organization/>
            </author>
            <date year="2026" month="June" day="18"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dkim-dkim2-bcp-00"/>
        </reference>
        <reference anchor="DKIM-CHARTER" target="https://datatracker.ietf.org/wg/dkim/about/">
          <front>
            <title>IETF DKIM Working Group Charter</title>
            <author>
              <organization/>
            </author>
            <date year="2026" month="March"/>
          </front>
        </reference>
        <reference anchor="GDPR" target="http://data.europa.eu/eli/reg/2016/679/oj">
          <front>
            <title>Regulation (EU) 2016/679 (General Data Protection Regulation)</title>
            <author>
              <organization>European Union</organization>
            </author>
            <date year="2016" month="April"/>
          </front>
        </reference>
        <reference anchor="ePrivacy" target="http://data.europa.eu/eli/dir/2002/58/oj">
          <front>
            <title>Directive 2002/58/EC (Directive on privacy and electronic communications)</title>
            <author>
              <organization>European Union</organization>
            </author>
            <date year="2002" month="July"/>
          </front>
        </reference>
        <reference anchor="I-D.chuang-mailing-list-modifications">
          <front>
            <title>Tolerating Mailing-List Modifications</title>
            <author initials="W." surname="Chuang">
              <organization/>
            </author>
            <date year="2024" month="February"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-chuang-mailing-list-modifications-04"/>
        </reference>
        <reference anchor="I-D.levine-dmarc-listugh">
          <front>
            <title>Mailing lists and mail forwarders vs. DMARC</title>
            <author initials="J." surname="Levine">
              <organization/>
            </author>
            <date year="2023" month="August"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-levine-dmarc-listugh-01"/>
        </reference>
        <reference anchor="DKIM-INTERIM-2026-04" target="https://meetings.conf.meetecho.com/interim/?session=35406">
          <front>
            <title>DKIM Working Group Virtual Interim Meeting</title>
            <author>
              <organization/>
            </author>
            <date year="2026" month="April" day="29"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1508?>

<section anchor="implementation-notes-informative">
      <name>Implementation Notes (Informative)</name>
      <section anchor="dkim2-mod-header-representation">
        <name>DKIM2-Mod Header Representation</name>
        <t>A DKIM2-Mod header declaration maps directly to a simple flat data structure. The following Go example illustrates a complete representation:</t>
        <sourcecode type="go"><![CDATA[
// HeaderMod represents a single DKIM2-Mod header declaration
type HeaderMod struct {
    HopIndex   int    // i= tag: hop sequence number
    SeqIndex   int    // seq= tag: field instance index
    FrameIndex int    // fr= tag: fragment index, 0 if not fragmented
    FieldName  string // field= tag: name of the modified header field
    DelValue   string // del= tag: previous value, empty if addition
    NewValue   string // new= tag: new value, empty if removal
}

// ModChain accumulates all DKIM2-Mod declarations for a message
// at a single hop
type ModChain []HeaderMod

// ModificationType returns the type of modification
func (m HeaderMod) ModificationType() string {
    switch {
    case m.DelValue != "" && m.NewValue != "":
        return "modification"
    case m.DelValue != "":
        return "removal"
    case m.NewValue != "":
        return "addition"
    default:
        return "invalid"
    }
}
]]></sourcecode>
        <t>Note: the ModificationType function treats empty string as absence of the tag, which is consistent with the ABNF definition <tt>dkim2-mod-value = 1*(VCHAR / WSP)</tt> that requires at least one character. A del= or new= tag with an empty value is not valid per the grammar and MUST be rejected by parsers. The "invalid" return value covers this case and any other combination where both DelValue and NewValue are empty.</t>
        <t>All fields are primitive types. No JSON parser, no base64 decoder, no recursive structures. The complete state for a hop can be built by iterating the message headers once in O(n) time with O(1) memory per header.</t>
      </section>
      <section anchor="comparison-dkim2-mod-vs-json-header-recipe-encoding">
        <name>Comparison: DKIM2-Mod vs JSON Header Recipe Encoding</name>
        <t>The current DKIM2 specification encodes header modifications as JSON inside the Message-Instance header. The following is a real example from a working implementation demonstrated during the development of this specification. The r= field decoded from base64 contains:</t>
        <sourcecode type="json"><![CDATA[
{
  "h": {
    "content-transfer-encoding": [],
    "content-type": [],
    "list-help": [],
    "list-id": [],
    "list-owner": [],
    "list-post": [],
    "list-subscribe": [],
    "list-unsubscribe": [],
    "precedence": [],
    "subject": ["s= format 23:26:28"]
  },
  "b": [[1,1]]
}
]]></sourcecode>
        <t>This structure is not directly readable in mail logs - it requires base64 decoding followed by JSON parsing before any field can be inspected. The equivalent declaration using DKIM2-Mod headers:</t>
        <artwork><![CDATA[
DKIM2-Mod: i=2; seq=1; field=Subject; del="s= format 23:26:28"
DKIM2-Mod: i=2; seq=1; field=List-Id; new="dkim2.mailman.dkim2.com"
DKIM2-Mod: i=2; seq=1; field=List-Help; new="<mailto:dkim2-request@mailman.dkim2.com>"
DKIM2-Mod: i=2; seq=1; field=Precedence; new="list"
]]></artwork>
        <t>The Go data structures required for each approach illustrate the implementation complexity difference:</t>
        <sourcecode type="go"><![CDATA[
// DKIM2-Mod - flat structure, no JSON dependency
type HeaderMod struct {
    HopIndex   int    // i=
    SeqIndex   int    // seq=
    FrameIndex int    // fr= optional
    FieldName  string // field=
    DelValue   string // del= empty if addition
    NewValue   string // new= empty if removal
}

// JSON recipe - requires recursive structure and runtime type assertion
type HeaderRecipe struct {
    Headers map[string][]interface{} `json:"h"`
    Body    [][]int                  `json:"b"`
}

// Processing requires:
// 1. Accumulate complete base64 value across folded lines
// 2. Decode base64 into buffer
// 3. Unmarshal JSON into map with interface{} values
// 4. Type-assert each value to determine if string or empty
// 5. Apply resource limits before processing
]]></sourcecode>
        <t>The DKIM2-Mod approach requires only the tag-value parser already present in every DKIM1 and ARC implementation. The JSON recipe approach requires base64 decoding, JSON unmarshaling with dynamic type handling and resource limit enforcement as discussed in Sections 4.3.1 and 7.3.</t>
        <t>The use of JSON as the recipe encoding format also introduces a class of normative ambiguity that the email ecosystem had already resolved decades ago. RFC 5322 defines header field name matching as case-insensitive - this property has been part of the email stack since its inception and applies to both body recipes and header recipes. By embedding header field names as JSON object keys, DKIM2-extended recreates this problem from scratch: JSON is case-sensitive by specification, so "Content-Type" and "content-type" are distinct keys, yet email header field names are case-insensitive by protocol. The working group found itself in 2026 debating whether to mandate lowercase, uppercase or case-insensitive matching for header field names inside JSON recipe objects - a problem that RFC 5322 resolved in 1982.</t>
        <t>The practical consequence emerged immediately in interoperability testing: one implementation generated recipes preserving the original header field case, a second implementation expected strictly lowercase keys and rejected mixed case as invalid. Both behaviours were defensible under the specification text as written. The specification has since added text stating that header field name matching is case-insensitive and that JSON keys MUST NOT differ only in case. This is not an edge case discovered by adversarial testing - it is a divergence between implementations that were each attempting to conform to the same text.</t>
      </section>
    </section>
    <section numbered="false" anchor="appendix-b-milter-implementation-notes-informative">
      <name>Appendix B. Milter Implementation Notes (Informative)</name>
      <t>The following describes the milter callback structure for a DKIM2-core implementation. The structure demonstrates that all mandatory DKIM2-core functionality is expressible within the standard milter interface without MTA core modifications. DKIM2-core requires two separate milter instances: an inbound milter for verification and an outbound milter for signing, positioned respectively first and last in the milter chain.</t>
      <section numbered="false" anchor="b1-inbound-milter-verification-path">
        <name>B.1 Inbound milter - verification path</name>
        <t><tt>dk2_connect</tt>, <tt>dk2_helo</tt> - connection-level callbacks. No DKIM2-specific processing.</t>
        <t><tt>dk2_envfrom</tt> - initializes the per-session private structure and resets all hash contexts and header reservoirs. Stores the MAIL FROM value for later verification against DKIM2-Sig-mf. On connection reuse (RSET), resets all per-message state without freeing the allocated structures.</t>
        <t><tt>dk2_envrcpt</tt> - called once per recipient. Appends each RCPT TO value to a per-session list for later verification against DKIM2-Sig-rt headers.</t>
        <t><tt>dk2_header</tt> - called once per header field. Accumulates each field in a dynamically allocated in-memory reservoir with DoS protection via a configurable maximum header count and a limit on total header memory. Includes removal of other spoofed internal headers arriving from external sources. When fr= fragmentation tags are present in DKIM2-Mod headers, accumulates fragments for reassembly at <tt>dk2_eom</tt>.</t>
        <t><tt>dk2_eoh</tt> - end of headers. For RSA-SHA256 implementations MAY initiate DNS key lookup as an optimization, reducing the time spent waiting at <tt>dk2_eom</tt>. Signing algorithms that require the complete input before verification, including Ed25519-SHA256 and future elliptic curve algorithms, defer all operations to <tt>dk2_eom</tt>.</t>
        <t><tt>dk2_body</tt> - called in chunks as the body arrives. Updates the body hash incrementally using relaxed or simple canonicalization as specified in the signature. This streaming approach means the milter never holds the message body in memory - only the hash context state is updated at each chunk. A message of arbitrary size imposes no additional memory cost beyond the fixed hash context.</t>
        <t><tt>dk2_eom</tt> - finalizes the body hash, fetches the public key via DNS, reconstructs the signed header input from the reservoir, adds the incomplete DKIM2-Signature header to the signed input, verifies the signature, checks DKIM2-Sig-mf against the stored MAIL FROM and checks each stored RCPT TO against a corresponding DKIM2-Sig-rt header. Verifies that each DKIM2-Mod declaration accurately reflects the modification declared at that hop. Returns SMFIS_REJECT for structural failures or when cryptographic proof of dishonesty is present per Section 3.5.2, SMFIS_TEMPFAIL on transient DNS error and SMFIS_CONTINUE otherwise, with the result recorded in DKIM2-Authentication-Results.</t>
        <t><tt>dk2_abort</tt>, <tt>dk2_close</tt> - release all per-session resources including the header reservoir and hash contexts.</t>
      </section>
      <section numbered="false" anchor="b2-outbound-milter-signing-path">
        <name>B.2 Outbound milter - signing path</name>
        <t><tt>dk2_connect</tt>, <tt>dk2_helo</tt> - connection-level callbacks. No DKIM2-specific processing.</t>
        <t><tt>dk2_envfrom</tt> - initializes the per-session private structure. Stores the MAIL FROM value for construction of DKIM2-Sig-mf.</t>
        <t><tt>dk2_envrcpt</tt> - called once per recipient. Appends each RCPT TO value to a per-session list for construction of DKIM2-Sig-rt headers.</t>
        <t><tt>dk2_header</tt> - called once per header field. Accumulates the field in the reservoir. For RSA-SHA256 implementations, simultaneously updates the signed header digest incrementally, allowing a single-pass streaming implementation. Signing algorithms that require the complete input before signing, including Ed25519-SHA256 and future elliptic curve algorithms, accumulate only in the reservoir and reconstruct the signed header input in <tt>dk2_eom</tt>.</t>
        <t><tt>dk2_eoh</tt> - no DKIM2-specific processing for the outbound path.</t>
        <t><tt>dk2_body</tt> - called in chunks. Updates the body hash incrementally using relaxed or simple canonicalization as specified in the signature. This streaming approach means the milter never holds the message body in memory - only the hash context state is updated at each chunk. A message of arbitrary size imposes no additional memory cost beyond the fixed hash context.</t>
        <t><tt>dk2_eom</tt> - Finalizes the body hash, constructs DKIM2-Sig-mf with i= and addr= from the MAIL FROM value, constructs one DKIM2-Sig-rt per stored RCPT TO with incrementing v= values, validates any DKIM2-Mod headers present, adds the incomplete DKIM2-Signature header to the digest, finalizes and signs, then adds the complete DKIM2-Signature to the message. For signing algorithms that require the complete input before signing, including Ed25519-SHA256 and future elliptic curve algorithms, the complete signed header input is constructed from the reservoir at this stage and signed in a single operation.</t>
        <t><tt>dk2_abort</tt>, <tt>dk2_close</tt> - release all per-session resources.</t>
      </section>
      <section numbered="false" anchor="b3-stateless-design-confirmation">
        <name>B.3 Stateless design confirmation</name>
        <t>Both milter instances are fully stateless between sessions. The private structure allocated at <tt>dk2_connect</tt> carries the complete session state - envelope values, header reservoir and hash contexts - and is released at <tt>dk2_close</tt>. No shared storage between milter instances or between sessions is required at any point. No MTA core modifications are required.</t>
        <t>DKIM2-core header and body processing is fully streaming - no message content is buffered at any point. The header reservoir holds only header field names and values, not body content. This is a fundamental architectural difference from DKIM2-extended, which requires buffering body content for recipe generation.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The author would like to thank the participants of the IETF-DKIM mailing list for the rigorous technical exchange that motivated this document.</t>
      <t>Special thanks to Pete Resnick for his guidance on the IETF process, for encouraging the formalization of these concerns into an Internet-Draft and for clarifying the process by which any contributor may address the architectural and security implications of proposed standards.</t>
      <t>The author acknowledges Wei Chuang for his independent convergence on the importance of human-readable envelope binding fields and Bron Gondwana for the extensive debate regarding stateful delivery models.</t>
      <t>Valuable perspectives were provided by Philip Guenther on security gateway deployment requirements and by Steffen Nurpmeso on architectural simplification and attack surface reduction. Hannah Stern contributed detailed technical observations on base64 encoding complexity and recipe streaming limitations and on the canonicalization limits of recipe reconstruction. John Levine and Richard Clayton are thanked for their participation in the working group discussion. R. Latimer is thanked for raising the perspective of MTA implementers and for drawing attention to the Alternate Submission Scenarios. Murray Kucherawy is thanked for his clarification on the scope of interface-level implementability in IETF protocol design.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9S9fZPb1pUn/D8/BUpTW5YcglK3Xmy3VvtMW5JtTdSSVt2O
M5VKZUAS7IZFAgwAdouZynz2Pe/33AuwJTnZeWpdlUgiCdy3c8/r75yT5/mk
r/p1eZLdOc1elNt1s9+UdZ+9a5tVtS6zVdNmL37/6uw4u66K7Kxa92Wbvarh
/1fForwzKebztryGp/lHwzfcmSybRV1sYIRlW6z6fNMsFlWRLz9Um+N8ab/P
t/z7/ME3k2XRw8+PHxw/yR98mz84nizgg8um3Z9kVb1qJt1uvqm6rmrqi/0W
fvnq5cUPk2rbnmR9u+v64wcPvoOHirYsTrLT7XZdwfPw4y4r6mX2vizW+UW1
KSc3Tfvhsm122xNaYvYL/LuqL7Mf8bPJh3IPP1ieZH+ipU2zDS1+mpWbolpn
xa6/gmnLq6dZWEkmK/nzZNL1MOJfinVTwyz3ZTfZVieTLOubBf8zy7qm7dty
1dm/9xv/z0Wz2RaL3r7dze2TuplMcBJNi6/MYWfgqT/MsjPaX/goy3jb/1D1
fdNWjf+maS+LuvobzR327+L7WdXTF7S4k+x6xsf0r1U/x68mddNu4NfXJQ72
/ofnx0dH38lfHz5+fKx//fbJI/nroyePvpW/Pj5+qJ8+fnh8FP6qjz15+M0T
/Wt47NvjxzrEt0+OvsG/vspfzKqyXxH1CAl123JxQnNXQn7RwCLq35f7Lnu1
xDNaVeUyO8NTO68u66LftWWXXR9nd+lk792hp8Ne4n+yn+9n2fN1se+bOv78
F/j8alfUl/HH38+yH5t6eVPUvM2ekL+hT7qyrcoOqVhHostUl33+Aq+H3pKx
VeYPHk0m+Gh8FN8+eaB7+vC7h4/lr99890i39/Hj73RPn3z3zUPdyAUtIG+B
cIs9/NFVSK59XrTJfr6nX8DFkV9kp4H2S7xQixJm08KOwLbfspnxptnePPqi
jbll1vnRkSytWBabjj4qP27hxcRgFk29WO+Qa8TL+6UttvlumzWrDJaVnb5/
nr20p25ZzsUsO8Vx4k//bZa9Lq+ruhwQwNEXrfMTS+DXjd2HTQO0wRc7vhXI
4v5Qtvh0dgzMQH92+xJ/KttWPlSGctEsl+FzW+Ljf4jAw7QPrGu+2A4XdJx9
X3Yoa4AlVouy+2etBY7rSX707T+0Iphw/uABPIITzZ//dPr+4uX7eAkouEZk
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
F4WqRltwS+hMTGKfHNPCmiH16vS8RrKjHYoXTIbAKJWgGkh1wDyEkyAwcKg2
55KAR19H2lRpik81XRQOoDrqUV1fFJnfdaF1pnwfReEO4ens2QtN4bAKs5iw
qR8ucxanSCI4WMfyAXr7NQ68+sKGvipW8JiLNFpapE9y2sFqn0NtTkKqFAUD
mhGscuUtWhnPpJhkJB9GS6eSNfh5tVM2keIYTo+w67eeCu0qrQPepcyInpVN
rroMCw+WvgPMZTMikWcyixDNrTUQpP21U4EMoacQvbRsRzqUqHZeD4nsHKYK
wqqFNu7J2pMwIr33HwvNJuFOE/pkRSXKaK4JIhyyJTbrkrXLZvemqUfOzje/
/no/O2jq8V42G8ZastwrHd/AJ0jxM3/P6OUUSSLL59R1jcLzz3P62XCAy4DJ
yW3rgdJkrYQQbY3szJfSASseKxK51ZTGiyo8zcg3smtCvgPI+ZjMVP5XpDu+
07OAMScR9mvnotnuV5HIyFUWDc40Hngoe0yrCGmyyJQush2YVJwpu9dyPOvr
W/KzQOI3Tg5GPYDf//bLDPT08UneDL8p+0ZvWOF40xUhQrJud3UjJMG84YHs
FV85d27h+aFUvCvqXM7xQ74GP+C7tblvx3aJQ0F87qFl7KZt8eyIl7shMeCH
Muu1NhKCS9P2b8MHZ0vcO3NlpM0UVKI3lj13zt9rpLJpQoxzRrut5vpkWiom
W3yml9FicuntEyOsokWH3UJV/ImcvJ6JkOOKrZiB/c2CP6OFDqgcdXfdYznv
NzdVFJLrWyQyfF9M4GJiuO1FlfxananyVxLZM3kotVKqvHEpV+wLhGfx/MrM
zaPkrEzqmZbf3jFGCY0BNUY+QvQn15DrU+n8yRlh8V4lkiGzNZlCUipNBDGV
CtOCnWRs0kqvXNg5yynQWdkZEXGxIhZlVKCtWUOGN00NZdDWGnJZ2qe5Ikoj
NtWHKTCZl++SMZBNxleMn27wnuigev336nmp5dyA8HkdU892hi5tnQHHpbLA
hvefH1Rd+PLo4ZE0KnxUy6ZYK14+KNr9JqS8wxZFlHVjFUUTCqtl0MQDL0b5
jJrW73Vt5NcubJVdJovHvLkqhMy0abJkp3LWODapC9pQ8lM7TJFkEQPZYiYA
U+arzFuP5ww7eYIdBITtMcovijmRKOkwrUDFmOuSCtgiqpaO9moxzKYJVa7Y
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
G+6n5Nhh+sWfzJr3EhZKAwA=

-->

</rfc>
