<?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-06" 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-06"/>
    <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="July" day="19"/>
    <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 119?>

<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 125?>

<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>Using existing RFC5322 headers to infer envelope values, as has been proposed in some alternatives, would require parsers to handle these edge cases correctly and would fail for programmatic email where no correspondence between envelope and headers exists. DKIM2-Sig-mf and DKIM2-Sig-rt carry the envelope values explicitly and independently of the IMF headers, eliminating this ambiguity.</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 anchor="dkim2-signature-envelope-tags">
          <name>DKIM2-Signature Envelope Tags</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
                 ; 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= value sequence number
                 ; used in DKIM2-Sig-rt to distinguish
                 ; multiple recipients at the same hop
                 ; MUST start at 1 and increment by 1

dkim2-sig-tag-d  = %x64 "=" domain-name
                 ; d= signing domain

dkim2-sig-tag-s  = %x73 "=" selector-name
                 ; s= selector

dkim2-sig-tag-bh = %x62 %x68 "=" base64string
                 ; bh= body hash

dkim2-sig-tag-b  = %x62 "=" base64string
                 ; b= signature value

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

; Tag-value list structure - as defined above
]]></sourcecode>
        </section>
      </section>
      <section anchor="chain-of-custody">
        <name>Chain of Custody</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="signature-content">
          <name>Signature Content</name>
          <t>The DKIM2-Signature at each hop covers:</t>
          <ul spacing="normal">
            <li>
              <t>All DKIM2-Sig-mf and DKIM2-Sig-rt headers with the current i= value</t>
            </li>
            <li>
              <t>All DKIM2-Mod headers with i= values less than or equal to the current hop</t>
            </li>
            <li>
              <t>All previous DKIM2-Signature headers</t>
            </li>
            <li>
              <t>The incomplete current DKIM2-Signature header with the signature value absent</t>
            </li>
          </ul>
        </section>
        <section anchor="body-hash">
          <name>Body Hash</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="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="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-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>All previous DKIM2-Signature headers with i= value less than the current hop</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>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.2.5.</t>
          <t>Header fields not listed above MAY be included in the signed header set at the discretion of the signer. 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 with the modifications for DKIM2 header ordering defined in <xref target="I-D.ietf-dkim-dkim2-spec"/>.</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="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.6 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>Headers managed by DKIM2 itself: DKIM2-Signature, DKIM2-Sig-mf, DKIM2-Sig-rt, DKIM2-Mod</t>
            </li>
            <li>
              <t>Headers with independent authentication mechanisms: DKIM-Signature, ARC-*</t>
            </li>
            <li>
              <t>Headers that change legitimately at every hop: Received, Return-Path, Authentication-Results</t>
            </li>
            <li>
              <t>Vendor-specific diagnostic headers: X-MS-<em>, X-GM-</em></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.</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>
      <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 anchor="header-order-and-multiple-instances">
          <name>Header Order and Multiple Instances</name>
          <t>DKIM2-core signatures cover a defined set of header fields. The mandatory signed header set is specified in Section 3.2.4. Signers MAY additionally include security-relevant header fields such as From:, Subject: and Reply-To: by declaring them in the signature.</t>
          <t>DKIM2-core signatures protect header fields at two levels. The h= tag in DKIM2-Signature covers the mandatory set of security-critical header fields, providing value-level protection consistent with DKIM1. The optional hh= tag provides set-level integrity for all non-excluded header fields, detecting undeclared additions and removals as described in Section 3.2.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.6 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.6.</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 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.</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="dsn-and-bounce-authentication">
        <name>DSN and Bounce Authentication</name>
        <t>DKIM2-core provides the infrastructure for authenticated Delivery Status Notifications (DSNs) that prevent backscatter to innocent sender domains.</t>
        <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 is correctly signed and the chain is valid; the MTA proceeds with delivery</t>
            </li>
            <li>
              <t>SMFIS_REJECT - the signature is invalid, the chain is broken or the envelope binding does not match; 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.2.</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, null-sender messages without DKIM2 signatures will arrive as non-participating MTAs continue to generate unsigned DSNs. In a mature deployment this case is eliminated: messages without DKIM2 signatures are rejected during the original SMTP session, preventing DSN generation entirely.</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 - including the backscatter risk that DKIM2 was designed to eliminate. Backscatter prevention is only fully effective when all intermediate nodes participate in DKIM2. A single legacy node in the chain breaks authenticated DSN propagation for downstream receivers. This is a known limitation of the transition period addressed in Section 5.</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. 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 strict 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 strict 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. Strict 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 returns SMFIS_REJECT to instruct the MTA to issue a 5xx rejection, SMFIS_TEMPFAIL for transient errors or SMFIS_CONTINUE to accept.</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>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>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:</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 fragmented Base64-encoded JSON buffers 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 strict 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, Rspamd content rewriting rules and SpamAssassin header additions. 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 DKIM2-extended-compatible arrangement 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-extended 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-extended specification has been tested empirically. Three independent implementers working on distinct codebases in a three-week window each reported difficulty with the same areas of the base specification. An implementer of a C milter library found a normative conflict between three paragraphs covering the same scenario - transparent re-sign of an unmodified message - where MUST, SHOULD and MAY led to three mutually incompatible but each textually defensible implementations, producing 14 interoperability failures in a four-implementation test matrix. An implementer of a Rust mail server found that folding whitespace inside base64-encoded header fields, explicitly permitted by the specification, caused parsing failures in two of three reference implementations tested. A third implementer, working on an encryption gateway, cited the null recipe/DSN reconstruction text verbatim and stated "I struggle to understand this text," requesting worked examples. Three codebases, three weeks, three distinct failure modes in the same specification area. This is not an isolated difficulty - it is 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>It is worth noting that <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. DKIM2's strict canonicalization and body recipe mechanism represent 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 in the DKIM2-extended model. 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>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 and DKIM2-Signature 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 the preceding section.</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 known limitation of the transition period. The properties achievable end-to-end depend on the composition of the 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 - fully effective only when every hop participates in DKIM2. A single legacy node breaks authenticated DSN propagation for all downstream receivers. During the transition period, receivers that encounter messages with broken DKIM2 chains MUST fall back to current DKIM1 behavior: apply local policy, generate DSNs as today.</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>
      </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 DKIM2-extended. 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 only: deploy the outbound milter to add DKIM2-Sig-mf, DKIM2-Sig-rt and DKIM2-Signature headers to outgoing messages. No inbound verification. This establishes the operator's presence in the DKIM2 ecosystem and allows downstream receivers to begin building chain of custody records.</t>
        <t>Phase 2 - inbound verification: deploy the inbound milter to verify incoming DKIM2 signatures and record results in Authentication-Results headers. Apply local policy based on verification results. This phase can be implemented in monitoring-only mode initially - logging verification results without affecting delivery - to assess the impact before enforcing policy.</t>
        <t>During Phase 2, the verifier SHOULD add a DKIM2-Authentication-Results header to record the outcome of chain verification. The format is:</t>
        <sourcecode type="example"><![CDATA[
DKIM2-Authentication-Results: i=N; authserv-id; dkim2=result
]]></sourcecode>
        <t>where N is the current hop index, authserv-id is the verifying server identity (e.g. dns.itb.it) and result is one of:</t>
        <ul spacing="normal">
          <li>
            <t>pass - chain verified, envelope binding confirmed</t>
          </li>
          <li>
            <t>fail - invalid signature, body hash mismatch, hh= rollback mismatch or envelope mismatch</t>
          </li>
          <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>In Phase 2 (monitoring), the verifier MUST NOT reject or delay messages based on any dkim2= result; all five outcomes are recorded in the DKIM2-Authentication-Results header for downstream policy decisions and local monitoring, with delivery proceeding via SMFIS_CONTINUE regardless of verification outcome.</t>
        <t>In Phase 3 (policy enforcement), each result maps to a specific milter action:</t>
        <ul spacing="normal">
          <li>
            <t>dkim2=fail and dkim2=permerror correspond to SMFIS_REJECT: both represent a definitive verification failure that will not change on retry, and the MTA issues a 5xx rejection to the connected peer.</t>
          </li>
          <li>
            <t>dkim2=temperror corresponds to SMFIS_TEMPFAIL: the condition - typically a DNS lookup failure - may resolve on retry, and the MTA issues a 4xx temporary failure rather than a permanent rejection. Without this distinction, a transient DNS outage would cause legitimate mail to be permanently rejected rather than retried.</t>
          </li>
          <li>
            <t>dkim2=none and dkim2=pass correspond to SMFIS_CONTINUE: the message proceeds to delivery.</t>
          </li>
        </ul>
        <t>In all enforcement cases other than SMFIS_CONTINUE, no DKIM2-Authentication-Results header is written, as the message does not reach any downstream processor.</t>
        <t>DKIM2-Authentication-Results is an implementation-defined header for transitional monitoring. It is not currently registered in the IANA header field registry <xref target="RFC3864"/> and its use is scoped to the transitional deployment period. The format of the definitive authentication result mechanism for DKIM2 will be specified when the IANA registry for DKIM2 authentication methods is established. This header is excluded from the hh= computation as specified in Section 3.2.5, consistently with the treatment of Authentication-Results in the DKIM2 base specification <xref target="I-D.ietf-dkim-dkim2-spec"/>.</t>
        <t>Phase 3 - policy enforcement: begin rejecting messages that fail DKIM2 verification according to local policy. This phase requires confidence that the majority of expected senders have deployed DKIM2 outbound signing.</t>
        <t>Phase 4 - 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>The message body was plain text with no modifications. DMARC failed purely on alignment grounds - not because the body was modified. 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.5: 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 mathematically 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.3.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>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 recognizes intentional re-origination by privacy-preserving intermediaries as a legitimate deployment pattern.</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="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 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>Interoperability testing of <xref target="I-D.ietf-dkim-dkim2-spec"/> conducted during IETF hackathon activities in March 2026 identified multiple confirmed interop failures between independent implementations, including disagreements on header ordering for signing input and header hash computation. DKIM2-core's use of explicit i= and seq= index values rather than positional ordering eliminates this category of implementation ambiguity.</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. The gap is visible as a discontinuity in the i= sequence but the content of the gap is unknown. Receivers must apply local policy for messages with gaps in the chain.</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="x-header-inclusion-in-hh">
        <name>X-* Header Inclusion in hh=</name>
        <t>The DKIM2 base specification <xref target="I-D.ietf-dkim-dkim2-spec"/> excludes all X-* header fields from the signed header set. The hh= mechanism defined in this profile takes a more granular approach: vendor-specific diagnostic headers are excluded, but all other X-* headers are included.</t>
        <t>The exclusion covers header fields used as internal diagnostic telemetry by major mail infrastructure operators, which are legitimately stripped by security gateways and content filters at domain boundaries. Examples of such prefixes are X-MS-* (Microsoft Exchange Online Protection), X-GM-* (Google) and equivalent vendor-internal diagnostic namespaces used by other operators. Including them in hh= would cause verification failures at every hop that performs normal header hygiene, effectively requiring the entire delivery chain to preserve proprietary diagnostic data - the same architectural problem illustrated by Microsoft's ARC implementation in Section 5.5.1. The list of excluded prefixes is implementation-defined and SHOULD be configurable to accommodate the diagnostic namespaces of operators in the specific deployment environment.</t>
        <t>All remaining X-* headers are included in the hh= computation. This is a deliberate security decision. X-* headers that are not vendor diagnostic telemetry are frequently used to carry security-relevant metadata between trusted components: antispam scores, phishing detection results, authenticated user identities, original envelope information and compliance annotations. An attacker who can inject an X-* header without detection can attempt to influence downstream security decisions - suppressing a spam score, asserting a false authenticated identity, or altering retention classification. Including non-vendor X-* headers 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 security relevance of this category is not hypothetical. A message carrying to the working group the position that X-* 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.</t>
        <t>This is not an isolated inconsistency. 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 - identity preservation. Microsoft signs a vendor-specific authentication header - authentication result. Mailjet signs X-CSA-Complaints and X-REPORT-ABUSE-TO - abuse compliance. LinkedIn signs X-LinkedIn-fbl - feedback loop. In each case the header appears in the h= tag of a production DKIM1 signature, meaning the signing operator has deliberately chosen to place it under cryptographic protection.</t>
        <t>Two of these cases are cross-organizational by construction. X-CSA-Complaints is not internal diagnostic telemetry but a compliance mechanism of the Certified Senders Alliance, administered by a third party (eco.de) and used cross-organization for abuse reporting. A header whose entire function is to carry an externally administered complaint address between unrelated parties is, by construction, one whose security implications extend beyond the organization that adds it. X-LinkedIn-fbl is a feedback loop identifier: an opaque token that recipient providers return to LinkedIn when a user marks a message as spam, the mechanism by which LinkedIn receives abuse reports from third-party providers. A feedback loop that did not cross organizational boundaries would not be a feedback loop.</t>
        <t>The LinkedIn case also illustrates concretely why the distinction between vendor-diagnostic X-* headers and cross-organizational X-* headers is not theoretical. The same production message carries X-LinkedIn-Class, X-LinkedIn-Template and X-LinkedIn-Id alongside X-LinkedIn-fbl - all signed together in the same h= tag. The first three are internal diagnostic telemetry; the fourth is a cross-organizational mechanism. A blanket exclusion treats them identically and removes protection from the feedback loop identifier along with the template id. This is precisely the distinction this profile implements via configurable prefix exclusion: vendor-diagnostic namespaces such as X-MS-* and X-GM-* are excluded; headers whose function extends beyond the signing organization are retained. The production behavior of four major operators confirms that this distinction is operationally real, not a theoretical construction.</t>
        <t>If X-CSA-Complaints and X-LinkedIn-fbl have no cross-organizational security relevance, the category is empty.</t>
        <t>These three cases correspond to three of the categories this profile protects - authenticated user identity, authentication result and compliance annotation - and all three are signed today by operators who would be penalized by a blanket exclusion. The IETF DKIM working group's own mailing list infrastructure adds X-Spam-Status, X-Virus-Scanned and X-Original-To to every message processed through its list server - concrete instances of the antispam scoring and phishing detection metadata category, on infrastructure operated by participants in this discussion. A major mailbox provider operating at global scale, defending the value of such headers in the same working group discussion, stated that they exist because multiple parties introduce them for legitimate delivery-path purposes and confirmed that they are subject to attack in practice - corroborating, from the operator side, the same risk this profile is designed to close.</t>
        <t>Body recipes do not close this gap. A recipe declares a voluntary modification made by an intermediary that chooses to participate in the chain of custody. An attacker injecting a forged header has no incentive to declare it and DKIM2-extended provides no mechanism to compel or detect an undeclared X-* injection independently of the hh= mechanism described here. The regression is not a question of how frequently it is exploited today, but of whether the protocol's security coverage, relative to current DKIM1 practice, is reduced.</t>
        <t>Operators who use X-* headers for internal trust signals between their own components SHOULD ensure these headers are stripped before external delivery, independently of DKIM2.</t>
      </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.3</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>
  </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="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 1403?>

<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 working group acknowledged the ambiguity but had not resolved it at the time of this writing. 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 strict 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 on envelope mismatch, invalid signature or inconsistent modification declaration, SMFIS_TEMPFAIL on transient DNS error and SMFIS_CONTINUE on success.</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 strict 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. 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:
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
4KbcdQv7D8E6LMJ/0kwvKO5fEAVjKa1C8SHig9F7LC8e/68f73/9ZHv+9Ocf
v64v/9eDv/z124+P1vW33/3h6dt/e7V79aJ+++Px/Zd/fXvy/Pox/eTs4vHq
+Y+//eXjv7z4crX5zYfv7v/LD9X62cevlz+vXv/L5q+X77ZPfvf2bPnbD6+a
n/4nfrJ8/Mf5fP6n79ngxJGlCTs6spnEmZ1iUA0m4Id7Vvjxdv9ycd1t4w2o
NxgP80SBX3BmOg37aD5WKtKKuzKq2/IwArQ9Yx0tM6G8Mc5vFibeSxvO5biT
eqmAexAQZ8FSJ5wrpFKphmUI3jR9Y0BVxkYO+Gh5Yzi1Nk5eUCjm5cJFmu1+
4469iZ3JZNRW5q08qVAwMLsKoBhGNAKYRl9aSfS3uTHKCIKKStAR7Vvx7KOQ
/L1pgZN6G8Ft8ASNBWoef/SJ9cPo8TL2STVViPzRbabvlK6KsBz+iy3KlT6q
MyoDrH7X3w9O9X02LM9pAz+lDXwqu9qgAE8XJ2IpCPmxgPzc7/wG/3356rTU
0SuJW5coz/Sxw0Wr8uRi316eQE3zc3/y1Wd/877YlJdn3e+vH/312bPnL7/a
fn3SXP4hxA4Pt8ePju//2+9f9rs/7H96dfM/v/o6WBBvINgePIkFIpMXGE/X
bDT1Ax3wyZnMLWgNneNugY8VWGkn+KvZbUPIExbTDo3wFHzMQe7pcUzgFgQc
3mrBOyAkI1oFxNDtVHvdGvQ6DYgdk3Rt3Ar6YrOYYd0o2466WsLaktVwPRcq
uYh9E7Zl+KsbStqkLlGYRUX7diD472K6bug47wdRRVG+RVVf5ZpixxFsvgG3
1Q1p8iQOPQfKO8c/GzmN2GJQwkJ7uZ2rgc5d0Z6LhTWaDJHAsEYYT3XtxWSs
NahCz8Do/uwU5k40y7XWHOzU68zgLW9iKi9bcKSKY/1eMy9tF82RSlbXqbnV
rPeEwaXks70Rh6VXS5KGSq1inAQXIor1i64XNNu4M4K7qGssRDmVGBggVSvu
j2EAtmf0B49xzLNltrkahv3VVuJ1LELtu8df+/N9HYWmEbrSNtAJKc+6FRac
OecpFIvFJOVvmlWjeWN8lkIqw+VHRwMLoUvMHI8DTre+cJSvT2Ow/TYsY2UV
oW5wbWqPX3aROfoeI3U+aF4QLiuSTSPKcAK9vSDujvtEx7/fAY9v1pFS3Qu5
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
Y5wkVVGSFRabwV1jfP7Pj/5vilW2eXcBAwA=

-->

</rfc>
