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

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

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

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

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

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

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

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


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

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

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

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

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

; Core rules imported from [RFC5234]
ALPHA            = %x41-5A / %x61-7A
DIGIT            = %x30-39
SP               = %x20
CRLF             = %x0D %x0A
VCHAR            = %x21-7E
WSP              = SP / %x09
]]></sourcecode>
          <t>The <tt>base64string</tt> production uses the standard base64 alphabet defined in <xref target="RFC4648"/>.</t>
        </section>
        <section anchor="dkim2-signature-envelope-tags">
          <name>DKIM2-Signature Envelope Tags</name>
          <sourcecode type="abnf"><![CDATA[
; DKIM2-Signature envelope tags
; These tags appear within the DKIM2-Signature header field
; as defined in [I-D.ietf-dkim-dkim2-spec]

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

dkim2-sig-tag-v  = %x76 "=" 1*3DIGIT
                 ; v= value sequence number
                 ; used in DKIM2-Sig-rt to distinguish
                 ; multiple recipients at the same hop
                 ; MUST start at 1 and increment by 1

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

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

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

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

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

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

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

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

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

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

// Processing requires:
// 1. Accumulate complete base64 value across folded lines
// 2. Decode base64 into buffer
// 3. Unmarshal JSON into map with interface{} values
// 4. Type-assert each value to determine if string or empty
// 5. Apply resource limits before processing
]]></sourcecode>
        <t>The DKIM2-Mod approach requires only the tag-value parser already present in every DKIM1 and ARC implementation. The JSON recipe approach requires base64 decoding, JSON unmarshaling with dynamic type handling and resource limit enforcement as discussed in Sections 4.3.1 and 7.3.</t>
      </section>
    </section>
    <section numbered="false" anchor="appendix-b-milter-implementation-notes-informative">
      <name>Appendix B. Milter Implementation Notes (Informative)</name>
      <t>The following describes the milter callback structure for a DKIM2-core implementation. The structure demonstrates that all mandatory DKIM2-core functionality is expressible within the standard milter interface without MTA core modifications. DKIM2-core requires two separate milter instances: an inbound milter for verification and an outbound milter for signing, positioned respectively first and last in the milter chain.</t>
      <section numbered="false" anchor="b1-inbound-milter-verification-path">
        <name>B.1 Inbound milter - verification path</name>
        <t><tt>dk2_connect</tt>, <tt>dk2_helo</tt> - connection-level callbacks. No DKIM2-specific processing.</t>
        <t><tt>dk2_envfrom</tt> - initializes the per-session private structure and resets all hash contexts and header reservoirs. Stores the MAIL FROM value for later verification against DKIM2-Sig-mf. On connection reuse (RSET), resets all per-message state without freeing the allocated structures.</t>
        <t><tt>dk2_envrcpt</tt> - called once per recipient. Appends each RCPT TO value to a per-session list for later verification against DKIM2-Sig-rt headers.</t>
        <t><tt>dk2_header</tt> - called once per header field. Accumulates each field in a dynamically allocated in-memory reservoir with DoS protection via a configurable maximum header count and a limit on total header memory. Includes removal of other spoofed internal headers arriving from external sources. When fr= fragmentation tags are present in DKIM2-Mod headers, accumulates fragments for reassembly at <tt>dk2_eom</tt>.</t>
        <t><tt>dk2_eoh</tt> - end of headers. For RSA-SHA256 implementations MAY initiate DNS key lookup as an optimization, reducing the time spent waiting at <tt>dk2_eom</tt>. Signing algorithms that require the complete input before verification, including Ed25519-SHA256 and future elliptic curve algorithms, defer all operations to <tt>dk2_eom</tt>.</t>
        <t><tt>dk2_body</tt> - called in chunks as the body arrives. Updates the body hash incrementally using relaxed or strict canonicalization as specified in the signature. This streaming approach means the milter never holds the message body in memory - only the hash context state is updated at each chunk. A message of arbitrary size imposes no additional memory cost beyond the fixed hash context.</t>
        <t><tt>dk2_eom</tt> - finalizes the body hash, fetches the public key via DNS, reconstructs the signed header input from the reservoir, adds the incomplete DKIM2-Signature header to the signed input, verifies the signature, checks DKIM2-Sig-mf against the stored MAIL FROM and checks each stored RCPT TO against a corresponding DKIM2-Sig-rt header. Verifies that each DKIM2-Mod declaration accurately reflects the modification declared at that hop. Returns SMFIS_REJECT on envelope mismatch, invalid signature or inconsistent modification declaration, SMFIS_TEMPFAIL on transient DNS error and SMFIS_CONTINUE on success.</t>
        <t><tt>dk2_abort</tt>, <tt>dk2_close</tt> - release all per-session resources including the header reservoir and hash contexts.</t>
      </section>
      <section numbered="false" anchor="b2-outbound-milter-signing-path">
        <name>B.2 Outbound milter - signing path</name>
        <t><tt>dk2_connect</tt>, <tt>dk2_helo</tt> - connection-level callbacks. No DKIM2-specific processing.</t>
        <t><tt>dk2_envfrom</tt> - initializes the per-session private structure. Stores the MAIL FROM value for construction of DKIM2-Sig-mf.</t>
        <t><tt>dk2_envrcpt</tt> - called once per recipient. Appends each RCPT TO value to a per-session list for construction of DKIM2-Sig-rt headers.</t>
        <t><tt>dk2_header</tt> - called once per header field. Accumulates the field in the reservoir. For RSA-SHA256 implementations, simultaneously updates the signed header digest incrementally, allowing a single-pass streaming implementation. Signing algorithms that require the complete input before signing, including Ed25519-SHA256 and future elliptic curve algorithms, accumulate only in the reservoir and reconstruct the signed header input in <tt>dk2_eom</tt>.</t>
        <t><tt>dk2_eoh</tt> - no DKIM2-specific processing for the outbound path.</t>
        <t><tt>dk2_body</tt> - called in chunks. Updates the body hash incrementally using relaxed or strict canonicalization as specified in the signature. This streaming approach means the milter never holds the message body in memory - only the hash context state is updated at each chunk. A message of arbitrary size imposes no additional memory cost beyond the fixed hash context.</t>
        <t><tt>dk2_eom</tt> - Finalizes the body hash, constructs DKIM2-Sig-mf with i= and addr= from the MAIL FROM value, constructs one DKIM2-Sig-rt per stored RCPT TO with incrementing v= values, validates any DKIM2-Mod headers present, adds the incomplete DKIM2-Signature header to the digest, finalizes and signs, then adds the complete DKIM2-Signature to the message. For signing algorithms that require the complete input before signing, including Ed25519-SHA256 and future elliptic curve algorithms, the complete signed header input is constructed from the reservoir at this stage and signed in a single operation.</t>
        <t><tt>dk2_abort</tt>, <tt>dk2_close</tt> - release all per-session resources.</t>
      </section>
      <section numbered="false" anchor="b3-stateless-design-confirmation">
        <name>B.3 Stateless design confirmation</name>
        <t>Both milter instances are fully stateless between sessions. The private structure allocated at <tt>dk2_connect</tt> carries the complete session state - envelope values, header reservoir and hash contexts - and is released at <tt>dk2_close</tt>. No shared storage between milter instances or between sessions is required at any point. No MTA core modifications are required.</t>
        <t>DKIM2-core header and body processing is fully streaming - no message content is buffered at any point. The header reservoir holds only header field names and values, not body content. This is a fundamental architectural difference from DKIM2-extended, which requires buffering body content for recipe generation.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The author would like to thank the participants of the IETF-DKIM mailing list for the rigorous technical exchange that motivated this document.</t>
      <t>Special thanks to Pete Resnick for his guidance on the IETF process, for encouraging the formalization of these concerns into an Internet-Draft and for clarifying the process by which any contributor may address the architectural and security implications of proposed standards.</t>
      <t>The author acknowledges Wei Chuang for his independent convergence on the importance of human-readable envelope binding fields and Bron Gondwana for the extensive debate regarding stateful delivery models.</t>
      <t>Valuable perspectives were provided by Philip Guenther on security gateway deployment requirements and by Steffen Nurpmeso on architectural simplification and attack surface reduction. Hannah Stern contributed detailed technical observations on base64 encoding complexity and recipe streaming limitations. John Levine and Richard Clayton are thanked for their participation in the working group discussion. R. Latimer is thanked for raising the perspective of MTA implementers and for drawing attention to the Alternate Submission Scenarios. Murray Kucherawy is thanked for his clarification on the scope of interface-level implementability in IETF protocol design.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9S963Lb2LUu+l9PgfKqXbETgrbkS3erj/dZ8qW7vWLZPpY6
ya5VqWyQBCm0SYABQMlMKuvZz7jPMSdAWe7krFO7f7RtiQTmdVy/8Y08z4/6
ql+Xp9m9s+xVuV03+01Z99mHtllW6zJbNm326vdvzk+y66rIzqt1X7bZmxr+
vyzm5b2jYjZry2v4Nn9o+IR7R4tmXhcbeMOiLZZ9vmnm86rIF5+qzUm+sM/n
W/58/ujJ0bzoy1XT7k+zql42R91utqm6rmrqy/0WnvPm9eUPR9W2Pc36dtf1
J48efffo5Khoy+I0O9tu1xV8Hz7cZUW9yD6WxTq/rDbl0U3Tflq1zW57SjPK
/gj/rupV9iP+7OhTuYcPLE6z/6SZTLINzXWSlZuiWmfFrr+CUcqjJ1kYeCYD
//PRUdfDG/9SrJsaRrkvu6NtdXqUZX0z539mWde0fVsuO/v3fuP/OW8222Le
2293M/tJ3Rwd4SCaFh+Zw8rAt/4wzc5pOeFHWcar/Ieq75u2avxvmnZV1NXf
aOywfpcvplVPv6DJnWbXU96Vf6/6Gf7qqG7aDXz6usSXffzh5cnx8Xfy18dP
n57oX7999kT++uTZk2/lr09PHutPnz4+OQ5/1a89e/zNM/1r+Nq3J0/1Fd8+
O/4G//omfzWtyn5Jh0VOTLct56c0dj23rxqYRP37ct9lbxa4R8uqXGTnuGsX
1aou+l1bdtn1SXafdvbBPfp2WEv8T9bz4zR7uS72fVPHP/8j/PxqV9Sr+Mcv
ptmPTb24KWpe5gWc29Ps5NHJs/zRU/pJV7ZV2eEp1jfR3anLPn+Ft0Evxdgs
czjUR/jVeCsef/f4qa7p0+909Z59981jXbI5DTVv4YgWe/ijq/Bg9nnRJiv3
kT4BV0Q+kZ2FU17i1ZmX8N4W5g4LfMuyxctjq/Dkq5bgllHnx8cytWJRbDr6
Ufl5Cw8myTFv6vl6h/Ihnt4f22Kb77ZZs8xgWtnZx5fZa/vWLdO5nGZn+J74
p/8xzd6W11VdDrb6+Kvm+YUp8OPGTv6mgVPAVzg+/yjM/lC2+O3sBK69fuz2
Kf5Utq38UEXHZbNYhJ/bFP+5oxyGDV/DseYvfzr7ePn6YzwLFOojchnPXguv
4bn0Rbsq4U1Xfb/tTh8+hCEWfVvMP5UtLdcUBN3Dm9VDfPPDYtbs+oeD3XoM
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
kM38tHDP1A+QGBcdDkJvq/pJMCsNBbv4bgtRtBbHaMRLvAUNdMypIGhBxDB+
UZB8QBMHlzdNLnP5wL/h6+e/HW+HVHxhalZHblDsS++6L9fNzUEPBtZ3aw6w
PAhzj2TjoigSBtNT7LARBanzrN3VVvPAViLuGazONHuvxRmSsZCSA5E+PqhE
ceA4fXH6L0xVJKbT/+G5ijzz2YrTgOShrAU/LBogu99EnBZ86q9LV5BNhIlP
rKb/iEEmye59nG/7y0Z/YocmSg38H5bJGAtwjyUv6GcY7k6j3ZM0lk9IjjiW
z7y5SeoDM+Nke4jaTTJChpivG9x0re3nHVLdLDeqkzIfx8KhjQ9xNOkBDpw+
jkniQPQ5JcZiBLvzR7itDyga8qLfXbhkBF4QOrpKiy0I722P8l2OKxrGyuD1
PM6UBeN8vLPHhBWrhVqw9SXcWoQvFFWvNWU4JuptxEn7wl2nIR0nTy/xm5Bn
K7RRHzPShfp4WTKSEV/JSyBd0QKQMvB4ImmRDmQi5mx0W0dZNFzM5Ifb8pZx
KRzbqwQDrTolf5qVLrfplyUB69g84Ti83/W3qAQ69tqpDS7NxEpb4A2ehVDV
Dil45jQsjHpQSBgEOlYIjdHeC9ZY3YSBx8KPFM3lmACsGPfISAXJ0Y6PAp7w
OobYRJITTYmvkJQH2xGxhzzbO9Zqg0qURbtOkWdHRy8VDtd9QWzSJRrAhGJX
SaiuJPla68ZHJRwREZWAtQiaMiroPb2EX+a0c+/HrxFz45KSvB3JDmJcSo+o
VA6b3miSs5t8T5+qX8szLfq1fnTyRY1DGrzPzDRxk5QMTMY7ZrEpCFrj83CN
rJiUGbra6yjHNZ5ioy64vqZyvY8hQcTeO7Joguh+d3B19AO/O7bidR0r2qe7
miuCkq65B3ov+6YmSeurhKqF2zlY2lMShKHF5yvDMCW0umeRo4kO2pyktFkI
6howGSmtYcmdSFOMqo4lIrQnWo/IL4jrqewmx32Y/VcsVx3NalYS85caa9GY
ik+lb4SsvWQofxw3d+VdM54zm/4V61zEA7Y9Ytvi3oAOyXg6egwGiSSPnr7R
hLbQ1zMPA2kZTbwk/XYlOaTJYzitczjgJZW9dFzY1TNKufPboktOJ1FvHZnK
BgGdYWqwoRw8ef09sWiL8u2iM1aYEOMqCzysGrTnT9Jk8biRHAJT2+5vYi/Q
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
JYMFiFk5+k1qHKXp05jgQJKpE46N8WkL11x2f5juFARlph3zmB+JinUYce8b
oEqtNKnSgKSJqFrcSfgGTgJddjxOVOoq80ZJ9QY++8aB5H9dDe4YL84d6nLv
UInL3ixTEQhjLO9vR3X760RwREeTh9waBoW0zogtRDzCFwPYB329LTFJUWY/
f3yrcA07xPQzPCYz3xnPBXPG5ojtWgbYE30XRVjCRfNh8XGoSPwium+tQHGM
7JXeicAVjYHIyxZoIYZxO9s/ZgPh+k3sRKSbGZAYPKaFcRO/5XZ+HDEiESD9
176ZVf1D6moYWh9qo4/wA1xMnQt8kUPHXB6OFxtecD4Kt1Heh2obrRmSjUhh
i01OiPJDR03LpaLkIKAfmeYa2tYqSap05QY/+MS/eNCU/GhTbcq/sINhcGes
8YiQ85xXxpY+gfQUfU1xcDk4oS0YfZp3Koz+oTfrMA5v1BNI0boJesyMfQEm
mwmjjGue+2Qr9iBuhLRnTABn2ZleqZg9CdxKGgxhwLqD2R0QI3B1OF+rYQst
NwhcfxM9zqQJRLJQF0LWE1oKS6eBuFYaCurAOqNAnEcFMbBqqxXC8lQGc5u+
DgOpe4W5jCVdoyyr84mDzqA6TlPo0qR0bH3UVKMbpt3hqW93qfWPxQa7y6to
0+6oYjNjEtsSXsxw1FptAJ0bA9xxJx18olFapfLZx7F9gkrYkPTETIS0TQ6C
9aHTiEOBvA0o0vYjspcLXZMCln6clcFo1xwcyzRhkPFzDGtotskd44NcBU7i
cxQ+BaIwbqzeB5oALkGqQluq0SoEjxXjZfR6s1CQJNEqS/dnZeCoGx8QGGNN
cgGK2dVz8YyNejQqv/O29JtlZOOz5eCKg1l+8/woeoUFIxyG5KLdtLYs2rtJ
ltZ0Oh6iJHxFeU1n1FpT1mSiGKZEM7a0Xt7swkgr5qhxvRwAvlPKIJaH8iw6
4lXdtOJ4RsreFVh02tLIKAnZzkdnRv3LMU9H+0VQDnjOgc/xLGYkUNcYQZ8X
ahQHC1MZ/CjCQcwNdwIXJAf4cE50vAVyOEVmUlLtqzW6QZcdp+8aiVsFZiD/
32IKieSsZuVPDwdl7tpb+a7tk0Oyrbulf3JkaQwpOseoH7mXBLMdOO4bCrVq
QI+24zfd4c7buI+jnrKXV3giZ3yQFxgOojC3kOeQ6OHlJf86WxbXjGMoLFaE
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
vqtXYenvNsZOIYg8OtDtWczsJLQcM9ki8+Uu+IRTLgOE/9BNwhKiTRO2h/CN
iAwRzh3QSbMrIQCfwdFEmZtFuS3vczN7uW3uU7e7edHhEtOzqtS2//CNs9PX
L5NKbB+V1Jgambx0tY1hCb8r+bBniYLX0lTKy8gwNk5vOuMkCSeHUJu0jf7r
a4KidEUuIFLG3hmcOJqIas8FZS8NBQk6OfUdLgTDJlUdHksBJ0U2m5p7G9vm
EhoMfqnqwDJVqfX1D1YwY6m4qZbmSeKqs2qlQOOmeCkA5CN9b3iUNZX32os+
p4amqdKaRazZIANVblg6S1AqK8/DhDQfjxff5RMQSOgBF4Km0vSs4Ja50Rol
pmfUpcO6LNt3fkKzTnE4cuVcoebDeknMFzcpoAWFZX1kpV09Ojj4+9//Xr0v
6ZkORsfkKITQt78qyvvbrpx2y/L23XtfFfP7gqD7VP771UFRLO5f4vokWv9V
0d2n4+k2sRbe++wu/X15X8IklM+O4g/ri/gD3zR8uijkl6nLO2VIcndklKPS
m2w9uEcyV9N6wZchBxt24Grat0f2Dym4H4V/0kwfUdx/RE0OU4FVxoeID0bv
cb68/+9Pb33+YHP56Punn1dv/v32X3/54v3dRfXFl3959PJPp/3pSfXy6fGt
Z7+8fPjk3X36ysXy/vzJ029+fv8vJ5/OV398++Wtf/m6XDx+//n59/Pn/7L6
5c2rzYPvXl6cf/P2tP723/CV8/s/zGazH79igxNHlibs4MBmEmd2yudjtWo/
3JPCj7f7ycV114037bAaPQV5osAvODOd1uJqPlZKg4q7ilyl5mEEAHohsnBq
QnljXF4dGT0ubTiX406KdgIxQUCcBUtcKagb4oFUw9JVpN5azztUZWzk0PUg
bwyn1sbJU/bEvFy4SL3ZrdyxN7Izud3Tao1AERqmbR0sB5AZrFYAeBR9aC7R
nwmZMdWUBB3RvhWP3wuM/kUDtM7LCLGCJyiosLeURdIvfWD9MBJvGjGldRki
fyBzTbUsWRVhOfwXW5S1PqozKh2sfru9FZzqW2xYntAGfkQb+Ex2tdWjHx09
FEtB8IMjELx95zf4n6enZ1MdvSl1r51tyrU+drhoOX243DVvHoKv8mO/8tlH
f/KW2JRnF+2f39395fHjJ88+23z+sH7zlxA73Nkc3z2+9ac/P9v2f9l9e3r1
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
mgIA

-->

</rfc>
