<?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.31 (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-00" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="DKIM2 Milter Profile">A Deployment Profile for DKIM2 via Milter Interface</title>
    <seriesInfo name="Internet-Draft" value="draft-moccia-dkim2-deployment-profile-00"/>
    <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="March" day="26"/>
    <area>art</area>
    <workgroup>dkim</workgroup>
    <keyword>dkim2</keyword>
    <keyword>milter</keyword>
    <keyword>dmarc</keyword>
    <keyword>gdpr</keyword>
    <keyword>privacy</keyword>
    <abstract>
      <?line 64?>

<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>
    </abstract>
  </front>
  <middle>
    <?line 68?>

<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.clayton-dkim2-spec"/> and <xref target="I-D.ietf-dkim-dkim2-header"/> 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>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.clayton-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 algorithm defined in <xref target="I-D.clayton-dkim2-spec"/> Section 11.3 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.</t>
        </dd>
      </dl>
      <t>This document inherits definitions from <xref target="I-D.clayton-dkim2-spec"/> and <xref target="I-D.ietf-dkim-dkim2-header"/>. Where terms are used without definition in this document, the definitions in those documents 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.clayton-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 defined in <xref target="I-D.clayton-dkim2-spec"/> Section 11.3 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.</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 MAY use a submission-phase header convention such as X-BCC: which the outbound milter reads and strips before external transmission. 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>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>
        </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*DIGIT
                 ; OPTIONAL - absent when value fits in single header

dkim2-mod-value  = *(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*DIGIT
                 ; hop sequence number, starts at 1
dkim2-rcpt-index = "v=" 1*DIGIT
                 ; recipient sequence number for DKIM2-Sig-rt
                 ; starts at 1, increments per recipient at same hop
dkim2-mod-seq    = "seq=" 1*DIGIT
                 ; modification sequence number for DKIM2-Mod

; 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.clayton-dkim2-spec]

dkim2-sig-tag-i  = %x69 "=" 1*DIGIT
                 ; 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*DIGIT
                 ; 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. The maximum sequence number is 50 as defined in <xref target="I-D.ietf-dkim-dkim2-header"/>.</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.clayton-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.clayton-dkim2-spec"/>.</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>
        </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>
        </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>
        </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.clayton-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>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>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>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.clayton-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>
      </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.</t>
          <t>The following limits MUST be enforced by all DKIM2-extended implementations:</t>
          <t>Maximum recipe object count - 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 - 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 - 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.clayton-dkim2-spec"/>, implementations SHOULD enforce a maximum individual recipe size of 64KB and a maximum total Message-Instance header size of 256KB. These values are conservative estimates pending operational data from deployments.</t>
          <t>Maximum header line count - 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>
      <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.clayton-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.</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: when a mailing list redistributes a message without modifying the From: header, SPF fails because the list server IP is not in the original sender's SPF record and DKIM alignment fails because the list's signing domain differs from the From: domain. 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 B - list with From: rewriting: 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.</t>
        <t>Body recipes do not resolve this problem. 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 already does empirically with ARC - to make an informed trust decision without requiring From: rewriting or body reconstruction. DKIM2-core provides the cryptographic substrate necessary for a future DMARC2 or an evolved DMARC policy evaluation that recognizes transitive trust through a verified Chain of Custody.</t>
        <t>This allows receivers that evaluate DKIM2 chain of custody - as Microsoft and Google already do empirically with ARC - to make an informed trust decision without requiring From: rewriting or body reconstruction. Critically, it achieves this without requiring new DNS records or SMTP capabilities.</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 a future DMARC2 or an evolved DMARC policy evaluation that recognizes transitive trust through a verified Chain of Custody. The empirical evidence from current ARC deployment demonstrates that the trust model is sound and already accepted by major providers in practice.</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.clayton-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>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 and a DKIM2-extended node adds full body recipe functionality on top of the core. Activating DKIM2-extended adds capabilities; not activating it does not degrade the core functionality in any way. This clean separation is the architectural property that makes DKIM2 deployable 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>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>
      <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 SHOULD reject signatures with timestamps significantly in the future, which may indicate replay of pre-generated signatures. The acceptable clock skew is implementation-defined. Operators should balance two competing concerns: a tight skew window reduces the window for pre-generated replay attacks but may cause legitimate rejections due to clock synchronization differences between sending and receiving systems; a loose skew window accommodates clock differences but increases the window available for replay attacks. NTP-synchronized infrastructure typically maintains clock accuracy within seconds, making a skew window of a few minutes sufficient for most deployments.</t>
        <t>Signatures with timestamps significantly in the past MAY be treated with additional suspicion as potential replays, subject to local policy. The appropriate age threshold depends on the deployment context - mailing list redistribution may legitimately introduce delays of hours or days and operators with mailing list traffic in their delivery paths should configure age thresholds accordingly. This is consistent with operational experience from DKIM1 deployments, where signature expiry timestamps are often set generously or ignored precisely because legitimate redistribution paths introduce unpredictable delays.</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"/>.</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: informational</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.</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.clayton-dkim2-spec">
          <front>
            <title>DomainKeys Identified Mail Signatures v2 (DKIM2)</title>
            <author fullname="Richard Clayton" initials="R." surname="Clayton">
              <organization>Yahoo</organization>
            </author>
            <author fullname="Wei Chuang" initials="W." surname="Chuang">
              <organization>Google</organization>
            </author>
            <author fullname="Bron Gondwana" initials="B." surname="Gondwana">
              <organization>Fastmail Pty Ltd</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   DomainKeys Identified Mail v2 (DKIM2) permits a person, role, or
   organization that owns a signing domain to document that it has
   handled an email message by associating their domain with the
   message.  This is achieved by providing a hash value that has been
   calculated on the current contents of the message and then applying a
   cryptographic signature that covers the hash values and other details
   about the transmission of the message.  Verification is performed by
   querying an entry within the signing domain's DNS space to retrieve
   an appropriate public key.  As a message is transferred from author
   to recipient systems that alter the body or header fields will
   provide details of their changes and calculate new hash values.
   Further signatures will be added to provide a validatable "chain".
   This permits validators to identify the nature of changes made by
   intermediaries and apply a reputation to the systems that made
   changed.  DKIM2 also allows recipients to detect when messages have
   been unexpectedly "replayed" and will ensure that Delivery Status
   Notifications are only sent to entities that were involved in the
   transmission of a message.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-clayton-dkim2-spec-08"/>
        </reference>
        <reference anchor="I-D.ietf-dkim-dkim2-header">
          <front>
            <title>DKIM2 Header Definitions</title>
            <author fullname="Bron Gondwana" initials="B." surname="Gondwana">
              <organization>Fastmail</organization>
            </author>
            <author fullname="Richard Clayton" initials="R." surname="Clayton">
              <organization>Yahoo</organization>
            </author>
            <author fullname="Wei Chuang" initials="W." surname="Chuang">
              <organization>Google</organization>
            </author>
            <date day="3" month="November" year="2025"/>
            <abstract>
              <t>   This document describes the email header fields defined for DKIM2,
   and how they work togther to provide the required properties.

   This is an early draft, a work in progress.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dkim-dkim2-header-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 fullname="Wei Chuang" initials="W." surname="Chuang">
              <organization>Google, Inc.</organization>
            </author>
            <author fullname="Bron Gondwana" initials="B." surname="Gondwana">
              <organization>Fastmail Pty Ltd</organization>
            </author>
            <date day="20" month="February" year="2024"/>
            <abstract>
              <t>   DKIM (RFC6376) is an IETF standard for the cryptographic protocol to
   authenticate email at the domain level and protect the integrity of
   messages during transit.  Section 8.6 defines a vulnerability called
   DKIM Replay as a spam message sent through a SMTP MTA DKIM signer,
   that then is sent to many more recipients, leveraging the reputation
   of the signer.  We propose a replay resistant cryptographic based
   protocol that discloses all SMTP recipients and signs them, allowing
   a receiver or any third party to verify that the message went to the
   intended recipient.  If not then then potentially the message is
   replayed.  Moreover it leverages ARC (RFC8617) and sender defined
   forwarding path to build a "chain of custody" that accurately defines
   the SMTP forwarding path of the message.  This also allows the
   protocol to detect DKIM and ARC replay attacks and other attacks.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-chuang-replay-resistant-arc-11"/>
        </reference>
        <reference anchor="I-D.adams-arc-experiment-conclusion">
          <front>
            <title>Concluding the ARC Experiment</title>
            <author fullname="J. Trent Adams" initials="J. T." surname="Adams">
              <organization>Proofpoint</organization>
            </author>
            <author fullname="John R. Levine" initials="J. R." surname="Levine">
              <organization>Taughannock Networks</organization>
            </author>
            <date day="4" month="December" year="2025"/>
            <abstract>
              <t>   This document calls for a conclusion to the experiment defined by
   “The Authenticated Received Chain (ARC) Protocol,” (RFC8617) and
   recommends that ARC no longer be deployed or relied upon between
   disparate senders and receivers.  The document summarizes what ARC
   set out to do, reports on operational experience, and explains how
   the experience gained during the experiment is being incorporated
   into the proposed DKIM2 work as the successor to DomainKeys
   Identified Mail (DKIM).  To avoid any future confusion, it is
   therefore requested that ARC (RFC8617) be marked “Obsolete” by the
   publication of this Internet-Draft.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-adams-arc-experiment-conclusion-01"/>
        </reference>
        <reference anchor="I-D.ietf-dkim-dkim2-motivation">
          <front>
            <title>DKIM2 - signing the source and destination of every email</title>
            <author fullname="Bron Gondwana" initials="B." surname="Gondwana">
              <organization>Fastmail</organization>
            </author>
            <author fullname="Richard Clayton" initials="R." surname="Clayton">
              <organization>Yahoo</organization>
            </author>
            <author fullname="Wei Chuang" initials="W." surname="Chuang">
              <organization>Google</organization>
            </author>
            <date day="2" month="November" year="2025"/>
            <abstract>
              <t>   This memo provides a rationale for building a new email
   accountability mechanism, based on the lessons learned from
   implementing the ARC experiment from RFC 8617 and other experiences
   from email system operators.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dkim-dkim2-motivation-02"/>
        </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>
      </references>
    </references>
    <?line 1033?>

<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>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="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 operational perspectives were provided by Philip Guenther and Steffen Nurpmeso, whose feedback on security gateway requirements and body integrity was instrumental in defining the trade-offs described in this document. The author also thanks John Levine, Richard Clayton and R. Latimer for their early engagement with the DKIM2 framework requirements.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
ywEA

-->

</rfc>
