<?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.35 (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-02" 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-02"/>
    <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="April" day="18"/>
    <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 103?>

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

<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). These fields use the indexed header pattern already deployed at scale in ARC, where ARC-Seal, ARC-Message-Signature and ARC-Authentication-Results use i= instance numbers to build a verifiable chain across multiple hops. Every milter that implements ARC already parses and generates headers with i= indexing. DKIM2-Sig-mf and DKIM2-Sig-rt are a natural extension of this existing pattern, requiring no new parsing infrastructure.</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>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 - one per BCC recipient - 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. The DKIM2-Sig-rt field for each separate transaction carries only the address of that specific BCC recipient.</t>
          <t>Operators that need to communicate BCC status from the MUA to the signing system SHOULD use a submission-phase header convention such as X-BCC: which the outbound milter reads and strips before external transmission. The X-BCC: header MUST be stripped by the outbound milter before transmission and MUST NOT appear in messages delivered to external recipients. This allows the milter to identify which RCPT TO addresses are BCC and generate separate transactions accordingly, without requiring MTA core modifications.</t>
          <t>Including multiple BCC recipients in a single SMTP transaction with all addresses listed in DKIM2-Sig-rt would reveal BCC recipient addresses in the signed headers, which are visible to all recipients of the message and to any archiving system that receives it. This directly violates the privacy requirement of BCC as defined in <xref target="RFC5322"/> Section 3.6.3 and MUST NOT be done.</t>
          <t>In deployments where no BCC signaling mechanism is available, outbound milters MUST treat each RCPT TO address as a separate SMTP transaction. This pessimistic but safe default ensures that BCC recipients are never inadvertently exposed through DKIM2-Sig-rt headers, at the cost of generating one transaction per recipient for all messages.</t>
          <t>It should be noted that the current DKIM2 specification mandates that BCC recipients MUST NOT be revealed to other recipients but provides no mechanism by which the signing system can distinguish BCC recipients from To: and Cc: recipients at the SMTP level. The SMTP envelope does not carry the BCC distinction explicitly - all recipients appear as RCPT TO regardless of their role. BCC recipients can only be identified by comparing the RCPT TO list against the To: and Cc: header fields, which requires content parsing that MTAs traditionally avoid. The X-BCC submission header convention described above addresses this gap for deployments where the MUA and MTA can be configured to cooperate. The working group should consider defining a normative mechanism for this purpose.</t>
          <t>Injecting BCC messages through a milter, though technically possible, adds substantial operational overhead to environments using privilege separation and remains unnecessary for the DKIM2-core architecture.</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>
        </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
tag-list         = tag-spec *( ";" tag-spec ) [ ";" ]
tag-spec         = tag-name "=" tag-value
tag-name         = ALPHA *( ALPHA / DIGIT / "_" )
tag-value        = *( %x21-3A / %x3C-7E )
]]></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>
        <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>
          <t>This approach differs deliberately from the sorting requirement in <xref target="I-D.ietf-dkim-dkim2-spec"/>, which mandates alphabetical ordering of header field names and bottom-up ordering for duplicates before computing the header hash - an O(N log N) operation that is both computationally more expensive than the O(N) index-based approach and fragile in the presence of intermediaries that reorder headers during transit.</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. This is not a theoretical concern: interoperability testing during IETF hackathon activities in March 2026 confirmed failures between independent implementations attributable to disagreements on header ordering. DKIM2-Mod's explicit seq= indexing eliminates this category of failure entirely by making the declared order the canonical order, independent of physical position.</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:</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 conventions such as X-BCC handling.</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. 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.</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>
      </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>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 - software such as Mailman and Sympa supports configurable MIME type removal as an active deployment option. When a list policy removes attachments based on type or size, the list manager MUST use a null recipe because the removed content should not be reconstructed downstream. 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. DKIM2-core is a functional superset of ARC - it provides the same modification attribution and trust chain capabilities plus cryptographic envelope binding. 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.</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 - 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>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>
        </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.</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="March"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dkim-dkim2-spec-00"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="Todd">
              <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>
      </references>
    </references>
    <?line 1198?>

<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:
H4sIAAAAAAAAA+y963Lc2JUu+J9PgVDHCUvdiZRIlVRVrNEJU7cqtUVJI6rs
7uhwOJCZyCRKmUAaQJJKd9ivdf7Pk82677U3kCRV9ukzHTH+4RJJAPu29rqv
b+V5ftRX/bo8ze6dZS/L7brZb8q6zz60zbJal9myabOXv3tzfpJdVUV2Xq37
ss3e1PD/y2Je3jsqZrO2vIK3+aHhF+4dLZp5XWxghEVbLPt808znVZEvPleb
k3xhz+dbfj5/dHI0L/py1bT706yql81RtW1Ps77ddf3Jo0ffw9+LtixOs7Pt
dl3Bo1VTd1lRL7KPZbHOP1Wb8ui6aT+v2ma3PaXJZ3+An6t6lf2Ivzv6XO7h
gcVp9h806Um2oWVNsnJTVOus2PWXMCH59CQLc8xkjn88Oup6GPFPxbqpYWH7
sjvaVqdHWdY3c/4xy7qm7dty2dnP+43/cd5stsW8t7/uZvabujk6wkk0LX4y
h02At34/zc5p5+BXWcYb+vuq75u2avxfmnZV1NVfaO6n2ZtPz6dVT3+gxZ1m
V1M+gN9W/Qz/dFQ37QaevipxsI+vX5wcH38v/3z85MmJ/vO7p9/IP795+s13
8s8nJ4/1t08enxyHf+prTx9/+1T/GV777uSJDvHd0+Nv8Z9v8pfTquyXRBdC
HN22nJ/S3JVEXzawiPp35b7L3izwjJZVucjO8dQuqlVd9Lu27LKrk+w+neyD
e/R22Ev8n+znx2n2Yl3s+6aOf/8H+P3lrqhX8a+fT7Mfm3pxXdS8zQsg0dPs
5NHJ0/zRY/pNV7ZV2SHB6kh0Teqyz18i4Sv9j60yf/To6AhfjY/iyZPvdcue
fv/tY92nOc0vb4Euiz38p6uQGvu8aJPt+khPwL2QJ7KzQNol3pd5CYO1sGDY
1Rv2Kt4TW/o3X7XuG2adHx/L0opFsenoV+WXLXyYOMO8qefrXYcEHS3vD22x
zXfbrFlmsKzs7OOL7JW9dcNyPk2zMxwn/u2/TrO35VVVl4PzPf6qdd6yBP7c
GLlvGjh6vrcx0SMH+33Z4tvZCdx1fezmJX5qFot4KU/+LjoN04PXcE75i5/O
Pn569TGe7ZtXn16PMF2ksRaG4Tn3RbsqYaTLvt92pw8fwhSLvi3mn8uWtmUK
XOzh9eohjvywmDW7/uHorfvx5YePKcmvdmuaZXb/1c8P4Nnjpw+ffvt9dv/H
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
1yQO2dyInA3zhimCddK9KEhbsMlpu5yq1KirAXVe/LjKVXWfBOfZ2RYZUPUl
ew4nyuYX3ODiCzw5L+qG/EzCk2nKHFIqldfC0lBEkuvIbKMOrHHcJLyrtdN1
xpwn8zVJ5DbyfxCDysc9whXyAvRSAVHgtb70UpzZL+15zBTUcUhqTAccbr1A
xRTkBLxyyZ4iZi0HV2+qpHqr8Igkp6YqRam9AjUYqAz4F51AvC+nGfq/n34D
d6Mu8+tqAaK9LXNVayaswHwp8L5MlKmQD62jOyQy9sD8YJvxxkT2+RYlMjlu
maIPvGqUYyZkIB0mY7H1SNON/JoDfYvOZMzFwNvL3sA1Ollv8umoAu2d5rSY
umf1dV3NmBAXaEPR1SRvbeDZQAkYEUQXG1AdCV2YryMzFhaF+wLYfaZYMDNB
a011XZW8eBbBi9WWsX/oQjxP37Be+JJ1yA+wi03XbC/3I+r4alctSmEkbUku
0Br2Y61WHHAbjEQ7cywElUj3Uh9kNIHj6QlM4YwY45Wo954er1AfYjMj7Dub
QfQdR0awwI70BPXMsE4NxIK/xAUiVTUck0HjxWKPokpNs3cNej9WyYfNE2Nv
mLMQtQPSCDI0qMS8Ak2valrUedflCqMaZCDRJtn1DOKGZfa2oJAC/xA8K+wx
UnWHWBMQWC9UvpngRZyjmAf+UvWiJ6JaugcVEqloVVNEwG8JTBr0RXHWsqTg
8NeWTF29A6SGwavjegr+l83mm8NQxcEglC5quS5WOSqwdOwkHzGQwOmG+bJq
gbbzccVTJu8jdbE/HNluWaOqFE0v4rhMXN1uDgpyh36asUxA0+xSxyJbX2Qc
8ZBCq+YBFV13GAIvKCbNS7rZ4xiOSo1f5A2gFRAZkWlGXEXtoxxJoUo4UOLf
uWxQNNGMN8UX0Df/YsHdZmZayTLslHOEk7OpJaqHJ4KFc+iCT3h6qdEI5BPs
NCIqb6qJ4oBcMbvH23RPLVvKshiGVcnwN/uYFE8QX6jfGY0G+mAphmxbzQe9
uHYa4yeRbiWsiobvMmH9dN1acgqxBoW3cZnSLm29bEZHPrmOXSoqqlCzpDBf
tti1KtbSENhU03JhH3YdewtYiIoPJA3UOjtLb08DYqeo+2wQ8KYtuuky8Knp
J+m3/X6rPqvU0Zm7oGZPMmxRbpiUyQHJooNyyC5h3aCckegjuxlIHihjVYoR
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
5OFtlnuwm3HMRRyx1dj2fI5fZf82vIY3j49JPdXMvYES6VUrTnIQ8LBE4cCB
cm5OjcreD54QLnE3DD4d1ofLSXKJrV8wBy/oPBf3/3D/MwqC+U2niCCrxLEa
AnvlcDpPnr15XpyJZRiKNz2xP6nFnE3PDmVjOGVvTPrckcJYz4OHD++HF3Dn
8ZPXxef37+aYIcszRFeHvjo95cOkijYV50aGxPm5D+ucL0WhtErMR8hNNJww
BdBII48umi5SWLrgs6rshyjsF3G9sGDHj+NTZLh0Xkz9Y8x7/VfA35cOK/EK
auGACwoRWDn5fiTKpmega9PL4c+tOhY9KPEEKa0XwN9Y4SsGG+WKU9yHp9DF
hqoG+12pjRjaac841jbFhfXVCLXBZUr/EvW87dtdScMt3KjbXNoNSZ7ziUlJ
peD427j9t37OrSHaNK7PUQ+/z5YxKlUdTXYPMIhYYOBUlr3pOu7SrcJubHAA
vTKmx9mI2ysTyZe+En1jl1l5u54M6eeQQhuMJzN73Frt1jfKrR9Kd+tLs8jF
yYRHRYH4wFuedO1c0Ut/XOto3kMZpi7xxpJj4D34cMCT/0827WOEBX+1FyVP
YchVB894ldbhCLVNEfMcafq+BNPV+36Dw+bVzOuut5dY9xVVGVZgb45eilPH
MwlMHcZAOMslRb9yUsp0A/5opkVWv1sGDego2aaOuVE+4zlk4MHSRdWYF4JM
AJhlkKNEXCEClGR2FbMqJk3ddMvwDdxepsSK4z4az12TANdg10Atg9yvaT7J
urjBQ+tv4Lmf1hc1yTC9IH9PcoTh1Nx5+uLYgcaoEfe2qjbCwsAR4sTNSCU/
ZH1z8MkwrdlKpvnDel/WSwoq46JdVVxskn0vXSDRYZWf2gpgdaBpsqr3dx92
zaRkiL1oHeLD3DWG06TqIvuLcwFS6i37i5zqOlietShAVyRjX1UoeVSlgB7w
gimd2kHhrhMdG5yV3Dz4ir07v3taGKu8g/fieLziyYy3OyUzeiYU3KgEQRY4
f2Iql9iZSwE2Q/3XCqxMWm5tu1uN361nL2UemRidhgZyxEyoeCeDzBqm3IsX
gJwTS2gKI+EL5EzzE6XyNZkurVcQZK8M66tJn6ZBERwXlnVDjBpiRmc5J19M
uTXI5ZLSmC0tkTrKjH5icY7zVeBH4mmihJqa8QU2wMZ3QBHeJkbbCZo10UeW
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
J3qAFN6l++u8ryqNwAkoBhSfS4Xi6vSrzZYXmqA3a+Q1iYLJQo70AJuaCLKg
qOYXkiukH/2wUWhA7wj/OXVDvibknY/cl9axaLYGJg6Dhfb0dTuXxMxemVAC
d2eehJYI3ktr+0NxoHxfX+2uTKMEY+wtUz2zrWTiDRrr1CyMf4gqrUK82d7s
q5LHfSQQe858rG7rRNW0NFtnY1HDrEiFy1SZqd5ai81L+PhhhBOVTZHghb6O
BH7YdN25Th+29miUlfesaz19o4uC500pHtNKoGBay4shp3YbBfuzpLKmFxik
rUOu/WoJZhRs33CwbSt3lz8xSSerQeuuKp6n4L/RwP7xvxSqsMs0W0RURuQa
IikL2ZQrGWemhRbkqsFVgu2hgk9ZAyXj74zH9aaAfWLb00lusBFIwOHPjSel
zEBzTGUDmFPVNEQ+vKJiAREE2k/OqP7EkUcTcSm8oUZrSHBld/RoZP9y175V
lB/gzPz+6UV/u4ljL/wXtpGOvzC8qZ1EjuD1YvVJZpAImWHHgmGqhl5aWSBO
OCVDM0hjq5LnOSz8IWaRJCDA8BZQOr5uI7OLWptxdNHesosZJU4Yfri1KSDw
QjBsXi5IQ1CGhGf+DqcS6IC98oPM3WgCgcTqQwvifztuZPZWPLhvvsrWd1ac
VxCCAsiZKN9407IuBXG9jcegElkIbDMDrZotnEFPDU0s25RmqqXFLhdxagv8
ujZEpiwo9SF9dzNVu/IuzlyBzDH1SceMQcr4Eq+9fMBQAfLd8mPErr6LN6Wv
crJYz4ZHEL2OZruaYuvEtoAoS8d4TZTlz148Pzn719Nnf3725A0r5ir7pyrW
0EnOqSO6hE5pu5cddCaXf/PsxevntFSdonW4MhhMV9X3HWq6+OSTVy/fnLz8
9hl3hXeMytY9Vi673kKtVRO27U+cpFKlubLYQn16lPZMBejzCEi4i1ygpLHh
/eJVFnzOrQP6nysu/GCQlw+8JZHd3z/s2v/z/3tiLdguCbUSA/IhXzuj5uuu
CXlLhdHXnfMfqY1a16QWn7qSGSYeMH2LFtqcGSWiV8gTvd/vfi0t+g963hjN
wN/kayZZRiTF2Wev63ZvxNPestttGsZyPzptH3L3/9+1/31dO9UWP5QORPKT
GQQOqBrl9R4j+ae41FTeqC14cs3wGHChGSQRuw8pijPocghSyMnzffGIizaS
+0GtDkAl3HjkqkrtZnKNkarmRgaGXAQwCdZDKXDm5rFj1uWluiI9zW+Od2CX
Zi42KwXKM/C8fhuvufeKqcAcjOa+AaD/c4Yq+YVJAzTEl6RJambKhI0unDMZ
7bLwMIIeLAH5D0YiGlg8wAhf4wQSRQEAgIjJuOIxdaLzSpqQ55Bli5PfiniS
35cW8kSxyKoMmgBq2JIgguMKy/PAJjlpCd3EHw6thM+KUe+8WO63eRk5DsqG
BvV5Rg/P4/TpsyqgvpZ4l07TpqspMgkXnq5g8iLql9LJelWo1il556TqwRZe
vcAcw/ywx47VDV2C0Q29mYpG4SnYGYywpDi5utrMS+pG971grCftSqWfY5MM
x+ED3PmRDT9hCTDYcOX0GFFJj/JcXAXZXySH3pdMNjX1W7EyZftWxpWczrY4
BEJTzrkalGAbTXytDraBAFWm7E3TPwBlYtCnY5VtHrVxwEsaqALtEH6f6wyv
acufVkO4zlugpokLa1djwkS4n1j0QzbFTBiFVuGwlxeabnC7wKIK06kQjp4B
XaKyNf6E+VMQ+LZrJYNQEmgZPuc51eWNyg60wrxNY0dMy3djAPRtOh8qMrWT
Ij48Z8l0rGApw2TlInlRTnhtKL6v6uLJ5a6UaI03ngNYMohSmIJkqSga6bc6
VcckVnNr5I8kJxRME274cR+u8FWIU67LtrR3zTuWW5Lraon5MiVltsFdGxlj
6TJ6HOqGAtgbnKr0C4jSIpJoMEDg9WXYXZviq114Fiordk7AjziAr8sbzyPu
5cxhK26ChScKnrZ4ues34eR2TEeXvAxGdWb9jpQTlet2yAq+Ltu2vKSr9m18
4YRaqbbhKNCOtj3fLcmY6ItVEvJCsSUJu3drtDXRjDmqjEXx5+6yLb6p3lEb
kqWtaoJzrYsnTXmz5WfCtOHbysQmgxWzw+vHmBJSX23N8dOdLopvSipM9iAI
jJfry3qwzR/fGcvoBWMeCb+Fy4T1wfoSGdd2K+NNEr4cN1z2DZvlbLeUGLE4
W1VtOGPdQHMXzLD8z7tVeOnl9U1+M4wa4wNptBqSGKw64BqtaSb5fS45Q0uh
NgNzTPD/i4N/B9mvFNiXXAIA

-->

</rfc>
