<?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.43 (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-08" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.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-08"/>
    <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="October" day="30"/>
    <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 159?>

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

<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"/> Section 3.4 - 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>Forwarder:</dt>
        <dd>
          <t>A node that relays a message onward in an SMTP transaction of its own and presents an envelope sender in a domain it controls, whether or not it modifies the message. A Forwarder that adds a DKIM2 signature is subject to the envelope sender rewriting requirement of Section 3.1.4. A node that relays while passing the original envelope sender through unchanged is a Transparent relay as defined above. A Reviser that transmits the message onward is also a Forwarder in this sense.</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-Chain-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-Chain-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-Chain-Mod header:</dt>
        <dd>
          <t>A signed header field added by a Reviser to declare a modification made to an existing header field. DKIM2-Chain-Mod headers carry an instance index (i=) aligned with the DKIM2-Chain-Sig 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-Chain-mf and DKIM2-Chain-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 this profile's own. The base specification's algorithm removes labels until a match is found or none remain, with no bound on depth, and <xref target="RFC6376"/> sets none either: its Section 3.10 allows a key published for a domain to validate signatures for any subdomain of it at any depth, a reach its Section 8.14 identifies as a concern. Bounding the removal to two labels bounds that reach. The bound governs only the fields defined in this profile, so it constrains the chains this profile's signers produce and never a chain produced under the base specification. An operator whose sending infrastructure sits more than two labels below the domain it signs for selects a signing domain nearer to it.</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-Chain-mf (carrying the MAIL FROM value) and DKIM2-Chain-rt (carrying the RCPT TO values).</t>
        <section anchor="envelope-binding-format">
          <name>Envelope Binding Format</name>
          <t>The DKIM2-Chain-mf field carries exactly one address - the SMTP MAIL FROM value. The DKIM2-Chain-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-Chain-mf and DKIM2-Chain-rt extend this existing pattern to carry envelope values, requiring no new parsing concepts beyond what ARC implementations already handle.</t>
          <artwork><![CDATA[
DKIM2-Chain-mf: i=1; addr=bounce@mailchimp.com
DKIM2-Chain-rt: i=1; v=1; addr=dest1@esempio.com
DKIM2-Chain-rt: i=1; v=2; addr=dest2@esempio.com
DKIM2-Chain-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-Chain-rt headers at the same hop. DKIM2-Chain-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-Chain-rt carries only the bare <xref target="RFC5321"/> Mailbox - the envelope address without display name or angle brackets - 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-Chain-rt header, all covered by a single DKIM2-Chain-Sig. 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-Chain-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-Chain-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-Chain-mf and DKIM2-Chain-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>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>
          <t>A further distinction concerns cardinality rather than value. <xref target="RFC5322"/> Section 3.6.2 defines the From: field as <tt>from = "From:" mailbox-list CRLF</tt>, so a single occurrence of the field may carry more than one mailbox. Where it does, the same section requires that the Sender: field be present and carry exactly one mailbox, since the agent responsible for the transmission can no longer be inferred from the author list. The identity of that agent is then carried in Sender: and not in From:.</t>
          <t><xref target="RFC5321"/> defines one reverse-path per transaction. The value carried in DKIM2-Chain-mf is therefore singular by construction, with no second field to consult and no selection rule to apply. This is one of the reasons the relaxed domain match of Section 3.1.3 is defined against the domain of the DKIM2-Chain-mf address: the identity each hop is held to is the one its own transaction establishes and it is established unambiguously for every message the hop handles.</t>
          <t>A verifier SHOULD verify the identity carried in the RFC5322 From: field against the signing domain of the hop that placed it there, for every value the field has held, using the relaxed domain match of Section 3.1.3. The DKIM2-Chain-Mod declarations defined in Section 3.2 carry the value removed in del= and the value added in new=, so the whole history of the field is present in the header fields and no earlier state has to be reconstructed. The procedure walks the chain downward from the highest hop:</t>
          <ol spacing="normal" type="1"><li>
              <t>At each hop i that carries a DKIM2-Chain-Mod with field=From and a new= value, the domain of that new= value is compared against the d= of the DKIM2-Chain-Sig at hop i.</t>
            </li>
            <li>
              <t>The value the field held at origination is the del= value of the lowest numbered DKIM2-Chain-Mod with field=From, and its domain is compared against the d= of the signature at i=1. Where no declaration for the field is present anywhere in the chain the field has never been modified and the value in the message is compared against the d= at i=1.</t>
            </li>
            <li>
              <t>Where a value reached in step 1 or step 2 carries more than one mailbox, or none because it uses the group syntax of <xref target="RFC6854"/>, the comparison for that value is made against the Sender: field instead. The Sender compared is the new= value of the DKIM2-Chain-Mod with the highest i= not greater than the hop under examination that carries field=Sender; where there is none it is the Sender: field as present in the message. No comparison is defined for that value where no Sender: field is present or where the Sender: field uses the group syntax and carries no mailbox, since in neither case is there a domain to compare. <xref target="RFC6854"/> Section 2.1, which replaces the corresponding text of <xref target="RFC5322"/> Section 3.6.2, requires a Sender: field where the From: field carries more than one mailbox specification counting those within any group, so a plural From: with no Sender: does not conform, while an empty group carries no mailbox specification at all and the requirement does not reach it.</t>
            </li>
            <li>
              <t>A DKIM2-Chain-Mod with field=From carries both del= and new=, since the From: field is required by <xref target="RFC5322"/> Section 3.6 and may be neither absent before a change nor absent after one. A declaration carrying only one of the two describes a message that carried no From: field at some point along its path and is a protocol violation. No comparison is defined where a value uses a domain-literal in place of a domain, since there is then no domain to compare.</t>
            </li>
          </ol>
          <t>The base specification requires the same coverage by a different route. Its Section 14.8 states that a verifier "will need to inspect the currently present From header field and any previous From header fields that Recipes show have been present since the message was first signed". Its Section 11 identifies the signature that each value is compared against. The difference is in what each document gives the verifier to work with. A declaration that carries both the removed and the added value states what the field was and what it became, while a Recipe states how to rebuild a previous state, so the earlier values are reached there by undoing Recipes in order and are not reachable at all by a verifier that does not process them.</t>
          <t>Where the signature carries no envelope binding fields, as in Section 3.1.6, or carries a DKIM2-Chain-mf with an empty address, as for a DSN, there is no envelope sender to consider and the comparison above is the only one that applies.</t>
        </section>
        <section anchor="relaxed-domain-match">
          <name>Relaxed Domain Match</name>
          <t>The relaxed domain match algorithm is that of the base specification with one addition, the depth bound defined in Section 2 of this profile. The signing domain (d=) must match the domain of the DKIM2-Chain-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. This match does not apply to a signature that attests a received transaction. Section 3.1.6 gives the match that applies in its place.</t>
        </section>
        <section anchor="envelope-sender-rewriting-on-forwarding">
          <name>Envelope Sender Rewriting on Forwarding</name>
          <t>A node that forwards a message and adds a DKIM2 signature MUST rewrite the SMTP envelope sender into a domain for which it holds a signing key, using a bounce address scheme such as SRS. This follows from the relaxed domain match requirement of Section 3.1.3: the signing domain must match the domain of the DKIM2-Chain-mf address, so a node that forwards while preserving the original envelope sender cannot produce a conformant signature. A node that does not forward is in the different position described in Section 3.1.6, where preserving the envelope of the received transaction is what the signature is for. It is also required by the continuity check of Section 3.3.8, which compares the envelope sender domain at one hop against the recipient domains of the hop before it.</t>
          <t>This is a change in behaviour for forwarders that pass the original envelope sender through unchanged, which remains common practice. The operational cost is bounded: envelope sender rewriting is already standard practice for forwarders that need to receive bounces for the mail they relay and it is available either within the filtering interface that performs the signing or as a separate stage ahead of it, depending on the capabilities of the MTA. The signer signs whatever envelope the MTA presents after rewriting.</t>
          <t>Nodes that relay a message without adding a DKIM2 signature are unaffected. A transparent relay that alters nothing, as described in Section 3.7.5, neither rewrites the envelope sender nor signs, so the existing chain remains verifiable against the envelope it was signed for. The two behaviours are consistent and the trigger is narrower than either: rewriting is required by the act of presenting an envelope sender of one's own, not by signing and not by relaying. A node that presents its own MAIL FROM must present one it can sign for. A node that passes the received envelope through, whether because it relays without signing or because it attests a transaction it received per Section 3.1.6, has nothing to rewrite.</t>
        </section>
        <section anchor="bcc-recipients">
          <name>BCC Recipients</name>
          <t>BCC recipients require separate SMTP transactions under DKIM2, to prevent disclosure of BCC addresses to the other recipients of the message. No such requirement exists today, because BCC confidentiality rests on the separation between the envelope and the message. The Bcc header field is removed at submission, as <xref target="RFC5322"/> Section 3.6.3 provides and the RCPT TO values are consumed by the receiving MTA and are never delivered to a mailbox. An MTA may therefore batch several recipients of one destination domain into a single transaction, BCC recipients among them and disclose nothing. DKIM2 removes that separation by carrying the RCPT TO values in signed header fields that are delivered to every recipient. The requirement is introduced by the protocol and is not inherited from existing practice.</t>
          <t>The milter processes two distinct transaction types:</t>
          <t>For the To:/Cc: transaction the milter signs every recipient the MTA presents, since under the configuration described below a transaction carries either visible recipients or a single BCC recipient and never both. The comparison against the To: and Cc: header fields is still performed, to identify a transaction that mixes the two kinds and to support the consistency check described in Section 3.1.2. It requires address extraction from <xref target="RFC5322"/> headers, since display names and comments must be stripped to obtain bare addresses and it is performed case-insensitively over the whole address. This is a deliberate relaxation of <xref target="RFC5321"/> Section 2.4, which reserves the interpretation of the local part to the receiving host: both values being compared here were written by the same originating system and a comparison that distinguished them by case would classify a recipient as hidden on the strength of a difference no sending system intends. A recipient appearing both in To: and in BCC is possible but rare; such an address is a visible recipient and belongs to the To:/Cc: transaction.</t>
          <t>For each BCC recipient the MTA presents a separate SMTP transaction, as arranged by the configuration described below, which is not the default of current MTAs. The milter signs each transaction independently with a single DKIM2-Chain-rt carrying that recipient's address. No special handling is required in the milter, which 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-Chain-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>A transaction is representable in DKIM2 where every recipient it carries appears in the To: or Cc: header fields or where it carries exactly one recipient and that recipient appears in neither. Any other combination would expose a recipient that the message does not disclose to the recipients that it does, whether the transaction mixes visible recipients with a hidden one or carries more than one hidden recipient. For such a transaction the signer MUST NOT emit DKIM2-Chain-mf or DKIM2-Chain-rt and MUST NOT sign.</t>
          <t>Declining to sign is not sufficient on its own. Where the message carries a chain from earlier hops, leaving those header fields in place presents a highest numbered DKIM2-Chain-rt that describes a transaction other than the one in progress, which the check of Section 3.4 requires the next DKIM2 receiver to reject. The signer MUST therefore remove all prior DKIM2 header fields as well, so that the message leaves the hop with no DKIM2 chain at all.</t>
          <t>The result is a transaction carried outside DKIM2. It discloses nothing, since no envelope binding field is produced and it arrives with the absence of a prior chain that Section 6.1.1 requires a receiver not to treat as a negative indicator. This is not the re-origination of Section 6.1.1, which terminates the chain and signs a new i=1: no new first hop is produced here, because an envelope that cannot be represented without disclosure cannot be represented at i=1 either. The disposition of the downgraded message is a matter of local policy and the condition SHOULD be recorded as a configuration error of the sending system.</t>
          <t>This design requires no MTA core modifications, but it does require a configuration that is not the default. Both Sendmail and Postfix can be made to present one recipient per transaction and some large providers already send that way while others batch recipients by destination domain. Where batching is in use, enabling per-recipient transactions retransmits the message body once per transaction, since each transaction carries its own DATA and it applies to every message with several recipients at one domain and not only to those carrying BCC. The connection is reused, so the cost falls on bandwidth in proportion to message size and recipient count rather than on connection setup. A future standardized mechanism for BCC signaling at the SMTP level would confine the split to BCC recipients and remove that cost, but it is not required for correct operation.</t>
          <t>The milter buffers RCPT TO values during the envrcpt callbacks and performs the comparison against To: and Cc: headers in the eom callback, when all header fields are available. Recipients present in RCPT TO but absent from To: and Cc: are identified as BCC recipients. Whether those recipients arrive in transactions of their own is determined by the MTA configuration described above and not by the milter. The milter signs each transaction as presented, generating DKIM2-Chain-rt headers only for the recipients the MTA includes in that transaction. The splitting cost is operational and not architectural and it requires no changes to the MTA core.</t>
        </section>
        <section anchor="synthetic-hops-and-intra-admd-signing">
          <name>Synthetic Hops and Intra-ADMD Signing</name>
          <t>The base specification requires that the chain of custody form a contiguous sequence where the rt= value at hop i aligns with the mf= value at hop i+1. In deployment scenarios where multiple signatures are applied within the same administrative domain, such as an Email Service Provider signing on behalf of a brand or a vanity domain forwarded through a mailbox provider, no SMTP transaction occurs between the two signing identities.</t>
          <t>The base specification addresses this by generating synthetic DKIM2-Signature headers representing hops that never occurred at the SMTP level, requiring the invention of email addresses for transactions that never took place. It also provides the nd= tag as an alternative: a signature carrying nd= omits mf= and rt= entirely and names the domain expected to produce the next signature, which avoids the invented address. A verifier checks that the named domain matches the d= of the following signature and where a message is transmitted with nd= in its highest numbered signature the base specification states that the receiving system will not be able to validate the MAIL FROM and RCPT TO values, that the message is therefore not a Fully Verified DKIM2 Message and that whether it is acceptable depends on out-of-band arrangements.</t>
          <t>An independent implementer writing a DKIM2 verifier in Rust against revision 06 of the base specification reported that nothing in the chain of custody checks tied a signature carrying nd= to the recipient values of the signature below it, so a party that merely received such a message could present it onward as its own. Revision 07 closes that path in its Section 7.1, which seeks a match between the signing domain of a signature carrying nd= and a recipient address in the next lower numbered signature.</t>
          <t>One point remains open in revision 08. Its Section 10.7 states that a sequence of signatures carrying nd= "MUST end with a DKIM2-Signature that contains mf= and rt= tags", while the special case described above permits a message to be sent while its highest numbered signature carries nd=. A message in that state is a sequence that does not end with a signature carrying those tags, so the two statements cannot both hold for it.</t>
          <t>DKIM2-core does not require this mechanism. Because DKIM2-Chain-mf and DKIM2-Chain-rt are separate header fields rather than tags within the DKIM2-Signature, a signature that covers no SMTP transaction is expressed by omitting them. A signer that applies two signatures within one administrative boundary emits the first with no envelope binding fields and the second with the envelope values observed in the actual transaction. No address is invented for a transfer that never took place and no additional tag is needed to declare the identity of the next signer, because the chain of custody is established by the sequence of signed headers rather than by address matching between consecutive signatures.</t>
          <t>A DKIM2-Chain-Sig for which no DKIM2-Chain-mf and no DKIM2-Chain-rt header field is present attests the state of the message and the responsibility of its signing domain and nothing about transmission. The d= to mf= match of Section 3.1.3 and the continuity check of Section 3.3.8 are not applicable to it and the continuity check at the following hop compares against hop i-2. Two constraints bound this case. Two consecutive signatures without envelope binding fields MUST NOT be present, so the gap is never longer than a single hop. The highest numbered signature MUST carry envelope binding fields, since it is the one verified against the transaction in progress and a message consisting exclusively of signatures without them is therefore not conformant. The base specification permits an unbroken sequence of more than one synthetic hop; this profile does not, because a bounded gap keeps the continuity check to a fixed comparison against the immediately preceding transaction. A signature carrying one of the two envelope binding fields and not the other is malformed and the result is a permerror. The omission described here is the omission of both.</t>
          <t>This is the case of an Email Service Provider signing on behalf of a brand, where the RFC5322 From identity and the envelope sender belong to different domains and only the second corresponds to an SMTP transaction. The brand signs with no envelope binding fields, the provider signs with its own and each domain is accountable for what it asserts. The relationship between the two is a contractual arrangement, not a cryptographic assertion in the message chain.</t>
          <section anchor="attestation-of-a-received-transaction">
            <name>Attestation of a Received Transaction</name>
            <t>A node that receives an SMTP transaction and does not transmit the message onward in a transaction of its own may nevertheless sign it. This occurs where a message is delivered to a mailbox and the delivering domain seals what it stores. It occurs equally where a message is handed to an internal component such as a mailing list manager that will later cause a separate transmission. In both cases the signer has no outgoing envelope to describe and in both cases it does have an incoming one. The match of Section 3.1.3 runs in the opposite direction for such a signature. There the signing domain corresponds to the envelope sender, because the signature describes a transaction the signer presents. Here it corresponds to a recipient, because the signature describes a transaction the signer received.</t>
            <t>Such a signature carries the DKIM2-Chain-mf and DKIM2-Chain-rt values of the transaction it received, unchanged. It is recognised by one condition, which applies at every hop:</t>
            <ul spacing="normal">
              <li>
                <t>the d= domain of the signature at hop i is at most two levels below the domain of at least one DKIM2-Chain-rt value at hop i, in the sense of Section 3.1.3.</t>
              </li>
            </ul>
            <t>The signer thereby names itself among the recipients of the transaction it describes. The d= to mf= match of Section 3.1.3 does not apply to a signature of this form and the condition above applies in its place.</t>
            <t>Where the hop is not the first, two further conditions are required:</t>
            <ul spacing="normal">
              <li>
                <t>the DKIM2-Chain-mf value at hop i is identical to the value at hop i-1;</t>
              </li>
              <li>
                <t>the set of DKIM2-Chain-rt values at hop i is identical to the set at hop i-1.</t>
              </li>
            </ul>
            <t>Where both hold, the continuity check of Section 3.3.8 does not apply to the hop. These conditions are not redundant. Without them a node could name itself the recipient of a transaction of its own invention and thereby escape the continuity check. With them the envelope it attests is the one the preceding hop signed, which it is not free to choose. A signature that names its own domain among the recipients without reproducing the envelope of the preceding hop is not an attestation of receipt and is subject to Sections 3.1.3 and 3.3.8 as any other signature.</t>
            <t>At the first hop no preceding transaction exists, so no comparison is available and the single condition above is the whole test. A signature of this form at i=1 records that the signing domain received a transaction that carried no DKIM2 chain of its own and the DKIM2-Chain-Results of that hop states as much. The DKIM2-Chain-mf value of such a signature is the attesting domain's own record of the envelope sender presented to it. It is not an authentication of the domain named in it and no verifier is to read it as one. The only domain accountable for the signature is the one named in d=.</t>
            <t>A node that transmits the message onward in a transaction of its own does not use this form. Transmission requires rewriting the envelope sender into a domain the node can sign for, per Section 3.1.4, which produces an ordinary signature describing an ordinary transaction. The distinction is therefore settled by the topology at the point of signing and not by any decision taken at verification time. An implementation knows which form applies from whether an outgoing envelope exists.</t>
            <t>An attestation of receipt is never the signature that describes an outgoing transaction, because that position describes the transaction in progress while an attestation describes a transaction already completed. This does not immobilise the message. A node that transmits a message whose highest numbered signature is an attestation of receipt MUST add its own signature for the transaction it presents, so that the attestation becomes an intermediate hop of the chain. A message held in a mail store is presented in no transaction, so an attestation may stand as its highest numbered signature there for as long as the message is kept.</t>
            <t>A mailing list is the ordinary instance of this. The receiving domain attests the transaction it received and the list manager, which transmits later, rewrites the envelope sender into a domain it can sign for per Section 3.1.4 and signs above the attestation as any ordinary signer. The continuity check of Section 3.3.8 then applies to that hop unchanged, with the attestation as the preceding hop: the attestation carries both envelope binding fields, so the comparison is against the DKIM2-Chain-rt values at that hop, which name the attesting domain.</t>
          </section>
        </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-Chain-mf header field
; Carries exactly one SMTP MAIL FROM address
dkim2-chain-mf         = "DKIM2-Chain-mf:" SP
                         dkim2-chain-mf-params CRLF
dkim2-chain-mf-params  = dkim2-chain-hop-index ";" SP
                         dkim2-chain-addr

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

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

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

dkim2-chain-mod-value  = DQUOTE 1*dkim2-chain-mod-octet DQUOTE
    ; the enclosing DQUOTE characters are delimiters
    ; and are not part of the value
dkim2-chain-mod-octet  = %x09 / %x20-7E / %x80-FF
    ; HTAB, printable ASCII including DQUOTE and any
    ; non-ASCII octet.  NUL, the remaining C0 controls,
    ; CR, LF and DEL are excluded: CR and LF cannot
    ; appear in a header field value and the others are
    ; permitted only by the obsolete syntax of
    ; [RFC5322] Section 4.
dkim2-chain-del-tag    = "del=" dkim2-chain-mod-value
    ; MUST appear last in header
dkim2-chain-new-tag    = "new=" dkim2-chain-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-chain-hop-number = 1*2DIGIT
    ; hop sequence number, 1-20, starts at 1
dkim2-chain-hop-index  = "i=" dkim2-chain-hop-number
dkim2-chain-rcpt-index = "v=" 1*3DIGIT
    ; recipient sequence number for DKIM2-Chain-rt
    ; starts at 1, increments per recipient at same hop, 1-500
dkim2-chain-mod-seq    = "seq=" 1*2DIGIT
    ; modification sequence number for DKIM2-Chain-Mod, 1-20

; Address rule
dkim2-chain-addr       = "addr=" [ Mailbox ]
    ; Mailbox as defined in [RFC5321] Section 4.1.2,
    ; extended per [RFC6531] Section 3.3 when the
    ; address contains non-ASCII octets
    ; including quoted local parts.
    ; The empty form is permitted only in
    ; DKIM2-Chain-mf, where it carries the null
    ; reverse-path of [RFC5321] Section 4.5.5 as
    ; described in Section 3.5.4. An empty addr= in
    ; DKIM2-Chain-rt is not permitted.

; Header field name
header-field-name      = 1*ftext
ftext                  = %d33-57 / %d59-126
    ; printable ASCII excluding colon, which terminates
    ; the field name per [RFC5322] Section 3.6.8.
    ; The semicolon is permitted: the value of field=
    ; runs to the first semicolon followed by SP, a tag
    ; name and "=", or to the end of the header field
    ; value. A field name cannot contain SP, so no other
    ; reading is available. No trailing semicolon is
    ; recognised after the field tag.

; Supporting rules
tag-list               = tag-spec *( ";" SP tag-spec ) [ ";" ]
tag-spec               = tag-name "=" tag-value
    ; a trailing semicolon is accepted on input
    ; and is not generated
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
DQUOTE                 = %x22
CRLF                   = %x0D %x0A
]]></sourcecode>
          <t>The <tt>base64string</tt> production uses the standard base64 alphabet defined in <xref target="RFC4648"/>.</t>
          <t>Header field names are case-insensitive per <xref target="RFC5322"/>. The forms shown in this document are the forms this profile generates.</t>
          <t>The tag-value list syntax of the DKIM2 document set makes the semicolon at the end of a tag-list optional. The base specification defines the production and states the option in terms. The DNS document reproduces the same production and the debug header proposal of <xref target="I-D.gondwana-dkim2-debug-header"/> takes it from the base specification by reference rather than restating it. In the header fields defined by this profile a trailing semicolon is accepted on input and is not generated. The tolerance is safe here because the semicolon is structural punctuation inside a header field that is hashed as a whole, so two parsers that disagree about it agree on the hash and differ only on whether the field is accepted. This is not the case for a value that feeds a declaration, where a second admissible encoding of the same logical value would change what is reconstructed.</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-Chain-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-Chain-Mod: i=2; seq=1; field=Subject;
 del="Original subject text"
DKIM2-Chain-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-Chain-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-Chain-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-Chain-Mod header with del= and a DKIM2-Chain-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-chain-mod-value production requires at least one octet between the delimiters - empty string values are not permitted. A header field whose value is the empty string is treated as absent for the purposes of DKIM2-Chain-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-Chain-Mod: i=2; seq=1; field=X-EVALUATION; del="pippo"
DKIM2-Chain-Mod: i=2; seq=1; field=X-EVALUATION; new="paperino"
DKIM2-Chain-Mod: i=2; seq=2; field=X-EVALUATION; del="pluto"
DKIM2-Chain-Mod: i=2; seq=2; field=X-EVALUATION; new="paperone"
]]></artwork>
          <t>Successive hops use their own i=:</t>
          <artwork><![CDATA[
DKIM2-Chain-Mod: i=2; seq=1; field=Subject; del="Value before hop 2"
DKIM2-Chain-Mod: i=2; seq=1; field=Subject; new="Value after hop 2"
DKIM2-Chain-Mod: i=3; seq=1; field=Subject; del="Value after hop 2"
DKIM2-Chain-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-Chain-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-Chain-Mod: i=2; seq=1; field=X-Microsoft-Antispam; fr=1;
 del="first part..."
DKIM2-Chain-Mod: i=2; seq=1; field=X-Microsoft-Antispam; fr=2;
 del="...second part..."
DKIM2-Chain-Mod: i=2; seq=1; field=X-Microsoft-Antispam; fr=3;
 del="...third part"
DKIM2-Chain-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-Chain-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-Chain-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-Chain-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-Chain-Mod. The key difference is that DKIM2-Chain-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-Chain-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-Chain-Mod formalizes and generalizes this approach within the DKIM2 chain of custody framework.</t>
        </section>
      </section>
      <section anchor="chain-of-custody-and-signature">
        <name>Chain of Custody and Signature</name>
        <t>Each hop in the delivery chain MUST add a DKIM2-Chain-Sig 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="dkim2-chain-sig-formal-syntax">
          <name>DKIM2-Chain-Sig Formal Syntax</name>
          <sourcecode type="abnf"><![CDATA[
; DKIM2-Chain-Sig tags
; This profile defines the DKIM2-Chain-Sig header field and the
; tags listed here.  It does not adopt the signature and hash
; layout of [I-D.ietf-dkim-dkim2-spec]

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

dkim2-chain-sig-tag-v  = %x76 "=" 1*3DIGIT
    ; v= ordering index for multiple DKIM2-Chain-Sig
    ; instances sharing the same i= value (e.g. parallel
    ; algorithm signatures at the same hop)
    ; OPTIONAL - absent when only one signature exists at this hop
    ; ascending: v=1 is signed first; a higher v= signature
    ; chains over all lower v= signatures at the same i=
    ; same tag name and index semantics as v= in DKIM2-Chain-rt,
    ; which orders multiple recipients at the same hop instead

dkim2-chain-sig-tag-d  = %x64 "=" domain-name
    ; d= signing domain
    ; REQUIRED in every DKIM2-Chain-Sig

dkim2-chain-sig-tag-s  = %x73 "=" selector-name
    ; s= selector
    ; REQUIRED in every DKIM2-Chain-Sig

dkim2-chain-sig-tag-a  = %x61 "=" sig-a-tag-alg
    ; a= signing algorithm
    ; REQUIRED in every DKIM2-Chain-Sig
sig-a-tag-alg          = sig-a-tag-k "-" sig-a-tag-h
    ; productions imported from {{RFC6376}} Section 3.5
    ; this profile requires rsa-sha256 and ed25519-sha256
    ; any other registered value is syntactically valid, so
    ; that a signature in a later algorithm parses and is
    ; handled per Section 3.6
    ; the hash half names the hash computed over the message
    ; content for bh= and hh=, not a digest internal to the
    ; signing algorithm and is present even where the signing
    ; algorithm takes no externally chosen digest
sig-a-tag-k            = "rsa" / "ed25519" / x-sig-a-tag-k
sig-a-tag-h            = "sha256" / x-sig-a-tag-h
x-sig-a-tag-k          = ALPHA *( ALPHA / DIGIT )
x-sig-a-tag-h          = ALPHA *( ALPHA / DIGIT )

dkim2-chain-sig-tag-c  = %x63 "=" sig-c-tag-header "/" sig-c-tag-body
    ; c= canonicalization algorithm, header/body pair
    ; REQUIRED in every DKIM2-Chain-Sig
    ; consistent with the DKIM1 and ARC c= convention
sig-c-tag-header       = "relaxed"
    ; header canonicalization MUST be relaxed (Section 3.3.5)
    ; no other value is syntactically valid
sig-c-tag-body         = "relaxed" / "simple"

dkim2-chain-sig-tag-h  = %x68 "=" header-field-name
                         *( ":" header-field-name )
    ; h= colon-separated list of additional header field
    ; names the signer chooses to protect, beyond the
    ; structural DKIM2 header set defined in Section 3.3.2
    ; the order of names is significant: it determines
    ; concatenation order for the b= computation
    ; it has no effect on hh=, which is always computed
    ; in alphabetical order over the non-excluded header set
    ; OPTIONAL - absent when the signer adds no
    ; discretionary headers beyond the mandatory core

dkim2-chain-sig-tag-bh = %x62 %x68 "=" base64string
    ; bh= body hash
    ; REQUIRED in every DKIM2-Chain-Sig

dkim2-chain-sig-tag-b  = %x62 "=" base64string
    ; b= signature value
    ; REQUIRED in every DKIM2-Chain-Sig

dkim2-chain-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
]]></sourcecode>
          <t>Tags MAY appear in any order within the header field; each tag kind
MUST appear at most once.</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-Chain-Results headers with i= values less than or equal to the current hop</t>
            </li>
            <li>
              <t>All DKIM2-Chain-mf headers with i= value equal to the current hop</t>
            </li>
            <li>
              <t>All DKIM2-Chain-rt headers with i= value equal to the current hop</t>
            </li>
            <li>
              <t>All DKIM2-Chain-Mod headers with i= value less than or equal to the current hop. DKIM2-Chain-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 relaxed algorithm of Section 3.3.5.</t>
            </li>
            <li>
              <t>Any message header fields declared in the signer's h= tag</t>
            </li>
            <li>
              <t>All previous DKIM2-Chain-Sig headers with i= value less than the current hop or with i= value equal to the current hop and v= value less than the current signature's v= value. These are included in full, with their b= values intact</t>
            </li>
            <li>
              <t>The incomplete current DKIM2-Chain-Sig 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>When multiple DKIM2-Chain-Sig headers share the same i= value, the h=, d= and c= tags MUST be identical across all of them: the same signing domain, the same discretionary header list in the same order and the same canonicalization protect the same hop, differing only in signing algorithm. The s= tag MUST differ, as Section 3.3.3 requires, since a signer uses a distinct key selector per algorithm. Because h=, d= and c= are fixed, two such signatures describe the same canonicalized content. Where they also name the same hash algorithm in a=, their bh= and hh= values are identical and a mismatch between them is evidence of tampering and MUST be treated as a verification failure. This is not a novel constraint: the same body hash routinely appears unchanged across a DKIM1 signature and an ARC-Message-Signature covering the same message. Where the hash algorithms differ, as they may when a signature in a newer algorithm accompanies one in an older, the two sets of values are not comparable and no such inference is available. The integrity relationship between the signatures is then carried by the v= ordering alone, under which the signature with the higher v= covers the lower ones in full. Which algorithm a signer places at the highest v= is the subject of a recommendation in Section 3.6.</t>
          <t>DKIM2-Chain-Results is defined in Section 3.5.1.</t>
          <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>Which header fields are declared in the signer's h= tag is at the signer's discretion. 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. The header fields MUST be concatenated in the order listed above. This profile defines this order itself rather than relying on <xref target="I-D.ietf-dkim-dkim2-spec"/>, which does not define DKIM2-Chain-mf, DKIM2-Chain-rt, DKIM2-Chain-Mod or DKIM2-Chain-Results as header types and therefore does not specify an ordering for them.</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-Chain-mf, DKIM2-Chain-rt and DKIM2-Chain-Mod headers. Implementations MUST use these index values, not header field position, to reconstruct the chain of custody.</t>
        </section>
        <section anchor="sequence-numbering">
          <name>Sequence Numbering</name>
          <t>DKIM2-Chain-Sig headers are numbered sequentially starting at i=1. Gaps in the sequence MUST be treated as making the message unsigned. A signer that adds a hop uses the single index one greater than the highest i= present and places every signature of that hop at that index. It MUST NOT add a header field at any other index. A field inserted at a lower index needs no rule of its own: the signed header set of Section 3.3.2 includes all DKIM2-Chain-Sig headers at lower indices in full and with their b= values intact, so an insertion below a signature invalidates that signature and is detected at the first hop above it. What remains is a second field at the index the signer is itself adding, which Section 3.3.2 governs, with one addition: the selector named in s= MUST differ between the signatures of one hop, since two signatures made under one key at one hop either agree, in which case the second is pointless, or differ, in which case the signer is presenting a verifier with two accounts of the same thing. 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, DKIM2-Chain-rt): MUST NOT exceed 500 per hop. This is consistent with the recipient limits enforced by major MTA implementations.</t>
            </li>
            <li>
              <t>v= (signature ordering, DKIM2-Chain-Sig): MUST NOT exceed 4 per hop. The mandatory set of Section 3.6 holds two algorithms and a hop introducing a third alongside them has one index to spare, which is margin enough for an algorithm transition and does not permit a flood of signatures at one hop.</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-Chain-Mod tag overhead of approximately 30 characters. A limit of 20 fragments would only be relevant if recipe content were transported in DKIM2-Chain-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, a message whose total size of DKIM2-specific headers (DKIM2-Chain-Sig, DKIM2-Chain-mf, DKIM2-Chain-rt and DKIM2-Chain-Mod) exceeds 128KB MUST be treated as a permerror. This global byte cap is a secondary defense-in-depth measure; the per-type limits above are the primary mitigation.</t>
          <t>The base specification carried contradictory statements on this point. An independent implementer working against its revision 06 reported that two of its sections disagreed on whether gaps in the i= numbering were acceptable. Revision 07 resolves the disagreement in the same direction as the requirement above and revision 08 states it in those terms: its Section 9.1 for Message-Instance revision numbers and its Section 10.1 for signature sequence numbers both state that a message with gaps or duplicates in the numbering is not a Fully Verified DKIM2 Message.</t>
        </section>
        <section anchor="body-hash-bh">
          <name>Body Hash (bh=)</name>
          <t>Each hop MUST calculate and include a body hash (bh=) of the current message body using the canonicalization algorithm specified in the signature. The bh= value changes whenever the body is modified, providing implicit notification that a modification occurred and attribution of that modification to the signing hop.</t>
          <t>No body recipe or reconstruction is required or expected in DKIM2-core. The change in bh= value between hops, combined with the identity of the signing domain at the modifying hop, provides sufficient accountability for delivery decisions.</t>
          <t>DKIM2-core replaces accountability-by-reconstruction with accountability-by-attribution: who modified the message and what they declared, not how to reconstruct the previous state. This substitution is not a reduction in security - it is a recognition that reconstruction is not required for the operational objectives of message routing and delivery decisions. Attribution is verifiable at each hop, applies uniformly to all intermediaries and remains available even for modifications that are irreversible by construction. The forensic value of reconstruction - where it exists - is preserved in DKIM2-extended as an optional layer for operators who require it.</t>
        </section>
        <section anchor="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-Chain-Mod already provide cryptographic proof of each hop's own declarations, hh= with the rollback mechanism described in Section 3.3.7 allows each hop to verify that its predecessor has not omitted undeclared header modifications.</t>
          <t>Header canonicalization is always relaxed in this profile, as reflected in the c= production of Section 3.3.1. Only the body half of the c= pair varies.</t>
          <t>The following header fields are excluded from the hh= computation:</t>
          <ul spacing="normal">
            <li>
              <t>Already covered by b=: DKIM2-Chain-Sig, DKIM2-Chain-mf, DKIM2-Chain-rt, DKIM2-Chain-Mod, DKIM2-Chain-Results</t>
            </li>
            <li>
              <t>Ephemeral or self-consistent, changing legitimately at every hop regardless of DKIM2 participation: Received, Return-Path, Authentication-Results (<xref target="RFC8601"/>), ARC-*, DKIM-Signature, DKIM2-Signature and Message-Instance (<xref target="I-D.ietf-dkim-dkim2-spec"/>)</t>
            </li>
            <li>
              <t>Vendor-specific diagnostic headers: X-MS-<em>, X-GM-</em></t>
            </li>
            <li>
              <t>Exceptions to the vendor-specific exclusion apply to individual headers that cross organizational boundaries despite carrying a vendor-associated prefix. These exceptions are normatively defined, not a matter of prefix alone, and are detailed in Section 8.6.</t>
            </li>
          </ul>
          <t>The last two belong to the chain of the base specification, are covered by its own signatures and change at every hop that participates in it, so a node that runs both mechanisms on the same message does not have to declare them as modifications of its own.</t>
          <t>All remaining header fields, including other X-* headers, are included in the hh= computation. The rationale for including non-vendor X-* headers and the security implications of excluding them are discussed in Section 8.6.</t>
          <t>The hash algorithm used for hh= MUST match the algorithm used for bh= in the same DKIM2-Chain-Sig, as specified in the a= tag.</t>
          <t>The hash half of a= names the hash the verifier computes over the message content for bh= and hh=. It is not a statement about the internal construction of the signing algorithm. This profile carries the content hashes in the signature and names their algorithm nowhere else, so a signature MUST name a hash even where its signing algorithm takes no externally chosen digest: ML-DSA-44 in its pure form hashes the message within the signing operation, and a signature using it is written a=mldsa44-sha256 when the content hashes are SHA-256. The signing algorithm half corresponds to the name used in the base specification and the hash half is added by this profile. Where a signing algorithm does take an externally chosen digest the two SHOULD be the same hash, so that one computation over the body serves both the content hash and the signature. A hop carrying signatures that name different hashes is well formed and its bh= and hh= values differ accordingly, at the cost of one body hash computation per distinct hash.</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 anchor="header-order-and-multiple-instances">
          <name>Header Order and Multiple Instances</name>
          <t>DKIM2-core signatures cover a defined set of header fields, specified in Section 3.3.2.</t>
          <t>DKIM2-core signatures protect header fields at two levels. The signed header set covered by b= - the structural DKIM2 headers described in Section 3.3.2, together with any fields the signer additionally declares in h= - provides value-level protection consistent with DKIM1: any change to an included field's value invalidates the signature. The optional hh= tag provides set-level integrity for all non-excluded header fields, detecting undeclared additions and removals, as described in Section 3.3.5.</t>
          <t>When multiple header fields with the same name exist, their relative physical order in the message may be altered by intermediate systems - milters, antivirus scanners and content filters routinely reconstruct messages in ways that can reorder header fields with identical names. If the signed header set includes such fields and their order changes, any existing signature covering the original order will no longer validate.</t>
          <t>DKIM2-core addresses this through a two-level ordering strategy that minimises the surface area of ambiguous sorting.</t>
          <t>The first level covers all header fields included in the hh= computation. These are sorted alphabetically by lowercase field name. For most header fields, <xref target="RFC5322"/> prohibits multiple instances at origination, so this sort operates on unique keys and is fully deterministic. This ordering is required at every hop that computes hh=, making it a wire-level constraint - but one that operates on field names only, not on field values, and that produces a fixed-size hash rather than an ordered sequence that downstream verifiers must reconstruct.</t>
          <t>The second level handles duplicate instances of the same header field using explicit i= and seq= index values declared via DKIM2-Chain-Mod, rather than physical position in the message. This is an integer lookup, not a string sort, and is unambiguous by construction. Section 3.3.7 defines the precise verification procedure.</t>
          <t>A residual case exists: header fields that <xref target="RFC5322"/> permits in multiple instances at origination (such as Comments: and Keywords:) and that have no corresponding DKIM2-Chain-Mod entries. These instances are not attributed to any DKIM2-Chain-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-Chain-Mod declaration, this is a protocol violation; the verifier's required handling of this case is given in Section 3.3.7.</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, applied to the full set of header fields that remain after the exclusions of its Section 4. The alphabetical component of that sort is deterministic and resolves reordering between distinct field names. It does not resolve reordering between instances sharing a field name: the bottom-up rule preserves whatever physical order the instances currently occupy, so a pair of instances transposed in transit is presented transposed after sorting. The base specification acknowledges this and places the obligation on any MTA that reorders same-named header fields to restore their original order before verification or onward relay. That obligation falls on nodes which, by definition of the case, are not participating in DKIM2 and have no signal that an order must be preserved. Interoperability testing at the IETF 124 hackathon in March 2026 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. The base specification has since clarified that tags within a single header field may appear in any order, resolving that narrow point. This does not address the underlying problem. Duplicate instances of the same field name remain ordered by physical position, which is the case that DKIM2-Chain-Mod indices make unambiguous by construction. The reconstruction procedure compounds this: header field instances are numbered upward from the bottom of the header block, body lines downward from the top and the fields a recipe emits appear in the reverse of the order in which they are processed. Three directional conventions in one mechanism are an avoidable source of implementation divergence and an explicit index removes the need for any of them.</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-Chain-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-Chain-Sig.</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-Chain-Mod declarations of hop i=N-1: fields without a corresponding DKIM2-Chain-Mod entry are originals; fields declared via DKIM2-Chain-Mod are ordered by their i= and seq= values. A duplicate field instance that cannot be explained by any DKIM2-Chain-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-Chain-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>Original instances of the same field name are ordered among themselves by ascending canonicalised field value, as specified in Section 3.3.6. Their relative order at origination is not recorded anywhere in the message, so value ordering is what makes the set reproducible by every verifier.</t>
          <t>Where a header field name has both original instances and instances introduced by a DKIM2-Chain-Mod declaration, the original instances are ordered first, followed by the declared instances in ascending order of i= and, within the same hop, of seq=. This ordering reflects the sequence in which the instances entered the message and is applied identically when computing hh= and when reconstructing a prior header state under the rollback procedure of this section.</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-Chain-Sig 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-Chain-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-Chain-Sig 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 monitoring phase of Section 5.6.2 nothing is rejected, by the definition of that phase, so the failure is recorded as a dkim2=fail result in the DKIM2-Chain-Results header and the message is delivered.</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-Chain-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-Chain-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-Chain-Sig already provides cryptographic protection for the mandatory security-critical header fields. The hh= rollback mechanism extends this protection to the full non-excluded header set. The two mechanisms are complementary: h= provides hard guarantees on critical fields regardless of whether hh= is present and hh= provides additional assurance that no undeclared modification has occurred across the complete header set.</t>
          <t>Working group discussion has confirmed that localising a verification failure to a specific hop requires hop-by-hop verification, even when end-to-end verification is used as the primary mechanism.</t>
        </section>
        <section anchor="chain-continuity-between-consecutive-hops">
          <name>Chain Continuity Between Consecutive Hops</name>
          <t>For every DKIM2-Chain-Sig with i= greater than 1, the domain of the DKIM2-Chain-mf address at that hop MUST match the domain of at least one DKIM2-Chain-rt address at hop i-1 or, where hop i-1 carries no envelope binding fields, at the nearest preceding hop that does, as described in Section 3.1.6. The match uses the relaxed domain match algorithm of Section 3.1.3 with the recipient domain in the role that the d= domain holds there, so the envelope sender domain MUST be at most two levels below the recipient domain it is matched against. The comparison is on the domain part only: a forwarding node rewrites the envelope sender into its own domain, as SRS does, so the local parts of the two addresses are not expected to correspond. The direction is the one that occurs in deployment, where a dedicated bounce domain is a subdomain of the domain that received the message. The reverse relation, in which the envelope sender domain is a parent of the recipient domain, does not satisfy this check. This check does not apply to a signature that attests a received transaction as defined in Section 3.1.6, which is subject to the check given there in its place.</t>
          <t>The constraint also closes the remaining replay path. An attacker that obtains a validly signed message cannot deliver it to a recipient of its own choosing by presenting the message unchanged without the mismatch being detected and recorded, because the replay check of Section 3.4 compares the DKIM2-Chain-rt values at the highest hop index against the RCPT TO of the transaction in progress. Adding a signature of its own does not help either. That signature carries its own DKIM2-Chain-mf, whose domain the present check requires to be a domain that was a recipient at the preceding hop. Signing for such a domain requires a key published under it. Extension of the chain is therefore restricted to parties that actually received the message.</t>
          <t>A failure of this check is cryptographic proof of dishonesty as defined in Section 3.5.2. The discontinuity is unambiguous: both signatures verify, so both hops are DKIM2 participants, yet the node at hop i declared an envelope sender in a domain that was not a recipient at hop i-1. A non-participating node cannot produce this condition, because it adds no signature at all. The message MUST therefore be rejected in enforcement mode, with the discontinuity recorded in DKIM2-Chain-Results.</t>
        </section>
        <section anchor="eight-bit-content-and-transport-conversion">
          <name>Eight-Bit Content and Transport Conversion</name>
          <t>A body transferred as 8bit may be converted to a 7-bit content transfer encoding by an SMTP client that has to deliver to a peer which does not offer the 8BITMIME extension. The conversion rewrites the body and the Content-Transfer-Encoding header field, so it changes both bh= and hh=. Relaxed canonicalization does not absorb it: relaxed normalizes trailing whitespace, sequences of whitespace within a line and trailing empty lines, and has no effect on transfer encodings.</t>
          <t>Where the conversion is performed by a node other than the signer it is an ordinary body modification. A participating node signs the converted body under its own identity and the changed bh= attributes the change to it and a non-participating node breaks the chain as any other legacy node does. Where it is performed by the signing node itself it is invisible to the signer, because it happens during delivery, per recipient, after the message has been accepted and queued and no stage of a milter-based signer observes it. Signing the delivered form instead would require modification of the MTA, which is the dependency this profile exists to avoid.</t>
          <t>The base specification addresses transport conversions in its Section 17, which requires that a Signer sign the message as it is expected to be received by the Verifier rather than in a local or internal form and that any conversion of a local encoding to canonical form be applied to the message actually sent rather than only to the version presented to the signing algorithm. The case described here is the one in which that requirement cannot be satisfied at signing time: whether the body will be downgraded is determined per recipient, during delivery, after the signature has been computed, so the signer cannot know the form in which the message will be received.</t>
          <t>This profile does not require signers to normalize every body to a 7-bit content transfer encoding in order to prevent the case, since that cost falls on all traffic to protect a diminishing path and <xref target="RFC6376"/> Section 5.3 already places such normalization with the originating user agent or submission agent rather than with the signer. The failure it produces is an undetermined-cause failure under Section 3.5.2, delivered with its result recorded rather than rejected. A receiver whose traffic still reaches peers without 8BITMIME is by that fact not in the terminal phase. An operator who wants the signature to survive that path normalizes upstream of the signer or configures the MTA not to convert.</t>
        </section>
      </section>
      <section anchor="replay-prevention">
        <name>Replay Prevention</name>
        <t>Replay prevention is a direct consequence of envelope binding. Since DKIM2-Chain-mf and DKIM2-Chain-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. The comparison is an inclusion in one direction. Every recipient of the transaction in progress MUST appear among the DKIM2-Chain-rt values at the highest hop index. Recipients present in those values and absent from the transaction in progress are not a mismatch: a relay that adds no signature may split one transaction into several by destination, so the signed recipient set is a superset of the recipients of each resulting transaction. The condition this check detects is a recipient of the transaction in progress that appears in no DKIM2-Chain-rt value at the highest hop index.</t>
        <t>An attacker who attempts to replay a message to a recipient not listed in DKIM2-Chain-rt will produce that condition. A node that received the message and forwards it to a recipient of its own without adding a signature produces the same condition. The two are not distinguishable from the message, since the forwarding node leaves no signature, while the envelope sender it presents, whether the original or one rewritten into its own domain, is one that a replaying party which was itself a recipient can present equally.</t>
        <t>The condition is therefore detected with certainty while its cause is not, which makes it an undetermined-cause failure under Section 3.5.2: the message is delivered with the mismatch recorded in DKIM2-Chain-Results and is rejected in the terminal phase, where every failure is. This is what replay prevention costs while non-participating nodes remain in the paths and it is the limit Section 5.3 records.</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 DKIM2-Chain-mf and DKIM2-Chain-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="verification-reporting-enforcement-and-dsn-handling">
        <name>Verification Reporting, Enforcement and DSN Handling</name>
        <t>This section defines how DKIM2-core verification results are reported and enforced and how the resulting accept/reject decisions propagate through delivery status notifications (DSNs) without causing backscatter to innocent sender domains.</t>
        <section anchor="dkim2-chain-results">
          <name>DKIM2-Chain-Results</name>
          <t>DKIM2-core defines a per-hop verification result header analogous to ARC-Authentication-Results. The header is produced by the inbound verifier and records the outcome of chain verification for the hop index at which verification was performed.</t>
          <artwork><![CDATA[
dkim2-chain-results-header  = "DKIM2-Chain-Results:" [CFWS]
                              "i=" dkim2-chain-hop-number ";" [CFWS]
                              authserv-id ";" [CFWS]
                              "dkim2=" dkim2-chain-results-value
                    [ [CFWS] "(" dkim2-chain-results-comment ")" ]

authserv-id                 = dot-atom
    ; FQDN of the verifying MTA

dkim2-chain-results-value   = "pass" / "fail" / "none" /
                              "neutral" / "temperror" / "permerror"

dkim2-chain-results-comment = *( [FWS] ccontent ) [FWS]
    ; as defined in RFC 5322
    ; Where a hop carries a signature the verifier was
    ; unable to evaluate and at least one that it could,
    ; the result is neutral and the comment SHOULD name
    ; the algorithm that was not evaluated, so that a hop
    ; accepted on all of its signatures can be
    ; distinguished from one accepted on some of them
]]></artwork>
          <t>The <tt>i=</tt> value identifies the hop at which verification was performed. What that hop verifies is the signature at hop i-1, since no signer attests its own signature, so at i=1 the value is always none. The <tt>authserv-id</tt> is the FQDN of the MTA performing verification. DKIM2-Chain-Results carries no header.d= value: the <tt>i=</tt> index already identifies which DKIM2-Chain-Sig the result applies to and the signing domain can be read directly from that signature's own d= tag, so reporting it a second time here would be redundant. This differs from Authentication-Results for DKIM1 <xref target="RFC8601"/>, where header.d= is needed because a message can carry multiple unordered DKIM-Signature fields with no equivalent index to disambiguate among them.</t>
          <t>DKIM2-Chain-Results travels only on messages that are accepted, since a message refused with a 5yz response or deferred with a 4yz response carries nothing onward. In the monitoring phase of Section 5.6.2 every outcome is accepted and therefore recorded in the header field. From the policy enforcement phase onward the outcomes that lead to a refusal or a deferral leave a local record only. The header field then carries the outcomes that accompany an acceptance.</t>
          <t>A registration of a dkim2 method in the Authentication-Results header field of <xref target="RFC8601"/> has since been proposed in <xref target="I-D.gondwana-dkim2-authres"/>, with the properties header.d and header.i and the result codes none, pass, fail, permerror and temperror. That mechanism and this header field differ in what becomes of the record rather than in what it contains. An Authentication-Results field carries no signature, so a party beyond the ADMD that wrote it has no basis on which to rely on it. <xref target="RFC8601"/> Section 5 requires an ADMD to delete an inbound instance bearing its own authserv-id unless it came directly from another trusted MTA, so such a record does not even survive the boundary it was written for. DKIM2-Chain-Results is part of the signed header set of every subsequent hop, as Section 3.3.2 requires, so the record of each hop travels with the message and is covered by the signatures that follow it.</t>
          <t>Each hop adds the header carrying its own i= value, so a message that has traversed three signing hops carries three. For example:</t>
          <artwork><![CDATA[
DKIM2-Chain-Results: i=1; dns.itb.it; dkim2=none

DKIM2-Chain-Results: i=2; dns.itb.it; dkim2=pass

DKIM2-Chain-Results: i=3; dns.itb.it;
    dkim2=fail (hh rollback mismatch)
]]></artwork>
        </section>
        <section anchor="verification-result-reporting-and-graduated-enforcement">
          <name>Verification Result Reporting and Graduated Enforcement</name>
          <t>The base specification defines a binary delivery model: a message either passes chain verification and is accepted or fails and is rejected during the SMTP session. No mechanism is provided for recording intermediate verification results, for communicating partial chain validity or for expressing graduated enforcement policy.</t>
          <t>This is a structural gap, not a missing edge case. During any realistic deployment period - and operational experience with ARC suggests this period may be indefinite - messages will transit legacy nodes that break the chain without malicious intent. A binary accept/reject model applied to these messages produces either false rejections of legitimate mail or no enforcement at all. Neither outcome is acceptable.</t>
          <t>The adoption burden this implies is materially heavier than for comparable mechanisms. DMARC enforcement requires a single DNS policy record: sender and receiver agree and intermediate nodes do not need to participate at all - they simply pass mail through. Even so, DMARC's interaction with mailing lists produced well-documented, severe breakage. DKIM2's chain of custody instead requires every node in the delivery path - every forwarder, list and gateway - to be DKIM2-aware before a binary enforcement model behaves as the base specification implies. Treating full-path participation as a precondition for accepting mail does not describe a transition path - it describes rejecting legitimate mail as routine behavior for as long as any non-participating node remains anywhere on the path, which may be years or may never fully resolve.</t>
          <t>This burden has been quantified from operational experience. Matthew Grove of Intuit reported to the working group in August 2026 that, under the 2024 bulk sender requirements adopted by major mailbox providers, roughly 20% of senders above the volume threshold had not completed the required DNS changes two years later. The senders concerned were not refusing to comply. Some did not understand what was being asked of them. Others could not make the change at all: their site is on one platform while their DNS is on another, the credentials are held by a web developer or an agency, or the hosting platform does not expose the records in its interface.</t>
          <t>The requirement in that case was a single DNS record, published once, at the sending domain only. It required no software on any node, no change to message format and no participation by intermediaries. That figure therefore measures the floor of the adoption problem rather than its ceiling: a mechanism that requires every node on the delivery path to run new software, declare its modifications and maintain a signing key is not comparable in difficulty to publishing one record. The population that a binary enforcement model excludes first is the one with the least dedicated mail infrastructure and it is the population for which this profile is written.</t>
          <t>The same discussion raised a question that the working group has not resolved. If major mailbox providers apply to DKIM2 the exemption for small senders that they applied when introducing the bulk sender requirements, a substantial population of DKIM1-signed mail remains in circulation and the replay conditions that motivate DKIM2 remain largely in place for it. If instead no exemption is made, the adoption burden falls on precisely the operators documented above as unable to complete a single DNS change. Whether universal deployment is a design requirement of the replay mitigation or whether enforcement above a volume threshold suffices, the graduated enforcement model defined in this section does not depend on the answer: it derives the enforcement level from adoption observed locally, so a receiver applies the strictness its own traffic supports rather than the strictness the specification assumes.</t>
          <t>DKIM2-core requires the DKIM2-Chain-Results header described above to record the outcome of chain verification with the full set of verdicts. This result is consumed by downstream filtering systems for policy decisions, exactly as Authentication-Results is consumed today.</t>
          <t>The critical distinction for enforcement policy is between verification failures that constitute cryptographic proof of dishonesty by a DKIM2-participating node and failures whose cause cannot be determined from the message alone. These two cases are not always distinguishable from the raw failure codes and getting this distinction right is what makes rejection safe.</t>
          <t>Throughout this section, enforcement mode means the policy enforcement phase of Section 5.6.2. In the monitoring phase that precedes it nothing is rejected or delayed, by the definition of that phase, so every outcome below is recorded in DKIM2-Chain-Results and delivery proceeds. In the terminal phase that follows it every failure is rejected, so the classification below no longer governs the disposition.</t>
          <t>The following enforcement model applies:</t>
          <t><strong>Structural failure</strong> - a DKIM2-Chain-Sig whose signing key record does not exist or is invalid, an unknown algorithm, a syntax error or a sequence gap - constitutes a permerror. Verification cannot be attempted at all. The message MUST be rejected in enforcement mode regardless of transition period considerations. These failures cannot be produced by an innocent legacy node: they indicate either a misconfigured DKIM2 implementation or a forged header.</t>
          <t><strong>Transient failure</strong> - a condition that prevented verification and may not recur, such as a DNS lookup for a signing key that failed or timed out - constitutes a temperror. In enforcement mode the verifier SHOULD defer the message with a 4yz response so that the sending system retries. The signature MUST NOT be treated as verified. Where a hop carries more than one signature, a temperror on one of them is not satisfied by the success of another: deferring costs a delay, while accepting on the signatures that remain would let a party able to prevent resolution of one selector choose which signature decides the outcome.</t>
          <t><strong>Cryptographic proof of dishonesty</strong> is present when the b= verification of the most recent DKIM2-Chain-Sig succeeds and the hh= value it covers matches the current header set, but the rollback of declared DKIM2-Chain-Mod modifications does not reconstruct the hh= value committed by the preceding hop. If b= is valid, then hh= and all DKIM2-Chain-Mod declarations are guaranteed intact. If the rollback then fails, the signing node at i=N declared modifications that do not account for all differences between the header state it received and the header state i=N-1 signed. This is cryptographic proof that i=N misrepresented its modifications. The message MUST be rejected in enforcement mode.</t>
          <t><strong>Undetermined-cause failure</strong> covers every other outcome in which b= itself verifies: hh= mismatch alone, bh= mismatch alone or both together, as well as rollback failure when hh= has already failed and cannot be trusted as an input to it. In each of these cases b= confirms that the DKIM2-Chain-Sig header field the signing node produced is genuinely what that node signed - nothing about the signing node's own declaration is in question. What has changed is content outside that guarantee: header fields not covered by the signed header set, the body or both. The verifier cannot determine whether that change was made by a non-participating legacy node performing ordinary message handling or by an attacker exploiting the same absence of a signature. No reconstruction mechanism resolves this. Recipes and DKIM2-Chain-Mod declarations both depend on the modifying party participating and declaring what it changed - a non-participating node does neither by definition, so the ambiguity is not a gap in the reconstruction machinery. It is what non-participation means and no mechanism can close it after the fact. In enforcement mode, the message MUST be delivered with the verification result recorded in DKIM2-Chain-Results as failed with cause undetermined, rather than attributed to any specific actor. Downstream policy systems MAY use this result to apply local filtering. The same classification applies where b= itself does not verify and no later signature is present. The signed content was altered by a party that did not sign, which is the case described in Section 5.3 for a chain broken by a non-participating node.</t>
          <t>The guarantee the model gives is that no message is rejected unless its failure identifies the party responsible for it, so legitimate mail transiting legacy infrastructure is not lost.</t>
          <t>One further condition is rejected in enforcement mode without belonging to either class above: the partial pass of Section 3.6, where a verifier able to evaluate every signature at a hop finds that one verifies and another does not.</t>
          <t>The terminal phase of Section 5.6.2 is the state in which every failure is rejected. The classification above exists to make rejection safe while nodes that modify messages without declaring their modifications are still a normal feature of the delivery path and its purpose is to avoid refusing legitimate mail on evidence that does not identify a responsible party. Once a receiver's own traffic no longer contains such nodes in any material quantity that purpose is exhausted: a chain that does not verify is an error and the disposition follows the verdict, without further qualification of its cause.</t>
          <t>Entry into this phase is a local decision taken on local evidence. This profile sets no date and no threshold for it, because the evidence is the receiver's own traffic and no external party can observe it. A receiver that enters this phase SHOULD continue to record verification results as in the monitoring phase, so that the decision remains reversible on the same evidence that justified it.</t>
          <t>Across the monitoring, enforcement and terminal phases the verdict itself does not change. The specification states whether the chain is valid and local policy decides the disposition, so a stricter phase alters what is done with a message and never the verification result recorded for it.</t>
          <t>The same separation applies to assertions a sender places in the message. A request that intermediaries handle a message in a particular way does not bind the receiver, because nothing in the mechanism verifies whether it was honored and a node that disregards it is under no obligation to reveal that it did. This profile derives disposition from verification results and from local policy, and from nothing else.</t>
        </section>
        <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-Chain-mf and DKIM2-Chain-rt and the consistency of DKIM2-Chain-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 passes verification or the failure does not constitute cryptographic proof of dishonesty by a DKIM2-participating node; the MTA proceeds with delivery and the result is recorded in DKIM2-Chain-Results</t>
            </li>
            <li>
              <t>SMFIS_REJECT - a structural failure or proven dishonesty is detected per the graduated enforcement model in Section 3.5.2; the MTA issues a 5xx rejection to the connected peer</t>
            </li>
            <li>
              <t>SMFIS_TEMPFAIL - a transient error occurred, for example a DNS timeout during key lookup; the MTA issues a 4xx temporary failure to the connected peer</t>
            </li>
          </ul>
          <t>When the milter returns SMFIS_REJECT, the MTA issues a 5xx rejection directed at the connected peer - the system currently delivering the message over the active SMTP connection. This rejection is never directed at the original envelope sender. This is the fundamental mechanism that prevents backscatter: no DSN is ever generated toward an address that was not the source of the current SMTP session.</t>
        </section>
        <section anchor="reject-propagation-and-backscatter-prevention">
          <name>Reject Propagation and Backscatter Prevention</name>
          <t>When a DKIM2-core node rejects a message with 5xx during the SMTP session, the connected peer (the previous hop in the delivery chain) receives the rejection and is responsible for generating its own rejection toward its own peer in turn. Each hop manages its own rejection independently. The original sender is reached through this chain of independent rejections without generating backscatter at any point.</t>
          <t>A node that accepts a message with an invalid or missing DKIM2 signature and subsequently generates a DSN to the original envelope sender produces backscatter. The base specification does not forbid this in terms. Its Section 13.2 states that for a message that has not been Provisionally Verified "a DSN generated after the message has been accepted may go to a third party whose address was forged" and concludes that the best strategy for a clearly invalidly signed message is to reject it while the SMTP conversation is still open. 
The prohibition that follows is this profile's own. A node reaches that situation by accepting a message whose verification did not pass, which Section 3.5.2 requires of it where the cause of the failure cannot be determined and Section 3.5.6 confirms for a message that carries no DKIM2 signature at all. Nodes that do so MUST NOT generate a DSN to the original envelope sender on the strength of that verification outcome. A notification directed at the connected peer instead requires an address for that peer, which exists only where the peer presented an envelope sender of its own, as Section 3.1.4 requires of a node that forwards and signs. Where that address is not available the node has no addressee for a verification failure and the message is lost without notice. <xref target="RFC5321"/> Section 6.1 requires a receiver that has accepted a message and then fails to deliver it to mail a notification to the address in the envelope return path, so a node in that position stands between that requirement and the prohibition above.</t>
          <t>The case arises only where verification is deferred past the SMTP session. Section 3.5.3 places it inside the session, where a failure is reported in the SMTP response and nothing has to be generated afterwards. A receiving system that accepts at its edge and verifies later, or whose externally facing MX does not participate at all as described in Section 3.1.6, gives up that reporting path. A failure it detects afterwards can be recorded but not reported. A failure that arises after acceptance for reasons unrelated to verification, such as an unavailable mailbox, is an ordinary bounce and is addressed to the envelope sender the node received in the usual way.</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 DKIM2-Chain-rt value at the incoming hop. 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.4.</t>
          <t>This is ordinary outbound signing, not a DSN-specific mechanism. The DSN itself is produced by standard MTA bounce-generation logic, independently of DKIM2; the milter's role is limited to signing it as a newly originated message, exactly as it would sign any other outbound mail from the domain. The bounce carries no DKIM2 signatures from the original delivery chain and there is no chain-of-custody state to extract, redact or forward from the rejected message into the bounce - a class of complexity that arises only when a DSN mechanism is required to carry and selectively strip prior chain state.</t>
          <t>When the DSN envelope sender is the null address per <xref target="RFC5321"/>, the DKIM2-Chain-mf field carries an empty addr= value. The d=/mf= alignment check defined in Section 3.1.3 is not applicable for null-sender messages. The verifier identifies the message as a DSN by the empty mf= value; the signing domain's identity is established by the d= tag and the corresponding DNS key record. The verifier MUST proceed with full chain verification - including signature validation, hop sequence integrity and the hh= rollback check where present - and record the result in DKIM2-Chain-Results as for any other message.</t>
          <t>The verifier MUST NOT issue a rejection response to a null-sender message regardless of verification outcome. This is a permanent protocol requirement, not a transitional measure: rejection of a null-sender message risks a mail loop if the sending MTA does not correctly implement <xref target="RFC5321"/> Section 6.1 null-sender loop prevention. The verification result is recorded for downstream policy evaluation.</t>
          <t>During the transition period and for as long as any non-participating node remains on a delivery path, null-sender messages without DKIM2 signatures will continue to arrive. This is not a condition that a mature deployment eliminates, since complete participation is never achieved on every path, as Section 5.3 records. The rule above therefore applies in every phase of Section 5.6.2 and is an exception to the terminal phase, which otherwise rejects every failure.</t>
        </section>
        <section anchor="receiving-mail-from-non-participating-paths">
          <name>Receiving Mail from Non-Participating Paths</name>
          <t>Where a receiver gets a message without a valid DKIM2 signature it cannot perform DKIM2-specific verification: envelope binding, chain of custody validation and authenticated DSN generation toward the connected peer are not available. This is not confined to a transition period, since complete participation is never achieved on every path, as Section 5.3 records. The receiver falls back to pre-DKIM2 behavior: verify DKIM1 signatures if present, apply DMARC policy if configured and generate DSNs as today. Whether this fallback alone justifies rejection is governed by the graduated enforcement model of Section 3.5.2 - it does not, on its own.</t>
        </section>
      </section>
      <section anchor="cryptographic-algorithms">
        <name>Cryptographic Algorithms</name>
        <t>DKIM2-core mandates support for the RSA-SHA256 and Ed25519-SHA256 signing algorithms. Verifiers MUST implement both. The base specification <xref target="I-D.ietf-dkim-dkim2-spec"/> Section 3 requires more: a verifier there MUST implement five algorithms, the SHA256 and SHA512 hashes and the RSA-SHA256, Ed25519-SHA256 and ML-DSA-44 signing algorithms, while a signer MAY implement any subset of them. This profile does not adopt that requirement. A signature in an algorithm outside the set above is handled by the rule given later in this section, which judges the hop on the signatures the verifier is able to check.</t>
        <t>A post-quantum signing algorithm changes the cost of verification and not only the size of the key record. The ML-DSA-44 public key is 1312 octets, which is about 1752 characters of base64 and seven TXT strings of the maximum length. A response carrying it exceeds both the 512 octet limit of DNS over UDP and the 1232 octet buffer size commonly advertised with EDNS0, so the lookup is answered with a truncated response and repeated over TCP, with the handshake that this implies. Verification performs one key lookup per hop, so an algorithm of this size moves the key lookups of every participating hop onto TCP. This profile takes no position on which algorithms the base specification should mandate. It records that the choice carries a per-hop cost at verification time, which is the cost this profile exists to keep bounded.</t>
        <t>The ecosystem's record on algorithm transition is measurable. A longitudinal study of 464 million DKIM signatures collected between March and October 2020 found that 65.8% of signing domains were still producing rsa-sha1 signatures <xref target="DKIM-DEPLOYMENT-STUDY"/>, two years after <xref target="RFC8301"/> removed that algorithm from DKIM, and that 84% of the keys in a separate sample of 3.6 million domains were 1024 bits or shorter. That study observed one large provider in one country, so its absolute figures are not a census of the whole ecosystem.</t>
        <t>Two mailboxes at unrelated domains operated by the author of this document give a receiver's view of the same question. The first carries 63000 signatures received between 2024 and 2026, of which rsa-sha256 accounts for 96.6%, rsa-sha1 for 3.3% and ed25519-sha256 for 0.068%, 43 signatures in all. The second carries 16292 signatures received between 2011 and 2026 and contains no ed25519 signature at all. In 2026 the first mailbox received 78 rsa-sha1 signatures and 42 ed25519 signatures, so at that vantage point an algorithm withdrawn from DKIM in January 2018 remains almost twice as common as the algorithm added in September of the same year. These are single-observer samples and the ed25519 signatures of the first mailbox fall almost entirely in one year, so they may originate with a small number of senders.</t>
        <t>The transition these figures describe asked a signer for one key record and one algorithm name. The base specification asks every verifier to implement five algorithms. A profile that rests on that requirement being met rests on a change of a different order from the one the ecosystem has not yet completed. 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. Multiple DKIM2-Chain-Sig headers sharing the same i= value are ordered by the v= tag defined in Section 3.3.1 - the same index used for DKIM2-Chain-rt; see Section 3.3.2 for how this affects the signed header set. The tag-value format of DKIM2-Chain-Sig imposes no constraints on the signing algorithm beyond producing a binary output encodable in base64. This ensures forward compatibility with post-quantum algorithms when they are standardized for use in email authentication.</t>
        <t>Where a signature uses an algorithm outside the mandatory set and the verifier does not implement it, that signature is not evaluated and the hop is judged on the signatures the verifier is able to check. The result recorded for that hop is neutral, which states that the hop was accepted on the signatures that could be checked and not on all of those present. This is what allows a new algorithm to be introduced without a flag day: a verifier that does not yet implement it is unaffected by its presence. It is not a partial pass, which is defined below and concerns a signature the verifier can check and which fails.</t>
        <t>Where the verifier is able to check no signature at all at a hop, there is nothing on which to judge it and the hop is not reported as a pass. A signer is required below to include at each hop a signature in an algorithm of the mandatory set and a verifier of this profile implements both algorithms of that set, so this state is reachable only where that requirement was not met or where the signature that met it was removed. It is a defect of the message and not a limit of the verifier. It is therefore a permerror of the structural class of Section 3.5.2. The verifier MUST reject the message in the policy enforcement phase of Section 5.6.2 and in the terminal phase that follows it. In the monitoring phase nothing is rejected and the outcome is recorded like any other. No exception is made for an algorithm the verifier recognises by name and does not implement: a rule that tolerated the absence of any checkable signature would be available to an attacker that strips the signatures of a hop and leaves one naming an algorithm nobody implements.</t>
        <t>Revision 08 of the base specification assigns a permanent error to a signature in an algorithm the verifier has not implemented. This profile does not. It follows <xref target="RFC6376"/> instead, whose Section 3.3.4 states that "Verifiers MUST ignore any signatures using algorithms that they do not implement" and whose Section 3.4 states the same rule for unrecognized canonicalization algorithms. A signature that cannot be evaluated is not a failed signature. The distinction is recorded rather than resolved: the hop is reported as neutral in DKIM2-Chain-Results, with the algorithm that was not evaluated named in the comment. The answer of the base specification holds only where every verifier implements every algorithm it defines. Where that does not hold, its four output states carry no verdict for a signature that was not evaluated, so an error is the only one available to it. The registry of result names for the dkim method of <xref target="RFC8601"/> carries the verdict this case needs. Its Section 2.7.1 defines neutral as the result where "the signature or signatures contained syntax errors or were not otherwise able to be processed", which is this case exactly. The dkim2 method proposed in <xref target="I-D.gondwana-dkim2-authres"/> declines it, stating that a DKIM2 verification produces no neutral result. This profile adopts it, as Section 3.5.1 defines, and the message travels on.</t>
        <t>A signer MUST include at each hop at least one signature in an algorithm of the mandatory set above. Signatures in other algorithms are additional to it and never a substitute for it.</t>
        <t>The algorithm named in a= and the key type published in the key record are two statements about the same signature and a verifier MUST check that they agree. Where the record names a type that does not correspond to the signing algorithm of a=, verification MUST NOT be attempted and the result is a permerror of the structural class of Section 3.5.2: a failure produced by using an unsuitable key would be recorded as a failure of the signature and would misstate its cause. A record whose k= names a type the verifier does not recognise is ignored, as <xref target="RFC6376"/> Section 3.6.1 requires, and the signature is then one the verifier is unable to check. A record whose p= value is empty declares the key revoked and gives a permerror.</t>
        <t>The v= ordering of Section 3.3.1 has a consequence for this case. Because a signature with a higher v= covers the signatures with lower v= at the same hop in full, including their b= values, a signer that places the most widely implemented algorithm last makes that signature a witness to the presence and integrity of the others. A verifier that cannot evaluate the earlier signatures still hashes their header fields like any others, so their removal or corruption breaks the signature it can evaluate. Signers SHOULD therefore assign the highest v= at a hop to the algorithm they expect the largest number of verifiers to implement. The protection this affords is against a party that strips or alters a signature and not against one able to forge the algorithm the verifier relies on, since such a party can produce a consistent outer signature over any content it chooses.</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. This prevents a downgrade attack in which an attacker invalidates the signature in the stronger algorithm in order to force acceptance on the weaker one. It does not prevent the same attacker from removing that signature instead, since the set of signatures present at a hop is chosen by whoever last handled the message and a verifier has no way to know that a signature it never received once existed. Closing that case requires a statement an attacker cannot edit out, which means one published in the DNS, and Section 3.6.1 defines an optional record for that purpose. Where a verifier is able to evaluate every signature at the hop, a state in which one verifies and another does not is not admissible. The signature that verifies establishes that the signed content is intact, since all signatures at a hop cover the same canonicalized content, so the failure of the other cannot be the modification in transit that the undetermined-cause class of Section 3.5.2 exists to accommodate. The verifier MUST reject the message from the policy enforcement phase of Section 5.6.2 onward. In the monitoring phase nothing is rejected, by the definition of that phase.</t>
        <t>No exception is made for a signature that failed through a defect in the software that produced or checked it. A defect and an attack are indistinguishable from the message. A rule that excused the first would excuse the second. A signature that is present and does not verify is a failure of the hop that made it and that holds whether the signature was defective when produced or was damaged in transit.</t>
        <t>The two possible rules differ in what they tolerate. A rule that accepts a hop on any single valid signature tolerates a cryptographic break that has not become public, since a party able to forge one algorithm needs only to present that signature alone. A rule that requires every checkable signature to verify tolerates no defect in the software that produced them. This profile takes the second position. The cost of doing so while a new algorithm is being introduced falls in the monitoring phase of Section 5.6.2, where nothing is rejected.</t>
        <t>Revision 08 of the base specification allows a signer to declare how its signatures combine, with a comma joining signatures into a group that passes only if all of them pass and a vertical bar separating groups of which any one passing suffices. This profile does not act on that declaration. It evaluates every signature at a hop that it is able to check, requires all of those to verify and leaves the rest unevaluated, which is the rule stated above and does not vary with what the signer asks for. There are two reasons. A declaration of this kind cannot be relied upon, for the reason given above: the signatures that reach a verifier are the ones the last handler chose to send, so a party able to forge one algorithm presents a group that names only that algorithm. And acting on it introduces a failure that falls on legitimate mail, because a verifier that implements two algorithms of a group of three must fail a message whose content it could have verified. A signer cannot know what a receiver implements, so a conjunction declared in the message is a wager on the receiver's capabilities whose penalty is paid by the message.</t>
        <t>For body hash calculation, DKIM2-core supports both relaxed and simple 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 simple canonicalization for body hashing reflects a fundamental tradeoff documented in <xref target="RFC6376"/> Section 3.4. Relaxed canonicalization tolerates common modifications made by intermediate systems, such as whitespace replacement and header field line rewrapping, at the cost of reduced sensitivity to intentional modifications. Neither canonicalization absorbs a change of content transfer encoding; see Section 3.3.9. Simple 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 anchor="optional-declaration-of-signing-algorithms">
          <name>Optional Declaration of Signing Algorithms</name>
          <t>A domain MAY publish the set of signing algorithms it uses, so that a verifier can distinguish a signature that was removed from one that was never made. The declaration is published as a TXT record at <tt>_dkim2</tt> under the domain and is a tag-value list of the form used for key records. It is published under a name of its own because keys are published per selector and <xref target="I-D.ietf-dkim-dkim2-dns"/> requires the TXT records for a selector to be unique, stating that the results are undefined where an RRset holds more than one.</t>
          <sourcecode type="example"><![CDATA[
_dkim2.example.com. IN TXT "v=DKIM2-ALG; a=rsa-sha256:ed25519-sha256"
]]></sourcecode>
          <t>The v= tag MUST be present and MUST be the first tag. The a= tag carries a colon-separated list of algorithm names in the form defined in Section 3.3.1. Other tags MAY be present and MUST be ignored by a verifier that does not understand them, and unrecognised algorithm names MUST be ignored.</t>
          <t>A verifier MAY fetch this record for the signing domain of any hop it verifies. Where the record is present, every algorithm it names MUST be present among the signatures at that hop. A named algorithm that is absent is evidence that a signature was removed after it was made and the hop MUST NOT be reported as a pass. Where the record is absent the hop is judged by the rules above and its absence is not a negative indicator.</t>
          <t>The declaration describes how the domain signs and is evaluated per hop against the signatures carrying that domain in d=. A domain that signs with different algorithms under different selectors cannot be described by one record and SHOULD NOT publish one.</t>
          <t>A domain that stops using an algorithm MUST remove it from the record and wait for the record's time to live to expire before it stops signing with it, since a declaration that outlives the practice rejects the domain's own mail.</t>
          <t>Two limits are inherent. A party able to suppress the DNS response removes the commitment, and a verifier cannot distinguish a record that is absent from one that was suppressed, where a suppressed key record produces a temporary error instead. The mechanism therefore raises the cost of exploiting a broken algorithm and does not defend against control of the resolution path. And it costs one additional lookup per distinct signing domain, cacheable for its time to live, which is why publishing it and checking it are both optional.</t>
        </section>
      </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-Chain-mf and DKIM2-Chain-rt and the consistency of DKIM2-Chain-Mod declarations with the signed header set. The milter applies the graduated enforcement model defined in Section 3.5.2 to determine the appropriate return value: SMFIS_REJECT for structural failures or proven dishonesty, SMFIS_TEMPFAIL for transient errors, SMFIS_CONTINUE otherwise.</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-Chain-Sig 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-Chain-Mod headers added by modifying entities earlier in the chain</t>
            </li>
          </ul>
          <t>Constructs DKIM2-Chain-mf and DKIM2-Chain-rt from envelope values, validates the formal correctness of any DKIM2-Chain-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-Chain-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-Chain-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-Chain-mf and DKIM2-Chain-rt from the envelope values and signs the message</t>
            </li>
          </ul>
          <t>List managers that cannot be modified to add DKIM2-Chain-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-Chain-Mod headers before signing</t>
            </li>
            <li>
              <t>Construct DKIM2-Chain-mf from the MAIL FROM value used in the SMTP transaction</t>
            </li>
            <li>
              <t>Construct DKIM2-Chain-rt from the RCPT TO values used in the SMTP transaction</t>
            </li>
            <li>
              <t>Sign the message with a key authorized for the signing domain</t>
            </li>
          </ul>
          <t>Alternatively, these implementations MAY be configured to relay through a local MTA that carries an outbound milter, delegating signing responsibility to that MTA. This is the RECOMMENDED approach for operators who wish to minimize the scope of DKIM2-core implementation.</t>
        </section>
        <section anchor="hop-counting-and-multiple-hops-within-the-same-administrative-domain">
          <name>Hop Counting and Multiple Hops Within the Same Administrative Domain</name>
          <t>When a message passes through multiple MTAs within the same administrative domain - for example, a receiving MTA that passes to a list manager that passes to a transmitting MTA - each SMTP transaction that adds a new DKIM2 signature constitutes a new hop with an incremented i= value.</t>
          <t>Operators MAY choose not to add a DKIM2 signature at intermediate hops within their own administrative domain if the intermediate hop does not modify the message and does not need to be independently attributed in the chain of custody. Transparent internal relays that add only Received: headers do not need to participate in DKIM2 signing.</t>
          <t>However, any hop that modifies the message - including a list manager - MUST be represented in the chain of custody with its own DKIM2 signature, regardless of whether that hop is within the same administrative domain as adjacent hops. A list manager's signature may be generated by the list manager itself, when it signs directly as its own MTA, or by a downstream MTA to which it delegates signing.</t>
          <t>Signing both before and after mailing list processing is supported as an optional mode. In this configuration the inbound milter verifies the previous hop and signs at i=N, the list manager adds DKIM2-Chain-Mod declarations for its modifications and the outbound milter signs at i=N+1 covering the declared modifications. This mode ensures that all outbound messages carry a DKIM2 signature regardless of the delivery path - including cases where a single submission results in both list-processed and direct-delivery copies. Operators who do not require this coverage may use the single-hop model described above.</t>
        </section>
        <section anchor="confirmation-of-milter-based-implementability">
          <name>Confirmation of Milter-Based Implementability</name>
          <t>The feasibility of implementing DKIM2-core via the milter interface without MTA core modifications has been confirmed by multiple participants in the working group discussion.</t>
          <t>Murray Kucherawy, co-chair of the DKIM working group, confirmed publicly on the working group mailing list that core MTA modifications are not necessary to add DKIM2 support via milter - consistent with the deployment model used for DKIM1, SPF, DMARC and ARC.</t>
          <t>G.W. Haywood, maintainer of Sendmail::PMilter - a Perl milter implementation supporting both Sendmail and Postfix - noted that milter protocol version 6 already provides the necessary primitives: adding, deleting and modifying headers and replacing the message body. He assessed that implementing DKIM2 via milter would not be a significant implementation effort once the specification stabilizes and expressed intent to implement DKIM2 support. John Levine subsequently confirmed on the working group list that the primary difference from existing DKIM in terms of milter implementation is access to envelope addresses - and that SMFIC_MAIL and SMFIC_RCPT callbacks already provide these in the milter protocol. He characterized the milter-based implementation of DKIM2 as a Small Matter Of Programming. G.W. Haywood concurred with this assessment.</t>
          <t>A working milter implementation of DKIM2 in Perl using Sendmail::PMilter has been published by Bron Gondwana, co-author of the DKIM2 specification, in the working group interoperability repository at https://github.com/dkim2wg/interop/. This implementation demonstrates that the milter interface provides the primitives necessary for DKIM2 implementation - including Message-Instance generation and outbound signing - without MTA core modifications. The existence of this implementation confirms the milter-based deployment model described in this document, independently of whether the full DKIM2-extended profile or only DKIM2-core is implemented.</t>
          <t>These confirmations from active MTA implementers are consistent with the DKIM2-core design principle described in this document: all mandatory functionality is expressible within the existing milter interface without requiring changes to MTA core software. An implementation of the specific deployment profile described in this document is documented in the Implementation Status section.</t>
        </section>
        <section anchor="content-modifying-gateways-and-topology-requirements">
          <name>Content-Modifying Gateways and Topology Requirements</name>
          <t>Antivirus engines, DLP systems, encryption gateways and content filters may modify messages in transit without participating in any authentication protocol. This section describes how such components are accommodated under DKIM2-core and what deployment topology this requires.</t>
          <t>These components are not autonomous nodes on the delivery path. Each one is deployed inside the administrative domain of either the sending or the receiving operator, which has installed it deliberately for a security purpose. An operator therefore always knows which content-modifying components are present in its own path, even though a remote party cannot discover them. The problem is not detection by third parties: it is that the ADMD hosting the component must take responsibility for what the component does.</t>
          <t>Under DKIM2-core that responsibility is expressible. The modifying component itself needs no knowledge of DKIM2. What is required is that a DKIM2 signer be placed downstream of it, within the same administrative domain, so that the modification is attributed to that domain through a signature over the modified content. The signer does not describe what was changed: it states that the message left its domain in the state presented and that the domain accounts for it. This holds whether the modification was an attachment removal, a redaction, a URL rewrite or an encryption of the entire body.</t>
          <t>A hop is in one of two positions. Either it originates the message and its signature is the first in the chain, or it sends on a message it received and its signature continues a chain. In the first position there is no earlier state to reconcile and whatever the pipeline changed is part of the message as originally signed. In the second, two routes are available and no third one is. Either the component that modified the message declares what it changed through DKIM2-Chain-Mod, per Section 3.2, or the hop re-originates per Section 6.1.1: terminate the inbound chain, remove all prior DKIM2 header fields and sign as a new i=1 under the domain's own identity and envelope. What is not available is a signature that continues the chain over a state the signer has not accounted for.</t>
          <section anchor="topology-on-the-outbound-path">
            <name>Topology on the outbound path</name>
            <t>The signer is placed after the complete filtering pipeline, so that it signs whatever emerges from it. Modifications introduced by any component in the pipeline are covered by the signature of the ADMD that operates it and the envelope binding reflects the transaction as it is actually transmitted. The operator signs the output of its own gateway and thereby accepts accountability for its behavior. Where the signature is not the first in the chain, the two routes above apply to the hop exactly as they apply on the inbound path.</t>
          </section>
          <section anchor="topology-on-the-inbound-path">
            <name>Topology on the inbound path</name>
            <t>On the inbound path an additional constraint applies. DKIM2 binds the MAIL FROM and RCPT TO values of the SMTP transaction to the signature, so verification requires access to the envelope of the incoming session. A component that receives a message outside that session no longer has those values available. Verification must therefore be performed by the node that accepts the external connection.</t>
            <t>Where a content-modifying gateway is the node accepting external connections, it terminates the SMTP session and the envelope is not available to any node behind it. Such a deployment cannot verify DKIM2 at all, regardless of what it does to the content.</t>
            <t>The topology that supports DKIM2-core on the inbound path is therefore:</t>
            <ol spacing="normal" type="1"><li>
                <t>an edge MTA that accepts the external SMTP connection, verifies the DKIM2 chain and the envelope binding, and records the verification result;</t>
              </li>
              <li>
                <t>the content-modifying component, which operates on the message as an internal stage;</t>
              </li>
              <li>
                <t>an internal DKIM2 signer, if and when the message is relayed further.</t>
              </li>
            </ol>
            <t>Where delivery is terminal, step 3 does not arise. Verification at the edge is the last point at which the chain is meaningful, no further signature is produced and no downstream party is affected by the modification.</t>
            <t>Where the message is relayed further, a hop whose modifications are not declarable cannot present its signature as an unqualified continuation of the chain. The two routes set out above apply. Neither requires state: nothing has to retain the message as it stood before modification and no difference has to be computed. A component that modifies a signed header field without declaring it breaks the header hash of the preceding hop and the message will fail verification downstream.</t>
            <t>Operators who currently deploy a content-modifying gateway as their externally facing MX must introduce an edge MTA ahead of it in order to participate in DKIM2. This is a change of network topology, achievable with existing software and without modification to the gateway product. It is a real deployment cost and operators should account for it.</t>
          </section>
          <section anchor="gateways-operating-as-the-external-mx-under-third-party-control">
            <name>Gateways operating as the external MX under third-party control</name>
            <t>A distinct case arises where the externally facing MX is operated by a third party on the operator's behalf, as with cloud-hosted security gateways. The operator controls no node ahead of the gateway and cannot introduce one. Verification of the incoming chain is available only to the gateway operator and if that operator does not implement DKIM2 the chain terminates there irrespective of the receiving domain's own capabilities.</t>
            <t>This profile does not resolve that case. A receiving domain in this position cannot verify DKIM2 for the affected flows and SHOULD NOT represent itself as able to do so. This is a limitation of the deployment arrangement rather than of the profile and it resolves if the gateway operator implements DKIM2-core verification at its edge, which requires no recipe generation and no state beyond the SMTP session.</t>
          </section>
          <section anchor="what-a-participation-declaration-can-assert">
            <name>What a participation declaration can assert</name>
            <t>A capability declaration mechanism has been discussed in the working group as a way to signal whether a domain participates in DKIM2. It is specified in <xref target="I-D.chuang-dkim2-sender-policy"/>, which was at revision 04 at the time of writing and is under active revision. A declaration of that kind names a domain, while a chain is continued or broken by nodes, so the two do not describe the same object. The operator is nonetheless in a position to make such a declaration accurate, because the topology of its own paths is known to it: which node accepts external connections, which internal relays exist, whether an alias or forwarding service is in use and whether a list manager sits in the path. The topology requirement set out above is what turns that knowledge into an accurate declaration. The one case in which the knowledge does not suffice is the one described immediately above, where the node ahead of the operator's own externally facing MX belongs to a third party.</t>
            <t>Such a declaration covers the case of a domain that does not participate. It does not cover the case described here, where a domain participates, signs correctly and has an in-path component ahead of its externally facing MX that no declaration describes. A domain in that position that declares participation makes its own situation worse: a receiver that finds the declaration and a broken chain has grounds to treat the discontinuity as deliberate rather than as an exit from DKIM2. The topology requirement above is therefore not an alternative to a declaration mechanism. It is the condition under which declaring participation is accurate. A declaration that named the position of a non-participating component within the declaring domain's own path, rather than only the domain's participation, would distinguish a discontinuity that is localized from one that is merely observable, which is a distinction none of the present mechanisms expresses.</t>
            <t>The granularity of such a declaration determines what it can truthfully assert. A declaration published for a domain asserts participation for every node that sends on that domain's behalf and in a domain of any size those nodes are not uniform: an externally facing MX, internal relays, an alias or forwarding service, a list manager and, in the case described above, a gateway operated by a third party. A domain cannot assert participation for a node it does not control and a node that forwards without modifying has no occasion to sign, which Section 3.7.5 permits. The declaration is accurate for the domain as a whole only where every one of those nodes participates.</t>
            <t>That condition matters wherever a receiver draws its conclusion from the declaration rather than from the message. Where a receiver treats the presence of a declaration for the preceding hop's domain, together with the absence of a signature from that domain, as evidence that the message was replayed, each of the cases above produces that evidence without a replay having occurred: a transparent relay that signs nothing, an internal relay that was never required to sign and a third-party MX that cannot sign. This profile draws its conclusions from the message instead. A signature that is present and does not verify is a failure of the hop that made it, while the absence of a signature is the absence of evidence and not evidence in itself.</t>
          </section>
        </section>
      </section>
      <section anchor="internationalization">
        <name>Internationalization</name>
        <section anchor="scope-and-principle">
          <name>Scope and Principle</name>
          <t>The mechanisms specified in this profile operate on octets, not on text. Header hashes, body hashes and signature inputs are computed over octet sequences and the comparisons that establish envelope binding are comparisons of octet sequences. This profile therefore does not define a notion of textual equivalence and no participant may introduce one.</t>
          <t>This is a deliberate design constraint rather than an omission. Any transformation that preserves the meaning of text while altering its octets, such as Unicode normalization, case folding or transcoding between character encodings, produces a different hash for input that a human reader would consider identical. Where such a transformation is applied by one participant in a chain and not by another, the two compute different hashes over the same message and the chain breaks on legitimate mail. Since the milter and MTA interfaces through which implementations receive messages do not declare a character encoding and since <xref target="RFC6532"/> permits header field values and <xref target="RFC6531"/> permits envelope addresses to contain UTF-8, an implementation cannot in general know whether a given octet sequence is UTF-8. Octet transparency is consequently not a hardening measure but the only behavior that can be specified coherently.</t>
        </section>
        <section anchor="dkim2-chain-mod-values">
          <name>DKIM2-Chain-Mod Values</name>
          <t>The del= and new= values are delimited by DQUOTE. The value is delimited positionally, on the unfolded header field value: it begins immediately after the first DQUOTE following the tag's "=" and ends immediately before the last DQUOTE in that header field value. Because del= and new= MUST appear last in the header field, this rule yields exactly one parse. A DQUOTE octet occurring within the value MUST NOT be treated as a terminator and no unescaping is applied.</t>
          <t>Each fragment of a fragmented value is independently delimited by its own DQUOTE pair and the positional rule applies to each fragment separately. Fragments are reassembled by concatenating the delimited values in ascending fr= order, with no separator inserted.</t>
          <t>A del= or new= tag whose value does not begin with DQUOTE is malformed. Implementations MUST NOT accept an unquoted value terminated by the tag separator, because that would provide two encodings of the same logical value on a field that feeds a hash and the unquoted form cannot carry the tag separator itself.</t>
          <t>The value between the delimiters is a sequence of octets. A signing participant MUST place it in the tag exactly as the octets appeared in the header field value being declared and a verifying participant MUST use it for reconstruction exactly as the octets appear between the delimiters. Implementations MUST NOT apply any transformation to the value at either point, including Unicode normalization, case folding or transcoding between character encodings, and MUST NOT reject a DKIM2-Chain-Mod declaration on the grounds that the value is not well-formed in any particular character encoding.</t>
          <t>This prohibition concerns the value at the two points just described: where the signing participant places it in the tag and where the verifying participant extracts it for reconstruction. It does not concern the canonicalization of the DKIM2-Chain-Mod header field itself, which is applied per Section 3.3.5 by every participant alike. That canonicalization compresses runs of whitespace within the value and it does so identically when the header field being declared is hashed at hop i-1 and when the reconstructed header field is hashed at hop i+1. Because the compression is idempotent, a difference in internal whitespace, whether present from the outset or introduced in transit, is absorbed on both sides of the comparison and the reconstruction closes.</t>
          <t>Because the values are compared after relaxed canonicalization, the mechanism establishes equivalence of the declared value under that canonicalization rather than octet identity with the original header field value. A declaration that differs from the original only in internal whitespace reconstructs successfully and a modification consisting solely of a whitespace change produces no observable effect on the header hash. This is the same tradeoff that relaxed canonicalization makes for body integrity, discussed in Section 3.6.</t>
          <t>This differs deliberately from the strict-validation discipline that has proven correct for structured data formats. There, a parsed structure drives subsequent decisions and differing leniency between parsers creates exploitable differentials. No parsing of the value occurs here: the octets are delimited positionally and hashed. Transparency, not validation, is what removes the differential in this case.</t>
          <t>A header field value may contain octets that dkim2-chain-mod-value cannot carry: DEL and the C0 controls other than HTAB, which <xref target="RFC5322"/> Section 4 permits only in its obsolete syntax and which conforming implementations MUST NOT generate. An implementation that modifies such a header field, and therefore has to declare it, MUST NOT sign the message, because a declaration that drops or replaces those octets asserts a value the field did not hold.</t>
          <t>A header field whose value is the empty string cannot be declared, because dkim2-chain-mod-value requires at least one octet between the delimiters and this profile treats such a field as absent for the purposes of DKIM2-Chain-Mod declarations as stated in Section 3.2.1. The two states are not equivalent under the header hash: a field present with an empty value contributes its name to the computation and an absent field contributes nothing. A modification consisting solely of the addition or the removal of an empty header field is therefore neither declarable nor reversible under this profile. This is a known limitation and not a property of the mechanism.</t>
        </section>
        <section anchor="envelope-addresses">
          <name>Envelope Addresses</name>
          <t>An SMTP transaction using the SMTPUTF8 extension <xref target="RFC6531"/> may present envelope addresses containing non-ASCII octets in the local part, in the domain or in both. The addr= tag of DKIM2-Chain-mf and DKIM2-Chain-rt MUST carry the address exactly as it appeared in the corresponding SMTP command, octet for octet. An implementation MUST NOT normalize, transcode or otherwise rewrite the address when placing it in the tag, including conversion between the U-label and A-label forms of the domain. This prohibition concerns the value carried in the tag and not the comparison defined below, which converts a copy and never writes the converted form back.</t>
          <t>The base specification takes the opposite course. Its Section 18, on the internationalized email framework of <xref target="RFC6530"/>, requires that domain values from MAIL FROM and RCPT TO be mapped from U-labels to A-labels before being recorded, while local parts are recorded unchanged on the ground that the base64 encoding of the value raises no difficulty. The same encoding carries the domain, so the reason given for the local part applies to the domain as well. Recording a converted form means the signature no longer attests the address as it was presented in the transaction. It does not remove the need for conversion at the verifier either, which must still map a U-label received in the live envelope before comparing it. This profile therefore records the address as presented and converts only for the comparison, which places the conversion where it is unavoidable and nowhere else.</t>
          <t>Unlike DKIM2-Chain-Mod values, envelope addresses are compared and not merely transported, so transparency alone does not determine the outcome. Comparison proceeds in two stages:</t>
          <ol spacing="normal" type="1"><li>
              <t>The two addresses are compared as octet sequences, with the local parts compared case-sensitively as required by <xref target="RFC5321"/> Section 2.4 and the domains compared case-insensitively over the ASCII range only. If they match, the comparison succeeds.</t>
            </li>
            <li>
              <t>If they do not match and either domain contains octets outside the ASCII range, the two domains are converted to their A-label forms per <xref target="RFC5890"/> and compared again, case-insensitively. If they match, the comparison succeeds.</t>
            </li>
          </ol>
          <t>Implementations MUST implement the second stage. Where the conversion of a domain to its A-label form fails because the domain is not a valid internationalized domain name, the message is malformed and the result is a permerror. Where both conversions succeed and the A-labels differ, the comparison has failed and the result is a fail. No other outcome is defined and in particular an implementation MUST NOT report a distinct result for its own inability to perform the conversion: the capability is required and a verification result describes the message rather than the verifier.</t>
          <t>Stage 1 alone resolves every comparison in which both addresses are ASCII, which is the case for the overwhelming majority of current traffic. Stage 2 is reached only when the octet comparison has already failed and non-ASCII octets are present, so the cost of internationalized domain name support falls only on deployments that actually encounter it.</t>
        </section>
        <section anchor="header-field-names">
          <name>Header Field Names</name>
          <t>Header field names are not internationalized. <xref target="RFC6532"/> extends the unstructured production of <xref target="RFC5322"/>, and therefore the values of header fields, but leaves field-name unchanged. Field names consequently remain restricted to printable ASCII and comparisons of field names are ASCII case-insensitive comparisons.</t>
          <t>The header-field-name production of this profile is nevertheless narrower than <xref target="RFC5322"/> permits. Field names containing an underscore or other printable ASCII characters occur in deployed infrastructure, frequently in header fields added by filtering and scanning components and the component that modifies such a header field is often not the one that created it. A component that modifies it has no means of declaring the modification under the narrower production, which would prevent rollback of a legitimate and declarable change. The production is therefore the one of <xref target="RFC5322"/> Section 3.6.8 unchanged. The semicolon that separates tags within the DKIM2-Chain-Mod header field is distinguished positionally, as the del= and new= values are: the value of the field tag runs to the first semicolon followed by SP, a tag name and an equals sign, or to the end of the header field value. A field name cannot contain a space, so no other reading is available, and the trailing semicolon that the syntax of Section 3.1.7 accepts on input is not recognised after the field tag. Any field name that <xref target="RFC5322"/> permits can therefore be declared.</t>
        </section>
        <section anchor="domain-comparison">
          <name>Domain Comparison</name>
          <t>Wherever this profile requires comparison of domain names, whether between the d= tag and an envelope domain, between envelope domains at successive hops or against configured local domains, the comparison follows the two stages of Section 3.8.3 applied to the domain alone: an ASCII case-insensitive comparison first and, where that fails and octets outside the ASCII range are present, a comparison of the A-label forms defined by IDNA2008 <xref target="RFC5890"/>. The d= tag is restricted to ASCII by the domain-name production of Section 3.3.1, so a signing domain is always in that form already and the lookup of its key record requires no conversion: only an envelope domain can reach a comparison as a U-label.</t>
          <t>Implementations MUST NOT apply locale-dependent case mapping to octets outside the ASCII range for this purpose. A case mapping drawn from the runtime locale may fold or classify continuation octets of a UTF-8 sequence, which both corrupts the comparison and, where the same primitives are used in canonicalization, produces a hash over octets that differ from those received.</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.6.</t>
        <t>An alternative approach stores the previous body in the MIME preamble or epilogue area rather than as literal data in the recipe, leaving the recipe a copy range into the message as transmitted. The base specification does not define it: the words "preamble" and "epilogue" do not appear in <xref target="I-D.ietf-dkim-dkim2-spec"/>, whose Section 2.3 states only that a Forwarder may alter the message content and that a record will be made of the changes. One implementation does it. The production Perl code in the working group interoperability repository places the previous body in the epilogue when a diff exceeds its configured limit on literal lines, and where the message is not multipart it converts the content into a multipart/mixed message in order to create the area it needs. The first limitation identified in working group discussion is therefore not removed by implementation but made concrete: a substantial fraction of modern email, particularly bulk and transactional mail, is single-part HTML with no MIME boundaries, so the area does not exist and has to be manufactured. The mechanism whose purpose is to record what was done to a message alters the structure of the message in order to have somewhere to put the record. The second limitation is unchanged: the use of these areas for signed content has not been tested and their behaviour across the heterogeneous ecosystem of MTA and filtering software is unknown.</t>
        <t>A third storage option - encoding the recipe as a MIME attachment on the message - has also been considered. This avoids the header-size and MIME-availability constraints of the other two approaches, but makes the recipe visible to the end user: mail clients render attachments in the message view and an opaque base64-encoded JSON blob attached to ordinary correspondence is both confusing to end users and inconsistent with normal mail presentation. Archiving and mail-storage systems would also retain and index this content as a distinct MIME part, compounding the privacy considerations discussed in Section 4.8.</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 implementation described above avoids non-monotone access by a different means and pays for it in the same coin. Placing the whole previous body in one contiguous region at the end of the message makes the recipe a single ascending copy range, so the access pattern is monotone. What a processor then needs in order to emit the first line of the reconstructed body lies at the end of the message it is reading, so bounded-memory streaming is lost in any case. The two arrangements fail for different reasons and neither streams.</t>
        <t>Body recipe generation requires the signing component to access both the pre-modification and post-modification states of the message, which necessitates complete message buffering at the signing hop. This is distinct from recipe application, which can be performed sequentially for monotone recipes. The streaming constraint identified by the working group as fundamental applies to both signing and verification; body recipe generation violates it at the signing stage.</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.4.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>
        <t>A further property of the preamble and epilogue option is that a conforming client does not show the user what is placed there, and that is a difficulty rather than a reassurance. <xref target="RFC2046"/> Section 5.1.1 states that these areas "should generally be left blank, and implementations must ignore anything that appears before the first boundary delimiter line or after the last one", and the note that follows gives the reason they are generally not used: "the lack of proper typing of these parts and the lack of clear semantics for handling these areas at gateways". The previous body is therefore placed in the one region of a message whose handling by intermediaries the MIME specification declines to define, by a protocol whose subject is what intermediaries do to messages. The content is not displayed, not labelled and not announced, yet it is present in the delivered message, where a source view shows it, a mail store indexes it and a client that does not follow the rule may render it. Where the modification being described was a redaction or the removal of an attachment, what travels in the epilogue is the material the modification existed to remove.</t>
      </section>
      <section anchor="verification-depth-is-not-specified">
        <name>Verification Depth Is Not Specified</name>
        <t>The base specification prescribes the depth of verification without requiring it. Its Section 14.4 states that the Verifier needs to check the Chain of Custody from start to finish and its Section 14.6 requires that, where more than one signature is present, all of them be checked where the Verifier is able to do so. Neither statement is accompanied by a requirement that the chain be traversed, and its Section 13.2 defines an acceptance path that does not traverse it: a receiver MAY make an initial assessment on Provisional Verification, which examines the highest numbered DKIM2-Signature and Message-Instance header fields alone, checking that their m= values agree, that the signatures and the hashes there pass and that the MAIL FROM and RCPT TO are consistent with the mf= and rt= of that signature, and may accept the message on that basis.</t>
        <t>That path exists because the full procedure is expensive, and what makes it expensive is reconstruction rather than the chain of custody: establishing every intermediate state means applying the recipes of every hop. Revision 08 states what may follow such an acceptance and its reasoning holds: where the receiver later determines that the message is not a Fully Verified DKIM2 Message it MAY generate a Delivery Status Notification, which cannot become backscatter because the shallow check has already verified the envelope against a system that took part in the delivery. The cost is not in the notification. It is that acceptance was decided on one hop while the specification describes the verification of all of them.</t>
        <t>Nor is the composition of reconstruction and validation required. Section 14 of the base specification states that a Verifier determining a particular DKIM2-Signature must reconstruct the state of the message as it stood when that header field was added, which governs how a signature is evaluated once a Verifier has chosen to evaluate it. Section 14.7 of that document describes how a hash value is validated. Neither requires that a Verifier reporting a result have validated each reconstruction against the hashes of the Message-Instance it reconstructs. Section 13.4 of that document states that where only the first form of the message is of interest, all the recipes can be applied in turn and only one hash value checked, the correctness of the intermediate hash values being not relevant to that assessment. That is a sound end-to-end check of the original content. What it does not establish is which hop made which change: a hop that declares an intermediate state it did not hold, compensated by the recipe of the hop after it, yields the same final reconstruction. Working group discussion accepted that localising a failure requires hop-by-hop verification as a fallback where the end-to-end check does not pass. That fallback is triggered by failure, so it does not reach the case where the end-to-end check passes over intermediate states that were misdeclared. Confirming the original is not the same as attributing the modifications and only the second is what the chain of custody exists to provide. Revision 08 adds a prohibition that rests on the same uncomputed property. Its Section 13.1 states that whether a message being a Fully Verified DKIM2 Message makes any difference to acceptance is entirely a matter for local policy. The same section states that a message carrying DKIM2 header fields which is not a Fully Verified DKIM2 Message MUST NOT be sent to another system without a local arrangement. The antecedent of that prohibition is established only by the full determination, which the same section leaves optional for acceptance and which its Section 13.2 permits a receiver to replace with an assessment of the likelihood that the property holds, made on the highest numbered signature and Message-Instance alone. A hop that accepts on that assessment and forwards has no basis on which to know whether it is within the prohibition or outside it.</t>
        <t>The consequence is that two conformant implementations can guarantee different properties. Both conform: one reconstructs the whole chain and validates every intermediate state while the other accepts on Provisional Verification and stops. The two messages are delivered on different evidence and nothing distinguishes them afterwards, because the base specification defines no field in which a receiver records the depth it reached. Mechanisms built on top of verification inherit this. The base specification requires in its Section 11 that the From: header field be Authentic, and it locates the comparison at i=1 where the field has not been altered and at the signature following the Recipe that replaced it where it has. Establishing the property therefore requires walking the chain to that hop, and in the second case it requires reading the header Recipes to find which hop replaced the field. A verifier that stops at the most recent signature cannot do either. A verifier that implements the core mechanisms without Recipes cannot do the second at all. Both report the same result as a verifier that did.</t>
        <t>A mandatory core profile addresses this directly. DKIM2-core defines a fixed verification procedure whose cost does not depend on chain length: envelope binding against the current transaction, the continuity check of Section 3.3.8 and, where hh= is present, the single-step rollback of Section 3.3.7. Every conformant node performs the same checks, so a result carries the same meaning wherever it is produced. Reconstruction of earlier message states remains available in DKIM2-extended for operators who require it, as an addition to a defined floor rather than as a substitute for one.</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. This analysis assumes the header-based Message-Instance mechanism as currently specified in <xref target="I-D.ietf-dkim-dkim2-spec"/>, which places the recipe in the message header and defines no alternative.</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.5 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>
        <t>The reference implementation has since taken the first of those two routes. A plan published in the working group interoperability repository on 14 October 2026 gives chain of custody to an unpatched Mailman 3 by placing one milter at ingress and one at egress: the inbound milter stores the message as it arrived in a snapshot directory shared with the outbound milter, keyed by a token it writes into the message, and the outbound milter retrieves that snapshot and diffs the modified message against it. The configuration option is named for what it is, a snapshot directory shared between the verifying handler and the signing handler. The shared state is required by recipe generation alone: signing and verification remain stateless in that implementation as they are in this profile. The arrangement also requires routing only the chosen traffic through the two milters, with per-recipient and per-sender rules in the MTA, and a change to the list manager own listening port.</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 SHOULD 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 SHOULD 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 SHOULD 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>These limits are stated as recommendations because the mechanism they bound is defined in <xref target="I-D.ietf-dkim-dkim2-spec"/>, which specifies none. Normative limits on recipe object count, nesting depth and total size belong in that document: without them each implementation chooses its own and a recipe accepted by one verifier is rejected by another. The values given here are operationally motivated defaults, not principled bounds, and are offered as a starting point for such a definition.</t>
          <t>The implementations have since adopted a bound of their own. A design document in the working group interoperability repository, dated 9 October 2026, records that every body recipe generator then in existence had unbounded worst-case cost: two production generators and two test generators were quadratic or worse, one of them measured at 3.7 seconds for 4000 lines on an adversarial input, and the remaining one was linear at the price of emitting one literal line for every line of the body. The remedy adopted is a cap of 1000 literal lines per recipe together with a work budget of four million units, both configurable. This is a bound on the code that computes the recipe and not on the protocol. The base specification sets none: its Section 20 states that it "places no limits on the complexity of Recipes. Even if limits were set, malicious messages could ignore them". The point at which a body stops being recoverable is therefore set by each implementation configuration rather than by the mechanism.</t>
          <t>Beyond CPU cycles, the requirement to reassemble Base64-encoded JSON buffers fragmented across folded header lines - <xref target="RFC5322"/> folding splits a single logical header value into multiple physical lines joined by CRLF plus whitespace - 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 simple 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 anchor="non-utf-8-content-and-recipe-literals">
          <name>Non-UTF-8 Content and Recipe Literals</name>
          <t>JSON strings are sequences of Unicode characters, not octets. A message body transferred as 8bit in a legacy character set such as ISO-8859-1 contains octet sequences that cannot be represented in a conformant JSON string, so a body recipe that must emit such a line as literal data cannot be generated at all. This was raised in the working group in January 2026 and remained open when it was raised again in September, at which point the authors of the base specification acknowledged it.</t>
          <t>Two remedies were considered. The first is to restrict 8BITMIME handling to content that is UTF-8 or a subset of it, which excludes message populations that are not in decline. The second is to carry lines containing non-representable octets as base64 under a separate recipe label, which the authors described as producing a doubly encoded value and as not elegant. Either way the escaping problem that structure was introduced to avoid returns within the structure itself and for body content it returns in full: the base specification records envelope addresses as base64 inside tag-value fields for the same reason.</t>
          <t>The second remedy has since been adopted. It adds a third recipe step type alongside copy and emit-data, and an implementer of the base specification stated its cost directly: the content is base64 encoded twice, once within the JSON strings of the new step and once again in the serialization of the whole recipe.</t>
          <t>Detecting which of the two forms applies is not expensive: deciding whether a byte string is valid UTF-8 is a small deterministic automaton, whose states remain in single figures even when overlong encodings, surrogate code points and out-of-range sequences are rejected, as a strict validator must reject them. The cost is not in the detection. The recipe format acquires two ways to express the same line, the generator chooses between them per line and every implementation must handle the second form even though its application is expected to be rare. A code path that is mandatory to implement and rarely exercised in production is the one most likely to be wrong when it is finally reached.</t>
          <t>Where an implementation carries literal data in recipes, encoding every literal uniformly rather than only those lines that require it removes a decision that must otherwise be taken per line, removes the need to detect representability before generating a recipe and removes the second representation of the same content. Uniform encoding is not free. It expands every literal by a third, including the literals that would have needed no encoding at all, where the conditional form expands only the lines that require it. The choice is therefore between a constant cost in bytes and a conditional cost in implementation complexity. The first falls only on messages that carry literal data while the second falls on every implementation that might one day receive one. A generator that omits that detection step does not fail visibly and the divergence is reported from deployment rather than hypothesized: an implementer of the base specification stated that the JSON library in use can emit non-UTF-8 inside JSON strings, that other parsers reject what it emits and that separate utilities are therefore required to check validity before the recipe leaves the generator. Where a generator instead substitutes a replacement character, it produces a recipe that reconstructs a body the signer never held and the failure appears downstream as a hash mismatch indistinguishable from tampering.</t>
          <t>The advice that a verifier should treat the body as an undifferentiated sequence of octets is not what implementation requires: an implementer reported needing line semantics for copy steps and checks for stray CR and LF both in the body and inside emitted literals. Each of those checks is a point at which two verifiers can diverge on the same recipe.</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.4.1, is evidence that this attack surface is real.</t>
        <t>Recipe chain integrity - a malicious intermediary can construct a recipe that presents a clean original message to verifiers while delivering modified content to recipients. This attack is feasible for any compromised node in the chain.</t>
        <t>Recipe stripping - operators may strip recipe content for operational or compliance reasons, removing information that downstream verifiers depend on.</t>
        <t>These concerns are addressed in detail with normative requirements in Section 8.3.</t>
      </section>
      <section anchor="the-null-recipe-and-its-implications">
        <name>The Null Recipe and Its Implications</name>
        <t>A null recipe declares that a modification was made to the message body but that the previous state cannot be reconstructed. Null recipes are the correct response for several categories of intermediary that are common in real-world deployment:</t>
        <ul spacing="normal">
          <li>
            <t>Security gateways that rewrite URLs - the original URLs may be sensitive and should not be reconstructed</t>
          </li>
          <li>
            <t>Antivirus gateways that remove malicious attachments - the removed content should not be preserved or transmitted</t>
          </li>
          <li>
            <t>DLP systems that redact sensitive content - reconstruction would defeat the purpose of the redaction</t>
          </li>
          <li>
            <t>Legacy MTAs that perform 7bit/8bit conversion - the conversion may not be perfectly reversible</t>
          </li>
          <li>
            <t>Mailing list managers that strip attachments or filter content - Mailman supports configurable MIME type removal natively via its filter_content and filter_mime_types parameters, accessible to any list administrator without server-level configuration. Sympa supports attachment removal through custom delivery scenarios. Both represent active deployment options, not legacy configurations. A common operational variant replaces removed attachments with a URL pointing to a shared repository, preserving message flow while eliminating large or problematic content. The suggestion that lists simply reject messages containing attachments rather than stripping them does not reflect common operational practice - rejection is one option among several and stripping is frequently preferred to preserve the communication value of the message body. This is a currently deployed scenario, not a legacy or transitional case.</t>
          </li>
          <li>
            <t>Any intermediary that makes modifications it cannot or should not describe in a recipe</t>
          </li>
        </ul>
        <t>These categories collectively represent a substantial fraction of real-world email infrastructure. When any of these nodes is present in the delivery chain, the result is a null recipe at that hop - which provides no additional body accountability beyond the bh= change already available in DKIM2-core. If null recipes are acceptable at the nodes most likely to make substantial body modifications, the incremental benefit of DKIM2-extended over DKIM2-core for body accountability is limited to the cases where all intermediaries cooperate fully - which is the minority of real-world delivery paths.</t>
        <t>This is the deployment wall for DKIM2-extended: the obstacle is not only at the MTA level but throughout the entire content filtering pipeline. MIMEDefang - a widely deployed Perl-based milter framework for Sendmail used to strip viruses, remove HTML parts, redact content and replace attachments with URLs - exemplifies this class. Under DKIM2-extended, every MIMEDefang filter function that modifies message content would be required to generate a body recipe JSON structure declaring what it changed. A framework designed to make content filtering accessible to mail administrators would need to produce cryptographic diff structures for every modification. The same applies to Amavis, ClamAV integrations and Rspamd content rewriting rules. None of these tools know what a body recipe is and none of them can produce one for the modifications that are their primary function. An entire class of legitimate and widely deployed intermediaries - antivirus engines, DLP systems, encryption gateways, content filters - exists precisely to apply irreversible modifications: remove the malware, redact the sensitive data, encrypt the content. Asking them for a reconstructive recipe is asking them to negate their own function. For antivirus and DLP systems the null recipe is at least technically available, even if it provides no accountability beyond what DKIM2-core already offers via the changed bh= value attributed to the modifying hop. For encryption gateways the incompatibility is structural: a content-bearing recipe would expose the pre-encryption plaintext, defeating the purpose of the gateway, while a null recipe leaves DKIM2-extended with no reconstruction to offer at all. The reconstruction model has nothing to attribute the message to beyond the fact that some transformation occurred. Working group discussion of this scenario surfaced no path that preserves the reconstruction model: the only arrangement compatible with the recipe mechanism specified in <xref target="I-D.ietf-dkim-dkim2-spec"/> is to tunnel the entire DKIM2-signed message as an encrypted MIME container, with the recipient unwrapping and verifying the inner chain after decryption - an approach that requires active support on the recipient side, moves verification from the server to the client and cannot be deployed unilaterally by the gateway.</t>
        <t>Under DKIM2-core the same gateway raises no special case. It is a Reviser like any other: it declares its modification via DKIM2-Chain-Mod, signs and presents a changed bh= under a certain signing-domain identity. The recipient learns which domain encrypted the message and that it did so - which is what routing accountability requires - without any dependency on reconstructing the pre-encryption body. The recipient's ability to authenticate the original sender is not carried by a recipe in either model; it is carried by the surviving signed attribution in the chain. The alternative - null recipes at every hop - concedes the accountability property that DKIM2-extended exists to provide. DKIM2-core requires none of these tools to change: the signer milter downstream of the entire filter pipeline signs whatever emerges from it.</t>
        <t>The systematic use of null recipes by security gateways is not a theoretical concern - it has been confirmed empirically by a major gateway vendor participating in this working group. Philip Guenther of Proofpoint, whose products perform substantial alteration of message headers and bodies under customer security policies, has stated explicitly on the working group list that reversibility of those changes is "the opposite of a goal" for their customers and that their products will use the null recipe mechanism "when necessary" - and will not follow the specification at all if null recipes are not available as an option.</t>
        <t>This confirmation from a major in-path gateway vendor illustrates the structural limitation of the body recipe mechanism: the nodes most likely to make substantial body modifications - security gateways, DLP systems, antivirus engines - are by design and by customer requirement the nodes that will systematically produce null recipes. The forensic value of body reconstruction is therefore unavailable precisely at the hops where attribution would matter most.</t>
        <t>The answer the mechanism gives to the cases listed above, an attachment an antivirus removes or content a DLP system redacts, is now written into the implementations. A design document in the working group interoperability repository, dated 9 October 2026, caps a body recipe at 1000 literal lines and the diff that produces it at four million units of work, and states what happens beyond the cap: a caller able to rewrite the body stores the previous body in the MIME epilogue, and every other caller emits a null body recipe with the body marked unrecoverable. The callers in the second group include header-only signers, the default path of the production Perl implementation and the egress path of a mailing list manager. A removed attachment becomes literal lines, one for each line it occupied, and at the customary 76 characters a thousand base64 lines carry some 57000 octets, so an attachment larger than roughly 56 kilobytes exceeds the default cap on its own. For the modifications this section is about the cap is therefore the ordinary case rather than the exception, and the null recipe is not only what a gateway chooses but what the diff produces when it is asked to describe a real one.</t>
        <t>The same plan shows what it takes to keep the most ordinary modification in email out of the null case. Its analysis of the list manager records that the inline path, the one that appends a footer to a single-part text message, works by "decoding and re-encoding the body, often to base64", and draws the consequence: "The inline path rewrites the whole body, so a body Recipe becomes a null Recipe." The remedy adopted is to pre-empt it. The inbound milter converts every single-part post into a one-part multipart/mixed message before the list manager sees it, so that the footer is added as a separate MIME part and the original part survives byte for byte. That conversion is itself a modification and is recorded as a Message-Instance of its own, so a hop is inserted into the chain whose only purpose is to keep the next hop modification describable. Where the arrangement does not work the plan states the outcome plainly: the message is left unwrapped and "its footer will be inline and its Recipe may be null".</t>
        <t>A separate limitation applies even when reconstruction is technically available. Body recipes, as specified in <xref target="I-D.ietf-dkim-dkim2-spec"/>, reconstruct canonical content, not byte-exact content: reconstruction can differ from the original in the number of trailing empty lines and in the presence or absence of a final CRLF, a difference that is invisible to DKIM2 verification but material to other signature schemes. Re-verifying an end-to-end signature such as S/MIME or PGP against reconstructed content would require the external scheme to use a canonicalization that tolerates exactly this difference - a condition that does not hold for all deployed implementations of those schemes. Beyond this technical constraint lies a practical one: an intermediary that breaks an end-to-end signature is one that modifies the body without regard for it. Producing a recipe that enables reliable reconstruction requires the exact opposite disposition - rigorous tracking of MIME boundaries, transfer-encoding and line-width handling. These two behaviors rarely coexist in the same node. The intermediaries careful enough to produce reversible recipes are largely those that would not have broken the external signature in the first place. The forensic use case attributed to body recipes therefore cannot be relied upon for the re-verification of end-to-end signatures, even in the subset of deployments where null recipes are not used.</t>
        <t>This is not merely a question of adoption incentives. Allen Robinson of Google, addressing the security properties of body recipes on the working group list, noted that body hash verification is designed to require no trust in intermediaries, since each signature can be checked by reversing all later recipes back to the original content. He stated explicitly that null recipes break this property and "reintroduce the concept of trust to DKIM2," citing this as a reason not to support them. The mechanism therefore admits no resolution: disallowing null recipes is inconsistent with the operational requirements of major security gateway vendors, while allowing them concedes the trust-minimization property that is the stated rationale for body recipes in the first place.</t>
        <t>Working group discussion in September 2026 settled the character of the mechanism. A co-author of the base specification described the null recipe as a switch from an evidence-based model to a trust-based one. Another participant held that it is acceptable where trust is pre-established between the parties and that it otherwise implies substantially lower trust than a hop that describes its changes. Asked how a receiver is expected to establish that authorization in practice, a further participant answered that the signer is explicitly configured, generally because a business relationship exists with the system performing inbound filtering and that there is no plausible way to establish it without manual verification that the system altering the mail is trusted.</t>
        <t>This is a coherent design and it is the design of ARC. A mechanism whose correctness depends on bilateral arrangement between each pair of nodes does not extend beyond the relationships that already exist. It works where the modifying gateway sits at the edge of the receiving domain, which is also the case where no downstream party is affected by the modification. For any hop earlier in the path the receiver has no basis on which to authorize the declaration and the reconstruction model provides none.</t>
        <t>Trust re-enters the model at five distinct points. The base specification states in its Section 13 that a message carrying a null Recipe is not a Fully Verified DKIM2 Message and that whether it is nevertheless acceptable, for example because a contractual relationship is in place, is a matter for local policy. The declaration itself substitutes an assertion for the evidence the mechanism was built to supply. Where verification is deferred rather than performed in line, the practical substitute is reputation: a judgement about who handled the message rather than a check of what was done to it. The question of which declared modifications a receiver should accept has the same shape: the answer offered in discussion was a judgement about the party that made them, with a rewritten link described as probably acceptable when it points at a well-known security vendor and with the accompanying observation that such a heuristic could not be written into the specification. And a message transmitted with an nd= tag in its highest numbered signature must be judged acceptable on out-of-band information, since its envelope cannot be validated at all. None of these is an implementation shortcut. Each is specified or was described as intended behaviour and each is a case in which the receiver decides on the basis of who rather than what.</t>
        <t>The positions documented in this section define a logical closure. Null recipes are necessary in practice: a major security-gateway operator has stated that reversibility is the opposite of a design goal and that its implementation will either use null recipes or not implement the reconstruction mechanism at all. Yet null recipes reintroduce trust: as recorded above, a major mailbox provider has objected on precisely this ground, holding that null recipes reintroduce the concept of trust that DKIM2 was intended to remove. Null recipes do not suffice for privacy-preserving intermediaries, whose service requires re-origination of the chain regardless of recipe setting. Null recipes do not suffice for encryption gateways: working group discussion acknowledged that the reconstruction model's central promise - the ability to look back through every modification - cannot hold for in-line encryption.</t>
        <t><xref target="RFC6376"/> Section 3.4 already addressed the fragility of body signatures in DKIM1 through a pragmatic approach: relaxed canonicalization tolerates common modifications such as whitespace replacement and header field line rewrapping, without requiring intermediaries to declare or reconstruct those changes. The recipe mechanism specified in <xref target="I-D.ietf-dkim-dkim2-spec"/> uses a fixed, always-simple body canonicalization with no relaxed alternative, representing 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 under that mechanism. Operators should evaluate whether the forensic value of body reconstruction justifies this tradeoff for their specific deployment scenario.</t>
        <t>The mechanism therefore functions cleanly only for modifications whose reversal carries little forensic value - subject tagging, footer appending - while for the transformations most relevant to security and privacy it either cannot be applied, produces null output or requires re-origination that leaves the model entirely. DKIM2-core documents this boundary as a design choice rather than a deficiency. It provides what the reconstruction model cannot provide uniformly: cryptographic attribution of every body-affecting hop through the changed bh= value under a signed domain identity, applied without exception to every intermediary, including those whose modifications are irreversible by construction.</t>
        <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>
      </section>
      <section anchor="specification-ambiguity-and-implementation-experience">
        <name>Specification Ambiguity and Implementation Experience</name>
        <t>The complexity of the body recipe mechanism produces normative ambiguity that translates directly into interoperability failures. Testing across four implementations from three independent parties in July 2026 revealed 14 failures on multi-hop chains in which intermediate hops made no modifications to the message - the simplest possible case. The failures arose from a normative conflict present in draft-ietf-dkim-dkim2-spec-04 (published 2026-07-05): one section stated a MUST requirement for recipe presence on non-originating Message-Instance headers, a second stated SHOULD for the same scenario and a third permitted omitting the header entirely on unmodified hops. The three parties chose three mutually incompatible but each textually defensible readings. The conflict was acknowledged by the specification authors after testing and identified as requiring revision - but not before the working group chair noted that the keyword used did not satisfy the RFC 2119 criterion for its applicability to the case in question. A transparent hop relaying a message unchanged is not an edge case: it is one of the most common scenarios in real mail delivery paths.</t>
        <t>The readability and interpretability of the DKIM2 specification has been tested empirically. Three independent implementers working on distinct codebases within a three-week window each reported difficulty with the same areas of the base specification. The first is the normative conflict described above, encountered by an implementer of a C milter library. The second was found by an implementer of a Rust mail server: folding whitespace inside base64-encoded header fields, explicitly permitted by the specification, caused parsing failures in two of three reference implementations tested. The third was reported by an implementer working on an encryption gateway, who cited the null recipe and DSN reconstruction text verbatim, stated that it was difficult to follow and requested worked examples. Three codebases, three weeks, three distinct failure modes in the same region of the specification - not an isolated difficulty but a pattern of implementation complexity that the DKIM2-core approach avoids by design.</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-Chain-mf, DKIM2-Chain-rt, DKIM2-Chain-Mod, DKIM2-Chain-Sig and DKIM2-Chain-Results 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 header fields through as unrecognized header fields. Does not add DKIM2 signatures and does not extend DKIM2 chains. Where it rewrites the envelope or modifies signed content it breaks the DKIM2 chain while remaining conformant as a DKIM1 node, since DKIM1 binds neither the envelope nor the full header set.</t>
        <t>ARC node - implements ARC <xref target="RFC8617"/>. ARC and DKIM2-core address overlapping problems with different mechanisms. The relationship between ARC and DKIM2-core is described in Section 5.5.</t>
        <t>Legacy node - implements no cryptographic authentication. Passes all authentication header fields through without interpreting them. Does not add signatures and does not extend DKIM2 chains. Where it rewrites the envelope or modifies the message it breaks the DKIM2 chain, without departing from any requirement that applies to it.</t>
        <t>Sections 3.7.7 and 5.3 describe those cases.</t>
      </section>
      <section anchor="chain-continuity-and-legacy-nodes">
        <name>Chain Continuity and Legacy Nodes</name>
        <t>The following considerations apply exclusively to non-DKIM2-participating legacy nodes - MTAs that are unaware of the protocol and cannot declare their modifications. A DKIM2-aware intermediary that modifies a message is never a legacy node in this sense; it MUST either declare all modifications via DKIM2-Chain-Mod or re-originate the message as described in Section 6.1.1.</t>
        <t>A legacy node in the delivery chain does not break the DKIM2 signature chain, it simply passes existing signatures through without adding new ones. A downstream receiver that encounters a message with a valid DKIM2 chain ending at a hop before the legacy node can verify the chain up to that point and apply local policy for the unsigned segment.</t>
        <t>A legacy node that makes modifications to the message - adding or changing headers, modifying the body, rewriting URLs - represents a more significant gap in the chain of custody than a transparent relay. Such modifications are not declared via DKIM2-Chain-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 between them 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 fundamental constraint of any deployment in which DKIM2-participating and non-participating nodes coexist. Operational experience with analogous mechanisms suggests that complete ecosystem participation is never fully achieved - some legacy infrastructure persists indefinitely. The properties achievable end-to-end therefore depend on the composition of each specific 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 DKIM2-Chain-rt value at the last signed hop does not necessarily reflect the actual final recipient.</t>
        <t>Backscatter prevention - during the transition period, DSN and backscatter handling follow the graduated enforcement model of Section 3.5.2: a chain broken by a non-participating node yields an undetermined-cause result and MUST NOT trigger rejection on that basis alone.</t>
        <t>Chain of custody - provides attribution for all hops that participate in DKIM2. A hop that does not sign leaves no trace in the i= sequence, which remains contiguous across it, so its presence is inferred from the message rather than read from the numbering: from a mismatch between the envelope values of the highest signature and the transaction in progress or from content that no signature covers. Its absence from the numbering does not invalidate the chain. It means that accountability for that part of the path is absent and that the part itself cannot be located.</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>
        <t>The accountability model described above does not depend on establishing whether the i=1 signer is the message's originator in the RFC5598 sense. It depends only on the signing domain at i=1 accepting responsibility for the message state it presents, regardless of whether that domain composed the message, generated it automatically or admitted it into the DKIM2 ecosystem from a DKIM1-only or unsigned source. This is the same property described for re-origination in Section 6.1.1: a receiver has no signal to distinguish these cases and does not need one, because responsibility attaches to the act of signing at i=1, not to a reconstructed notion of authorship. A forwarder that introduces a previously DKIM1-only message into a DKIM2 chain is, for accountability purposes, indistinguishable from any other i=1 signer - and is equally responsible for replay prevention on the segment it introduces.</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. The reuse has one condition. Section 3.2 of that document forbids a verifier to validate a signature made with a key shorter than 1024 bits. The study cited in Section 3.6 found 84% of the keys in its sample to be 1024 bits or shorter, so the part of that population below the threshold does have a record to replace. That property is confined to signing. Working group discussion has since converged on a receiver side check in which the domains on a delivery path declare their participation in the DNS, either in a dedicated record or as a tag in the DMARC record. A co-author of the base specification has stated that this record change is needed by any site that wants full protection and that there is no way to avoid it. Replay protection therefore does require a DNS change and it requires it from the same population documented in Section 3.5.2 as unable to complete a single DNS change under the bulk sender requirements.</t>
        <t>Messages MAY carry both DKIM1 and DKIM2 signatures, and will do so for as long as DKIM1 remains in use. 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 is informative for DKIM2 deployment expectations. <xref target="I-D.adams-arc-experiment-conclusion"/> reports approximately 10,000 domains observed sending ARC-signed mail against 9.5 million DKIM records found over the same period, measured from the publication of <xref target="RFC8617"/> in 2019. ARC is milter-deployable and architecturally simpler than the body recipe mechanism defined in <xref target="I-D.ietf-dkim-dkim2-spec"/>. 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>ARC also settles what a receiver does with a chain that does not verify, and the answer in deployment is nothing. <xref target="RFC8617"/> Section 5.2 requires that a chain whose validation status is fail be treated the same as a message with no chain, so a failed chain removes information and never produces a refusal. Receivers use it in one direction only: the chain is consulted to accept a message that DMARC would otherwise fail, not to refuse one that passes. It is established practice that a message carrying a failed ARC chain together with valid SPF, DKIM1 and DMARC results is delivered, as that specification requires. Ten years of the ARC experiment, which is the span that document describes, have therefore produced a single enforcement model, advisory and additive. DKIM2 reverses the polarity: the chain becomes a precondition for delivery and its failure becomes a verdict. There is no deployed precedent for the second arrangement.</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-20260327;
  h=dkim2-chain-rt:dkim2-chain-mf:dkim2-chain-sig
    :dkim2-chain-results:content-transfer-encoding:message-id
    :mail-reply-to:reply-to:subject:to:from:date:mime-version
    :dkim-signature;
  bh=PUgAk8UixUaAdhKGCnIiKkONd0fJn7BNneaKbITBuko=;
  fh=cFHJjx+I/cl9v81+GadEx4bWcN+lzkRpBVPfbJvMiUQ=;
  b=[...]; dara=google.com
]]></sourcecode>
          <t>Google's ARC implementation includes dkim2-chain-rt, dkim2-chain-mf, dkim2-chain-sig and dkim2-chain-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 path to DKIM2-core deployment has two progressions and they are independent of each other. The first concerns what the operator deploys. The second concerns how strictly it acts on the results of inbound verification. They are stated separately because they serve different ends: the deployment steps determine how the operator's own mail is treated by other receivers, while the enforcement phase determines what the operator itself accepts. The only dependency between them is that an operator cannot enforce a verification it does not perform.</t>
        <section anchor="deployment-steps">
          <name>Deployment Steps</name>
          <ol spacing="normal" type="1"><li>
              <t>Outbound signing and declaration: deploy the outbound milter to add DKIM2-Chain-mf, DKIM2-Chain-rt and DKIM2-Chain-Sig headers to outgoing messages, update mailing list managers and other modifying components to add DKIM2-Chain-Mod headers for their modifications and place signers with respect to content-modifying components as described in Section 3.7.7. These belong to one step rather than to successive ones: a hop that signs a message it has modified without declaring the modification produces a chain that fails at the next verifier, so signing and declaring are deployed together or not at all.</t>
            </li>
            <li>
              <t>Inbound verification: deploy the inbound milter to verify incoming DKIM2 signatures and record the results in DKIM2-Chain-Results headers.</t>
            </li>
            <li>
              <t>DKIM2-extended MAY be added at any point by operators who require body accountability, subject to the operational considerations described in Section 4.</t>
            </li>
          </ol>
          <t>Establishing the first two steps together lets the operator build chain-of-custody records for downstream receivers and assess the impact of verification before any enforcement is applied.</t>
        </section>
        <section anchor="enforcement-phases">
          <name>Enforcement Phases</name>
          <t><strong>Phase 1 - monitoring</strong>: the verifier MUST NOT reject or delay messages based on any verification result. All outcomes are recorded in the DKIM2-Chain-Results header for downstream policy decisions and local monitoring, with delivery proceeding via SMFIS_CONTINUE regardless of outcome. This phase establishes how DKIM2 behaves on the operator's own traffic before any of it is refused.</t>
          <t>The verifier MUST add a DKIM2-Chain-Results header for every message processed, recording the outcome of chain verification per the format defined in Section 3.5.1. One header is produced per verified hop. Example:</t>
          <sourcecode type="example"><![CDATA[
DKIM2-Chain-Results: i=2; dns.itb.it; dkim2=pass
]]></sourcecode>
          <t>where the i= value identifies the hop and the authserv-id is the verifying MTA FQDN. The full set of result values is defined in Section 3.5.1.</t>
          <ul spacing="normal">
            <li>
              <t>none - no DKIM2-Chain-Sig present in the received message</t>
            </li>
            <li>
              <t>neutral - the verifier evaluated at least one signature at the hop successfully and was unable to evaluate another, so the hop is accepted and the record states that the acceptance does not cover every signature present. This is not a failure and is not rejected in any phase</t>
            </li>
            <li>
              <t>temperror - a transient error prevented verification, such as a DNS lookup failure for the signing key; the condition may resolve on retry</t>
            </li>
            <li>
              <t>permerror - a structural error prevented verification, such as a gap in the chain, a missing required signature or a malformed key record</t>
            </li>
          </ul>
          <t><strong>Phase 2 - policy enforcement</strong>: reject only the failures that Section 3.5.2 classifies as structural or as cryptographic proof of dishonesty by a DKIM2-participating node, together with the partial pass of Section 3.6. Every other failure is delivered with its result recorded in the DKIM2-Chain-Results header. This phase requires confidence that the majority of expected senders have deployed DKIM2 outbound signing. The mapping from verification result to milter action is not a simple one-to-one correspondence between dkim2= result and SMFIS action - it depends on the nature of the failure and whether that proof is present. Consult Section 3.5.2 for the complete decision logic. In all cases where SMFIS_REJECT or SMFIS_TEMPFAIL is returned, no DKIM2-Chain-Results header is written, as the message does not reach any downstream processor.</t>
          <t><strong>Phase 3 - full reliance (terminal phase)</strong>: reject every failure, per Section 3.5.2. This phase is entered on local evidence that non-participating nodes have become negligible on the operator's inbound paths and it is reversible if that evidence changes. Entering it is a decision to refuse the mail that still traverses such nodes rather than a finding that none remain, since complete participation is never achieved on every path, as Section 5.3 records.</t>
        </section>
      </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 <xref target="RFC9989"/> 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>DMARC failed on alignment grounds regardless: even a body-preserving signature from googlegroups.com would still fail alignment against the From: domain itb.it. 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.6: 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-Chain-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-Chain-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 a receiver that evaluates the chain of custody to make an informed trust decision without requiring From: rewriting or body reconstruction. The fields that decision rests on are already protected in transit by infrastructure that knows nothing of the protocol: Google's ARC implementation includes the DKIM2-Chain fields in its signed header set, as Section 5.5 records. 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-Chain-mf and DKIM2-Chain-rt and declaring any header modifications via DKIM2-Chain-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 cryptographically 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= index and the DKIM2-Chain-rt header 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>That evolution has since been proposed. <xref target="I-D.chuang-dkim2-sender-policy"/> updates <xref target="RFC9989"/> so that the policy applied is that of the author domain recovered from the From header field at i=1 rather than that of the apparent author in the field as delivered. The proposal asks the verifier to recover the author domain by the procedure of the base specification, which reads it back through the Recipes. It requires in addition that the entire chain of custody be validated before the evaluation stands. This profile satisfies both. It reaches the first without rebuilding anything, since the value the field held at origination is read from the declarations of Section 3.2, as Section 3.1.2 describes. Verification of every hop is required here in any case, with none of the shortened path that Section 4.3 describes.</t>
        <t>The ongoing tightening of DMARC enforcement by major providers - including the adoption of strict alignment requirements that mandate exact domain matches rather than subdomain tolerance - makes the mailing list problem more acute over time. Solutions based on From: rewriting become less viable as strict alignment prevents subdomain matches that relaxed alignment would have tolerated. Body reconstruction addresses neither strict nor relaxed alignment failures. DKIM2-core chain of custody provides the only path that preserves original sender identity while remaining compatible with evolving DMARC enforcement requirements.</t>
        <t>Ultimately, DKIM2-core restores DMARC interoperability with mailing lists by authenticating the modification path, whereas DKIM2-extended fails to address the root cause of misalignment while introducing significant privacy and security overhead.</t>
        <t>Working group review of the companion best current practices document (<xref target="I-D.ietf-dkim-dkim2-bcp"/>) identified this gap. The base specification has since addressed it: <xref target="I-D.ietf-dkim-dkim2-spec"/> Section 11 requires the From: header field to be Authentic, which holds where there is a relaxed domain match between the address in the From: field and the signing domain of the relevant signature. Where the From: field has not been altered since the message was first signed, the relevant signature is the one at i=1. Where another system replaces it, the relevant signature is the lowest numbered one at or after the Message-Instance whose Recipe records the replacement, which a verifier establishes by inspecting the Recipes. Its Section 12.4 places the duty on the signer: where the original message is being signed or the From: field has been modified, the signing domain must be chosen so that the From: field is Authentic, which combines with the existing requirement that it match the MAIL FROM domain, so a signer presenting an envelope must satisfy both. The second requirement does not apply where the signature carries no envelope, which its Section 7.1 states for a null MAIL FROM and for a signature carrying nd=.</t>
        <t>The definition reaches a blunt outcome for two constructs. A From: field carrying more than one mailbox is declared never to be Authentic, without reference to the Sender: field that <xref target="RFC6854"/> Section 2.1 requires where the mailbox specifications number more than one. A From: field using the group syntax that same document permits may carry no mailbox at all, so no domain is available to match. In both cases the agent responsible for the transmission is named in the Sender: field where one is present and that is the identity available to be checked. Section 3.1.2 of this profile makes the comparison against that field for both constructs, so each has a defined outcome here. For a From: field using a domain literal this profile reaches the same conclusion as the base specification: there is no domain to compare and no comparison is defined.</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-Chain-mf and DKIM2-Chain-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-Chain-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.2.4.</t>
        <t>Authentication-Results headers - these fields record the outcome of DKIM2 verification at each hop. They do not contain message content or personal data beyond what is already present in the message headers.</t>
        <t>The privacy impact of DKIM2-core is limited and proportionate to its functional objectives. The additional data carried in DKIM2-core headers is necessary for the envelope binding and chain of custody mechanisms and does not represent a material increase in the personal data surface of the message beyond what is already present in the SMTP transaction.</t>
        <section anchor="re-origination-by-privacy-preserving-intermediaries">
          <name>Re-origination by Privacy-Preserving Intermediaries</name>
          <t>This profile recognizes intentional re-origination by privacy-preserving intermediaries as a legitimate deployment pattern. Some intermediaries exist specifically to remove identifying information from messages - relay services that strip tracking content and redact sender identity or alias and forwarding services with similar goals. For these intermediaries the chain of custody model described above is structurally unavailable at any recipe setting. A content-bearing recipe would disclose exactly the information the service exists to remove. A null recipe does not avoid this either: as noted above, mf= and rt= persist in signed header fields and may be archived by downstream systems, so retaining prior DKIM2-Chain-Sig header fields still exposes the originating envelope addresses and signing domain to every recipient.</t>
          <t>The correct behavior in this case is re-origination: the privacy-preserving intermediary terminates the inbound chain and signs as a new i=1, using its own domain and envelope. This was confirmed in working group discussion of an equivalent case: an intermediary that deliberately does not provide chain of custody through its systems is not extending the original message under DKIM2, but creating a new message from selected content, and is correctly treated as the originator of that new message once it re-enters the network. This is distinct from chain termination to conceal a modification, where the original message is forwarded without its provenance rather than replaced by a new message.</t>
          <t>This profile requires the re-originating intermediary to remove all prior DKIM2 header fields - DKIM2-Chain-Sig, DKIM2-Chain-mf, DKIM2-Chain-rt, DKIM2-Chain-Mod and DKIM2-Chain-Results - before signing as the new i=1. Retaining any of them would misrepresent a newly originated message as a continuation of the prior chain, defeating the purpose of re-origination.</t>
          <t>A re-originating intermediary signing at i=1 is indistinguishable from any other first-hop originator: the absence of a prior chain is the normal state of any message entering the DKIM2 ecosystem for the first time. This indistinguishability is not a limitation of the model but a correct property of it. A recipient cannot and need not identify whether a given i=1 message was composed by a human user, generated by an automated system or re-originated by a privacy-preserving relay - in all three cases the signing domain takes full accountability for the message it presents. Requests for special receiver treatment of re-originating services - such as a normative preference based on the absence of a prior chain - are therefore not implementable: the receiver has no signal to act on. The absence of a prior chain MUST NOT be treated as a negative indicator in enforcement policy; it is the expected state of any message that legitimately begins its DKIM2 chain at the current hop.</t>
        </section>
      </section>
      <section anchor="dkim2-extended-privacy-considerations">
        <name>DKIM2-extended Privacy Considerations</name>
        <t>DKIM2-extended raises privacy concerns that are qualitatively different from those of standard email processing. Email messages already transit through systems that read, analyze and archive them - existing data protection frameworks address this reality. What DKIM2-extended adds is the systematic creation of structured, cryptographically signed records of previous versions of message content that did not previously exist as discrete data objects. A standard email message represents the current state of a communication. A message with body recipes represents both the current state and a signed history of previous states distributed to every downstream recipient and archiving system in cryptographically immutable form.</t>
        <t>This distinction is relevant to data protection law in the ways described below.</t>
        <section anchor="the-null-recipe-mechanism">
          <name>The Null Recipe Mechanism</name>
          <t>The null recipe is the primary technical instrument available to intermediaries for managing privacy risk in DKIM2-extended deployments. An intermediary that modifies message content may declare null rather than generating a content-bearing recipe, signalling that a modification occurred and who made it without creating any structured record of the previous content.</t>
          <t>The null recipe preserves the core accountability property of DKIM2 - the modification is declared and attributed - while avoiding the creation of personal data records that would otherwise travel with the message to all downstream recipients and archiving systems. It is the correct response in any situation where generating a content-bearing recipe would conflict with data protection obligations or organizational security policy.</t>
          <t>The current specification does not provide normative guidance on when intermediaries are obligated to use null recipes. This document addresses that gap for specific deployment scenarios in the sections that follow.</t>
        </section>
        <section anchor="data-minimization">
          <name>Data Minimization</name>
          <t>GDPR Article 5(1)(c) requires that personal data be adequate, relevant and limited to what is necessary for the purposes for which it is processed. The primary operational objectives of DKIM2 - replay prevention, backscatter mitigation, modification attribution - are achievable without body recipes as argued in Section 4.6. 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="encryption-gateways-and-body-recipes">
          <name>Encryption Gateways and Body Recipes</name>
          <t>Encryption represents the limiting case of the pattern above. Where DLP, antivirus and URL-rewriting systems face a choice between content-bearing and null recipes, an encryption gateway has no meaningful recipe to generate at all: the content it processes is opaque ciphertext and no reconstruction model - content-bearing or null - can meaningfully describe a transformation the mechanism was never designed to see. Section 4.6 addresses the technical consequences of this gap. From a privacy standpoint the outcome is favorable: because DKIM2-extended cannot represent the encrypted content in the first place, no structured record of plaintext is ever created, regardless of recipe policy.</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"/> includes a Security Considerations section, added in its revision 07, and no Privacy Considerations section. The concerns raised here follow discussion on the ietf-dkim mailing list initiated in March 2026.</t>
          <t>For a specification intended to become an IETF Standards Track document, privacy and security considerations are required per <xref target="RFC3552"/> (BCP 72). This document provides suggested privacy considerations text based on <xref target="RFC6973"/> for consideration by the working group as a contribution to the base specification.</t>
          <t>Note on <xref target="RFC6973"/>: this is an IAB document rather than an IETF document. However IAB documents on protocol design are explicitly relevant to IETF Standards Track work - the IAB and IETF coordinate on architectural and privacy matters as part of the overall Internet standards process. The privacy considerations in this document are consistent with both <xref target="RFC6973"/> and the security considerations requirements of <xref target="RFC3552"/>.</t>
        </section>
        <section anchor="architectural-conclusion">
          <name>Architectural Conclusion</name>
          <t>The privacy considerations described in this section lead to a clear architectural conclusion: DKIM2-extended MUST remain optional and loosely coupled to DKIM2-core. This is not merely a deployment preference - it is a requirement derived from data protection principles.</t>
          <t>An operator subject to <xref target="GDPR"/> and <xref target="ePrivacy"/> who activates DKIM2-extended takes on explicit data processing obligations for the personal data contained in body recipes, including obligations that may not arise under standard email processing - among them the creation of audit-trail records at transit nodes, potential joint controllership under GDPR Article 26 and questions about mere conduit exemptions under the e-Commerce Directive. An operator who implements only DKIM2-core has no such obligations beyond those that exist today for standard email processing. The optional nature of DKIM2-extended is therefore not a technical convenience but a legal necessity for a significant portion of the global email infrastructure.</t>
          <t>The interoperability dimension of this concern extends beyond individual operators. The Digital Markets Act (DMA) requires gatekeepers to ensure interoperability with third-party services and prohibits technical measures that create barriers to entry for smaller operators. An email authentication standard that is only practically implementable by large providers with dedicated engineering teams and legal resources to manage GDPR obligations for body recipe processing raises questions about compliance with DMA interoperability requirements. DKIM2-core, by contrast, is implementable by any operator regardless of size and imposes no data processing obligations beyond those that exist today.</t>
          <t>DKIM2-core and DKIM2-extended are designed to coexist cleanly. A DKIM2-core-only node passes Message-Instance headers through as opaque signed content without interpreting them, preserving the integrity of the chain without requiring participation in body recipe processing. A DKIM2-extended node adds full body recipe functionality on top of the core.</t>
          <t>This is a deliberate application of graceful degradation: a core-only deployment does not break DKIM2-extended deployments - it simply does not extend them. The chain of custody remains intact, the envelope binding remains verifiable and the signed header accountability remains functional. Operators who cannot or choose not to implement body recipe processing - whether for technical, operational or legal reasons - remain full participants in the DKIM2 ecosystem. Activating DKIM2-extended adds capabilities; not activating it does not degrade the core functionality in any way.</t>
          <t>This clean separation is the architectural property that makes DKIM2 deployable across the heterogeneous ecosystem and across jurisdictions with different data protection requirements.</t>
        </section>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>Note to RFC Editor: please remove this section, and the reference to <xref target="RFC7942"/>, before publication.</t>
      <t>This section records the status of known implementations of the profile described in this document, per <xref target="RFC7942"/>. Please note that the listing of any individual implementation here does not imply endorsement by the IETF. Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features. Readers are advised to note that other implementations may exist. This section covers implementations of the specific deployment profile described in this document; implementations of other aspects of the DKIM2 ecosystem, such as body recipe tooling, are out of scope here and are not surveyed.</t>
      <section anchor="darkchain-darkchains">
        <name>DarkChain / DarkChains</name>
        <t>Organization: Independent</t>
        <t>Implementation: https://github.com/darkglobe-project/darkglobe-suite</t>
        <t>Description: DarkChain (verifier) and DarkChains (signer) implement the DKIM2-core profile described in this document as two independent milter processes. Written in C against libmilter, deployed on live mail infrastructure with Sendmail. No MTA core modifications required.</t>
        <t>Coverage: Envelope binding via DKIM2-Chain-mf and DKIM2-Chain-rt with per-recipient granularity. Chain of custody verification hop-by-hop. Header modification tracking via DKIM2-Chain-Mod (signing and verification of declarations produced by modifying components). Header integrity hash (hh=). SRS envelope rewriting for forwarding via smfi_chgfrom(). Full optional attestation mode (pre/post mailing list signing). Configurable X-* prefix exclusion.</t>
        <t>Level of maturity: Beta, deployed on live mail infrastructure processing traffic from Microsoft Exchange Online and Google MTA infrastructure.</t>
        <t>Licensing: Apache 2.0</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="security-properties-of-dkim2-core">
        <name>Security Properties of DKIM2-core</name>
        <t>Replay prevention - a valid DKIM2 signature cannot be reused for a different recipient without breaking the chain. The cryptographic binding of RCPT TO values in DKIM2-Chain-rt to the signature at every hop makes replay attacks detectable by any conformant verifier.</t>
        <t>DKIM2-core envelope binding uses one DKIM2-Chain-rt header per recipient address. A verifier checks that the RCPT TO of the current SMTP session matches exactly the addr= value of one of the DKIM2-Chain-rt headers at the highest hop index. A message signed for recipients A, B and C cannot be made to appear as though it had been signed for recipient A alone, because the header carrying addr=A was signed as part of a set that also includes the headers for B and C and none of them can be removed without breaking that hop's signature. 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 10.10) that signals a message was sent to multiple recipients, and which its Section 12.5 forbids on the signature at i=1. 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 removes the dependency on an optional flag: the signed set of DKIM2-Chain-rt headers is cryptographically bound to the chain and a transaction for a recipient that no hop committed to 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-Chain-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 three-outcome model described in this section applies to messages that have transited an entirely DKIM2-participating chain. When a non-participating legacy node is present in the delivery path and has modified the message, the resulting verification failure does not fall into any of these three categories: the verifier cannot attribute the modification to any signing domain and the graduated enforcement model defined in Section 3.5.2 applies instead. The binary trust model described here is therefore a property of mature deployment environments, not of the transition period.</t>
          <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-Chain-Mod declarations for header modifications, provides the verifiable path that enables the trust decision. This is precisely the model that Microsoft and Google already apply empirically today when evaluating forwarded mail.</t>
          <t>Body recipes are a descriptive capability for forensic and archival purposes. Envelope binding is the mandatory security foundation. Furthermore, body recipes provide zero protection against replay attacks where the content remains identical - only the envelope binding of DKIM2-core addresses this fundamental vulnerability. In summary: if trust is binary, recipes are a descriptive luxury, not a security necessity. The separation between DKIM2-core and DKIM2-extended reflects this distinction: core provides the security properties that matter for delivery decisions, extended provides additional accountability for operators who need it and can afford the operational cost.</t>
          <t>DKIM2 verification produces three qualitatively different outcomes that operators must distinguish in their delivery policy. A message that transits the chain without body modifications and with a complete chain of valid signatures provides the strongest assurance - full cryptographic accountability from originator to recipient. A message with body modifications declared via recipes provides weaker assurance - the modifications are attributed and reversible, but the displayed content differs from what was originally signed. A message with null recipes at one or more hops provides assurance equivalent to DKIM2-core: the chain of custody and envelope binding are intact, but no body reconstruction is possible for those hops. These three outcomes have different risk profiles and MUST NOT be treated equivalently in delivery policy. In particular, the second and third outcomes do not provide the same level of assurance as the first for purposes of domain reputation, BIMI display or any policy that depends on content integrity rather than transit accountability. DKIM2-core provides the properties common to all three outcomes - envelope binding, chain of custody, header accountability - without requiring operators to distinguish between them or to deploy the additional infrastructure that the second outcome requires. DKIM2-extended adds the distinction between the second and third outcomes at the deployment cost documented in Section 4 - a cost that is only justified for operators with the infrastructure to benefit from body reconstruction data.</t>
        </section>
        <section anchor="implementation-robustness-and-reduced-attack-surface">
          <name>Implementation Robustness and Reduced Attack Surface</name>
          <t>DKIM2-core uses the tag-value syntax of DKIM1 <xref target="RFC6376"/> throughout, without nested or opaque data structures such as JSON-encoded values within header fields. This design choice has direct security implications.</t>
          <t>The elimination of multi-layered parsing - JSON-in-base64 embedded in header fields - removes a category of attack surface that does not exist in DKIM1 or ARC. Parser vulnerabilities in JSON libraries, including memory exhaustion and type confusion attacks, cannot be triggered by DKIM2-core header processing. This is consistent with the attack surface analysis in Section 8.3.1.</t>
          <t>All DKIM2-core declarations - envelope binding, modification attribution, chain of custody - are in cleartext tag-value format, directly inspectable in mail logs without specialized tooling. This transparency supports real-time threat detection and incident response in ways that base64-encoded opaque blobs do not. The need for dedicated tooling to render DKIM2 header fields in human-readable form confirms that the current encoding is not suitable for operational diagnostics without specialised software, a property that tag-value encoding does not share.</t>
          <t>The interoperability failures documented above - tag ordering within DKIM2-Signature fields (Section 3.3.6) and JSON key case sensitivity in header recipes (<xref target="I-D.ietf-dkim-dkim2-spec"/> Section 5) - share a common cause: multi-layered, order-sensitive or case-sensitive encoding creates ambiguity that independent implementations resolve differently even when each is acting in good faith. DKIM2-core's use of explicit i= and seq= index values in cleartext tag-value format eliminates this category of implementation ambiguity entirely.</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 to any signing domain. The gap is not visible as a sequence discontinuity - legacy nodes do not add DKIM2-Chain-Sig headers and do not increment i=. The gap manifests instead as a mismatch between the current message state and the last DKIM2 signature: a changed bh= value, an hh= mismatch or a rollback failure at the final signed hop. The verifier knows that something changed after the last DKIM2-participating node but cannot determine what was changed or by whom. The graduated enforcement model defined in Section 3.5.2 governs how receivers handle this case.</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 DKIM2-Chain-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 between JSON parser implementations can cause a recipe to be interpreted differently by intermediaries and final recipients. The base specification closes one of these cases in its revision 07, where its Section 5 requires that property names be unique within any JSON object. That constraint cannot be expressed in the schema, so it holds only where each implementation enforces it in code. The divergence lives in the reconstruction, so it surfaces only where a verifier parses a Recipe that another party produced. A verifier that checks the most recent signature alone surfaces one case, that of its predecessor, and there it can invalidate a signature the predecessor presented as valid. A verifier that walks the chain undoes the Recipes of the hops above each signature it checks. At every step its own parser decides what the earlier state was. Wherever that resolution differs from the one the producing hop used, the signature under examination can fail here and have passed there.</t>
          <t>Two consequences follow. The same signed bytes can be valid on a path whose hops share a parsing resolution and invalid at the first hop of a path that does not, so delivery is selective rather than uniform. And at one node the same message can pass the check of the most recent signature and fail a traversal of the whole chain, so the verdict depends on the depth that node chose, which the base specification leaves to it, as Section 4.3 of this profile describes.</t>
          <t>The surface is the set of rules the schema does not express. The base specification says of the key rules that they "cannot be expressed within the JSON schema, so implementations will need to take other steps to ensure conformance" and that "particular care needs to be taken to ensure uniqueness". It says the same of the restriction on CR and LF inside a decoded "u" step. It notes that "a Body Recipe can conform to the JSON schema and still break the restrictions in this section". Each of those rules is re-implemented by hand in every port. Conformance to it is a property of the installation that the message does not reveal. The report recorded in Section 4.4.2 is an instance: a library emitted strings that other parsers reject, so separate utilities were required to check validity before the Recipe left the generator.</t>
          <t>In a protocol whose purpose is authentication, a verdict that depends on the implementation and on the depth of the check rather than on the message is a missing guarantee rather than a vulnerability.</t>
          <t>The JSON recipe syntax also exhibits semantic ambiguity: the same construct - an empty array <tt>[]</tt> - 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.4.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>
          <t>The properties that make JSON processing safe are properties of the parser and not of the format: iterative rather than recursive parsing, a bounded nesting depth, no hash table for object keys, continuous fuzzing. A specification that prescribes the format and leaves those properties to each implementer has allocated the requirement to the implementation and the same format is then processed safely by one deployment and unsafely by the next.</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. That is a requirement of this profile and not of the base specification, which as Section 4.3 of this profile describes leaves the depth of verification to the verifier.</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 attack described in Section 8.3.2, where a recipe presents a clean original while the delivered content is malicious. That attack 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. Revision 08 of the base specification invites that assessment: its Section 13.4 states that a receiving system may wish to assess the original form of the message and that all the Recipes could be undone in order to do so.</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. Revision 08 of the base specification defines the outcome in each form that leaves a trace. A Message-Instance header field removed from the sequence leaves a gap in the numbering, which that document states in two places makes the message not a Fully Verified DKIM2 Message. A recipe whose content is malformed gives a permanent error with an error string of its own. What no mechanism distinguishes is the removal of the whole chain: a message stripped of every DKIM2 header field is indistinguishable from one that never carried any, which is the case Section 6.1.1 of this profile requires a receiver not to treat as a negative indicator. Implementations MUST handle each of these cases without producing incorrect verification results.</t>
        </section>
        <section anchor="stateful-milter-attack-surface">
          <name>Stateful Milter Attack Surface</name>
          <t>The persistent shared storage required by stateful DKIM2-extended milter implementations is an additional attack surface. Compromise of the shared storage allows an attacker to manipulate cached message state and cause the milter to generate incorrect recipes or signatures. Operators MUST apply appropriate access controls to stateful milter storage and MUST monitor for unexpected modifications.</t>
        </section>
      </section>
      <section anchor="cryptographic-agility">
        <name>Cryptographic Agility</name>
        <t>DKIM2-core mandates support for RSA-SHA256 and Ed25519-SHA256, as specified in Section 3.6. DKIM2-core evaluates the body hash independently of signature generation: the bh= value is computed first and included as a tag in the DKIM2-Chain-Sig header, which is then signed as a whole. This pre-hashed input model is essential for streaming processing of message bodies and must be preserved by any future signing algorithm. Working group discussion has confirmed this constraint in the context of seeking post-quantum algorithm guidance from the Crypto Forum Research Group. Some post-quantum signature schemes incorporate their own hash function and do not accept pre-hashed input, which would be incompatible with this architecture. The tag-value format of DKIM2-Chain-Sig imposes no constraints on the signing algorithm beyond producing a binary output encodable in base64 and accepting pre-hashed input. This ensures forward compatibility with post-quantum algorithms that meet these requirements when they are standardized for use in email authentication. Operators should monitor the development of post-quantum algorithm standards and be prepared to add support for new algorithms as they are standardized.</t>
        <t>The base specification's chain matching model binds mf= and rt= as tags within DKIM2-Signature itself, alongside d=, s=, a=, b=, bh= and optional flags. A prior working group proposal to carry sender and recipient binding in separate plaintext header fields was not adopted. Combined with the working group's direction toward dual-algorithm signing - a classical algorithm alongside a post-quantum algorithm - within a single DKIM2-Signature header, this concentration of content into one field compounds under size pressure: post-quantum signature material must coexist with envelope binding tags and modification flags in the same field. A DKIM2-Signature carrying RSA-SHA256 and ML-DSA-44 signatures together with mf=, rt=, d=, s= and flags would exceed 4000 characters in a single header field. With separated envelope binding, each DKIM2-Chain-Sig carries only signature material - approximately 350 characters for RSA-SHA256 or 3300 for ML-DSA-44 - and the envelope headers remain unchanged regardless of algorithm count. DKIM2-core's separation of envelope binding into dedicated header fields (DKIM2-Chain-mf, DKIM2-Chain-rt) avoids this concentration - a second algorithm is accommodated by an additional DKIM2-Chain-Sig header field carrying only signature material, not by enlarging a single field that also carries envelope and modification state.</t>
        <t>The use of both RSA-SHA256 and Ed25519-SHA256 in parallel is RECOMMENDED during the transition period to provide cryptographic agility. Ed25519 signatures are significantly shorter than RSA signatures and impose lower computational overhead at scale.</t>
      </section>
      <section anchor="timestamp-handling">
        <name>Timestamp Handling</name>
        <t>DKIM2 signatures include a timestamp. A signature with a timestamp more than 5 minutes in the future MUST NOT be treated as valid. This prevents pre-generated signature replay while accommodating normal clock skew between NTP-synchronized systems. A tolerance of 5 minutes is sufficient for any NTP-synchronized infrastructure and eliminates the replay window that a looser future timestamp check would create.</t>
        <t>Signatures with timestamps more than 15 days in the past SHOULD be treated as potential replays and rejected subject to local policy. The 15-day threshold accommodates legitimate redistribution delays including mailing list queuing, temporary delivery failures and held messages without creating an excessive replay window. Note that mailing list redistribution introduces a new signature at the time of redistribution - the relevant timestamp is when the list signed the message, not when the original sender signed it. Operators SHOULD NOT configure thresholds beyond 15 days without explicit operational justification.</t>
      </section>
      <section anchor="header-inclusion-in-hh-functional-classification">
        <name>Header Inclusion in hh=: Functional Classification</name>
        <t>The DKIM2 base specification excludes all X-* header fields from the signed header set. The hh= mechanism defined in this profile takes a more granular approach based on the functional role of each header, not its prefix alone.</t>
        <t>The critical constraint is interoperability: the classification of any given header as included or excluded in hh= MUST be consistent across all DKIM2-participating nodes. A header included by one verifier and excluded by another will produce hh= mismatches between conforming implementations on unchanged messages, indistinguishable from a real modification. The classification is therefore not a per-deployment choice but a normative requirement that applies uniformly. The authoritative list will be defined in the base specification or a companion document; this profile documents the functional principle and provides a working default for the current deployment period.</t>
        <t>The classification operates at three levels with explicit priority:</t>
        <t><strong>Level 1 - Structural exclusions</strong> (always active, not overridable): headers managed by the authentication protocol itself and headers that change legitimately at every hop. These include DKIM2-Chain-Sig, DKIM2-Chain-mf, DKIM2-Chain-rt, DKIM2-Chain-Mod, DKIM2-Chain-Results, DKIM-Signature, ARC-*, Received, Return-Path and Authentication-Results. Including these would create circular dependencies or cause verification failures on every legitimate hop regardless of implementation choices.</t>
        <t><strong>Level 2 - Functional exclusions</strong> (normatively defined, uniform across implementations): headers whose function is exclusively internal to the operator that adds them - vendor-specific diagnostic telemetry, tracing identifiers and operational metadata that does not cross organizational boundaries. These are legitimately stripped at domain boundaries and have no security relevance to downstream receivers. The category is not limited to the X-* prefix: any header whose function is purely internal to the adding operator belongs here regardless of its naming convention. Examples include vendor-internal X-MS-* diagnostic headers (Microsoft Exchange Online Protection), X-GM-* (Google internal tracing) and equivalent vendor-internal namespaces. The authoritative list of excluded prefixes and header names is not a per-deployment configuration - it must be agreed upon across the ecosystem and defined normatively.</t>
        <t><strong>Level 3 - Cross-organizational inclusion overrides</strong> (normatively defined, take precedence over Level 2): individual headers that, despite carrying a vendor-associated prefix, serve a function that crosses organizational boundaries - abuse reporting mechanisms, feedback loop identifiers, authenticated identity assertions used across organizational perimeters. These MUST be included in hh= regardless of any prefix-based exclusion at Level 2. The structural exclusions of Level 1 are not overridable by Level 3.</t>
        <t>This three-level model resolves an apparent contradiction in the evidence: X-MS-Exchange-SenderADCheck carries a prefix (X-MS-<em>) whose vendor-internal instances Level 2 excludes, but its function - recording an authentication check result consumed across organizational boundaries - places it in Level 3. The security relevance of this category is not hypothetical. A message carrying to the working group the position that X-</em> headers are "generally specific to services" and should not be signed was itself authenticated with a DKIM1 signature whose h= tag includes X-MS-Exchange-SenderADCheck - a vendor-specific header carrying authentication-relevant information that Microsoft itself treats as significant enough to sign, yet that the proposed blanket exclusion would leave unprotected. The contradiction is contained within a single artifact: the body of the message argues that this class of header lacks security relevance while the header set of that same message places one such header under cryptographic protection. The contradiction is not in the model; it is in treating the entire X-* namespace as functionally uniform when it manifestly is not.</t>
        <section anchor="security-relevance-of-the-distinction">
          <name>Security Relevance of the Distinction</name>
          <t>All headers not excluded at Level 1 or Level 2 are included in the hh= computation. This is a deliberate security decision. Headers with cross-organizational or security-relevant functions carry metadata between trusted components across operator boundaries: antispam scores, phishing detection results, authenticated user identities, original envelope information, abuse complaint addresses, feedback loop tokens and compliance annotations. An attacker who can inject such a header without detection can attempt to influence downstream security decisions. Including them in hh= closes this attack surface: any undeclared addition or modification will cause the rollback check to fail at the next honest verifying hop.</t>
          <t>The position that the X-* namespace has no security implications outside the organizations that add the headers is contradicted by current production practice at four independent operators, on four continents, covering four distinct use cases: Google signs X-Original-Sender for identity preservation, Microsoft signs X-MS-Exchange-SenderADCheck for authentication result, Mailjet signs X-CSA-Complaints and X-REPORT-ABUSE-TO for abuse compliance, LinkedIn signs X-LinkedIn-fbl as a feedback loop identifier. In each case the operator has judged the header significant enough to place under cryptographic protection. The same LinkedIn message that carries the cross-organizational X-LinkedIn-fbl also carries X-LinkedIn-Class, X-LinkedIn-Template and X-LinkedIn-Id - all signed together. The first three are Level 2 (internal telemetry); the fourth is Level 3 (cross-organizational mechanism). A blanket exclusion cannot make this distinction.</t>
          <t>X-CSA-Complaints is administered by a third party (eco.de) and used cross-organization for abuse reporting. X-LinkedIn-fbl is returned by recipient providers to LinkedIn when a user marks a message as spam. A feedback loop that did not cross organizational boundaries would not be a feedback loop. If these headers have no cross-organizational security relevance, the category is empty.</t>
          <t>The IETF DKIM working group's own mailing list infrastructure adds X-Spam-Status, X-Virus-Scanned and X-Original-To to every message it processes - on infrastructure operated by participants in the same discussion that proposed excluding them. A major mailbox provider operating at global scale confirmed in working group discussion that these headers exist because multiple parties introduce them for legitimate delivery-path purposes and that they are subject to attack in practice.</t>
          <t>Body recipes do not close this gap. A recipe declares a voluntary modification. An attacker injecting a forged header has no incentive to declare it and the specification provides no mechanism to compel or detect an undeclared injection independently of hh=.</t>
        </section>
        <section anchor="standardization-gap">
          <name>Standardization Gap</name>
          <t>The three-level model described in this section addresses a gap in the base specification. Working group discussion has surfaced proposals to introduce explicit normative tag namespaces - vendor-diagnostic prefixes and trace-field designators - that would allow the exclusion and inclusion rules to be expressed formally rather than derived from functional analysis. Until such normalization is achieved, no implementation can correctly determine which headers belong in the signed set by relying on prefix alone: the X-* namespace contains both internal diagnostic telemetry and cross-organizational security mechanisms that require opposite treatment and the same applies to other vendor-associated header conventions. The functional three-level model described in this section provides the principled basis for a future normative classification.</t>
          <t>Operators who use headers for internal trust signals between their own components MUST 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 Provisional Message Header Field Registry maintained by IANA in accordance with <xref target="RFC3864"/>: DKIM2-Chain-Sig, DKIM2-Chain-mf, DKIM2-Chain-rt, DKIM2-Chain-Mod and DKIM2-Chain-Results. These header fields are defined by this profile and appear in messages in transit.</t>
      <section anchor="dkim2-chain-sig">
        <name>DKIM2-Chain-Sig</name>
        <ul spacing="normal">
          <li>
            <t>Header field name: DKIM2-Chain-Sig</t>
          </li>
          <li>
            <t>Applicable protocol: mail</t>
          </li>
          <li>
            <t>Status: provisional</t>
          </li>
          <li>
            <t>Author/Change controller: V. Moccia</t>
          </li>
          <li>
            <t>Specification document: this document, Section 3.3.1</t>
          </li>
          <li>
            <t>Related information: carries the signature of one hop over the signed header set defined in Section 3.3.2, with the tags i=, v=, d=, s=, a=, c=, h=, bh=, b=, hh= and t=. One or more header fields are present per hop, one per signing algorithm, ordered by v=. The bh= and hh= values are computed with the hash named in a=, so they may differ between the header fields of one hop while covering the same content</t>
          </li>
        </ul>
      </section>
      <section anchor="dkim2-chain-mf">
        <name>DKIM2-Chain-mf</name>
        <ul spacing="normal">
          <li>
            <t>Header field name: DKIM2-Chain-mf</t>
          </li>
          <li>
            <t>Applicable protocol: mail</t>
          </li>
          <li>
            <t>Status: provisional</t>
          </li>
          <li>
            <t>Author/Change controller: V. Moccia</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-chain-rt">
        <name>DKIM2-Chain-rt</name>
        <ul spacing="normal">
          <li>
            <t>Header field name: DKIM2-Chain-rt</t>
          </li>
          <li>
            <t>Applicable protocol: mail</t>
          </li>
          <li>
            <t>Status: provisional</t>
          </li>
          <li>
            <t>Author/Change controller: V. Moccia</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-chain-mod">
        <name>DKIM2-Chain-Mod</name>
        <ul spacing="normal">
          <li>
            <t>Header field name: DKIM2-Chain-Mod</t>
          </li>
          <li>
            <t>Applicable protocol: mail</t>
          </li>
          <li>
            <t>Status: provisional</t>
          </li>
          <li>
            <t>Author/Change controller: V. Moccia</t>
          </li>
          <li>
            <t>Specification document: this document, Section 3.2</t>
          </li>
          <li>
            <t>Related information: declares a modification made to a header field by a Reviser node, using:
            </t>
            <ul spacing="normal">
              <li>
                <t>field= - identifies the modified header field name</t>
              </li>
              <li>
                <t>del= - previous value, present for removals and modifications</t>
              </li>
              <li>
                <t>new= - new value, present for additions and modifications</t>
              </li>
              <li>
                <t>fr= - optional frame index for splitting long values across multiple headers</t>
              </li>
              <li>
                <t>i= - hop index</t>
              </li>
              <li>
                <t>seq= - field instance index</t>
              </li>
              <li>
                <t>del= and new= MUST appear on separate header lines and MUST be last in the header field value</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="dkim2-chain-results-1">
        <name>DKIM2-Chain-Results</name>
        <ul spacing="normal">
          <li>
            <t>Header field name: DKIM2-Chain-Results</t>
          </li>
          <li>
            <t>Applicable protocol: mail</t>
          </li>
          <li>
            <t>Status: provisional</t>
          </li>
          <li>
            <t>Author/Change controller: V. Moccia</t>
          </li>
          <li>
            <t>Specification document: this document, Section 3.5.1</t>
          </li>
          <li>
            <t>Related information: records the outcome, at the hop named by i=, of verifying the chain as it arrived there, which is the signature at hop i-1. Carries i= (hop index), authserv-id (verifying MTA FQDN) and dkim2= result (pass, fail, none, neutral, temperror, permerror). One header is produced per verified hop. Part of the signed header set at every hop, cumulative from i=1 (Section 3.3.2). Excluded from the hh= computation.</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="RFC5890">
          <front>
            <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version. It describes the document collection and provides definitions and other material that are common to the set. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5890"/>
          <seriesInfo name="DOI" value="10.17487/RFC5890"/>
        </reference>
        <reference anchor="RFC6531">
          <front>
            <title>SMTP Extension for Internationalized Email</title>
            <author fullname="J. Yao" initials="J." surname="Yao"/>
            <author fullname="W. Mao" initials="W." surname="Mao"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>This document specifies an SMTP extension for transport and delivery of email messages with internationalized email addresses or header information. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6531"/>
          <seriesInfo name="DOI" value="10.17487/RFC6531"/>
        </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="RFC6854">
          <front>
            <title>Update to Internet Message Format to Allow Group Syntax in the "From:" and "Sender:" Header Fields</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="March" year="2013"/>
            <abstract>
              <t>The Internet Message Format (RFC 5322) allows "group" syntax in some email header fields, such as "To:" and "CC:", but not in "From:" or "Sender:". This document updates RFC 5322 to relax that restriction, allowing group syntax in those latter fields, as well as in "Resent-From:" and "Resent-Sender:", in certain situations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6854"/>
          <seriesInfo name="DOI" value="10.17487/RFC6854"/>
        </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="October"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dkim-dkim2-spec-08"/>
        </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="RFC6530">
          <front>
            <title>Overview and Framework for Internationalized Email</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="Y. Ko" initials="Y." surname="Ko"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>Full use of electronic mail throughout the world requires that (subject to other constraints) people be able to use close variations on their own names (written correctly in their own languages and scripts) as mailbox names in email addresses. This document introduces a series of specifications that define mechanisms and protocol extensions needed to fully support internationalized email addresses. These changes include an SMTP extension and extension of email header syntax to accommodate UTF-8 data. The document set also includes discussion of key assumptions and issues in deploying fully internationalized email. This document is a replacement for RFC 4952; it reflects additional issues identified since that document was published. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6530"/>
          <seriesInfo name="DOI" value="10.17487/RFC6530"/>
        </reference>
        <reference anchor="RFC6532">
          <front>
            <title>Internationalized Email Headers</title>
            <author fullname="A. Yang" initials="A." surname="Yang"/>
            <author fullname="S. Steele" initials="S." surname="Steele"/>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>Internet mail was originally limited to 7-bit ASCII. MIME added support for the use of 8-bit character sets in body parts, and also defined an encoded-word construct so other character sets could be used in certain header field values. However, full internationalization of electronic mail requires additional enhancements to allow the use of Unicode, including characters outside the ASCII repertoire, in mail addresses as well as direct use of Unicode in header fields like "From:", "To:", and "Subject:", without requiring the use of complex encoded-word constructs. This document specifies an enhancement to the Internet Message Format and to MIME that allows use of Unicode in mail addresses and most header field content.</t>
              <t>This specification updates Section 6.4 of RFC 2045 to eliminate the restriction prohibiting the use of non-identity content-transfer- encodings on subtypes of "message/". [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6532"/>
          <seriesInfo name="DOI" value="10.17487/RFC6532"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="RFC8601">
          <front>
            <title>Message Header Field for Indicating Message Authentication Status</title>
            <author fullname="M. Kucherawy" initials="M." surname="Kucherawy"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This document specifies a message header field called "Authentication-Results" for use with electronic mail messages to indicate the results of message authentication efforts. Any receiver-side software, such as mail filters or Mail User Agents (MUAs), can use this header field to relay that information in a convenient and meaningful way to users or to make sorting and filtering decisions.</t>
              <t>This document obsoletes RFC 7601.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8601"/>
          <seriesInfo name="DOI" value="10.17487/RFC8601"/>
        </reference>
        <reference anchor="RFC2046">
          <front>
            <title>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="N. Borenstein" initials="N." surname="Borenstein"/>
            <date month="November" year="1996"/>
            <abstract>
              <t>This second document defines the general structure of the MIME media typing system and defines an initial set of media types. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2046"/>
          <seriesInfo name="DOI" value="10.17487/RFC2046"/>
        </reference>
        <reference anchor="RFC8301">
          <front>
            <title>Cryptographic Algorithm and Key Usage Update to DomainKeys Identified Mail (DKIM)</title>
            <author fullname="S. Kitterman" initials="S." surname="Kitterman"/>
            <date month="January" year="2018"/>
            <abstract>
              <t>The cryptographic algorithm and key size requirements included when DomainKeys Identified Mail (DKIM) was designed a decade ago are functionally obsolete and in need of immediate revision. This document updates DKIM requirements to those minimally suitable for operation with currently specified algorithms.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8301"/>
          <seriesInfo name="DOI" value="10.17487/RFC8301"/>
        </reference>
        <reference anchor="RFC9989">
          <front>
            <title>Domain-Based Message Authentication, Reporting, and Conformance (DMARC)</title>
            <author fullname="T. Herr" initials="T." role="editor" surname="Herr"/>
            <author fullname="J. Levine" initials="J." role="editor" surname="Levine"/>
            <date month="May" year="2026"/>
            <abstract>
              <t>This document describes the Domain-based Message Authentication, Reporting, and Conformance (DMARC) protocol.</t>
              <t>DMARC permits the owner of an email's Author Domain to enable validation of the domain's use to indicate the Domain Owner's or Public Suffix Operator's message handling preference regarding failed validation and to request reports about the use of the domain name. Mail-receiving organizations can use this information when evaluating handling choices for incoming mail.</t>
              <t>This document obsoletes RFCs 7489 and 9091.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9989"/>
          <seriesInfo name="DOI" value="10.17487/RFC9989"/>
        </reference>
        <reference anchor="I-D.ietf-dkim-dkim2-dns">
          <front>
            <title>Domain Name Specification for DKIM2</title>
            <author fullname="Wei Chuang" initials="W." surname="Chuang">
              <organization>Google</organization>
            </author>
            <date day="21" month="October" year="2026"/>
            <abstract>
              <t>   The updated DomainKeys Identified Mail (DKIM2) permits an
   organization that owns the signing domain to claim some
   responsibility for a message by associating the domain with the
   message through a digital signature.  This is done by publishing to
   Domain Name Service (DNS) of the domain a public key that is then
   associated to the domain and where messages can be signed by the
   corresponding private key.  Assertion of responsibility is validated
   through a cryptographic signature and by querying the Signer's domain
   directly to retrieve the appropriate public key.  This document
   describes DKIM2 DNS record format and how to find the record.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dkim-dkim2-dns-02"/>
        </reference>
        <reference anchor="DKIM-DEPLOYMENT-STUDY">
          <front>
            <title>A Large-scale and Longitudinal Measurement Study of DKIM Deployment</title>
            <author initials="C." surname="Wang">
              <organization/>
            </author>
            <author initials="" surname="et al">
              <organization/>
            </author>
            <date year="2022" month="August"/>
          </front>
          <seriesInfo name="In" value="Proceedings of the 31st USENIX Security Symposium"/>
        </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.gondwana-dkim2-authres">
          <front>
            <title>DKIM2 Authentication-Results</title>
            <author initials="B." surname="Gondwana">
              <organization/>
            </author>
            <date year="2026" month="October"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-gondwana-dkim2-authres-01"/>
        </reference>
        <reference anchor="I-D.gondwana-dkim2-debug-header">
          <front>
            <title>DKIM2 Debug Header</title>
            <author initials="B." surname="Gondwana">
              <organization/>
            </author>
            <date year="2026" month="October"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-gondwana-dkim2-debug-header-02"/>
        </reference>
        <reference anchor="I-D.chuang-dkim2-sender-policy">
          <front>
            <title>DKIM2 Sender Policy</title>
            <author initials="W." surname="Chuang">
              <organization/>
            </author>
            <author initials="B." surname="Gondwana">
              <organization/>
            </author>
            <date year="2026" month="October"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-chuang-dkim2-sender-policy-04"/>
        </reference>
        <reference anchor="I-D.chuang-replay-resistant-arc">
          <front>
            <title>Replay Resistant Authenticated Receiver Chain</title>
            <author initials="W." surname="Chuang">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-chuang-replay-resistant-arc-11"/>
        </reference>
        <reference anchor="I-D.adams-arc-experiment-conclusion">
          <front>
            <title>Wrap-up of the ARC Experiment</title>
            <author initials="T." surname="Adams">
              <organization/>
            </author>
            <author initials="J." surname="Levine">
              <organization/>
            </author>
            <date year="2026" month="January"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-adams-arc-experiment-conclusion-01"/>
        </reference>
        <reference anchor="I-D.ietf-dkim-dkim2-motivation">
          <front>
            <title>DKIM Version 2 Motivation</title>
            <author initials="T." surname="Herr" fullname="Todd Herr">
              <organization/>
            </author>
            <date year="2025"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dkim-dkim2-motivation"/>
        </reference>
        <reference anchor="I-D.ietf-dkim-dkim2-bcp">
          <front>
            <title>DKIM2 Best Practices</title>
            <author initials="T." surname="Herr" fullname="Todd Herr">
              <organization/>
            </author>
            <date year="2026" month="June" day="18"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dkim-dkim2-bcp-00"/>
        </reference>
        <reference anchor="DKIM-CHARTER" target="https://datatracker.ietf.org/wg/dkim/about/">
          <front>
            <title>IETF DKIM Working Group Charter</title>
            <author>
              <organization/>
            </author>
            <date year="2026" month="March"/>
          </front>
        </reference>
        <reference anchor="GDPR" target="http://data.europa.eu/eli/reg/2016/679/oj">
          <front>
            <title>Regulation (EU) 2016/679 (General Data Protection Regulation)</title>
            <author>
              <organization>European Union</organization>
            </author>
            <date year="2016" month="April"/>
          </front>
        </reference>
        <reference anchor="ePrivacy" target="http://data.europa.eu/eli/dir/2002/58/oj">
          <front>
            <title>Directive 2002/58/EC (Directive on privacy and electronic communications)</title>
            <author>
              <organization>European Union</organization>
            </author>
            <date year="2002" month="July"/>
          </front>
        </reference>
        <reference anchor="I-D.chuang-mailing-list-modifications">
          <front>
            <title>Tolerating Mailing-List Modifications</title>
            <author initials="W." surname="Chuang">
              <organization/>
            </author>
            <date year="2024" month="February"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-chuang-mailing-list-modifications-04"/>
        </reference>
        <reference anchor="I-D.levine-dmarc-listugh">
          <front>
            <title>Mailing lists and mail forwarders vs. DMARC</title>
            <author initials="J." surname="Levine">
              <organization/>
            </author>
            <date year="2023" month="August"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-levine-dmarc-listugh-01"/>
        </reference>
        <reference anchor="DKIM-INTERIM-2026-04" target="https://meetings.conf.meetecho.com/interim/?session=35406">
          <front>
            <title>DKIM Working Group Virtual Interim Meeting</title>
            <author>
              <organization/>
            </author>
            <date year="2026" month="April" day="29"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1969?>

<section anchor="implementation-notes-informative">
      <name>Implementation Notes (Informative)</name>
      <section anchor="dkim2-chain-mod-header-representation">
        <name>DKIM2-Chain-Mod Header Representation</name>
        <t>A DKIM2-Chain-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-Chain-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 changed field
    DelValue   string // del= tag: previous value, empty if addition
    NewValue   string // new= tag: new value, empty if removal
}

// ModChain accumulates the DKIM2-Chain-Mod declarations of a hop
// 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-chain-mod-value = DQUOTE 1*dkim2-chain-mod-octet DQUOTE</tt> that requires at least one octet between the delimiters. 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-chain-mod-vs-json-header-recipe-encoding">
        <name>Comparison: DKIM2-Chain-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-Chain-Mod headers:</t>
        <artwork><![CDATA[
DKIM2-Chain-Mod: i=2; seq=1; field=Subject; del="s= format 23:26:28"
DKIM2-Chain-Mod: i=2; seq=1; field=List-Id;
 new="dkim2.mailman.dkim2.com"
DKIM2-Chain-Mod: i=2; seq=1; field=List-Help;
 new="<mailto:dkim2-request@mailman.dkim2.com>"
DKIM2-Chain-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-Chain-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 - recursive structure, 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-Chain-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.4.1 and 8.3.1.</t>
        <t>The motivation offered for JSON encoding is that it handles arbitrary values without an escaping convention. That motivation does not distinguish the two encodings, because the base specification has already solved the same problem inside tag-value: it records envelope addresses as base64 within tag-value header fields. A document that accepts base64 within tag-value for envelope addresses cannot cite escaping as the reason to leave tag-value for header modifications.</t>
        <t>The comparison also overstates what the structure is required to express. A header modification is a flat tuple of a field name, a removed value and an added value. It contains no nesting, no arrays of arrays and no heterogeneous value types. The structural capability of JSON is therefore unused, while its costs are paid in full: dynamic typing, undefined behavior on duplicate keys, divergence between parser implementations and the case-sensitivity problem described below.</t>
        <t>In the encoding defined here no escaping convention is required at all. The del= and new= values are delimited positionally rather than by a scanned terminator and the value between the delimiters is carried as octets, as specified in Section 3.8. An interior double quote is therefore never interpreted and no character requires substitution. The only octets the encoding excludes are those that a header field value cannot contain under the current syntax of <xref target="RFC5322"/>.</t>
        <t>The use of JSON as the recipe encoding format also introduces a class of normative ambiguity that the email ecosystem had already resolved decades ago. RFC 5322 defines header field name matching as case-insensitive - this property has been part of the email stack since its inception and applies to both body recipes and header recipes. By embedding header field names as JSON object keys, DKIM2-extended recreates this problem from scratch: JSON is case-sensitive by specification, so "Content-Type" and "content-type" are distinct keys, yet email header field names are case-insensitive by protocol. The working group found itself in 2026 debating whether to mandate lowercase, uppercase or case-insensitive matching for header field names inside JSON recipe objects - a problem that RFC 5322 resolved in 1982.</t>
        <t>The practical consequence emerged immediately in interoperability testing: one implementation generated recipes preserving the original header field case, a second implementation expected strictly lowercase keys and rejected mixed case as invalid. Both behaviours were defensible under the specification text as written. The specification has since added text stating that header field names in the JSON keys are matched without regard to case and that the keys themselves MUST be in lower case and unique within any JSON object. This is not an edge case discovered by adversarial testing - it is a divergence between implementations that were each attempting to conform to the same text.</t>
        <t>The tag-value encoding had a divergence of its own, with three treatments of the trailing semicolon in circulation across the document set. That divergence arose from the proliferation of documents rather than from the encoding and its remedy was a single generic definition referenced by each document. That is the course the documents have taken: the debug header proposal now takes the production from the base specification by reference instead of restating it. The JSON case is different in kind. A case can be named in the text and settled there, as forbidding duplicate keys settles one of them, but settling it moves the burden to each implementation's conformance, which the message does not reveal. Some of the divergences are properties of the parsing libraries rather than of the grammar, as the report recorded in Section 4.4.2 shows. No requirement in a specification changes what a deployed library emits. What text can do is define which resolution applies wherever more than one is conformant, so that the next case is settled before it is found in deployment rather than after.</t>
      </section>
    </section>
    <section anchor="milter-implementation-notes-informative">
      <name>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 anchor="inbound-milter-verification-path">
        <name>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-Chain-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-Chain-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-Chain-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 simple 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-Chain-Sig header to the signed input, verifies the signature, checks DKIM2-Chain-mf against the stored MAIL FROM and checks each stored RCPT TO against a corresponding DKIM2-Chain-rt header. Verifies that each DKIM2-Chain-Mod declaration accurately reflects the modification declared at that hop. Returns SMFIS_REJECT for structural failures or when cryptographic proof of dishonesty is present per Section 3.5.2, SMFIS_TEMPFAIL on transient DNS error and SMFIS_CONTINUE otherwise, with the result recorded in DKIM2-Chain-Results.</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 anchor="outbound-milter-signing-path">
        <name>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-Chain-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-Chain-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 simple 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-Chain-mf with i= and addr= from the MAIL FROM value, constructs one DKIM2-Chain-rt per stored RCPT TO with incrementing v= values, validates any DKIM2-Chain-Mod headers present, adds the incomplete DKIM2-Chain-Sig header to the digest, finalizes and signs, then adds the complete DKIM2-Chain-Sig 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 anchor="stateless-design-confirmation">
        <name>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 and on the canonicalization limits of recipe reconstruction. John Levine and Richard Clayton are thanked for their participation in the working group discussion. R. Latimer is thanked for raising the perspective of MTA implementers and for drawing attention to the Alternate Submission Scenarios. Murray Kucherawy is thanked for his clarification on the scope of interface-level implementability in IETF protocol design.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
CoROM84rUE32cGI7WRPIqOWAOa4RSFQ8M7Zz8cTEKQjIOBaDTgKZ9s2tw1qY
b0Uo0h60ea8bi0nbS2tOxZPlIW26DS7prsDdZH9fPnHLyeF07opPZdyrVP/p
ooBKDEhjGxErM2QmrESIWucX8pqUhQU2Bkd+k0+Ai7KTIURTrVAQvJzDGMV8
IcZdg40WmYpF05XJNUn3re9NDiurdFxJarJ3NWrjmpxIPE6NpZqp83v3fv/7
tznRo2P5/e9BtTlpgcemjX7QJPkrrRRoP0DPiWShloR/Cc49qC7j7r1LrtXH
BTP8qKI4tPeq2aUR5MNXSZ0XacJ8fBS+qBwts61tn2loq+gYYpjLTBRUezZt
JDkJxMlhLBGGgnS84mZCguqcvguIWcVB0MwPcmyOnzbt7Ir0FtOVxn7lmfEz
WUq0kQHcVK5khJ3y8HygNzDJcCJcJq3eUQhwVLWhgUtAiQoFLsd9oIhzSDBK
LNSJZRa7UC9iKOK8nJn+ArWgYAKU1gpTOFdZNARBjHx4zaTPZKWIWpLup5+x
JwIdpf785mwWYhHpI9tY8QmvZmGnRq8WLOSWFKskHNdr3Wgagp5rHRHkiQO7
zWHFDFCaUzNDJcxXsvWzuL0VRh0tQ5mvZ60c8MddYhwv0wqpn6QIpcG71bAg
z5fc0JuyUIk99+Jz92Lag4HLxDXzLp5NdIRp7hWr2B8mBggz1mblo8Av1B2M
W4icDdpTp6rwuXi0hMoNbkSrQ0QB45ptp4wIQ6dNSZuUxyFZeSoE6ypXHdjJ
v78AMECNI2rAxnIowc0nqerktnc+GSRYk6vkzGT+RngoihNL3yXZDzmAHvi/
wFSW1S6y7xSKXOSC6wKo25ep+EBFoMh6w5x3RSBSGmsyiELOad1jk1D9txt6
7NxfToKS05bV3aR+QZmTtzqtrCTh1Yb5OcdaOjZZZWovJn8TK0kxRBWaQ/ES
6oVNILEy3+DWdomE04a0UXuL/hS/d6xK22hfyO54YB8qDa4UKHnQxlY9yItn
RucT2MXqk1fjFsot5ZediLO0/ZHyaLeOivI+21bKQOauZfXS+LCpzrdKq1im
QeFWoCHSFlzGA4DQpUfKBc3f9aNSaxkxeTOp6xZl5qVWrzd3tlgVNaGTZuge
Cmj+xnq1kbUDrZ82MNd57djiG6BZ3sWce2xNDGevLoV3bgiSeuichAOpGjTW
rLXhNmgD/lRQvnWA/mQeb5VfEWdeW3g0TvikUVLWyRhc43SGdoTynek0G+bb
MRe6mKvT3dK0v+onFVoh7jFnen7HxoszmVnAi3cXzv4+HXAT2L3lbi1+HHPU
aD6wjyVcQLiEjQUQM28CvaRNnqNLOMyYqZnehjlU9GcjkdEMAps0YM5i28Wy
ohys6fmdnasRL+Bs8V2O3DVos7D91fN/X5CiJYf98hBk7wh88lhfvS7035TB
jGVKWMnJptQvWUJ5bdpRcgjuSHYpCjFQswPIlmftR3ODeL1p+UG+MqfyMUt6
JU0ZdHyZH7nYD+/b/tSx7nnHyMDcCNnJSOHXFfJNnanZDrHXxa8tR+WMOUYs
Aap8J/WB0W7INCJOQ116s2AmG50qSawHJm1owbL83Eu2Z48dU7QFfTJ+8s5F
KK1r7UcPLNafyadzHz4Srw294IzdeZoZpzJuvwYuKwao4DOBs56MgqlXyVXr
eFzKg/Aut12mi1RF6hPcoUF56cHY/X8ygNeulWrDI+2W2QZQwyqTKt5I5PAF
WtKIdqhpIlnOqkoX0gWOhuFG+3UXl62TFk0rIyaVvDvuUafqMh1CruJNQAxp
/SVxH2Qb9eTqNr1DYjRvTmzXs8XPvTFXImX6uzIzmrMbBsKz9u8N23PEVhnC
Qcu1drDD8NuP1w08oXM/seUY1bqwfzagDMtUSqHjrAnPpS+CnQ/poSsCGW+J
E1AYNBvQw8cay7XK2BlI1FKfEOOGQJcyMujkVmrtyTUBZnBj4P1+CPlyMwCR
RstXqTPasNmZ12eZFLhaF7nkNOkNLzI0qGNCwe8+xlfTuF3pgGKieb7hyZuu
6kzfsojqfZqsDkPeOOwsi4YhFlzsyV/TJlCVATnrzzPtZf61MmFJrGk0B8Xq
T64pq5O8m6TrYS3GosnTKbPYDC6/pXx+OQ1uQXbYhlplUG6tvU50Q0HiW1XB
2XhZsOzwI/rhs36FVqBCvW9sdy6PGZD64yjgXpgZK6spT0OpvMC9ArddQ7mi
RqxirWGwKLPyHoUSpYBkfJqlw7/YvXmPe/7Xft4cNLf8tgQKQb0e+mGvoVMT
upE3EmdeWdsxSMLk7dKhCMp12M4fWhOY6+BPVGfUKkqFJZFU/PwJ6DXfH7fC
Mv/Z3q/dwqBMgJIKwAPY8C3BhkWFqOZMzcRBJ6CKJrbu7ZEgu5Zssf6UkeZR
Yd2wxiT2gXtolMzF5ka3+7gg8Y8e2bo9WqFkxrVymbGt/DriB6Xv48MbMdCE
eiHp39/hPxDrcBLcs51MhLE0GLU6WYqi7fT4i6LxS1Uy6kznJWTgliZAeAAl
HOBEgbPl+WHxfb/5+fJbiShXWklz5+X0GnnCzMu08XA36/XxRkrRqInaXJKV
X3yiD+mmBnQQ9qlaqYLauu7rhalalotkTLLdl3T65uYwVbpf31lh/WQsWdKy
TPmXdeAHqgKkcfZjyLWGkgd6VUOG7tW752n7rtI2/+Hl27+++Pmndy9/+uV7
3cA2oQr+LdOSFtTRyctm/7+tMvgnG6AXkDgN7qJV7RKfL0v5e775/p++f/GO
IpGTKo+8mmAvqK5qQ40k9ju9Nz5Vdq/pFvPbdOMIno/FVx8/Bj/XuE+Hvrdf
afc+4nffv3r9w/OXP2LMBy9naGJd2atLu8DahNQc4BjTQklVguWKmQE9SQOS
dP2wb4L/Pj8wSqwd8t6zbRdnePm5l2ZLReu6AOWP6DbUekWWktUdUNOrurCM
gF4/qOnWJ2rLfBfLtWhDk+/Uo/De+coK57Qsa/79pkHpaVtDr7SaMMY28XMw
kbz9CV64/OpV20NKXjIN6Kpq+iDlGRpCMQcu8xjz9wWOnjfgG6KzX2ubu9Wv
vg396pFWSBkRwq2oiNJfQb3SlMUlWbwTd+Nybv3+l2b6qQ3AXvEyzII1/YdM
wsDzbCvkLQRlJK8zFxtH4jnCZNo/YBzyq2lzBvWCm6ZvrgLnbNgVWaHWutMq
LgUOqQEDtpEIKG2N4qOjym1AvFt8FMYfeQSigga62bIHxgLXZD2QyqbLLMAx
7UGobyyoR3hLUDo/tvNQv0w7Uk/4qW2fofxhtCdlI/0mSCt10WkHmixA8nEh
TR2YAKUXSaMBBQHs57p+mMNPG/W1QOJGoI63JvmYFuE+XyMfqC/hYpSK7tXA
nsU0xrRljCJGQmU7iHIGWU++b4xXijz0AOyihUyW/PLVneXCtm2zB47tBLN0
p2RCOKzdIRDjmNUCqMzsFJMWaUnSHkYgkpbkursItWvHT2QVB3G5f+caG3qu
Gy0Cokv4cHSgai6hhj1GXqp47VuOkP2ITPcU91zGXSHe13wVc4jHrIzrmJs5
kI9MdHzo01yJmdkhodVwsvOteyQnjjaC7s1FbtszX3gSBkejtf3V4doBM6Vr
pFVgTPohzt0nL7tJM0W4D0i3ITdL2+5t3jVlhmblPM14Vi4KztAsZ6KoqjXw
4dmTYvliDOjEU7Amwg1rSAAjGsNArbpg/jWGhKdoS6eRhRrP26wsxoz4kaRf
3YDKtEoCyJQsYwfo07OHsUmnzMqgTuit0UXEkIvDkeiYxD/s0ShXU7eKv3gV
t9Ed0hYMZClyV4yso4W/gPnHunHF3WlTEQ88MqaG7UPGY9+Jgx52Qh03efv5
rlGC97IHLx63x563kNyElg3bfNFbCrpI8Gp7h04DHu4gFGbQGKwrkXQ68JW5
xu7KebQAVClvQMrdoc+ukMlDIWRJIK2YLcvXSb9uA9Dzq3/Ll9NMh9UnZT2W
Wps47myJrPtStQUiSaYR1+X3yoQNGqBccBf7xMUnKNkAlpQ3We5y157IZhR/
4thDG4K1qlIkxgFKAjLLp1Gx5cspKfTRhMK70c+od+vUFsQPtUMadN2Po3BA
3gJ5Kt5oAKq2pIL6s/o+JC/P9qU6mZqhKC9NZu0kEEzjqiy3r6z30A0StBr7
i8U+6TbGIz2g/hQ3YNcnO54hKgf9cePwdZ5i+X1NMOI30kunG+RvnjyMDHWs
8pK1szvMB1d6U3kBtLiSCo0Q+WVntKJ/BiBFoMaEAqJngYOqUHZ5gw7Y/AH4
6uxJ6IH1XZNMMfMmOsPWDJtGlZNLWXXIR2wc3CUrFSyhuO4SL3JDrq58t6QL
4KpbL0v33PMmfwqR6O9GyuPIpSH8cdwOWXWMuL2+vZXvK0tu3mQFzlr8F0DG
sNSZgNxfHBeDg4m5wuoZ80Sddk7G/D1f2zIsytwdvFb519VwuXK6NyS0DihO
SKvnUlhbhOCW7YMIhDLU2QqUOa+su0/HCkTkVouOzKp99BpSdcX0euyKxm1v
oQJX9l5TNATQpfcSL/iw73aqT6tKffIKZyGdIE+dkEMyMOwlN2gXriRhwv2/
nJzmm8uKi0JcIfDwyyMKDc/Nsz/cXD6jcbjJyiInlGseu5ezgzi1haUyvJWO
2AqTFTamKlQHgnNOp4JuOEwZEgb5J0/95cY1afA16n3JKLgcfNY6psxcTjcW
Ytw/vQ1I5WqU8I416UbDFiQkC89iFfK+IWlL4UVcRGJpghaySQdHpGKpTaju
heEiV4GYrsj2nYZ7oGRpRzULqUxfUQIAJKbgJ5o1dLcFoeHMolZo6HnfPxMG
CEC76YHoN2ny4OCZzcyYath49AOeh1HRHZ8bTDe+H5XUUlJ7u0WnBCEK9xVz
GtKzeyUxceT0SS86/hoenPk944Yp62YxCysrsZnAZRSowJTVdzmbNEWVK+Ht
b+yCHnrCg3Mdfzl7ND2amBhmUCfEOq0YkA9hUblkFXpclkARwd4H1soNJPfL
aIRRXq0ooVSeixToVfuBhaA2vEEI1CIPKpXCjpLutV5m7Sm10mTnz5mHcJjP
10tTZbuLsc2UC1bCTpyr227MWcIC7+F5SPPiX/kd+VNauNfFwr0W0tesIO/B
2lU7SXaBz1jrw3Wc37nGgRXYPlHhOp/UbZZTZoNswlhOmvixwTPRjOOMH+dd
SLHclLcQshq9Qs2m+/9/dMvYTLNHkvBowOBXnFyjITg3RAh53cIpSWZGjfRS
MW5ky7BGsstF6NZgV5V67EKpCqIG9Kh5JyXyVjIed2NbxylUeXt2+OS77lOV
mAJBJRkqsjKoRVyawLGkyUBsWwL3n1trTknZSt3VdrSORSdEffP2+ertX54/
+uop3vn7zaOvvnr4R/vTRNljPHPVEuWYz3Y5Y2tn0qxkHevawyUYx5R2TD4T
rPjjnAmRDo3ziBujY1n95KXUTfLg6FSF10n/86uHjyRYu25zu0F+52X9wvKR
Vz+uvkufePJk5vW9g8P4HqVKnscDAKakrq119qZGFLiOk3SiTtInElYHM9Ej
p5Z1Nx0U3VJmGSa0MwiG7y7YV8oREm5Z9dKaZfz1uLkKHJlzvSjRFxwdu2ei
zM8laj2sgN463kynK1NOwNaMh4n/oakWjVHx63/zpGvt8OWFQVf+2nr4Hz5O
azwkM3YYAw6UuPSHX3/1SIYh4Ybs2fRo2Z1Pn6ivL5P07t/ewdPvr5xX7qb5
2N2kV9oib8o0TyA/VBIwXEESYrMHIH3vKxuJcoFLwJdcV5T6fvnutW/Bh48e
2wcvjiC4w4tL2wmmotmIukbnBI3fp6c8CNqhaODCNSjtz63TNB72KTSCYSmy
WfsUg+KvGMi7F68DzZ9snvGaRBwGoHDumQKg4pLrYulyZRahDYjbJG9YbFhV
AMS73QxWMMtfHTMJXOkhcT+mrZbGWh2hA7pY+yHnJAcDcuZzyjhxaobGa8TH
ag6VSMNIpC3PfT10IRTOLNfYwXX2XArWNfoY+rTz2lTvW1G8l2C8NYmq9PvM
HP7OfFFy5Trbbr5ohT4AvjYv5+fwM7uDBDRS7kv/AzmGJ2l73ySnEKiidAkU
bLspelEZcM3hvmr2a2JHf14fBuGefvTg0YN0QxxNburpV2ffkIimiOlGcsSw
2LNzsob92KzShiou3//8T3Chfvf96x9//vdX3//0bvX23S/f/TviYKejYfKQ
NImPQZOYrOJAWQkkPW1G4J3JA5cLl8T65snfB7tBiKlB35BMEoxB+sDjs6c+
N8VrPARrT0f8Udon+0PW/uTEGmeAbH8wPzjnhem1oNFqf6dCfyPU+raCLTEV
nayAsm778ej25vZaUkC+E2Rn3A6W/myRRs7ZUxs2iSGy3Wciz0+dsUXgKiiR
uh+69taJGSXPlrtyZEeSpcQOwNPHDx48iIuZdcx0B4HwSFZC6JCWKjMomg7c
CbhY2YTGcPePT8+e/v0ybxT52+Ozx39Pony9kfWL8m8Pzh48/SZ94cnjwqHr
c3ew8gLbkB8+ffTHR58Z8sOHPmQrlRKnLOBZjmGmNPeyN84nmybjP/Gf+Pqb
2SMgv/Hk0fTRozFDszKXrlJgmAYoBUc7IBZ7s29u+7z/ZQ7+qemPkt1Mb/SN
B5XNVkWyxZJB6V0uFmMby89sNhtLGO3Svrto98W2kHNp3dEAo4NXZKUnYa/H
KntW05fzAmoxV5coYHCMEqfslURFzpD8pt10dyh7e9bTbjnyxyhRfubHsiaA
bC8P7OvWw5eZz0BL5T7cpUq1hFZ4cBz2caaEDP2kd9tIToP3WHZYh9OOKjQs
7T6jD8jS6LSgRiKtmzZ8prGuNDIGu/IUhd5ymrZX3LhZFQcnCK7RicLOVMdw
NMR36dHHSxXecXJ4mV4usR1Ofx0+P3by16Zvh+O4BVoy4L1C5OGMhofuottK
vg2P1P6WDx5wzEQoeKLg3oXQLQVnr2wY862PaUzXWaMEe9w4XLHBjblbLeoH
5iRnE6uPzx4a4AuPAYU3KLWNVjzXaf60kApySWorn6IOiPhxEFbNRPMzmMk0
ENU8UA6vCoQpLwnFMnpHWW98jJ596Z8rq3G+u53DKvnO0nMKHUFjxqLjrO6Y
XF+oCmjefmb9iuAgbAuDwt5pgwvrKF6AggSR5L5RxS6oY85y7iWb5uOo4IPZ
QImu3iAtRm0uT/spzc0uvus79IxGWnpLgLjUQc4HD3DDEUltfnMEpamNKYDf
RQg6F2kwHzPij2wEt7EYeYJSYG1E+fjpdhNCL9NloK5baMfrsmRSQ7gOClHR
Nx3I6Hpwdk5PfV1u5eQ0d1UUH5t3xA7FeSdWn2eBh7Bz5bl1a92d9J9i11nw
v+2okmPFIFCgVzmpq4EGUOTySWEojwKyopA0PrmMBWm4V+e1i20ZK2LGlp/5
wbFxTF44bKhYa1d+zwby9S6UHMpXfFdApQH2gvChc1h/KqFweeKIhBUzb9I5
5Wy9xsn1YOgidF2P2ielvXYKQWzY5hMQQNV1ZyBSufBIMqbTH9eu4b9rG4gG
CbY9yOK/dvKyohqPreOheVxW+3rISAfmenOKMvraK48zKvVl2UZRcwVASAlP
v5RFSXl4Z7Lci4qN6DTf0hy9ku26QFPsdmjbvW9zYQp9GDnjrjx2WrwqpGHC
68uz0pUDeoI7eFCEE0xsLmQgj+YMHVIspEjj67IHvtfuE2yjoF1mti3guIai
uZ77Uqq5Y20d4USZQqiqAIrrlIbLLvfoBA4gEshn4EyUTonxXDz4xrbJrIdI
gfJYX+PWQjL99BktJtQcOB9AO2lZsoZY2c62LaI+r8L2lgo7ij7Jk+JyuV8n
eq96nIr+Ls4ee0qLxIuxOSr9iI/1vprX8mfDj6onhY0AR6DXDSSegYtZm3Rw
6U1X5iHjNPOd7VeHNtgHPgUU1QNvWjwHpcAv6S/Po62OdtoUlebLvSHr9jkx
JZwWP/MqzMSBMuf3ib0mHaQFuq6KTIIJ57/kwQANBrL9Ai7pJ1YevWQv+3Dc
m5eoK0gMRT94j2VmmApLM68b5d27nXGjQjijOtLdwXwm6KYg2aX+k8zX6GUN
KS+YikoljRKVWmyghMPDSirzW4B9Pzr7Orn6pkHgmlkG/sevc57vlxfVsI8n
RfMLsvECYxqyTU61nGuV9sbkIFsD3na/yDPaiBX/o5s4ysd8ueoLurfwemAd
ODRKQwIvhgW2IunpCPu02DYhnInKHKHMwacW0N2v8owu/RZymLTLGqHGYJUW
GKE5Dyeqnv1WZwfQ1MXbLmaViMSIce8ewFmDO2Ajhp5c5Z9lF1nRf1umD7AQ
zTN/X1Cu3e3aQP2s5z1mIvbkicQZUwbxzLiD/t6ic6KpvA+6qIFj9wpqI9mv
1d/h+Wk4oPLQZyiOVdqnkaTcos+W5S6J1GyB1G/SBvdfcbTOA6A3ovL0PhIY
6XjsILeA2Qw6YWrX4VV7D10WqclTye9Im4pSYhkbAFG/Mmu8zd4/q6dvLsJ0
bwhMSLhNNzgW8XoO5BkBGJ7PSBGTSmjsaZ4YnwRSYAaa1YB3z7L+HMFbyiM2
hu33YbAw8UoFZzN3o8KTnjFhgqjmssqNACFbKL3TOKvdOlt862JqlQptQ5Xr
vTxf+bsqn43poeGWn2nCYdCmLQGAxSbfA9g1Lp65bq0n/whvJ4CcfjOA+5s2
Yo5kHnyrb5vRuFSrNEEjAyPpL8+Jha4L09Egmkx3G+wMvJcyPlbnxRlSkMRr
9tuuLS4U1l20ts0XLOmxSg/e1ZO6PUMmip7J4T4qDbUoaNRih8Sq+GAm2cIQ
L42OMDaVci4O3WtrQIie7R3EGDQ4QkklfSnndXPmLyZTlX1dtLe0hU4zaOTj
H72xvGALUucfHHioBDfVaYdvqN+E46EnCO1U06HHKAfAJcDYAYBRSa1MvGES
6k1uogbFWcGEhNIsIhzlPgKZlnA4jmfe+JhlB+nERHiutNTNJGGr07GcpGOc
xFryFswBha/DiINYk3n8bDCxs4ort3G62MZ5zJjeJyRdXQNtNm0AthMoTKuB
WqbkibGbP7Kd7E1vbyLVTPBje82GcwHXbexJ0AzZbdrt6JFiZin3Wii3ps+a
jwSpdZwdd4/iYDSwyhrzigMJi2QwUT8VaMNMU46mtmSc4VDAwhioo85hNHU4
CIINKS33yCbj0cX5pZfi9SnJh7EiLdHji+0w+tvAoYySQeZ0FAti9mnTYRe7
ZAvo1aDUUfsz3/30dlm1yT0NPrW0duzUudJ7KneQkQwo87jO5eE+RSalkdrS
Xidvss+ySnnIuEGvqvMvVBGNPyOjmkOCtmI0Q3fpAeB3leSMBBJj3hlr7w8n
7VqOf/PTHBFS+TF8jUAned0W1FJYF9Xa8oEepzya875XgDNA3DI9GTfDF6W+
Lj8v2lknvz4nLzqT2fosW3gyqacTWvUCa8LAmqc9w2j2x+RXtJlevVH0DDDX
TsYl/RZ3mpk8iJb0JwnfIwmPJ8jSsI+jmgYWVumq8u9qeqQgPpMZ6YIRirm4
QKRV7ybc3iSQ34RkdXPQTENkRgquHIWv2UvBmk+cGvxzc9NcqZXgbrQS7u2Q
WV3kvcdaBxTOgyUKy9nJzeeKamPKCooYxOOGKdEnwFUtgJQmOFf0dCNJSvBZ
VtQtmZnpLlS146IPy6a/dh6pDBDfpJLEmUt9WifdXXgVYRX7kg16mOITD+rW
OqLCyehJhacYvs2ADorB0ZBlVagz/adQGCJw9wRF2OTMW9fmzNH+8pSrlazM
0x9cJegaUp+lCvlwc9EJy6+GIGLXmsWv6UWLZpGRbUiN6uJwQsk3g/XtLnM1
rb0hJ6Lf2lS1uGj2zsllAjtjBs2YWyVfxU+rdMpJJOn64MCBQMIDn8buxfE0
y6KxX9VVrWXwA2J5MG+4kC/XeF5ASiGtV4DisKtxAbt4TWF+pOiMqb8tLs49
sRWX1AuGB6AJEe0qpWHNLMNWr3rfFYTKcNI3i+NO3HTLEvIRCpUNjJZTOvYG
Hn0msdTciZDtaOziHtueDh2a+Np+U6gIf8pIqFkYy73FvILCYyMITjSNN6CO
YUkRzc8Hy8s1ZXeuKwtV5I+ZfK0OCkKOWCa7rPLZCDHXIhN5I1p4l+w6L9kY
YjCDOwrkWh+cnd/Te7pUcGJZcc6g/zwYnc301F+Pmqt3BvSSto432W1zlWkQ
AgBu3ewaQBVIK4ecSJvcT3an7ZrOISC5IesH8Edv7hBypydsTTtqGfloPJpC
dVQgex81iwItzHamkDFGgMl8MuiJ2l9CU6Xx42Q5hB6myYh1FRrA+2cc1WqE
jNagz58wnNyXvMBlnBggQNvLrfLxRNahg4R6w+Vl1LH61Bu/0d+e/GC+6hTX
VtKmGlF3IVyqrMe51TxZp/SEnah2Qd8q8EYWNOmSF0+fuE1+wQ7NN06Hwbsw
bT1ccOnwylX5oaNwHOVotT+uZLk3cdjpGl6Mw/5iLABedoDgIIkHBEhOGsgU
U/RHSc7ML5G3+CdTfnF3aFcUxTJ8vrT3dyqLYe/BgksvUl5p9ZJ15giAPeJ7
hF1f6pqo2bRk/Qme4l6TUVFjWFhsNbF0RCh6YgdMthxYLz52N0DRoztKG+LS
cmiL188WYn5XXhdvNZkdW2eeW/s7WBAZztYhfVX4TBZOkEiZ7bQpESbBxZ8v
ihnYmYKlfSyXIYCXba1VnpJVP4fbSLlKO4MVDw6L//1X1Hr+d9AnDZ39sAQZ
WQZxWyfh299kPFuuSIyGlMg/y0c3rPBnuha/XADIljszf2UHaJtKlchI5huE
Nv0IGHjQRsuvZ/Q6/hzWy4599x+QZI9lrFxx4EiOvdlcpQfpF2/eyOIypCkE
Ys4gx664xXuczzP9z7NkgdKE/IRh3f/wjGfi+Y9//tOieZbxz+clqvk+tdI1
hy4QQ6ORj7GZ/S2HeemTWgPmt3KPwnpI4cPK8O4bX8myAuUOOGVNT8AaVahV
foEs8SfGpTUM0iKegHgFbVhxiJkF8sL+WCTWOcLq6SgB5qxCGs1lezChyyJZ
VLecW44SabacpZmpfeWYeDlXES/H5TNxY7wVZfbGsHvgU0LVr6r1w9MeNRdU
0hw3VfxsJoGdEYp3wvUW8WKxzjYHGpt7Xx1BgDEohjH0kI3BUdduBuOfJpCi
b4Wy70Nr/oYXhqKBynrSRLu6/VFADK1QBj5oN5Hn4qsZ9vYr3Wd4lMi2PkMk
wP/20No4OB0jHQw2rVb+JzMjUf8rE4xc3AUBWG0uxD0lE283BI1FNYzDsBtz
XTJvBs2Q3aCJ7xCJL/wnbpvuEKIV+XtyXqXlSGzdVi/p9uNOUuwqOt7ZT9pp
wAx0Od9YrA7p9Y+HrdMZ7iDCvs7t0nnJlGlcIgftUAGUbtQk1jXmEdj2ItoR
l3hvUpiUPNbeNL69dU2J5BI5Bqo8t0m0FDeocywUR2p6edqvMyJV8LD/LZba
dzl6yrSiikphct8UijJ7phW/oKRbNjoGQZfGdCZC50WMfiVdI6+sW15cl/1g
WYRFEPlS9iYcSNUWQxSZwQmhJ895n0u7uEzzmUJ85wGRBYxbKgTut9d3UQFZ
U3/O4Cz/LRtPIh1L4LMp+RVJVl8WbmHRkQysrubGFUXsH5aRGQ2Q0rW6vrYj
jCvBqwHEEQzBNN2lGRNXkHVDZKdJQFUCBSg9UOHhGtVnTHt8pe/ymv9i8t75
25WmH+DoEjP7yEeUncZctwSpxqWAdk8RGKUztvMqsj5ora3myhqC7Nb5vXsv
SzLolYhjj2XIq7Qa6V7fWbbzoDlW9AdEFjSlTQPLckkTfv7fSAle9YL8P84J
vlo8D6zg57lRFjw0M/gp5hipG+iUWr+NFhyGTrgqfkj/443y88t33qx3h3eD
/cU3TUG8/f8sY3jUZf5CFemydIUksCl9oai/E5jcHjkCJUFELHRecm9DtnzC
vT3Okm8vaxJs3OAlCfa4rDnMHfunPlRF8u4xkHQ+i2AGUQTcDJat0cM7Cg3R
FvLxFq6jBqGxXH1WMsRSVsEgp/OczS+rQJ9+TejlAiGCVNzAnKG0TXopNXpK
/qK9WI2Xfm8ssEedaEOM3PisJL/PLtJ8c9eSuRgn6JE7LRkIdBXwHkZnFh0Q
u1GbcHLPFvOvV/WcyVZglg+teTOYC7h2VDyFGKSLrmY+UgV97EyEVnamD2QZ
Gh/cMExORrF2Z4sfPiVF4KYtZDClY2vfjYbUu2iDXEGclopAKqeg79372Znl
5m4f7HnR0dQLaOnlJIlQJWVuOVu94UgjRw5JKTogDOU/mpCS6NBTTKkoj8ab
LQ+8tLO4097N2dqOnCqX2kYPmsb5UaQnfG9GkViywkiL1/IbjLLcHDNiodar
yO7ci7sgxAcKNWANFBBmx1W+fO/eC9PFG7/ATuM4teXbLBcl2OaSslPKw9W7
0O3dyUHHTEF6gRN3zBAI8eO0l007kgP+DWZv3nIiH64c+6Q84z9HwSQUc6q9
XH3PnmpfW9GvoGtBJkj9onERucRngSPszd90Aog5Z9G6J4weNB2rQh6JDdiB
IX6WqV5j4JKEUuNBxnLJOs9qiqR1kKf+dHJ27AP/+NB8Ix+ruMbHnmrYq7w7
I19VRQGYaekrM1eLESkXp5N2KdE+m05h3V1Q7VWMDyQoj6WIdOH3604pIcqo
hAgLzGEbRMkYbrSR5kutPEvKEzVb2IKTJ/uQr6g0gvhF130o3o1KfO4tFiPz
mn18DIn6Krw21864UfMkXKvOrAS9af9JWLeW8ohBsDOI93x2M0zYbKOy8q1F
4iYNenFnd48Rv6qvUSmDmxLD9o4RK9iTR6ttQyI3yuv5xGM/2tmDr+41wgCy
QxoNRXqnCC92WuOmzJusMj0ePomXpWOY/pZ8fT/FlRfBbuhgva4xmHQU9qEb
MGxDLfLP+FtGtSuZtwrTVaR15ta9aGWy2LK8WaRJn56mq5WoVI/Ugi55R7Nk
FBfRMBNcpfWwk+egSN6ur1G42d7lkEyqTcUGS/+YvAbZULBF8uTjbtsWr1BV
j+LwbQJAuQuEUHNnXc9QhM9ulrjuac55pnBD7ZU3Gc3r6gLzh2VR4fOE9IBF
Fxa1i5emxkiufRnoj5J5fwW9jnTQv+NSaYkqzXtygzKaV7+CZD0lPvZen5Tn
pb8tFzfbm5tfxel8e5dGaWgTp4UEGoXxsmRAPNYAZNGETmK+QlMcyda5Q1QM
wC1dPA0r5Jj09Va/z0Fz3kBvjxeSMAS7nnJ5Xg7DAapAkx+BZ3DKOmZVTAAv
SuQiYWhzzxyPF8hGxnEfjDFL5wfgDw8RXkl09sObn1/55+R5xi5O5l79pcn9
x0PLpNNvdbqK2NrcyDkrdO/ej+ENbVN7elqXioyMm6nAs02oBGXgWNFR1y+j
UfGa9ZpZRfmJ0a7u6ZiudyLyyu07W/xluFUZQ4ldJPSWBfbYtjakfm6tTJAT
rqbKylIHX1w49LHFzQOzUiVy9M3ea5uzpvb0IYZNeIn2DXj5EhPfu/dWwIBz
R3gseIZ5fBU/0Ykg4ra7uk6Oq/zfyVWxolJnOkC1HtSoNOzqwUkK1CBiGZjq
+9xYe+rnC1qssXYRcQDdZkhuUoVXxSPJvXhuSnLxL5M2ROSLZZl1mFlgVbae
wpTA26rKpO6NvBWTV49UfohZSPWwJBabAXrYTaAD/pTXpRUSHWh6tIdLEyZu
O6XZQrBCfhwzqAYLhAlqsEInHxiPvWku6qn/zPPeWkdN5RrN8PZPC6DJ6d1i
qslmjptgZktohTewn8KB20pXwXRjmQlyjvLKlizNOzHYJAFBhTN7UISE7tPO
NcrefP/i51evvv/pu++/y9YB9EwwBANkUoc0CSPYM5KNIeID774WY1q588Wr
6hn/SwpbXggZGStym8wZ9Bcpm/1rzoG9lUjr+UZ+BoJJEgl+p1NbNeTorWwT
5kmh9IpjTKuxoaR8pFYLi5T40vFvxokdoaa88+PdN/nXOveSHo/LtN5kC9PD
MXKXaahuCon2CVDOuJ7Xem+hrTEpSV7I10t2F9uYLCCRi6qZ/EwThWUPqErH
iVNrNT9zyiBefz+HJdOMUVl/s7Dloq1i5eQqJUfvGJB0dSibNrBMZrpdUNHv
1bbh/Iw+uURwvtGSwXn2dMooP8q8WKrdDlGaVb09lw5rKCPT0l/LN1C1VVae
7tu3WXjpxOuV2YJq0ZZVZjA3AmT6oi/b+xJ/bn5t1jKHsvLgtgyD/l3AaiMH
WAjyKGaheEsmCpZMKHeGBvArtMlaevAKBU92py1pyv+OQzdYMTRHXWNYEcOO
oQSq1wvCCmQPC+dA2/gVza4JZAVqhP4niTC01aUb3Shbsf7T2q+FdGH2J+Vo
PftpOZ2jWSe8KMtYfbjSpT+RE4o/948PyyTfvFup5l9e2hnFFOe8DY+3WEdV
OibGo9yGRR4MkMJ4GtaQAnckAPtCEDqMqktOlJgQnsmqyoytnINhkfVwVjnX
NuwALPq5uKX0bKtza+uZviDnU/aw9+qQVRE6j1V8adJZcm+9oKic4xZZl159
i6JrzhPwjmVm8bJt/NIVXJ59yH1zVZb+XK3dS+t1okVVClXvTpPVdve5NQs1
5tth/967HqRmluyMlpZeHff7NCv/nJzBNEe3yV9ZDyuxR/votpdPWIafZl9O
DnLKnyrOojKi7Rm/VZtbuTiS2y3bbn9XBFdOoC5z5kWP0Nbr+YNJ1qDgBny4
XLx9/cNSOehlU6X/nybhz2f/mqKk5u52EEJ9sY0gDdmzQ6bfyGucn79+Zb/c
LF63+xOJp1ilwla2B+D3Xg/j4bL7mJ6R3rZVII0+x0EKmnBbPPV8mlLeWgbM
5mi3FySQgIjONVNAR9CdrJwn8IiRxNTbxsNxu7wucK/+BS3lKuxV9CTk0DKs
AlvgNDBWFS1Z1b4OsoQvUlZw8DbdkiKaR+hvGpK3Hw0p1CkQe6jDH5vns8U/
Ddf94sdkhPu2lDDNu3R2c+ZNSTPe3cicGjRtrZVPtF3auy9MoxTR2uzyd2PA
GHi6wdTSRtWqwc9KLfrFXxHsANqG/0SoElAn5Q6waKKo4NnGweo57TpilPyp
FXEi1WjNcydy8S0oXl9RafbnS5FSTcH3jWQVzhbxkIDfD3LSdvTktbFvQBYg
mX+b7Plp8h9Or4LDxKLv9LS5ucsw5mTuvt2nZ/xZiXVgsyIPs5e+4h5bzltD
2F1EOmqyBcw5diCrEYfqcNiN53/4w1V6zeOFAI//ACjy7dUf9Jt/sGiqfMFN
e0My0II4cmLsi5Odz3M45E5sWv9CvF9f8RCvXmopK0qPgFa3UmFLX/70NcP6
FBvWexOVnr6la65ONton8remjGAdKTOCbbG7NeN5cq7JGvJAIry9K8LPsWBq
w508tjZSc7HkaGuZEdLj/o09L6O5yyX8CFF0oZhz+u3OmUNxBqRL7aFqtibL
RWPXVVgQNzwnHYRcM3DJh1lA3vN+5vRFG1xg8azV8eQLLcL/zjFMWTNZvE3/
/+gwwOxMyYyuXvm19Od0PFA4kE36btgN2+HqzurPaD5LpqSXBp/9Uehvr0he
9d2Pr3NvUdqf0kQsv3oVH2dNPJcKZQgoBvdtQ0t+zu9FTYSOncwlI26wuCfA
joK6Rk1B0rdDzxbDfRtb962DI+wqUvWh1uTrcbBJUew9k7ZhWxfPB0T8eBj6
4UZCkh6axkNVpSaeFUVswbF2o9fGF0HKdT5mFIht50fT5MMyWFpzJ5Y6Mljr
NVhKkm3abtGZj8FcIJLc3nlHSbpS5Ew4+8Tz3h8UktDNFkssTYujPl6XepX9
nWpeDB/RuY6P6h9Bi0QW/orw5ptBNZTuAgDaWSFuHE6aDuuNYfKZxQeZD5ZJ
ZcI7ccu6g5e3ZYaef/fqu7Q5Rmdq8XGynVNawevE3SUoWb0Bzj4veZS0DX6p
N5FRm8dHlFZGwX3TuTLRTbbO92Q32UJG1+5raWxoDgUTrr1fjBAByCDD0yaG
9+hTWn5ZfiI3dU2KjuJt5CSRZTa9AcDypxXPT35MJvPI3CKxou6k9XUZ/ZxI
/+pSVw96215SeDg3SHhNs1Db3uTvWiomKjV0Rug3ZXooZuGWWQxwWlzDWCjF
FPOYm0aFh5rFL29+RDdld8CVCb1vN5p6GShnEMIA8d80laQCAfKh2yz/kvyD
72kGhI7GpAKqWr52sNTsadpWFXNfSAXJzLb9Rtn2M/Ykk+hMn2gCfNq+KcKq
SljCH3G5mkOQSHVaL1NGBXBiDVIFtcCt7Zddt2vRjGo4CnQq76dEx6MrtG7v
tEznYyGtA1VX9gOTugXGklRYajtok32Cy1Mfk48lTZGTyd0quYCN2M5DlXNa
ol0hA3UfLc2MU/h3FZY1fvLp2cOzh+fGiKxMaZYg09XUBpsGEjWdO7AlU5rl
ylxrd9E9ezjpmNT2F9cxRXioYVU2RqWefFfzjjeHsFNCxlWJJA/2GmoHjHtE
TyUzCPRh/i57KXVZVy4UZoAyXbhaQGYmbSWBgqRXAjIO3WLZ3nnm1Ldi8oWE
p41+q9iHAmgVKT8kodrfRZvelxu5MSRgzuEGO3mZryl2KRnEM9ClTwDq3nou
/xrLHJRHRkh8OOJkeIWk1b4ev+BzGV4JbkNPq/p1NoJ9K29pjDNcpCbclvK1
XI3OnXgTbYFT1gjvEQ4rO/KgX6iVTzkjQQT6AJZPfKBKGcPZOrF14mfu3ft5
+keY99xmlOUlDJOv/eBYCU5erp0CAlsWPnV5p+WooZwfbMVKudV4SYoGCt8K
g1WDFIRg4PXF89p4qTWPmL4sHSGte/ym2MMtGeauMcFSzDLURsZfF1ppdKHc
USyw1brVs5i87R/GWlpBypX/oHox9S5tP+qFhofyecDPTJ8mjS6HbDPHvAz2
upPDNbFqgDLd8cfS7u56Uly9JfFhCBnUcQ2anI9UIWFaO6K1geOTZeYPzOHI
8QzhR2QtDP7mzF4uQCPn9+49PIPLIX6kF1Vnp79CXyznemYK2fMZmVZteVJ5
uVkB4j/dS35seNe5uMGVbM0ADiUmQMGbVnpEp9Of7j0+K/4aHeIlaIrgX7QT
0hRULuWeOe5l4nzzecwmM6oaBNJk3+4WjwMbkeiuV2dB/UtMehf4clTj6mBy
GH4ZdpC5k+TQ5XErQFYbTGk2nchKfZao3YywqTNhnXzoCqRtlPc4PQNLZUoi
Tcx8sUCLZhfk3lAWyVHjmJIhE9zE/5GuoOz8J2egSIao+/iuNP2gnjge4hWQ
uURKCNW5E2fBYIlbeWi6ya5hq/Cwscpl4dLbpOYktD7rgq7D8UD+nnmH0Hm3
KjYVS21kiF8aRCCe1Q+jQUVnYydmGpe7lTXja0D8GtRDxenKe6FAI0hdTtHG
2zs1VJ80q46VMsMgOQJWLF79G628ezyFZWnkTeg4FGykcyX+KL+emV/69iD5
Ybd7S1VO9k6tnJdzgjcc6pkGWbOo9lo8OoesmZJmalsY7kE7VzLyRrUz1cnJ
ROfwJzx7ppC9/soY8t2ipvkyjzrFFivNbLDVGU3z1q4MFlIYkjH0Qc0uQFeq
IDYh55G9Yn2D39ETE1BAo5i+9XY4blaSBAGBjyZ9LHVXeYU6VJLe45q1JY4z
22TasbwxwOxX2MTaSXHDly9Z4wuMT/fBIP68jI7xMCtmRbOfTWt574sdBbe7
sjR6w7klz4rAJ5Jm5R6Cio5OJTIWzier5OPFAz2R60HxnKNgqDa34Zck9Cu5
FxzEYimjJjPZbYZ0NOLpAl9BsQJhzzf7vZw9pi8CVN7tkGoasPteX3Q09NFk
iQKFWqy1Vzej3A9iNOySj32eaJeeFFD6wdufoN5W+292JP+VmbBShT02CQjS
VCpl+4McP1/du+JDmezAy19atc8J97KM1ZB4DXsXN9/W80aNrX+wgmMwg7RG
WgswdjDhBVpfH9PSmGo4GspX7D0XCVnOHHJQsi5GDvmkbrORrJPVozsjANHS
i31tlk8wPQd8gsbyb1lBo7/002uhPShOlfPhgo6y86/jTldwiGf3PP84AERf
mR444L3MIdxlaNvmfNKAFiCjHY+Dl9ZEMY7LovHdHekQ1oqvjDMiedaeEhfn
OrEhphhPRBQKkqrQb7iflnn1hf+iQ3rKZAMZn+0/dKSV6UCfYK6pbpkS499l
LAmLB0VoEKXESn+p02yUdHhrwjSnlMnpmeerJNLEUkjerRkDe7SMID/B7Z/S
dWYdm6J+daPwRAnVZVix0Xd6p4SbSxZl9gYMjWHF7Wew6nJDBDmFtfKuNovI
VpNZ0PMJLenRMy81nlD2wmSKlZmDvtTEijaTbnlZWu9Zv0K8lt3J4EGN8+9O
hsxhMUs3FOiA7OVCCtbJUtuxspBsp7Nzkb6gvnkycmN7HmkpSa3p6Y7i4IHA
Rg0ArYO8pxhIfHwIlPqo6hhXHdkgrSBVXEOcp3SmDlkA+NEn9r/v+5yGQITW
UwGBsHDum1mDHxTx5LAz9aNGk0cgO/HlFBJ4cjRq5gnfEGmxcIRdw102YrJx
q7LmmXdDqNPkny3cE1bRioubtKkhf1uMc6mYoZJXqFwOoxcC/p1Y+4JhCKEq
W2sgiiyeRyDQaQpZsd7KF9e5DOjT7XUxK6kKwUV/lDclem/GvjuVRUi1S2/f
/ni4FqzCnd7v9SpkAAvrnY7ClQ/XBwKodET+OWPl1ZFQ7XL/eqFqhc2iJGIb
CdUnFHzT5uj52HeSGjuP3SHxoC/rm2X5mbtkWV8bjdQ8LLFami21w03lwM0E
FMGiqLvKCZuZr4Zz1RV2k6RONA15KnX0Yxm33VnwnszbsE5D1pteLKjtr1ww
+frsK4jzdIdxliHS7zXXR8uwa9Wen8jF+V7N6xWNOfYoixlqGW4A1tKQjeUM
N5WiW06jKuWt7RGv4z0xcbTx/E5Z8C0Pmm2wmNExnKi1XWrhmd7fFDMJvxvd
jTsMV3Q2sjxfEJ0M6RsdkG95RJIlhV+RmwCF3w7ZpCXbLyzDAxAyLbTTjmnn
uT4tK+nyEdLWDDzDmnC3c2vy0NYD69hx5jtNAS2LNGD4VGYW9fq5bjDdozFO
t9tWN758qiYkn1nicbKEmUntf0KZwDzyTyyhXmjhX33GTQXI/0CIhvENoAMQ
1yYQU39TTjMJtd6i9wioWoNh0YQH615ENYWkrhockFOkOFdYrlWY+ZCsoUAp
PScmTpQzuISmUZOg2R0PBhpjho6FRTx2YT38GcCfKWBs9xkpw7SyZk+1z6eZ
qx5bawm42xF57lD3k/+w4Cq94jFtTNmCH5ptWIiIHwdiqsynaAKCl2z2mBQO
F+pThQ+VflOB/oLpqUmN1U2UXbg3XkLNRNtYLeazkikcRV01a93+pe/WYt97
kKfoTlny4rkcto5Tkt8mmbNTmThm1nme03MDMWGmq0SKFEk4WXWtZCyujzfQ
KcWOoXsD/KD8JwvXyY8xO6oeRTUH7MwFXf6FSRHkhcC9ngsfwFuLIz8wVW7x
re6/arxSuyhUbSJAIyepNB88TPjqheDaUNvGCCYNfAKbNExibsJTL6xqd9Sr
IwPvPBTXNtOZNdBzJj9NtvKvHj/6P//Hrtwywx3aue2zD8NnZ3DYoEwBzn/x
y7sfVt8slYujQLdaSlGzQVtjyrcomSIG5YmUpcQTzxY/4x/yfbG+03RFxqiT
0zW9e9omAHu2jTTkgK6Boez2LnPb2G0g5YBs2tYDSUC3Rrpddxf9C2bHWGK3
JPrq29tnPm9aakqTxQ343f/3y8/vvld1IRMtzJ+wCEI8xqWlfI+9HLO69qC8
blJwSNtKsAoxHHdcBKvw/FnlWXRKseYquQ33n91X7MemfIaWUbzApc+w8HM6
mCyCWM4FGvSERqHZFzxZ8QlLXiLQ1bgjjMVQAHpmmXvVQXBn0Hkwyg59Kmc1
sgjDqzISYUsZa9Y5GeZjCjjWzU5b2dRYpAUHjlP4NRB/4uK1/2o3efFKiHWx
2N5oyEHvpPnHbENeab60cwEOdK38h40FW+pjP+gfubFE8GNsby62xkLTC0lR
3zgGMg9GtyOc5LXRWexV8FJVYiQTy98iRWy7PyhhNZYz/RGrKUzdtxk0kK9D
bEM+yraKYIO3xAlM2eh8iZiMs1LikGfX0/te8JQf90HGPGBjqlHez3E75EvH
cdlipUGskqadvwFMHDcxAxhANBteSLZYPi6Qhar1YvveZFTZycpn3O7DuCh7
ve3dvJkL4grgRSoi7QRMGIBPWoaz3y7xMvoUPXE5rz09sKpr5M2Mgaj4bvbH
Za6VwzlwIqEL6RNDOPH6n9oRAPw0Mx7NEM64eHisF6P2HilP/7t9FueKYI0G
OnBTZoYi087X9RyZRVNuN2QL3bbb7UpxNAqI55xLomRmJKFOdd1ddNYpsm73
ivDyiTHPRTlxf5XSrmcJzkOedm6jqYBsuck0jb0P+ryTTZI8ShnxOL9J6swr
xq0BZKWIUTCb1NQXuoVzT7Slp9TPK+GXwj+crEerCP082EYUZeUm5tVfDkA8
PnVoyAF5GSVWJteNVtHwcuOQfVNmIWbOX3XyupEeJagqARBePSwxLWEqa09g
+uV/fJjvYouM9oqHkitrI4TglFxsIiaiC7F1ft1c87CI1uNgAZjJRbyPSMnc
+7FULvNhf8FmQTRujujLstxB5u00a1uZlvVWVWPjGwX/ik9wMOgplZWlxj9W
AIzyljFc80qqLo0ypWitf26vFElaOCYOqvUUjGGYZ92mmaQyFyVkHPwBFGab
Xag4c9KUD0ShZk5h2gsQhXZiEXGxbdkf1sTHKXrDAzbJ3nleWBpPW1NrK6Au
JQsK7lwXS1Kk4gkhHFYrXA7HNaaXZZU26q6qRbT5KttfbPJELnl9WJmY78Cq
b7fbdpb5vgZBHqiPtaBTkCRLs0VzaEggqmnJPfKs8Ew3+YOLzR4gzNww65pU
o7bby0jRvJ0iE8QudvXgWaLYAId1NM59zLaHnl2zJWe4fNpCeTdEcIlHVK/O
i5u4CERimGFlq2sAh0NItVQpO5uzpVcdo9BBHJfngtbUJH0+53NI7sMCRB0c
dzyq4WtyFg0b1fCJvtb54rvvf3Qr8eJBxrAM+QD+5d3zb+1OQMSagttHQYvr
iceufpDkf1/IEYCwVhrZRzW92gEli47o4JS7Ytwdcx2BJYxMcxRl5OPga8Rb
ikvLTJzL/EMuSa7hflS8m5qQ/UCJcBUEM6yv7QgtjzTmbCNYbFFBYiZEumSm
qxh9fz3i6TZJtk4OGRgpstwITWge5fwaZwj0QSQYVbGclvSE58wpi+k5Zs51
fjnSJutolJRg42cJ3JvR1B0Lc/NI5ITeqWul3UpW9vE75BBaLYJVPPdx2S1q
rEOcPt3vsqXRfsXsM0SoAqn+8RBKsr2/H54bv6vpcrlbPm/0kUJWNHxuOUTH
E6tdOsTa6wilWHXEA3K0x84D5YL8p4PlfM0ikok4jYBnsmyc8KZKRvngA80V
XeZknMD6uaWgpLN1CsU/jhYWyz/98u6Hb1Cd6+EUxdzWDRCFXKKZ/JbaLnmY
VHifv33x8qWdKfUJVU0i+ZpeprPa4d6YWFT5Kj2WIXW1I+fpFmEIctypg4rB
V3eYxH24z6RrEWGOIsFvblBE5CEDJ5n8rzkD5sbHYqlkdSxuYp/4Qan+vRMu
jo1SyUqLUUQUMV5Lk2rkHPHE/7LaNhctq4zP9X9Ti8K8NExrTtV/Kioiy9um
jmmsXSU4oqa3IGiU22W+CD6owQQlLNNbkv/FSzuy4APyJswUCNWEJgJmJH2z
PPGww40s3z8i0fUy/Y6ZnYffLHMvQFGzST/TggHlcp/MBOC1aV5sLz8QMFkQ
m8uNnOo8U3Rjtq1F2DhlHylAQNcBF9Nz+98X1gzCTiVpDFCd3G08Apar4r8n
O2Dtc0WEnANkmainT3KyunBvVJhIkdwSJx+U8Rtupn/JGP3yHnG8WiGTaxdD
Hm5MxJW1ZQnWhcJdXoREZNVqS21l9KCaRazcbCP15FGLu3Y4eGBvIzmzb89s
usq4WVsA5TNO2RyOj6UZTG2Khtk2MSDeyfyDOGEnDax6qrwV1EyYFBVy1UxZ
Sp0y1Ttpp+Wx2CIS3rNs0/XDBCfMViEfQRuvOy5tfEemIdgAd+ybD0PyUHO3
p5b9t3BBf+klyp9c9iYPMGPfy5BSDYSiYlhxANMZ91OsQEDyPFYHozBLCpRF
bv1s8SKbGdBwSbZR5pwOxVU7sq3HnIxT4xrrcuUyx5rx7Pk3xCVfuRoqLwuv
lF/cua/8MPjKj86euLvNc1A/UNLE+ZFeDeOluCf2v5fM9Uuc4juBVayvl7XB
RaiaZuJM+ofso1rJwjdYoVAfQ0ErvIetXhl63Yrfz0U8ewNlIdGTy2Pe7av7
RXJInJJv/pgMqW5am/0rFR6rZ+DL33NChV4x0cKKULQe2yJ2W4aTUCAeB3iM
8T2AMBgLuKyBCE31EPHdzMWinxP/0zIn3lLkSf2QspH2L5divoEqkI0ZSZ88
6NGmwb/tVwqDycm0SUgkb3LiBy9RS00RMcNAPWosrPEiVwhXyK1Oa5IhvQtK
tAx2sx+zDli0TfdNpn81FbFycc41telA9MjtEDUBixa6StjNZr0guw/2XYCx
0AJ7qPbHgfytkvn5LDrWF+tRGhYcmErjXpPlPNFytJNh3SIQvml+HQzHZ2oH
KiRytuBwHvFtSaFvaKw+ZyTq5TU6rrDME+868I34bW7yhJ/cwE5zZ8rx7CbO
zRJGtGHN1OJHSH967gky2MoPiH1+EuT8vXt/ifGQouk1GpyM56yotZNvadTi
UsgyaSuTnu2QwKjTBCEJKuIlkQBgiSJ3iqRlG+BPK8yCu15n+hocclE237eY
tTTLSJkpkeu+Ux1Drkc2hg6eqeeAH6wtZPyW+sUc+SoMs5yCIsrvFON10NaB
Prl5w62di5jucfxg9aYWujWK/R3ZaqtRzORNvQQzMrMmhyhw+kQRh2VylX0a
BSFdcjKY+FGmJwAKQ7IlNa1OgDPNtSLO5JDQOXaZtpRHMw7pXWvxuzt8qr2x
Oxg8k05smviMS4YdikmEnN/wBciL5g0sWo4VIqBkQgcS7/HGCkAYKgjlflPs
UGcDso1QJBvs/coDUmSFv4mbHeFBe9NBVXqhiF8W1UfKQod6zqdLTmOEV0/w
Go1B5+eRIOcxT3sZEm4SiqLKpDEHMRt5yIRtcP+8fS1ZZ/kGDovmgVppwR0V
T0vtcCTmeu++mK875GPrmVZNzTYLrf2MA/L+B/blNhvDSVhnnxsmuQLISlpN
NnwZ5lXB+2nL9PDsa2/Ewf0kyK/OopwsqR2wLDpbRLuFweN3Zs4/AeSRuMCS
kobo4S2RvXLtov5QJatyIB0uLjkl+ZYZc52syFo+81QD6IE04LCo1D5a/QOS
oVrBEcN5rbncIKpr/PZ09/VrE99JpVXdC2aQUS7EN2ePvXhahb3iUwDJ/lmD
rrsWaSWrEwueAh4oem8/6aeXt3tTTXPwEtVB9xzN3eLldz89f/TgwTfRYVfg
OOcerki80Pi7F7GdYu7uKXTkcRKaWpVdTgJp0wwXBU/Q3Bk7GioZqe0/QaU5
NkhG1xE+ynS/YD/DrSqnCNAmjeVPBRcZWIEd064ct0RXTxI+HZV9PrNUdArl
cDihXPkIQU8HwPte5AluNDBlBUhAGLKfVfjkrmIO0N+XuwKQP49zl9GHlczm
0bguykJybEUbubJOASo7zZQqplXiAE9l375Dji2JhiDF3m4YW0+eiE2pCDXP
Fz8bF/prWhKAr3/+IK0d7S3bfwVvbXLSzsRJcNBRhLbaQ6kEIfOdWy4mnbn5
EflfwEBeqEnstkdO3AVFMdGcm8vjU5pKo5yc/IqFknapZsLllbEUFWw70kEA
QtmSsfPimFwjZAWHnSf7nd2zkrd5d3LgDe1dlk/YazbPu1M/L7ui1Wdtf+xY
xD1IplUazOQHapBCGq/z1VucqymyEAEikE0vkqznWh2BqR6IySd06egnX4PS
aKbunOYDV2y4FBuoVB03XUWSgDIbLo0x/WG8ZDC47UBjG1rrXItUphqywVLN
5Ts56sAG4Ox+3+bJHzNLCLF3yTva4FdYyrRb0XhDZS81l6LqIP8PHdqG9GMc
zAuwqpxc+vfdaVbObauJKXFp7DbmhnOXq1o0lPRpBSuNcWg0yMKtLcQnZT7q
KxhBboz7wB3WSn2E+n7Nej+MWhpNASqGFQUvTp869340TZB7fUiiHd+KvdWw
aMSbXIbqxpRcHrFMmudz68BR1xxGD5zYa/JTi5m8ylW4kkZFySGtk3hs4zDE
sBJuwh2noPtouGRpZodVkD/eP0w+BmaUNORLbcVCrsQ6bVy3pdm6A2NRmq/A
/YUTRN6XouIA3IYqJ3Pw7cddaz6CKIoMF0eFKxs3+YTVWqO4rf732f3aPCrR
yIV0oqV9SCRylhcTqlmpH+27Bg0Kbgqs0YE4MctUTPhfKl0Gty62v+J+V56J
Wb0rpmnLZ9tD8awZOrhgT9i4yJ/2KjvUs6sfs3mR/hLsHFuwuLXt3dVEn76L
BJ0ghP9yeie66eN52AkG4q5WRy1XlJMjE0NA7WDZN10ybUfcXvsrpxd32e/i
x3PPMTzSx398/FUKSWp205ffv/sBm3z0Y37R9smtdQ5Mtmi1h9DZSFCOfR67
EVUluX9ydrNVXWVxFPwyJnDD0E1ZjC4YQCT23ASOlDpSnzB9KN3T6J7sV4qK
mcoRBMpEtjLRxVzn3uPoVLrKFW2cDrSskvqhzYL1grPvxmbzIf0+o5li224l
z7BtVZtEyyLBT9sbu59r5pEpnjlVpCEyZTLRB11oxAG/q/D375L5jz1xCJYK
znXrFbbd8rux2Ci+xUyRNWrGjNAM8DdbSl8xPAsZDPjmeFZevn09er4Uupj7
tWCxhv2VjEtXReKGSNY0aM6Alo0dgbjS3+iVDsRzTX6vUvefcr+66riq3+Tc
J117uATzidGfpMVmuBb4vsfjTbruoFpxuC6cO0nk22U3fspmpBPdyv6g5+cW
IE+5mI7JC2qWpAsJu9Y0qU/LU1Hh46UnT2Tn/9Pbn39aoR7dbmyWVuBEzYhC
zFPBFTzjmq4W9hRBjqA4zmtUH+rbNzirXZ8h82zg9npwJWfMg1c6rjUFLxba
gzlL+DteQ/k5LVOow0ISWT5DIGAvWgP6T05VoV1+E+5lvPeFtQEWQyRXkFpt
cW2vo1BKAZI+W/yUf1QRkI4iNQq+AO96AjTp85JQwnX7RN64rYSpLEyQP756
+ep7+Zfm5oLyCe2u2w5XRyQ2mpr6Yis3vmRtxAPt+jBxSyTuq8lUyAmjb9C7
xPURL7tmf52Bm9R9q0KJo35Wsv73bex0k+7b8O+bh6G9HJ85yEu9ZnIJ+bFd
fMpfgSX/gTQB4m0Ky9jWgpkqzMjGv7GECfxAwFM2fnOoSkNyX/paJZFv3R0m
GWVoowDC9JvVSwIoYXYr+MrfUlVREgbJtdRa/2EskneSlUBvqO6ILYUYym6L
UHtFSRyaVAJW6Q4ZSqHVR4ZYoADKH/zDTSeA69y2nin8VFRavo2d2lHAT8Mo
JvUCMK8MNU4JYE2JWghbYVtcuUJy0LGagtmS6PMciY8LMclAFV/uGw+yxbHb
94Q9LYPLI/2Kx+17bpgMnZHIFZ+Uy4XCZJi3v7x79aN3veHogmQVkZzXFjEd
fmpA/+QcPwwQkgN0lPhbllLJ//2q4jkwEdpuNMu732Ty+w3KNENg7G0oqQHn
yCHllT2Oqwd1+HG4aXWzJD9NG1z5W1b9AJIgLuOYKyQ0A8fRfmjkq9MtVdpL
21jG4A3qNAE05Zp8t7d+2uM+hsDXEt0PgpGWg+LhGETfhFoyfTsXxZz7EQME
LBT3B4lLTGOe+oJ2NdbGUq5frGkg8B9KutCVFp3HwSXf4DxwGVHeGLpNJPFc
ge8FXlF69ErLH7QNuT3fgYmKSBcEj94grdZlbxz1p+MVpjZl+LOaTVqLFKcD
2rfedsjR7Fvyu/kreYIkawVrPhECjM1/HA1L526I+CSLi+1woY9hoAs4W8MU
mwJFrd3akBuXR4sCbHSjYipqOR+CRDl0zeYr79jz/fqarInIKqQPrGw5NXGj
JUOsilK88kc27ceFCUjyWohcRHr1Am2L+uax9y2x23cfmvXdJKCc6yZ5cvZN
2mo/0DG4GaSiyzRBQ+AjPICTGbHCD8h3PzJU3l5FoT1x1G+GdIpAwyYXe5eD
dJsFi72zlyf5JwlxxF6QK7zZX3Rp38mVZPIR9aaIfodX7ww2JtZVov5/PWXF
5ZBksTclKAuDN9+KjH0gqFUwaBiz9WfTxOIWupFrNF0DA3VTvHLqb0mg4sUR
mXbL7qNBw51S1awx11PCLP1dYXG2iEpMXiYGz0MMY6OKFl4OWoYBeE29JwWP
mPK0Zp8nsmQFBZMZkGK6dNkozepUEqy4N6D4vjOhEtc4QWl2EIzz66AtSJaj
iffBDZXW9eoof2aM6IzVuRhskzixRS4hmtvEs+eZL0a+xw75QhJc6yueOU+n
r+RBnKDecI5+cbXi9xyCh5HJxMpWR7wbELmn36NT4ZyGTOVi1bnXVrrX8sKD
/YxJPcg5gNP1nRZHA2cqEWdYjbxUxA5ruK1wRD4a/YkhIA4spwGCndttAxDD
jzOsrXqVqwl7dTosh/Kv5lcXc2FZaercdfzI9PQcrQnN6vM6rhTo5r4Mt7AI
/myLSKHYlP8UGk/ijKwJEM0LprC2GOqW+KoEgpvgYGqBdkLIeimumqZ7A1xb
m0uvvDYQ4XV/KvIVYXnSCdq6EEc5GUReKl//9b4Vv2gt7ZFMQ6kbMlqrszzY
EcLMG3jDbBhx9sI0As4dUwreE3YWcd0buExiod+muydbVpwkLwmpAGk3xoyq
eFaazIDjgh/1Ss97CyvMWT32xxGJL2QLsikNiClz4O2+Ew6/oEo6ojGkqRXs
8uX6RHqn6vdIn688tTEbpZvoGgXHY8zecv5aAC+GrFDafseeGBNHiGsPQShI
Bi8BTSOz8/3pID/U8acGXw1lnP7ZmyjfiICz5r2k/i5CkNEzqeUmYQH84GqH
MdglpVCJVuv6+dkF4lgGl5nZy4v7bFH4SFBvp4tMgcrJSZCbslt3hBc6ioZu
54FfKITBM54xbl2NKAhr5QstFHUEmcGJNDZZ/rTvZY5IPFcBVizxEao2dlsC
Wo/92jlzcb3oaQY0oNts2j7mt2V9LLZZ3UqGWwZ53G1y1h8NeumOMkWfWLaa
yHq6Q/KIFS4dqjiiKtArcZHlseouOd+kAM7bLtV91HnqLXS3MtAI1L8itaiB
oerkda67dND2Z0vPdMbmxZacMt1Fopq0uul0aUnk0YMnTwNk7yuRvqoLJB6G
3tckn3JFgZqImnAX26Z/z2HUZQiKGVz1lH+8o34E3xqJLO9fyj6IpgAyic9e
3ZJ9KLdvtT/1fsa9oQCl2B+CD666D+5XodvoABmjfRveAVSho0Tf9/lcgiO5
kIvD3S43P42tdVIZnEg/vN5KSm5spRDTrXkROUQgTmEam+kA3LdUWOE7xnSN
rrGeL97aV95t4HSQyG/4r13cTSAXZjCrNGS7Ro6LiflL6HPBI64KVXaZWdN5
9fR0pIUqXGnP+E4BYKACk8ZWKf8JcFQGl0sup08rvpZ/v2sP6kQGQUsWD6ET
k3NnmRN6HI77tYbdclhG9Go3jH0ZLCJ0bV3jq7FDVpJTc9dwuxwVH6XhviQu
g6pL9P6MQcTCDhDGL1ydcL6PN1+YSyUQ3zcfpPOiTl1qD4BAdPeSg5v8PBWM
N8xqiWfAGlIhC/FdunavFy/HdJkdFm+NVu1kP6RMfWh92ODbadxFl8RUo7c7
VP2SydeYFFv/xeofjEQk73ndpkMk//biWgEmL5LN8FpHesIertSlKGheK8VL
8TNPy/ZK2xo3qhbKeKwS+TGAI/FY8HJEgkYG08aUrw+4mwhA/OSRR3pHEw6G
AO4ueXOtUv1G8myfBmUkbLnuwlyxnL7Y47NHejKJ3KL7JAkM3LHl5rUHoZwQ
qGyl9g9PB3ytHRK5WchcbsvXUrga6YHFbWOeXPuxIRk0knDdVTJnKQg/3lzg
OPIGf5u1iObqlRUGn/VZzLXfBkxc3mSc9lXy85d5xnz5svVV7kcYzDQl45jv
Qdi82Y7aU9rXN5fEiu8Pz1ydIcjFMVdmonxF0Gvw6nSSOicwxgqpnxjbvqD1
DVdzo1tRsC69YIut2NBYbrI75H9kXF2gSOpWpLUdnzWPz3mm1pFZpsOWrffB
hFs17zGtHY7ksZWvIRx94xoY39i51tHeme1kT0SxV21b8wZmbJt2QeS+8s0q
AeA+8o9PyI8d5PgD8E16OnUb2saTmZN9b3wgQhFmOmOq250s4WSje/yHtrUI
xYorOF4TeEi7FXumPthgmB2xjlbFGDWaXtV3Gob37HMuL7g7u0FHvz71A30Y
cSbRd6E5zDVqGWntNmzrFrNHjTGjL65dgGjnP1RKQsE0pl39EwVDLAcYGPar
bYmAPxP8GITuLBhsc45n7p54XzTZ+NqWYL93QNjU5gfuZl1Y5z6fCtq6Upn2
xNVsmrjKN9ZNn3bIlYCQe6qfV/TPGVQ2YNfnsSN5K64UWkPtc5Q2zHfY1251
XIa+VFtXGLQTvugco75ey7XV08dWSk6eQvZQsPJnMEtSr2RGxznPLudwYuC7
YtLHs3iJPZm+WVxlmgEXVWAIAPB+nVzMwL921Ks7GivNflkDhRyb4577UTsN
2ziFetVbowbQWL3KRh4M02WWMn9vVIdP0WqObeGU+8WqfHYEj4NYITmSq8Ow
kgifpsMqVFbIcEjvv0bRSpQ8nT+7M0F4OdYo1qrpQgVRLn5HyDi6w4jaS6sv
zw/8QizZpLsmsnxqBiHQojP+Ev9ayWE9N37ZkQi+JBo8WdGg0bJiBnUwRm5Q
Y2P33Zx+eHVxt5LfL3Wu2HSsDW1B062e6SA/M466Mv49MWppCa5ML1h/Htnr
ruB7aExOUszWJ35uh23AhoXpzNu2h4fajd4HtXjBAo/dwb4vuizlSy35McN/
Z7oCx7zjD7nk7EJFM46C57MGAzGVd30ygSPjQqd1Ufq48eB47VE7W40h3hIh
VUzwuMovZKrpXFDiNvjkBU8HSVJegTVRM/h6FwLHJ4rvAgRXGQkE5krLAHRp
4CxxzFtxA3l1Uch+ZGBzQt+e8fwC1yQSIo9WdyDPuTkIWaOBQw3VEGUrSpsq
OZCa/VV2+bw48uZOqqhbQU803M8C5m9X26GeB+1bHqxtBhnp0q3T965jFuv5
i4Iaw0LZz5xtKwYhNDDCELLtruVCDoAzzafBaVwq3Kifj0XGT0chiDsEius2
MnQ9VvabcAgTUdGeXHj4i8G1uoaSLp2Ji9DDGhdl2DvitjPtYe/4NmUveWnQ
3J9E9cold3Vs9rIFIg9+xsdKS8jB+fLONW8U+Chz3TIT7psjMJ4OE7ITyc0a
5u5UBKlJ7GE35tKeE+QbEyKzOuKN+svU2hmIX2LDr5YlcBthhUopujnQncbR
ovrLFmJbxbBLI2UOsx7dwcgTztJ+coRx3SJVXEtdn6YHRdVuPAkC9MtNiQ/9
AD3Me/+H/ZDWr6KrXTw/SiU3+b+WMYCVyMRXufsu7Z5nD8NFxUcUyCHAnIwG
owq0K5b6N1pOoOW33KT5b2xcP1t8H0PO4gDnvKa/+22zfW+fUyFRdaTSCV0a
W0i4xaiVd8hPMCjFwfFBDpxmxmgT/CUftU+GGIOMyCW4XRp8LegcGEywGmHT
omHiZlAinOlDQr+fOpeFZovZ9zfZcdUHhldtoGeuh1mpUNxGqw8PB6j86eTT
oR4x37AX5SHI1krJvAKH7ymnNEcCViw2d05dWBvDeIiI1h1QAaZOt237q8P1
+YzsSwgtAnOJwQXNKXfBNPeYYyvwN7HB9Pr6WZHY41YG0hBq4pH4ID7k67Rn
laHFjS56OrWKHlxcDGLU/mNdgkhwptojFHZxvSpLZ5OUmcRlZcNi2+y3soDm
a6gHYv13WbvXJE1zwWzatWh4JeTAi45PE+Vjv/bldpBqeaUESLxndziqqhcl
cf7u79CYr/19DXkA35FoBi20cvRiQ1TsmapGHOpruSOrAdTQuBjc7Az6aOwy
a85o0gDu5B6WWtaNpSVj4XNy8Ye+hTEIdc8owp4GU1csaBldH0NUNUHk0vAL
J+DY02QC/GecwVXyBy1oHVnDUEU9kUl1CpVZZCGr2wBuAeSPfyGuCRzJwteP
X8vk8cjvVSObbx+Si4Wf3HYXwLxZTf7dc3FyVECneBEJacX6hK916gEUm1si
+m1ydY/iICw1JewCbPVcYYriMKWm8j7tYAj2VOlxoob1AD2UgcZuyIyO+Kow
kaEBicVzemHivunu9y260jm1rXDQqk4PbdnyEKy431WucL0+3hwJfTm53Cz/
z6y1Jj+WEUZR58TsIUQvHRwQFLHdEZTjiYh3qFza11miqrc8G7H51Y4AkFz6
V6LjHgqKxFOfRAH4jScek0+rBlUehVgnOyAambySkV4ANZs8cnUhT5of9+1V
8h+3mvcxT34z3PYEX1RwDfjfVN8g49ehTSGVbfpY6lmlYDhQHq6HfVTwhInf
KgiR4mLL2lLO4tX0lwxxrsCWqhHFhLyJzOyNuqXMEhS9B812jS0Y98HoeAsd
h2YZGz4/vHcFwSTqRdqSWGMZr8HWpyjjpQ7aIC+Otut6FP6Zvjge+B/2C3og
RrDqiKmhU1W8kQXC6H0PNNC58T9SHUfQVAknCymFLIlL3whRofytYRc0S/ck
f23MMXdPCWV0I9gK8ONyusQhpwqYENH2IQvqQpkSOO0HIZRGJ+m2iWKrv7lv
hjn4n9eHIYXNi0cPHj1VoMQkMUT96mO/ExZFuVnTe4oS3GPZtkYmLAGmyaaJ
ib0i1Sj8QIrD4C/nxSLrF0I3V5mXF7dKaVDTUvXNLjkLB/VXASTlnsq6DuWG
WQq3i1VgD9BLllCFBMF141ZGkNTbbt8e0k31wVtBbRymHzCG7Fto6zHv1tqd
KliVg3+oWCx+lunsdmLJP/G+kdAo3N4C/mizppWDSPl3TXLZKUT2tyQdnaIx
lXDoFIpTndNgx4x2p9rcBJQTc1MpVGouKye3rOPAYruBCU5PZVoRRa9e6wM+
WGYBa2YErGnrr/xS4tUnzSOEcwi8YwyOy9JgIRTa0O1RaP2SF10MGsCCxH0J
c5XGxW8FIvejQuTSw0qHOTvJ8s7h5lYli+jHECT8UQ7tprshMbpBFtWpE0EK
RfIZJjAA50Rpj0gTFS5W1ygZj0DDS3z98zcvPJKLA7YCpD0eE5h2S7c+kGxs
clnVrQaojPI5Wo/w9nb3M/xFV6zqpfNwUIISiddyJULXTUGxAYJ0N3Whr8FE
/i91NTODr+3nXUA9DOTn/9X//uYfNKa09jnNMAIQKekBbDCHzoq5yDidj93N
8YaASW06n+/m1cheuT3Eat/yubmfxQfFeCK6vQysi7C9zEGN6U0e/gPoc5n6
iG5ODM7hs5vfkEatt1UOwhT2iby1bD32zdO0brf1Pqjylef37r3SKbFiEtFk
4LCYEmQpM4b+CPL2/Lb3Z5bLcRh2K2EYMBYWSuvpb6XpOTpx4qZFCiLnm7ux
TMlR3fuGrA9fPZh5NPnBlbAEu/u74W2kaVFtS/UyWGYs0m047OJ658LrHGZS
sAugfGiLBhWOjjEuZ6LbF633ghbZi5SN2lbnJYdOukAz+IhuVNGunGk19Yky
hgpiUmVJMIo/2AL3LfUskDnVBLemdj7dAJ1XGYaxeM5UnO7kFim+Jy/0Dcgn
tmP2+kJrvk1LoMAkSNJd/ZVkF7er5FdtNzltnWJXqSixjXjxZPWV/gjaKOUB
NoyVZsyN3gc9HjDDtIdQi9kD08FwbNO2O/+2IAU+Xjdi76lGJFetrAwEoSCZ
h5olzMFgUoquo5pOQRlsn00OIkyUZBDuDsKh+8XTjO9RIdi5WKItNE6Uw4C2
EI9uT8PCQudek83jL2nOtuxjBAOAwc89Q/kFaZv6YJ18qcm7uAV/+PSfv1Xv
wD7MNzv1NvbFx4/++VsLoQuVtB7KXXgnWewb7QyaQtJmwPfR+lZ9Bd6xy2pH
g+xkdDxzIBIdjyO1VHZ3K2M1CC2QspbH3v3byAZQMSdUX7JPuqYXzJ+1rmQt
JKFAzqIDN5I4btj/fDkMiCg0rbE8OUbn41+LqLlRe7Hlvy9dBdPLstHFLoXY
+SIUlRDdgAZ1Wqlun6I8A24vRQnvuMmpIfsHSxkj6/njaxnmrnUQ8I2Sskav
MsDuuG185laHu51SIEmqbKXGt2z9MXfQOyJ4L50mtZDo0R4Sm7IvF2oHIuti
Rn+gdfojdqoA5vnRUDjuHb6MW3EuT5XNqnndJ46P5pNCBianlkpBu64n4DXg
deCCWKu/DDy/o+Kvz8ArSx9hMg+xuWR+Km1WljqpUgOQ1Tv1NoSQg7cELDos
zzWhzbxeU1etfV0e76kxSBZdum8qE9d49Kr3jBm7GWuyQg+XeOjBllgT+GYI
1QX6F9Z2ucJ7aWNOy+MMr+5k/pIj4Z3JlAaHsNQun+2dkYhWJAJ0VXFZl7vC
yl5pU7xOb3DZfbQ3ZcKaBpC//1d56b+6c/fwwaMnDx7Yhm+Lm4xf+NPibdpL
yOrMPDRdpErA9KO60GLtv376jT6yvAF13i+2w/o9z1/d0Te7Fwm97dGENLKt
D7Puk9j6JAaLvwqUJgUNY7zV9FtF831kc4NJzeXaoLvSaGy5Gi5XFlsG//fi
yJZjKeKJO2K9r3eerlUvsiJqQHIex2jSHxdMOpxYH//C+p0Ei9v2zASADKRs
OwTDZaccE+Vn01Qm499GF1CcMrmBJI74MGw/aIvwzdDP2JJRWR7udESCRwmP
RydAWj6yugz+ZFOVLBoitT8a6rBHXuI+SWEtsxen2wqNURpMBdJAcSGYJY0O
QGkQ8uZxP+zYH8haHjYuptyiPxYuDDvzOc/OmwXJf7NV+mzJoc9sYxFyIb/F
pPNPsWKgHEqz9760DkXkm02Eujvaiw9GG9pxaDGHOmCoQakY11SVZJPWB8sh
r7v5DWHleQCRoVX3I6mF0GO2BeYhBc+KigpeT7uJd7E6OH6N+6HwuCTYk+r+
jZ5NxWZRuGkZbqzSXzJO6aBEsmOVItar3jqWrNtch3h6A4QakxBeC2djaFmY
eJZ6+y2eq3K2sFVLXUaqicIo0A+L/zjK4w5KC2bFYOHItZqRbjq/yvlRL1jd
SaTiPmkuzOfjo4Vph2pjVfPjM3Yhxd+22J6W1Oym9zWKEegOFtSdrIbrboWQ
JOPxRkhKQIKo3Ki8BidmCHmJzA6im/MkI5RiW57v9ul2Q/IfPnInumkthvmf
/ymjXL386d33b9L/l8+sHjwxLvcZMJNUPmTePDkiqVbQ86DDQcDTuOeAIrUC
ZKjKO5lzSenYbjtLnE0vyAyjCZR2jhEwtjiZmqwAjCDb+vT0KtpiSfECn2hL
QPercIDnjhzlZ4N8/LA/GDRYMu73xbMSjLPAA7ft5qps/jrBlx2hCRbhBpX2
Dyi9RQIDu6zKtqecoQr0eZNu/GTe7Jr206b4lZZH7fk2GeHFm+EibXYuwp+H
QShJKiIa/asgvZmccODMzFZt1ipR1vXR51w5Ein0ZgdkGLVfClF6sbPrtm/2
3QAJtYbyMekub9ZCDcMGGa6MtM541/FWoKzHvXtBJk1Ftph97T/cpO9+gNXX
IF5gLbIVcVFUt0ROwBXIGnxUJG1E6hpUKsceNCzXTOxluCgbb1kQPqvS9Ga7
kw0MxU19jQB/TEbp0Fyppm+Ou2DxNJsfcstefz6nnIl+D1FqmuifkkmWaEC+
bfKm+jdY470EwWhQ818yFtSQuEI1+m4wQR3NCnoTkWsdjlowEy63RW68n6mJ
WwXECTW+oPzBNh1NePp5+ZI6TEUPYtOoJqRaN7/Ecq1ZGF7tyqqry7+hkkw8
7RyPtaoRFcTVRWZZAiXcMGORSVNx5YbNhTfpkxt1FSOeNlhqqeWxRBpk3b4Q
PmV4K5BzgFqjyu3l0lCsEiyrzC6sHTxUuKYiDmtIqtBjdO73A6DCiMGr08oU
++hacszyGb2ONahcsHPoQ+gDZrRr+aGBIFDZt2oiqGnK9vRPGBSN2Ua2xU/s
gxYlAYy7bPdWc0A/NGuQneaxVYkKy4ETNUuNNSpJIaAGzWbA2zW6mrz6OtQ5
JUrVrewdW78VZLBcsLzxxwJnsAwQa0ehzfABGV1VZ/3tcCkbUa21s5dGMqZw
t1EM6jlKwOFK8SdpV3D6V6FJjH9HC046mhtZnbXcHvLQdmmiVtg4WtMBau7x
2dcKz2WQ/+TBgwfmzfeEWkpKqkGnPmSUMrSABXPDS9wit9QLa4Rf2x3dvta8
RflcZCPFT3LKIksXSY8Z46dL+c6XFpZn3eyY8sBIA7UpEh9GETNcEfekUQgU
jC+OmysKnuC6vEnBl8zrsUeo5oyEiC4vShVx3VIme20CKdobVBKdKQfEUF6B
J13NUeRfemATImz+0YOib6cTaQGCNUX4162L5pnNrKd3e2N+4/dyZLtL+zD2
Rvox6TiRi0aMc4i1xAIrqYnsEuPywIlEVxM7C7C1CSnP8szCh67BZk6yiLaM
kVzXZqpAj0S/Qu+fWIz7ltfsi9e/LNZ3663CKEsSggGJvLEFL823c9SUYCWT
WLi5UgopjalELqjdxOSDZAOj4Jd8AjF8up8PYyaysxKVflXbWAWJ48mB3XUK
5da+QX8dTFjqxZsff6BOzq3AtOhmrhaamHv17jnuf8gx80pd/C3ZpRUY8wZj
hlsN4pkd8uin1IOCj+a7txv+bRlhYnBbJXvjCvYS56Tl6XUXahJHgngIGPrh
j2kd/ZAEPLanU4CiSVfTNFHfbwnHr+JBzE6ag4GV940v5Kgpp7a6lADMgHlI
KzXgO2TKSSACnJEV959LdTWbZXgoQU9peKIfPlEfmgJA3FfzTJF79DUSQ6N/
RyzelTkdvt9VBwratIHbXrt006lsgCm5jN0DtG001EtmURvLo+oCogwhq2dZ
gTBuJB1WBmsTqQU0ZEhEnjG2BVZ6xV8nhlegmcn87VuOS5ZsZZdGHlf1uO3Q
SAYCywaobBzQVw+WYr7d/MS3A8QuPycOeBdaCnwtvnoQPw4zAQTeRqA97ASX
rOjIKI1UyeW6pjV4wVyTRGSyLzJ4sh2dpTPF093fBsSpsqM1/dFcjMP+guGb
vDOpeO0DEmTIJPbSmPlcU67vwXo1AAKEy+Wo0EifD93WMOtFN/go+Gcj1Q4T
uhuGbaSdSv72gGMnNyKId8eYDtofe724V+kg33TYPQUq2FzNmZeONcbPKUdQ
auJCkqBAoMvpE52EVgFw2bcnZjCZOpZ6tPEh9FZ0WtiRxPsex31F90/6EfR1
aRrYFmOwn5Be6JLJyn2JNc4ntgd4AJTZND+FKSvhXRGRPvGfvPBZ2IlVeQvi
Zv3CmKwMqRWJjokxaCK7lont4+WYnISVE1yDS4bDeeGexL17n6TuDVSahwKW
k0+ieWJIToZY2Sh7DCOeN5NmednfsUrD0vtu5+zKAIlLPormSSh8/TWcqv97
aBjODsSN5WihfIVJK9FC6gEaGy1sn39c8G3plFKxFrnq9cFwdA6yib1BmtsZ
dcNMwBFK4GZckWSTnCllXci5zGFDHpI4S1zefVhePD9CrsRZlxT4aFOWU3gg
heAbKeWpPFu5preN9M7VsoYUe5GGuzenPuGK908ff/20kNN9cvYodqeYymvw
idgxibTfNv5d3lq+ZkU6Tys26UWVJAVOFt5X9QMH79cwPp5YGAhE/fIyq9u9
ak7qZxwrcqgwbDahAo+AXgJ+2Pqg4QKFtmbj0zY9SNZL8wewBhW6sZ7RZnsl
MunXN952HSOAC98E/gpdX8WjdpDZM+tp3WxuLAN+MoN8Jth5r9CMd/36ep9G
+TfjkCOs2zkfsuCb/MbsrIf+kH1DIq0L7RUNfO8TdlJAtKAFm4Xg7VfjL4iv
m8VroAKQ62SbY6t65EOkuEAB0/2ExcveasHCpnFEyciE7qPCmxWRikQ+DfBP
6c6l8OiLgD1S+/sj49lRe+oEtdNfaV7Lt1NakV/SbpAgNIuIM+NCMVHJdhQK
O2YsNePyzUWn0DTmlvNjELQx9zKmS/zn1TfffPXH1cOsPoQfCGOZsAxnrAl+
ILSghjfShtOYJslgcNB3a/4Hy1eDVvLPGRvWJnRadUS1RuM5TfIs/qnpj7K4
qBbRvN2wLp1um54bqTvEJ6FGRt7hXQpsLlC/t7iYYfIXHZvysJE44XZgpkPO
AML0UjTCmmdM6YN6w4tvvn35DvjMzMs5lPXP9AVuNQg1oWp0oFJwZsIDYCDz
Hu+GHeIar603ipfonF+zEP7gmMAlokFuKNsKY3E+vCA2ptpt4xVZXjZB4VX3
Ayg1I5OHTWxgwx9LCzocLwTGqmE/40nc6dovKZtdegC/Z9PXbUNDl57X7JQu
OQ1R2cyCJ9wE5TmcbhDwSyfNUZizAjtGgIQRjGzoUez0XBH27woQKJmI81N7
xXKLmXrNL8s8hV1P1TsPopXDxUA72l8vQCe9LnTtNLuWu7V4GTDZBkI25cmh
RErQQKAzJR01V/ht+GngA06HdyWnVFO9fczXf44kbaMSRuPBi2fnBq4x9lV9
Z1vlwy1MMQjKwkIU1lN/tRcyVRk7+7jWbT7S7McQH70oyBmpiEIU7t37rpWg
UD2U9bV9SjKxWh9UyvjOWnS1snpODjvtoj+w51CgVTpIZz/T88p2PsROzhM3
SkZXAp10gZHkBly2sbNe3kWTU4RMjcwVwJxJlg51BfMMBap23O8HyADjOoEZ
G61dUSBRRKcGVwZIC9YKlpa9hzVS/L8JbCh8TlKJJ/n/NpxOFXytylbN2nyB
NLvAogLfBKcvb+stSH6z9yy/b0WQ0Fl2Ax+Ut4nsUjLClElJDNuii3xIwNuG
WZSA+IrkQEGpwAgvo7hrQyFtzqkTm0oA6xwWosLsLbzkjlcUvogs6tUVkv+K
EEUKZ4CqxXtNZ6QfvN0P3Fm99hKDumyrQE2oh5Pqd4oCMraHGhbqXdgeR1ie
np9Lgb/MzLYk5NbGNqIhne0yEzg4XrlxucRw86PsdCvJiAvrHLVlW/o3PdwE
ybNsoOAfatFGEyHm6iog0bPz8VFuCqOLaQdbJVK0d/wXvnKeEd3Nl/u2hbVM
2wC5u3Km2LApFrTsI/dSiPGGIQXPjEZ6vxYF5xykw8GJ2vMybgtxOS79ee8u
nF0CPY3XQ7euEvZ2XpqcUF2rnglRoNpRGH7X/n2S3/eQNLgvkpgZjbgw57rU
hdyHKcMmDBSfehL1+/PHl9uou7oGh3p6BFxLYUFaKEdWrMSlzw5ZtsINES+I
TJ8tpWtqGdx55nsjGa8rY7gij42BJ0K4H4/F9d1O9rYUdzfnv/lS9Lp+zVFB
tExPj7n3uEL9gXgHKuswaa6Y+bCarzfqtt7oSQfIHLLjQQ6VsVscas6jTWa8
xhUQzl/Icyn1WmGojX+8CSsjMDSBL2XSFuL2UfrCvHqsspRBT8H9ut0DO5gG
GgdtIwZT9weUCLauMOcUjUbhH3DZuOUQld906U4+SD2rD9xdVDeBiGlzswNF
jEHfNgBrKPGe19sV7yBPD/ApUtuIwphmAjqsvtOpCR6Q3rPanduZ5mSLoCe7
zPep2BY2bSAvEvn94cXJCeA2IDkQy/EpgpSiFf7+4w8My/UW5+CRpsG+aykW
6tZNE3Le+a+P7QidK8qLctU7Ch5bWw9bQcno7liKpt9ax8qLUoZNBh1Fhz+p
K5wTv94AU6m6efpSuzBK3XmR75FKg+RkWi2RMIVHd+nTcsHnFYFO1bC4mqlD
Falq/zJg/+pYzZLvGJvEmhHEMT3lOLJAogk2ZKg1ijZQ95eT0JjeO5loHlYd
m45vEimiY4ZrL09p5j05e7icAzh1kzGxtCedMG8iilrSOFd7a8bOVe8ivSO7
LHMrl2YkqLKIHkY/leg7xA3LG0snX4uwJRjYqk+x90ffRbw2qcNGqSQkOYcb
uIN9EJRlQ7i/LZu7WJrJBRVprcC/1LWGugdm0Cx4B5izdsSow8XdlrNmuvrT
npVMlOagLNM8IiuSBq5RuTvLOgIyFSr6Y9wJ35w95mGX7QTh5TfZlxMq1peB
yOi/pghdsc3ATnyBSvQX6ELTUwMVs1biRq7vCBX5bWU4iq3p+Rft14BbPlNa
SBZklS2h9+7pTQiKkMUvb360njvfxPibbBMSt0pe+kMbEXlz75h+6vmkgdB+
C4CFfNAitnm+36/8IZy3vfZTBuHp9JvSfWiQAv0xkSMJ4w6ltJKPjo71pr20
6za003FMKmySfuZHJkQJwIAJIPR38fVFd/gDEqdURR4J8lVH3P4gk2nvkr5I
/C/FyuVgpx94NdszaSmndFjjnA171a8NL2eENVqVzpLPcEOQD0RyxvDJpi0J
fVDx8PjEv8bOV/3TTXfT/pX1OmeuGGtyIzYHCfv/hlkJOm5WL2atX2kGCpzP
2eLt3c2uyQOfAVMbAQrYem7yPea1s8weqWI6hF/Hi1Wl81SZRxPcZdcwYnMc
qWgHP0iVtncq0PEkRD+ZkXR06LwYCsDIaCJeULczbgK1LJdbsOvKPWECotgN
DZycveUggd6LpGVp1q6uBDNqNngLfmvU5+7Mk5/rnClaZUJIku8MpEcCJ/jl
ljjVyfxY5QMn7NfW8xLAFpIBqLmRRISZNhV8099BJ5J3LexAHrV3mhfsG4PS
3Bx7M9HMaFa8+QYQNHRe7DKQfSBus+6YpTJY60Ywu+IBrIh0wqTdzdhecnJX
JGNe7xj20XxZXjr21PpNmG38WlAC1jIQtvFJWfJg8QmlrrsJ2fzbmz7baCx8
JxWnlFAmNvxyGuO92Vin+7Aj7wMkJ0FERgbIXF9nALAGsjlnYLzef3H9zFiI
TFZkhv+TvvTLy6JkRs8haCzSfvP9qjQYtQ9r/r9i7ZaKP8jSeBcp8LxkC22F
BkFzSnBqPYtfvaigfqDotjEnghVBlfLabuO24gbgmSJz+Z1PrtHtdP2w1zpu
cdkHrhzi3nPbeDB+t2wG2VevwzT6IJOz3rrkDFIxOqfSWkmjTb8Hdlix5sZF
6A6ka6rv0iqxJCQXz3ftZQMntJF6eBuP4+t2v1VIjxKRXcoFA1iuDNebk0W3
jpLYchnCy2jNGW0Xf3n36kcK1i3NAYj3mBGyTwy2ej/tx1ZcxUvS20qMs4V8
wi8oQtVEiqoHmV9M7+LLY78OKSf6+LmCZgO6taaGmCgJ+j0xGK0IBei0slrA
5AwPENid88QRQcMHY/tPF6i8u9mKEe9t0wS3jKoVrsu2NUlJxG6YDNuO5yso
DwTp3Oc3zQfhgHuxbW6e/4vGZKGz/824a26yQ0h/FWBLYTSTlgoHhkvvxiBN
I8pRD4c+TmNnjToB7R57OgeFnB+uZ4kW1V8HQ2t3I7eALTWwe3YKZM/I40OT
NaQDqi1fnftV4N1o+ytJzS6jV4tMu8w6oP6ZmKNYUm5iXP0BRzeQc2PR7bOr
Wb7fuR0gvHmzlZ5nP0FMsZobzeKdjiVW39IcjO/dYUCIWnjaH9q4DOGjaXx9
e6WgRfZjhIn9AbGuzQyAwYWrX4Ao8Gjx6kQq89Cur4GKiQ3Pio7tLjU7mC+s
2QvqNgMByYapN9RAuLj4zBpw98DGXD+zwrLqlWS7jwnP1MPyXjMraleQKur6
JWKnq9meM8cOypSLtgliwXpW24+IXjQsXYUfQfe1NF8vNdxxVHcZ8ehgluqJ
lje/pmqr+1Bj9Tq2Su+OqSqobqvPEIqurGHX5jDb/BWOHcpZ7jnknrlR5MuI
YvFUxLCG27f5hCTPpK1SE0bay5dTYnQ/vY1jMnq9P3FfBnbHWhc5JLxzevGL
ObkVS3E49n27jfcul0JtfSAVldQ/F18ICyTyWxuMeVkNCARhx97xYM5+6QJ5
XS+ZcdXPuKRonW8sNv9aC3KsKI0WgRlKeuirX5U86nLBiluBgWfKnKV3VVTB
Wds6v2VOs7hVTZEBJPUo1nsXt3PyiuJFvrYSBG4k/YxJdKf1x7pYCKDqcw1V
glB0fE/YPmom59BNslSSRNFFHknMBH8Ugp+rV8OGbRajsUx6GjEYEoO+rNs9
iM+VmXS1GVjLB8T2cBeK45gYEebtTaFHP5u3QTxNWUOZyljjEL1NmD5jJK2s
oy/uKkv39HcVaXo8KC6NUdij2Milw/+daI7yRw5DbAtty9yU0mOqp8oqtcuP
GlG90jfjiP5JS9/ho1j8YwrAP5CCA+fHhaZyl67ya6JiEzrMV1UscsjKkenf
kN3cqM2opi8ohExx5jPSVGHDRrX3id+DShtl0UI1Sx3qkJVVM6/mQ91W89V1
Y8ryowyWTNlekgbs/jbWBl7AyEMceXEUk5Fmd0oW5nJR6cfTu7DyYKWQlQqq
EGSUO+6TR97t9Ra/oK7Vr+nqtPOaLvPNsFd9xG7HK80g0QWs72zxOt1mKWj4
s6QYrllZfb0fhkskagwwo5gKpzYrYkYsv0MASg0EnuW0pTvUToD6RpqKvSuc
C6M3WxJVddD+E+e2HebwiEinqVGl/8ZtFEpmxGmnV4ai97BDkkk5Na6GZnvf
/Nouj6oUj4VXq68O2hlrhY53f7617gNNQrqj5AmT/2HDb1bK0hW8kYQE3Uwk
j83hoT8vMCaOLKDVbRHuB9sPyariwq72RRrOkRw2CudwN4pheQHnmC3/nf//
SimkaZmcg8qtn7j9MpUCtzCaAu6ru7ybSn1lG1wmDMpnE6dmFmxM3EU6hcmv
X+csmk1B9HAKEEjEROcQQ5MEpApmZiOYUbqlqkcnc2jl7368bTXa8o2lAvYx
V7Kl3jf4KpaLQksc/+UTaMCdQMfYhMnWgGZc0hLdgmTngKZr/b2qffx/si18
3ezGKjxNszjTtZxxJZdZ+Y7F3Q618WmzMgiE0gCXmmLNwsXXgl/oi36bNBCE
FGmviLuhqQCrC/m5CLz1XuzCPxi7ofiXJuK+DDA6gkr08Qoi4V6M7+7uKM9Q
s38PZy50DyswCc9xJnOF/tgqkN1MpXHgjvMO1NSe0dnBUuihDxg6SUJN2Nx1
lsjo799sZsktT5BNUl55LNd16dkGdKDi5pVMY4pakiOk4uiN6UXJyZeEw9dP
A6YfNykbQmPHxKhoKQRFX30tO4rAEMLqi+MT6amQ0ktT9tXTxfu0jMR0kbVs
LKYPHfa9kUhkPtM6ZRKaksR3vrB0oXy/MCr07DbJsUPBfWwnSt8yDNwEmV6g
Cvs9Yal5H7sIHO15PGQ9UJwlP0YBGNmM7w06qOn6BmlWlYXyBBYEKcbr4Xb0
FNwBxQBRSBRWY86HgBbtvYqIQJxTZNtkTgyALC9k0UZQfXKtyMDNX5BKMDzD
DpL9udRg1IBFu532kSrVGstRgAGTrQp0bK4MIYYDDtx9NNpZNBhbxuycpj18
eaDIM/fffS7P/6XuXZvjOJIs0e/8FWVcuyaypwoSSVEPtNFsIYpUs0ekOATV
3WNjY7sJVAJIsVBZXVlFEj2m/u0bfo67h0dkFsSenWt37u5qmwCq8hEPD38c
P2e5bT6YEJzrPR7P7r4tH9SMTBRo5GVz+4eW8m0LqeXgb4/uHiCBYMlokVzH
rEhRyXCwKLszMGYcjg1BiximNIr8JVv2078+v4ZEXNZu9RVcTNDQwj7jVXyS
dAI61dhWfLQB6WBBcTMX57BoB79lqALnWrXK5B8q7huKzJnrvIIzNOzH4Nqx
24947ND/gZ2t8yDxjFwTzWtMXPY5LlK3GVvP0khduQ/Wsr4g3xyfRncYTfuf
HbYa8ydedUQ6G9Ya+27n/lzaPpCuR2bL2gGCfPaqvfC8hjb030WRmzNBfkVf
lFSXHGzRKfRBVtxdSAz6VAXf0VLZGUg/4T5NZSKPCEDLclbDPyLPFm6S2//M
62FRU1bHAgxW9vvj+tkIoUOCzrMtWYV5JD1g/ZeysW6Ce+JsXqpbJinbyOpH
pWzpepyHVkZDbGFtEUXbOmFgmQoS4y2JdLRJS04Rp0MWqBzOr9KKYVtmTlsh
/+VK1eHT2sB2+jm2XHra1z+8dpLDAs1SVWsMJs0jSUFxvLk8Fgjux92Y3P/J
ujEOMVIx1aP0wVhE8PSsxNGJFnDmBPYSQsV25AGhj8d35ufFVRjIaGdYu5HB
FkQzNY04HgY8pMPBUdVKf1n0co/O0kRsXCWbfrLMr0ODVkTWtWvZImKrVmSE
rBZuoRTGNe5B77IbnGdtMUurud+Ks+o9oyZbkBtL594BWXa9BzpQ66EzfnuB
opr2gEsknPeOd/TEogRndgKVhd70HVEUy/S5FqiFKk0Mj+Gref9E6Anwhv6z
bW9yWnl15gmKQlsohFZRYGZXLIoXUSAtOG0R47YSm7XfKGEn87uL95UezdSq
GaweoyPmLYi5Zm0R5WS6QMrBodpdEDcnt2Owe8M5oOMl2rZyjB4d5HucGxrR
fJ2cvnHN6Rgs44kOZm5gjA2mn7voa/GaWKwNvIeA4M66dbV65tqRp0TrQahX
JgQQ6lZ1rrCWZEFDanLnHFjSK3f+ziJtt/pezftDO5GfwkuUmT6wExdUEjxm
t63DkM0VFB+eB4m8lJn6+d3Zeacp4k4J9YkyxXxKsV9rBzvvFiv4+XRBSuEa
VFlAEJNA9lisQWPCPsWD49iZ4lko+d8D5lRSfkg21SkdzTYNXjALKtLXZSYY
r76QCvu10x8U2eDOElUYenuQADDx5x9v51tIOWJjMrua00bbrbQikBu8HUll
BFvAwi1+ky42t93WsRmd3DS6aaUa1bRBtg3ykcmoOD6m+CN9OWvvSmGGVygQ
pDPDKhfdECFA2v/EXTMwDDCB7rZUk8MV25AF7WKLGdRP2xGdc4+MFdcvJITh
2FZs0mhTNbqRE4SUKVScBd31qinQH1FDNoy2rY8ukgoIH+52NCDMpMVeIM39
d0PcvZkqf25sIpJVV97Lxnl4xKLTpbjqNlaQ8P2hybQg/WGxVcCVhMzyVuNz
WaR7HmvorY6v3e3cQ7iW1vtVaR/za/Hejd0HaxWot2Gm3QrhOBB/SglnQyq1
802mv0yr+uTNU7IimFkxNh8gszEmQc3tzGqMRbRiaws2edN02C7MzYZ+CKny
xPRbHGrDmSjIAAOP0iNj8tzbl7EEZoGguauDJNQBGbwsKw5UoigFBkVW6ANY
ltUO2T7WiWSJAX1A0pRcNSthPc+1HUF2gil7W0jQ5CozVz7r/GJC4DBaZ0/v
i77VqZFiapmDm8QNBAwHUzRbthcvSAFrj5s+KalS0tFKa9b5TtuZDxMvMszs
1gXv4oNHM2sVMECXZNvowobkRK52PQeOj+p8rfLaWdidN4r1fXN1ogMt/QyG
l2ze5top04B2J29cUkif76jmFPYuDjmeDnPuCE3Dy3WEjm/FkpSWYeOoaw6h
6LQTWnDJAnTB0wvtN/Fclt6Js30yCHaACwUQw/yx66NQ35j1U/PCWDi3cedA
Jei2s89Sabckmf2LMHmyPoCso7CpsXW7rIAXYvDapQhR5IbcHktENL0nkaJL
qQV2Fv2XVfIzmHrFAHMSsfw9Nhiumo3WarUWYry30gSTD+8POEPrl7IzzMHI
S1Jzzg2EzvSaJOjS+L0bMWNI6uWmOjuRB7U2f1m8H9rVaiF4unX2erS2xnqf
7m9If6SzCBuhP1PBLzPdStdy1aYLDMSuh7aOURmm4hE6oRaZYYBy34e+aPIT
l0/I4ci9KrIkQn3I1EUbo1QTkMJgLuPby6yS1OCMOQ2HEpmzTTkyZdrI4U9Q
NlSQU4lJBOqwriukVbHdnUszHbofu5j8kXaJpmIyca0nDTr3HP9Wv9zQiHdu
T6PJBbdEDlHU9F5gV8QdIMtek9zOQuWFrwmmMRczNKbT81VPNchRm5MXiqM3
c+zVW1taCzvOrE0tlsknKuDGelDUu/VUl7J39O2GsWh3ekiFiIgZLaKDdOtS
sX3qAMpKBjrx/9pW0VERBMnJdGzM48zAaklTh0E8mbP+o51pfHsSg8MdLsgR
07uLly+UmFfKQDuOzn47CHMEihHZtCauy0pWNZnKH0hZSUYlm233vjm/WYR2
ljpYVS4SJafPesftQuPOWIZnWrlkODNumRZE0b/9TBPIyuNbBEIi5VKkyR+5
G58lx76VsxaOB4gx2eQVQEurvn+nsbW2K42x0AIQogHxzF63XiAJnR897cUD
tHi5U8LbJhELbptLh4awauuJFmuleOBPhazfJTE8ht07nh3k8csJTO39KU88
S6oGDr7Yli8bUTl3QT/EgqecUEQczkOGUFbHeBWxKofTlvprOQFeoGAKspj/
DMwS+pCStP6IMuxKFs9CmQ5J1FQPTQa/cuwCSmyem3iUhqpdJZuOKsJSygk4
lTT5joCVU4K+89lF855Rd1Px/EytTe2nDqG3VUc6q9t3pnuLcFXvfqwwC7Wv
B6Y/0I+YJ+VCdqzO5Q5uJUswGBTdk5xROCw7ZE7w7pPBKb8kIxYaNkRIpU1O
VIA7uVzRBNemnnZT2SRDoA9s7QY2a3WD65YLn7aN5xLgok6Ys1uN3mIhbiuZ
j5rLS6x7E8BCmZZN2swiuahegWtWFFJkDXDHjGBSWGMwdvBsy54Ka1XLeS59
Y7WkZSLEs/32oGVmS2Hm6GBARfyg+PUBoGj+gk6Icys2Qz6alV2m9L7FmxCh
YolFXgRs/ofb7LG9nH460w4dVy0qEY9EoUHVYVgwtlVcvhtHPYgqVL+z0TFV
WyFx5zbAbssctoBsB2lpQl2lJPzpEYXL/1/FEpJAia0bZzezOBJV/rtRVgdZ
zrcB2xzTvAZdOSzStPBQ0UG2Eg6h88YKNZlPwFqEMEaSMlt+kh5Y1a5I1o4i
Dj+5Pusu97a+S9Xm2TPXH5piOj348mEHOL9A4/ehC5AJzl2qCRHKCOxl5i4Z
YJVtce2A5KbXRTq19UIK0q0NMb3zbKSQT+5Xyjwpk96IqX3wZTaq4CJb7bqF
rFc4S0N2/PPy2ikeD3Hhuq/ROSWjwUKThvKsAyAQXGqEo6BKZLdvtrJEFXyZ
R09yiyshegtNpcttc7FbTB2ziy++nN3b7C0tS8G1rxdfPL5/jCri4HxLDKwo
xxiBjxe9i3nkuvMaNEduudYHZWql3m7gMb2HKmUXrIhZbwshKHkON3IOI/zs
fVlfudqsGcUZwHjO8CFTwYHk1Nt0n2sxT353vd/tKVW2Dp0jUvumSEHaM3vV
Tb+QQ4UFwgZcfUaip5OAjMEEa++0ih37OXa2eCX6zfzdzRBcMkH+KbWBPBfP
FUfAlA62LM1tLH7JR961N+lTS/ZxStMBPHdxeC74hMnfnT188OBbWLG0tTXT
FFj1sqftycu01iw1I2lcbN00wqBL7jdwajRDZws+ne5q3c1srpk3lesdaxYu
h/E8dNXxDUzdZNxgCnqiB5fzY0/sXNVpwXovgF6fIVg5PY6Gl5kpofBGKxQt
SFS+8qno1znfKXyDZ+w+JhVmw4W3+NC279Lv1ksRi5Wl5mxQAk/ozpO1uQn5
f3RwSoXuNvLnt16bUu9zwlSEDAcDYam+7+UFtJdjxITWzJ4agkuJzgq2WVn2
FyhFHPj2mz0wWt1Km4qOXb0lxC1KVFWJisboRcrWuaySDcLULqPIa/qjETi5
JZV8yoeegyiTCcoDEsdVZwYXgNkPMUJgHrZZGr9smP7cBRaiYYTkUnadKthJ
j+Xpq1Ern6C40pCdpWe6nhdJGWVC9sUie1MbAAgdxOZsIWH1DgVlJLAHJ8ey
hTnXkZAF6T/4+jUOtmvyFxSUX5fBWyl30cK2dzf01O4Ni1r1mzOB/0GmwmzC
YjuotbyB8nfImH36Ma/VF/9N8rGIBGMLmur2bntjHnS2pMrtSsPww/evybwW
RBJ/kUwrNCURMoA426IstdhBiVVBLb/JyBRYl74SQzvsrwFLjtFI5S86jycB
AuKlLyEUd1S9NvnEchv5kiA3046qSd5FTNhw6HVrvflvQlegyyR0kFay6plw
S9Xnzq+0IczUxJ/3Wwu6gmSFSHKsL8OuTQs2a1MboZGHY4GDimgeskK4sHFw
aIzzks2aDhvHBhzD9FxqeZt9Fwt5GdgLe8WPr2fOY4T3FIYab6Y3ro/KSRYA
JEtMabkNAERgWSJjW/MqSfNZtz2HPjZJTtA+tbNaCol9LYtdyrvootZXWjmp
fqsM6CFjYOFzz2V/KIMwIbHnpUQWEAZblRMYkOS34EULnEafvNVLnUEGgidS
gU9r8zFrITl50W0nu+IuJgeu4o8ZNJHZ6aCKPK1es6Bhy8AUMTazt05bwzCp
ClJgj356LxnY9gNdk8iJdGE5YMmJo3M68qCgTISIRmo4cmEZUqh3nvdakudB
sFa6+GAjUQGf12Ff+O0DdmqwUg7YHbl4QltTTsOnQKYK7AvlUGX9yRUKg2Sg
UmmICwPuIRMg5hvkeSoAo9u2dfwqFqrM7FC6xpZUc0iYk0SYiiUOnmRO0uqk
hoRjFjLJkGytrl/ywHglz/EW5kWu8Z0BDO/cqQZU2iVtTEJR6qxDCmmuOXRh
mpTWEYHUq/tSdqLOmaO9MSVZWz1y/FeSrE0hfppz0bMT4YCP3c3XF/Pi5+1u
Pu5+jr847S6D4ht/9wa8Q4P3Vi6MSpCoLcBO1Gf2FPfR7HUD5spqrdk1LLdj
2Rn3xQ2qdWTjXCzTcqzl9CgYPinTd4u9Kcrd08P4pQ7jQVF5GCZhgXF3NMDA
jGvJDrfwbPp9fbGw08qXYmEgFhssusO1yoEtPeFcThi0X+tyDZG04lNHs+9d
gGe5HM0cu0YqkAw/xASHQQc6ZyzULW0r39OyAtlidi7oKSh0OQda1rrQraJO
aVAjQbqSwyLDZSVg/ka2mSS8Ok9W+3Os9QgW8iYbgqGVM0zUt8YjL7/FuH/z
1YOvRXB+Qv5QPTEy9CtBgxLBDbV8kx/eXgcJaBBDKE3co4v15rAyHx89Ts/+
Y7bI5eP/pjnWhSPLsjIo06vo8N4sV9D/W2sn+ooHF04uVrGIgqiO0MabWdmd
ywYsIzuCM6NDO4i47tHXePzHR49yx5lWs8R146kAiwg5oG7teVCdEjkxlL2Y
EZeu4xhvkP2nUjmURBnnv+ydLw7fRWC6bNj9+4HyzHb2UXIukHFYiY4eS+Hb
SMTAW/IqE4R6Ng1NbOIhHXcTHy1gEdZDC24HZAh1S9pDyLIr3asJKg4WPjxr
WDLONAf2xVdHD9L/laag0VPVRHp5cRpWuq0NoC0rUTYiZeOG+wYQQGOn0PVe
bxUx/wJubj9IwopNy0V4QxSI9lVogiUOscKFKDAS7aMWpAAEkjxabHYLby2o
c3bdhPr9fsNgsNkZi7c4RViJEXfmMct+rWZ7aKHAOxrbg4yLo1S2DgikPhrp
qb/MWd+MnLTawDyHQcYD57EmRglixVkTd3bZbApmkOBmWS0rJiCRfDyanUp9
fFzYCVtmObk4I7lEqOQVHRpidpQdRmtSn74IxkWuNG77tfvKaqZzn1IQTvnQ
s8HzfI+AZnSqy8JQd9nYiksUhHE0lVos4nu4NTEhPsfk2QOj/xGSoNL2xfcb
ssW9MeGZ0RwZB4dl/Mmzfyn9+IEYVSK8SWgfd0umtxz2w0b4jNeZWmynAGwd
ht6ZaJBXdJKtDUt7aZO975bM7GMPFgjmqE8a+rYkm7m+iTGcl4CmrLrS3lW/
pZHXriWry/OtWq+rGciuWfWXTLaYh2Gks56vUI3jHBSG2zHWpiknsyUjozS+
C7aq62avhGYl8wD8uaS6L0QctF1p0jeEXiHKCm1GuZrv7OOKgrr2DjELAQNM
IKTxj4VEvY6QFvoCLSvH71trPG/XgQJItbFqS4/RrAM22a7R1sU2BTuXFHEJ
57Jz3dKOTl9jicGcoLTgywnpaLeFGU8trTyln02G0OvAO0uSXwI7gSqubgkp
0fN3wznRxMXg3BbmzhlagrAgf90F6gJrTHIol3u2H60he36tuZIW8VcOQB8f
PTymHRMhGnbAgShoer3PbuhwUkvDzMtywTyX0t3KA8KfePXT2/QS3SV77o3U
2BARRFKKzJlkM5/WhmaRQQwRfmBtnKjO8oD0p8yMt7IkcmuJzRLgEwrEQHcY
6xUYse6Ji4EYyp+hDe1ad7kH5zoTOdqa3u2GnOsAWFyh2J5nnIJKS1Erf4Io
2zS+x07JYzoocR37msd69NqRYXXzDrFVHvTNiRrtycHRa7Nyke0VwrbsTUmk
NCiNgjYijx83j2q3NgxvPtUBjwgbq6LwurCkJVrzzR+WbodO72lt/E1Gahum
Pp/j4gqxZ+UPU/mZCVMzXj05ORapkl8WhxZAAGlXFN79yP9ANWRrwmvGwuTs
Ums/2LJfIO2aNsu3+QJG+VO+HrdzVQbM85KttncKRYk8LvoHodcpLNjPhmg5
9dlTnP348bffMGrADOeunsy+VbpSYjnlLoSKswgOnYauWAp5p1ACosvyIPMK
zJqfH1sbN+GRVLYnzIOAabczbT/lEYCYtpYdu13GznPg8xGsWzKkf+DfmbMN
pZXMle4VNW9KzJNzUcZJ3lUYAqLj2PignT5YA+juC5pIciMLcssAHjCiXto9
rL2lGm6y12SOKPR+X/ikcbbm1jpacNAioectwQQ/XHUbsCb32xSTOlqxEntn
nSmNXRhGD1DJFBLjJuEzxj6taP9IjyH8U9P6UM4nGZf1wng7VEg7j4diBMcp
XFvHjKR0eej7aEqBPl/27/Bimv5MV9xbtu/B7PtXp4LaGPHKn9jSJQ98Y59P
nx0yRUE5r0aaJtd0cfHc35uNhswkq9rPTl/LihX+8YYwPaUekiS+6NtnV7mA
1pK1y4uPv4H5ZZdKDvIwzJx/AhwE1EnqHOskl6HXEUiBFs4bJtxkzQK4vw4i
fEfBY3mYMbjGKpYudtbBX3QVMJEOslOpiR0sYso1ZJd5QSeJncwPvnj4ZXIq
ratt2O0Fr9zt6qz9VwqT+ObL/8cOL8ybNtAMbDCjeqRfUxUNthBX097BfPwh
0Ddx4PQ9c+SkiD8A5Y61AARxoy0QbDNwLgJym9HuGNuftsTroriFzDfL1JIL
55ItE7ETC1K0aPIqGmU4iwM/Xbj/VTarCme4y9Janlt81/EKSxCWLu0lxRKA
rKu59C+9lBws//6pLdZ1KwzyX3oLFVDoBtOGxOZBW6hRRTSSzkBaOqAKJvt0
tTuXMsbS+uYhkH8vRFZ968LsYgZ9Z1uvrWOKu1C95hmTl0vZZVQ49ywsGC+d
B5lGYRXvaHBzAc2t3hlHbFUqfWkqKC9P/lWZ0iBXR+vlafGCo8KpLZe9LPwL
zijUct3uma9N4cVRTiJ7aTg9+B1cM6TO+NvSFU4/WNItll+GW+4QarnVxe2E
QoCT3h89wLc8wIWKf2Uucsavlpa0JJ5pDuQ+EKzwA4dN+gvrIaHy8V9V9JDL
5rBLu5z40hfaYuW0fcnEi9CBBWZnN7qdLHytKhZ07Mj+l9PD4ugxWWuJ2bJv
pUDHW0rn3JNHkt8g5Yk8+aKgpfedUtJ4hViSeIb8iufNht6GJEVQmCzLM3Xi
gStH7rySeFzqhLdG75M1efl6US/ku56zYNEGKmN81CHLDl1cVTDIQLiMHOOV
BrFk17G8t8MI5d7aA3a27QTEiYwOPakFuAA9Yxs3geLybksW2KbmNW5x45n+
L+p6XIvuAMk2SmFHs8udHYEki89VHDAF7kWdrPeB6lyuHgSGVMFBuLzzFPKy
Y7QBJ0InKJJNa7ZIwUjRvDjEJsxhM8T4tytbyufjKebjuAslG2pvoaHJ5Phf
dUswK+HgUReviblPZqutykRPr1k218Oi2Z4vmMuUDy4E4SZVsH6dLA7xkwNR
fB+h1JEe88EXc6HMdKfgTCXnBq2GpGdyrn3opShv2LdHj52FVR5wZhyN9LT6
920Altt+um4b6ZgN2RSA4jNpUrSQack+/OLBt0c2LATCLjgOjNYNwCbn9J70
HgT1By7N6YaIgEq4zVPWpIrNUVpZkhQTxfIyGYxU+PgBrWI4zCDMGcsqOWQV
gYJd16hrLy2sSACqNsa1TFoTsDkRirHtL7pVe0znHTF8XiQRy6klI4F37a9D
d7K4PUxLa4GTOi/swQX5Yl36vG4+CkQso4HOArJb8kfpKYTmy4ZMkQA4eEnB
MxhlaW7Y7ltXkqOpKrOAPLAzFaqSBwCnmesBrqdxVKyiXNl/OAs0aniCyOio
wUfep1BokxUvNWqANZd5QTejguK6t6omWCTlm+3Sm3tJ1BylQ1GiQHmgEG2+
2A/NKvo6El4hoqWON1pzGPQa/6MF4UhI7VdWJCMBQyASQOszHHE2N2byH3lY
TyHgGQKhKk97a5+K7EKugHeYIUSHwW1ousEljxEMGmuwp6+fz6M/qsECEVFA
aiBGQXuqiUMWoYLNq3QkrWc3UKzWhSuXygYx0MFgKjeNrzWNTB1CN+fxkz1/
naZldsVHmfo5JK4HMQ8wTaiavTdFA22atK3Ti6bVrpjDTPu6QRpHcU4IvS1O
M9JOQ4fn76Q/CwIajoQHN358yhXbpbUS7XITQeD0OSqAd0ZK2OQyBH0vo6uq
nK1R5THm0LlwPce4SpYQ47bwy2vB+xfKPoIQYPDG7+x9RYEE80AxyTyvvRkj
y7M078i4V/qlNQwWRZp9J7USMPvlRZNOeBCy2rMESatAp23n8PnVPg3nglmq
9D9yk2Tv5WRO1kji/Z5Ih10+YC3K0H7ikdcqhfJls22eMHfYbNfg//ActZzR
p22zmnsy6fTl29cF1FubqlCpk2u4pBoKbMwGIuZIc6Ynkdt8b8zJLRfVy4tT
STJBWRb6rx8kZTFUiTRsYePQgTNqFX/3PLzLKIiElmEFrOgKpxD6ADCW2oHr
844xTfdNUat0BRdL1QaWfW4eZI9WMBvNJar7H5gnrVqctqvWCzWvnd5D3xvB
Zid1p/5iV2OVZKoM9niaq6RSd2g2u+wbNTPZ77kcJagKjhfv8tmAHKH6vmft
rvGGNkRsYbS0gahs9aA9D3IRwtgWJrQqSyPGa86NF20MuSyEcYr4TaDr9sgy
IoKFOr5z5+9//7v2xdyZHJPjWffk4e9nzZPt0CyGq+bh469+Pzt/og37n+v/
/v7ObLZ8conrH6V5/P1seCI+sHRYfvHo4dfy96sn9OjOtUJ8HH+8vih+TPsn
fWM2K36pR9GxyZCN2FOPdZoW3ZLfFk8ZJuBmseuP/R+K5j9O/5RJPpZk57HI
DC+UzDrfe+FJCXmFs6snr3++PHn3zc/dx5+bk+XVP//wdP2i++d3P71afnHx
x/XX371at80/n714+93+Xf9EvnJx9eT8+R/++MvHf3rx+fnq2/ffPPinH5rl
s49fnv35/NU/rf727s3muz+9vjj74/uX3c//gq+cPfm3o6Ojf/89bU0eVJmr
O3d8EuGOl31DDoQvR3o+K4e6/HlQHPTEUHtidlR8i8vMDaY3fnrQVZZ4MJAK
KNGSsbFMoLP0fS6CcTtcpmP5A4Vksc0ChKjGcTY7zapV2ZNe1cOEYcnMydAK
2LY7H+Z06XTQgALSN0aU63aBzO7vSQ7u8KZ0kc5SiTzsJvZjsyWFgMKTm6ip
l8zKrkHHBykUkOckPRTTQaubI+svF/YXzUJkqzZ79lFzkD+RSvx1zpWSO91E
EI/yl35j6ZBma5GBKV1zue5B/2HvVK6KtBz+i+3ItT1qMCUDbH2/FamSBzQn
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
hKkweUPuCtoJk4N/A9bDfdOs+QQA

-->

</rfc>
