<?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.36 (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-03" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.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-03"/>
    <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="May" day="09"/>
    <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 109?>

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

<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. This is the standard milter processing pattern. In the common case the milter can identify BCC recipients through this comparison and generate the appropriate transactions. The truly pessimistic default - treating every RCPT TO as a separate transaction regardless - is only necessary when To:/Cc: headers are absent or unparseable, which is an edge case in practice. When BCC signaling is available through MTA configuration or a local convention, the milter can group visible To:/Cc: recipients into a single transaction and split only the BCC recipients, recovering full efficiency. The splitting cost is operational, not architectural - it requires no changes to the MTA core.</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
                 ; 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

; DKIM2-Intended-MailFrom header field
; Internal interoperability header between list manager and MTA
; MUST be removed before external transmission
; Note: intentionally not using X- prefix per [RFC6648]
dkim2-intended-mf = "DKIM2-Intended-MailFrom:" SP addr-spec CRLF

; 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

; 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>
        </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): MUST NOT exceed 20 per declaration. This supports header field values up to approximately 18KB, which is orders of magnitude beyond any header value observed in production deployments.</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>The signed header set does NOT include Received: headers, Return-Path:, or other trace headers added during transport. These headers are explicitly excluded because they are added by every relay and their inclusion would make signatures fragile in a way that provides no security benefit.</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>
      <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>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 DKIM2-Mod declarations. When a hop adds a new instance of an existing header field, it declares the addition via DKIM2-Mod with an explicit i= hop index and seq= sequence number. A verifier encountering multiple instances of the same header field uses the DKIM2-Mod declarations to determine which instance was present at each hop, rather than relying on physical header position.</t>
          <t>This eliminates the need for any canonical ordering of header field names - the chain of custody established by i= and seq= indexes provides unambiguous attribution without sorting and without relying on physical header position, consistent with the stateless milter model described in Section 1.3.</t>
          <t>For example, consider a message with a single Reply-To: header from the originator. A mailing list at hop 2 adds a second Reply-To: for the list address and declares the addition via DKIM2-Mod: i=2; seq=1; field=Reply-To; new=lista@esempio.com. If a subsequent intermediary reorders the two Reply-To: headers, the verifier can determine the intended ordering: the Reply-To: without a corresponding DKIM2-Mod entry is the original, and the Reply-To: declared in DKIM2-Mod with i=2 is the addition. The index values provide unambiguous attribution without requiring physical reordering.</t>
          <t>This approach differs from the DKIM2 base specification <xref target="I-D.ietf-dkim-dkim2-spec"/>, which mandates alphabetical ordering of header field names and bottom-up ordering for duplicate names before computing the header hash. The sorting imposes an O(N log N) computational cost that grows with header set size - and header sets are growing continuously. Modern messages carry authentication chains, security gateway stamps, mailing list headers and compliance annotations that routinely produce header sets of not a few dozen fields. Body recipes compound this further: a recipe for a message with a removed attachment is base64-encoded and folded across multiple continuation lines, adding a significant number of additional header entries to the sort input. As body recipes grow in size, the sort input grows proportionally, turning a nominally bounded operation into one whose cost is controlled by message content.</t>
          <t>Beyond computational cost, the approach is structurally fragile: 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. If ordering ambiguity at the intra-field level already produces interop failures, ordering ambiguity at the inter-field level is structurally worse. DKIM2-core avoids both problems: DKIM2-Mod's explicit seq= indexing eliminates duplicate header ordering ambiguity, and DKIM2-Signature tag parsing follows the same unordered key-value model that DKIM1 and ARC have used successfully for years - no prescribed tag order, no sort, no divergence.</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 propagating it back toward the original sender. Each hop manages its own rejection toward its direct peer. The rejection propagates back along the authenticated chain hop by hop 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>
        </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. Additional signing algorithms, including post-quantum algorithms, MAY be defined in future documents and added to the set of supported algorithms without requiring changes to this profile. The DKIM2-core architecture does not publish the hash value separately from the signature, which permits use of signing algorithms that incorporate their own hash function.</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 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 adds a DKIM2-Intended-MailFrom header carrying the MAIL FROM value it intends the MTA to use for transmission</t>
            </li>
            <li>
              <t>The list manager submits the message to the local MTA</t>
            </li>
            <li>
              <t>The outbound milter on the MTA reads DKIM2-Intended-MailFrom, removes it before external transmission, constructs DKIM2-Sig-mf and DKIM2-Sig-rt from the envelope values and signs the message</t>
            </li>
            <li>
              <t>The DKIM2-Intended-MailFrom header is an internal interoperability convention between the list manager and the local MTA. It MUST be removed by the outbound milter before transmission. It MUST NOT appear in messages transmitted to external recipients. This pattern is consistent with existing internal header conventions used to pass submission-phase information between MUA and MTA.</t>
            </li>
            <li>
              <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>
            </li>
          </ul>
          <t>Implementations MUST validate that the domain in DKIM2-Intended-MailFrom is authorized for the authenticated submitter on the submission channel. Accepting DKIM2-Intended-MailFrom values from unauthenticated or unauthorized submitters creates a signature authority escalation risk in multi-tenant environments.</t>
          <t>In multi-tenant environments where message content cannot be fully trusted, operators SHOULD configure the outbound milter to derive the signing domain exclusively from the authenticated SMTP envelope rather than from DKIM2-Intended-MailFrom. The DKIM2-Intended-MailFrom convention is appropriate only in controlled environments where the submission channel is authenticated and the submitter is authorized for the declared domain. Where MTA header filtering is available - for example via Postfix header_checks or equivalent mechanisms - operators SHOULD strip any pre-existing DKIM2-Intended-MailFrom header at message ingestion to prevent injection by untrusted clients.</t>
          <t>The name DKIM2-Intended-MailFrom is suggested as a convention for interoperability between list manager software and milter implementations from different vendors. The DKIM2- prefix is used in preference to X- in accordance with <xref target="RFC6648"/>. Operators who control both the list manager and the milter MAY use any internal header name they find convenient, provided that the header is removed before external transmission. The suggested name is provided only to facilitate interoperability in heterogeneous deployments where the list manager and the milter are from different vendors.</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 - 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 the list manager hop - MUST be represented in the chain of custody with its own DKIM2 signature, regardless of whether it is within the same administrative domain as adjacent hops.</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.</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 7.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 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>
      </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.4.</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>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>
      <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>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 and to pass the DKIM2-Intended-MailFrom convention to the outbound milter. 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>
      </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>
      <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="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.9) 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 7.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 7.3.4. 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. The architecture does not publish the hash value separately from the signature, which permits future adoption of post-quantum signing algorithms that incorporate their own hash function. 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 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>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <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>
      <t>DKIM2-Intended-MailFrom is requested for registration in the Provisional Message Header Field Registry. This header is an internal interoperability convention between local system components and MUST NOT appear in messages transmitted to external recipients. Provisional registration is appropriate because the header serves no protocol function in transit and exists solely to prevent namespace collision between vendor implementations of the same convention.</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 anchor="dkim2-intended-mailfrom">
        <name>DKIM2-Intended-MailFrom</name>
        <ul spacing="normal">
          <li>
            <t>Header field name: DKIM2-Intended-MailFrom</t>
          </li>
          <li>
            <t>Applicable protocol: mail</t>
          </li>
          <li>
            <t>Status: provisional</t>
          </li>
          <li>
            <t>Author/Change controller: IETF</t>
          </li>
          <li>
            <t>Specification document: this document, Section 3.7.3</t>
          </li>
          <li>
            <t>Related information: internal interoperability header used by mailing list managers to communicate the intended MAIL FROM value to the outbound signing milter. MUST be removed before external transmission. MUST NOT appear in messages delivered to external recipients. Registered provisionally to prevent namespace collision between independent implementations of the same convention.</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3552">
          <front>
            <title>Guidelines for Writing RFC Text on Security Considerations</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="B. Korver" initials="B." surname="Korver"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak. This document provides guidelines to RFC authors on how to write a good Security Considerations section. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="72"/>
          <seriesInfo name="RFC" value="3552"/>
          <seriesInfo name="DOI" value="10.17487/RFC3552"/>
        </reference>
        <reference anchor="RFC3864">
          <front>
            <title>Registration Procedures for Message Header Fields</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="J. Mogul" initials="J." surname="Mogul"/>
            <date month="September" year="2004"/>
            <abstract>
              <t>This specification defines registration procedures for the message header fields used by Internet mail, HTTP, Netnews and other applications. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="90"/>
          <seriesInfo name="RFC" value="3864"/>
          <seriesInfo name="DOI" value="10.17487/RFC3864"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC5321">
          <front>
            <title>Simple Mail Transfer Protocol</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document is a specification of the basic protocol for Internet electronic mail transport. It consolidates, updates, and clarifies several previous documents, making all or parts of most of them obsolete. It covers the SMTP extension mechanisms and best practices for the contemporary Internet, but does not provide details about particular extensions. Although SMTP was designed as a mail transport and delivery protocol, this specification also contains information that is important to its use as a "mail submission" protocol for "split-UA" (User Agent) mail reading systems and mobile environments. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5321"/>
          <seriesInfo name="DOI" value="10.17487/RFC5321"/>
        </reference>
        <reference anchor="RFC5322">
          <front>
            <title>Internet Message Format</title>
            <author fullname="P. Resnick" initials="P." role="editor" surname="Resnick"/>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5322"/>
          <seriesInfo name="DOI" value="10.17487/RFC5322"/>
        </reference>
        <reference anchor="RFC6376">
          <front>
            <title>DomainKeys Identified Mail (DKIM) Signatures</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="T. Hansen" initials="T." role="editor" surname="Hansen"/>
            <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
            <date month="September" year="2011"/>
            <abstract>
              <t>DomainKeys Identified Mail (DKIM) permits a person, role, or organization that owns the signing domain to claim some responsibility for a message by associating the domain with the message. This can be an author's organization, an operational relay, or one of their agents. DKIM separates the question of the identity of the Signer of the message from the purported author of the message. Assertion of responsibility is validated through a cryptographic signature and by querying the Signer's domain directly to retrieve the appropriate public key. Message transit from author to recipient is through relays that typically make no substantive change to the message content and thus preserve the DKIM signature.</t>
              <t>This memo obsoletes RFC 4871 and RFC 5672. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="76"/>
          <seriesInfo name="RFC" value="6376"/>
          <seriesInfo name="DOI" value="10.17487/RFC6376"/>
        </reference>
        <reference anchor="RFC6648">
          <front>
            <title>Deprecating the "X-" Prefix and Similar Constructs in Application Protocols</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="June" year="2012"/>
            <abstract>
              <t>Historically, designers and implementers of application protocols have often distinguished between standardized and unstandardized parameters by prefixing the names of unstandardized parameters with the string "X-" or similar constructs. In practice, that convention causes more problems than it solves. Therefore, this document deprecates the convention for newly defined parameters with textual (as opposed to numerical) names in application protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="178"/>
          <seriesInfo name="RFC" value="6648"/>
          <seriesInfo name="DOI" value="10.17487/RFC6648"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC8617">
          <front>
            <title>The Authenticated Received Chain (ARC) Protocol</title>
            <author fullname="K. Andersen" initials="K." surname="Andersen"/>
            <author fullname="B. Long" initials="B." role="editor" surname="Long"/>
            <author fullname="S. Blank" initials="S." role="editor" surname="Blank"/>
            <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>The Authenticated Received Chain (ARC) protocol provides an authenticated "chain of custody" for a message, allowing each entity that handles the message to see what entities handled it before and what the message's authentication assessment was at each step in the handling.</t>
              <t>ARC allows Internet Mail Handlers to attach assertions of message authentication assessment to individual messages. As messages traverse ARC-enabled Internet Mail Handlers, additional ARC assertions can be attached to messages to form ordered sets of ARC assertions that represent the authentication assessment at each step of the message-handling paths.</t>
              <t>ARC-enabled Internet Mail Handlers can process sets of ARC assertions to inform message disposition decisions, identify Internet Mail Handlers that might break existing authentication mechanisms, and convey original authentication assessments across trust boundaries.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8617"/>
          <seriesInfo name="DOI" value="10.17487/RFC8617"/>
        </reference>
        <reference anchor="I-D.ietf-dkim-dkim2-spec">
          <front>
            <title>DomainKeys Identified Mail Signatures v2 (DKIM2)</title>
            <author initials="R." surname="Clayton">
              <organization/>
            </author>
            <author initials="W." surname="Chuang">
              <organization/>
            </author>
            <author initials="B." surname="Gondwana">
              <organization/>
            </author>
            <date year="2026" month="April"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dkim-dkim2-spec-01"/>
        </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="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="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 1212?>

<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>
      </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. Removes any DKIM2-Intended-MailFrom header received from external sources to prevent injection attacks, regardless of whether it carries a valid DKIM signature. 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> - if a DKIM2-Intended-MailFrom header is present, uses its addr= value for DKIM2-Sig-mf construction in place of the stored SMTP MAIL FROM and removes the header before transmission. 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:
H4sIAAAAAAAAA9S965Lb2JUm+j+fAqGOCUttglKmLlWVdTSnU7cqtZWSjlJl
e8Lh8IAkyEQVCdAAmCna4X6t+X+e7Kz7XnsDzEyVe/rE+IdLooCNfVl73de3
8jw/6qt+XZ5m986yV+V23ew3Zd1nH9tmWa3LbNm02avfvT0/ya6qIjuv1n3Z
Zm9r+P9lMS/vHRWzWVtewdv80HCEe0eLZl4XG/jCoi2Wfb5p5vOqyBe/VJuT
fGHP51t+Pn/0+Ghe9OWqafenWVUvm6Nq255mfbvr+pNHj757dHJUtGVxmp1t
t+sKHq2ausuKepF9Kot1/rnalEfXTfvLqm1221OafPYH+HtVr7If8LejX8o9
PLA4zf5Ek55kG1rWJCs3RbXOil1/CROSoSdZmGMmc/zz0VHXwxf/UqybGha2
L7ujbXV6lGV9M+e/ZlnXtH1bLjv7+37j/zpvNtti3tu/7mb2S90cHeEkmhaH
zGET4K3fT7Nz2jn4Kct4Q39f9X3TVo3/l6ZdFXX1N5r7afb284tp1dM/0OJO
s6spH8C/Vf0M/+mobtoNPH1V4sc+vXl5cnz8nfzx8dOnJ/rHb589kT8+efbk
W/nj05PH+uvTxyfH4Y/62rPH3zzTP4bXvj15qp/49tnxN/jHt/mraVX2S6IL
IY5uW85Pae5Koq8aWET9u3LfZW8XeEbLqlxk53hqF9WqLvpdW3bZ1Ul2n072
wT16O+wl/k/289M0e7ku9n1Tx7//AX6/3BX1Kv75xTT7oakX10XN27wAEj3N
Th6dPMsfPaFfurKtyg4JVr9E16Qu+/wVEr7S/9gq80fHR0f4anwUj797/FT3
9Ol3unvPvvvmsW7ZnKaat0CixR7+01VImH1etMnOfaIn4IrIE9lZoPISr868
hO+2sHbY4Bu2Ld4e24Wv24IbZp0fH8vSikWx6ein8ssWBiYmMW/q+XrXIW1H
y/tDW2zz3TZrlhksKzv79DJ7bW/dsJzP0+wMvxP/+u/T7F15VdXl4KiPv2qd
tyyBhxuj/E0DVMBXOKZ/ZGa/L1t8OzuBa6+P3bzEH8u2lR+VdXxuFovwuy3x
6T9FymHa8BrONX/549mnz68/xat4+/rzmxG+jLTXwmd4LX3Rrkr40mXfb7vT
hw9hikXfFvNfypa2awqM7uH16iF++WExa3b9w8FpPYZffnj18VN6FVa7Nc0y
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
KtbSENhUk4xhH3YdewtYiIoPJA3UOjtLb08DYqeo+2wQ8KYtuuky8KnpkPRr
v9+qzyp1dOYuqNmTDFuUGyZlckCy6KB0t0tYNyhnJPrIbgaSB8pYlWKEVp3n
AjXbp2TvANmQD3qN20npDSTZ8n/Osw68/P9nxzpxgBINw1ocpyXNgWcQhb5C
9FZpjt3Y5OPgaFysPGj8TTS3TUMxdNUaiQ0sYRk7vg0q782vnZ6zRf3+a8MB
bKMNdRMQPaTmi++UTVw0YFH9lZ3yWgTGk+Kxs7N6n0oWo6FDQSJHWESquZ42
7dsE1RLVRTRIOSv3DXz9WrxHQ3ln7EL3xPSUG+cq+SJ2TnjZROFCdy86EeRT
5M7S60NemeQ7uFJUGbPPpK0262bFZPMKd7cyV26Z/VLu0QMJCti9858uPt+b
8H+z9x/oz59e/z8/vf30+hX++eLHs3fv7A/6xMWPH3569yr8Kbz58sP5+ev3
r/hl+DVLfjo/+x/s/b/34ePntx/en727N3TJi/Y2K4NWxewzkmJkhGKOPwXr
Y514R/lQbh9IytEbmH8OZut9869SEslZkBvlA47v1ECZqDkuwvbpMIdd1SyF
lg0qaMR4gluBIxe4NtWRyfvVlYMNgOW4oO3RKY0Z1JaRnD+ndccjRSqREln3
XxPmfdv/J4d3hQl+tYTQ7bRopGypBSR/xY6aWUmmzf/mEObb/qvCljenXxyK
agbFfl5s6ZjQNsK9OqvpBbdLHO4L9OSoLE5JOHTSaIFthl+LTneQXkrZSKkz
Gab9LphyNN0bol63mHqYfVdTHGiDqcg2bEdG4AETcOQrd7MK4QeLHxw0CTux
CYHFoW4JAon1abiEbrFsFi4W6htsC0dY96UoZnE6yT6VwOLq/COocKcPJCnw
F97vhmTx6K6L+jPNBnPAm0FbSRoPPI6ukAroFq+jyibTw4D0/H0gq76M3Wfe
PbfBw6hJCV6vxQqNP24KzW2uM9RxxXnmPGao2cJySSHvyauWkVcNlITzt+ev
0UMCtv9mhvJ2P/Rhkx4EKt8Wd5vKz8wjlsuRkNvRuYw5bw5O81N5VXVlm54h
nwZnpzJzGhxIqouKmoZXSgbNSJyrbxSFWDwIu2n50p43i0AoPt8a2UTKqjSt
eZD9THnO+FGgQdBP0asTTp6tbEuQZgtwwZEPpayjo7c16X7CFkzsxYoyBsy2
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
O+e04ImZInQ5s4N8KrHxSHJ9wnVGdE/mRK2kfVxC/D6zfMODxb1w02vJWDi3
7YTZ/GrRTEwDFdHBMBuNdKscxRxZcxm6kqk8uBAIZ7N+lE1WN3xwssIl/x0m
SxkeCe/Ck2a8JgLuJoJJ7N/ZPzSBi+L5BAkdnQirFlPpxHLOKm8Y3uYKBHgd
KB/hlgMUKoLXe/soZYq0W/0WD0Lx1iWj3/8fWK8Hh9bLYlRZeIpDU7wiCXCQ
yEa57QmZYgSLmRUMWz05Koj+ga55RIAqreHrUwzGVT5NfFuwXOimFBg5s2oh
LAI3Ju5HpVY9PyHYHY/wf1M3q0N+6O6Ljm6O1ILUHk7q9TgkFdZu4O3D6SAp
4ZMYa77p+IE1PY85+ugh/CeuAZQZonISwOHj7zwHDI+mT1EnnBRJa/y9JvA3
DD4xrROM1U0ZoY/JJPNo3X4d6dhbd+/46o/by7uozP4l2/nzwxv6sEKXeVEc
aGLUgusdFAgedTBIWgltMzK5L1mrYCVCgKnHj3jIwhZHObUkom3qX8yCHixL
txkQEQt3yHyAjYMC+jj5H6/jbymfPazo5/M546XZAE7BpeQ89MWdM12at9Xd
VGrqpntdyVEVaNmpu0RWzFVThoXa9bGKHGymPF5iBB2y+lAhRTWz+kuavJKv
rjebvWJuXXy4S0ZzcnT0yy+/FJft0aefynhpWHZRH0l0bxv0ETMBxPsFKvn3
cPCL4qt2xyoo/Ce16wj/C+8KAmQgflOSIaawmv12WXV803n11/FNLGL4tgNS
piiekWjDnfE+En+4rSsvt6jPDFfMit9ScRM5WvpDtcZT6PEvaDdwYDlMLD0F
sp8fRBstTVBksp8f80W1+ZbPkX8My0F+SK4OgPGn7r8izvkhL6p344ewDMVI
okaw+0WXHP18RMsaFgSwWOrbuN2j6V9pNAmTJGsW56cHwELBLgjrhcW2p37/
g627vs4kHVfYdFXYqY3khOkPWVvUIzLlizvbuH/ujh5y565+PPZUHyyf1ZX8
g2P324XN9v94VBwfF//2b+FvNnn8txO+nP6HMRXHfhzHhx82vlGmOLnnQy/T
ZcVN6+qiDKp1fJm0w8RVP4dFDCcUvbBQHjKaYHOFOKDTyz6Q+aIc9LJ3JfK0
bVxl5RTdxunjF8+QgkHI8kfwHoTJkoqDR8W9f7/z7ZOvTl8Xnxbfnb+6+6Mm
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

-->

</rfc>
