<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 2.6.10) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-clayton-dkim2-spec-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="DKIM2 Signtures">DomainKeys Identified Mail Signatures v2 (DKIM2)</title>

    <author initials="R." surname="Clayton" fullname="Richard Clayton">
      <organization>Yahoo</organization>
      <address>
        <email>rclayton@yahooinc.com</email>
      </address>
    </author>
    <author initials="W." surname="Chuang" fullname="Wei Chuang">
      <organization>Google</organization>
      <address>
        <email>weihaw@google.com</email>
      </address>
    </author>
    <author initials="B." surname="Gondwana" fullname="Bron Gondwana">
      <organization>Fastmail Pty Ltd</organization>
      <address>
        <postal>
          <street>Level 2, 114 William Street</street>
          <code>3000</code>
          <country>Australia</country>
        </postal>
        <phone>+61 457 416 436</phone>
        <email>brong@fastmailteam.com</email>
      </address>
    </author>

    <date year="2025" month="October" day="14"/>

    
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 59?>

<t>DomainKeys Identified Mail v2 (DKIM2) permits a person, role, or
organization that owns a signing domain to document that it has
handled an email message by associating their domain with the
message.  This is achieved by applying a cryptographic
signature to the message. Verification is performed by querying an entry
within the signing domain's DNS space to retrieve an appropriate public
key. As a message is transferred from author to recipient further signatures
will be added to provide a validatable "chain". This permits validators
to identify when messages have been unexpectedly "replayed" and can ensure that
delivery status notifications are only sent to entities that were
involved in the transmission of a message.</t>



    </abstract>



  </front>

  <middle>


<?line 73?>

<section anchor="introduction"><name>Introduction</name>

<t>DomainKeys Identified Mail v2 (DKIM2) permits a person, role, or
organization to document that they have handled an email message by
associating a domain name <xref target="RFC1034"></xref> with the message <xref target="RFC5322"></xref>. A
public key signature is used to record that they have been able
to read the contents of the message and write to it.</t>

<t>Verification of claims is achieved by fetching a public key stored
in the DNS under the relevant domain and then checking the signature.</t>

<t>Message transit from author to recipient is through
Forwarders that typically make no substantive change to the message
content and thus preserve the DKIM2 signature. Where they do make
a change the changes they have made are documented so that
these can be "undone" and the original signature validated.</t>

<t>When a message is forwarded from one system to another an
additional DKIM2 signature is added on each occasion. This chain
of custody assists validators in distinguishing between messages that
were intended to be sent to a particular email address and those
that are being "replayed" to that address.</t>

<t>The chain of custody can also be used to ensure that delivery status
notifications are only sent to entities that were involved in the
transmission of a message.</t>

<t>Organizations that process a message can add to their signature
a request for feedback as to any opinion (for example, that it
was considered to be spam) that the eventual recipient of the message
wishes to share.</t>

<section anchor="dkim2-architecture-documents"><name>DKIM2 Architecture Documents</name>

<t>Readers are advised to be familiar with the material in TBA, TBA and TBA
which provide the background for the development of DKIM2, an overview
of the service, and deployment and operations guidance and advice.</t>

</section>
</section>
<section anchor="terminology-and-definitions"><name>Terminology and Definitions</name>

<t>This section defines terms used in the rest of the document.</t>

<t>DKIM2 is designed to operate within the Internet Mail service, as
defined in <xref target="RFC5598"></xref>.  Basic email terminology is taken from that
specification.</t>

<t>DKIM2 inherits many ideas from DKIM (<xref target="RFC6376"></xref>) which, for clarity
we refer to in this specification as DKIM1.</t>

<t>Syntax descriptions use Augmented BNF (ABNF) <xref target="RFC5234"></xref>.</t>

<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"></xref>.  These words take their normative meanings only when they
are presented in ALL UPPERCASE.</t>

<section anchor="forwarder"><name>Forwarder</name>

<t><xref target="RFC5598"></xref> defines a Relay as transmitting or retransmitting a message
but states that it will not modify the envelope information or the
message content semantics. It also defines a Gateway as a hybrid of
User and Relay that connects heterogeneous mail services, In this
document we use the concept of a Forwarder which is an MTA that receives
a message and then either delivers it into a destination mailbox or
forwards it on to another system in an automated, pre-determined, manner.</t>

<t>As will be seen, Forwarders may alter message content or envelopes
but will create a signed record of what they have done.</t>

</section>
<section anchor="signers"><name>Signers</name>

<t>Elements in the mail system that sign messages on behalf of a domain
are referred to as Signers.  These may be MUAs (Mail User Agents),
MSAs (Mail Submission Agents), MTAs (Mail Transfer Agents), or other
agents such as mailing list "exploders".  In general, any Signer will
be involved in the injection of a message into the message system in
some way.  The key point is that a message must be signed before it
leaves the administrative domain of the Signer.</t>

</section>
<section anchor="verifiers"><name>Verifiers</name>

<t>Elements in the mail system that verify signatures are referred to as
Verifiers.  These may be Forwarders, MTAs, Mail Delivery Agents (MDAs), or MUAs.
It is an expectation of DKIM2 that a recipient of a message will
wish to verify some or all signatures before determining whether or
not to accept the message or pass it on to another entity.</t>

</section>
<section anchor="signing-domain"><name>Signing Domain</name>

<t>A domain name associated with a signature. This domain may be
associated with the author of an email, their organization, a
company hired to deliver the email, a mailing list operator, or
some other entity that handles email. What they have in common is
that at some point they had access to the entire contents of the
email and were in a position to add their signature to the email.</t>

</section>
<section anchor="whitespace"><name>Whitespace</name>

<t>There are two forms of whitespace used in this specification:</t>

<t><list style="symbols">
  <t>WSP represents simple whitespace, i.e., a space or a tab character
(formal definition in <xref target="RFC5234"></xref>).</t>
  <t>FWS is folding whitespace.  It allows multiple lines separated by
CRLF followed by at least one whitespace, to be joined.</t>
</list></t>

<t>The formal ABNF for these are (WSP given for information only):</t>

<figure><artwork><![CDATA[
WSP =   SP / HTAB
FWS =   [*WSP CRLF] 1*WSP
]]></artwork></figure>

<t>The definition of FWS is identical to that in <xref target="RFC5322"></xref> except for
the exclusion of obs-FWS.</t>

</section>
<section anchor="imported-abnf-tokens"><name>Imported ABNF Tokens</name>

<t>The following tokens are imported from other RFCs as noted.  Those
RFCs should be considered definitive.</t>

<t>The following tokens are imported from <xref target="RFC5321"></xref>:</t>

<t><list style="symbols">
  <t>"local-part" (implementation warning: this permits quoted strings)</t>
  <t>"sub-domain"</t>
</list></t>

<t>The following tokens are imported from <xref target="RFC5322"></xref>:</t>

<t><list style="symbols">
  <t>"field-name" (name of a header field)</t>
</list></t>

<t>Other tokens not defined herein are imported from <xref target="RFC5234"></xref>.  These
are intuitive primitives such as SP, HTAB, WSP, ALPHA, DIGIT, CRLF,
etc.</t>

</section>
<section anchor="common-abnf-tokens"><name>Common ABNF Tokens</name>

<t>The following ABNF tokens are used elsewhere in this document:</t>

<figure><artwork><![CDATA[
ALPHADIGITPS =  (ALPHA / DIGIT / "+" / "/")
base64string =  ALPHADIGITPS *([FWS] ALPHADIGITPS)
                [ [FWS] "=" [ [FWS] "=" ] ]
]]></artwork></figure>

</section>
</section>
<section anchor="protocol-elements"><name>Protocol Elements</name>

<t>Protocol Elements are conceptual parts of the protocol that are not
specific to either Signers or Verifiers.  The protocol descriptions
for Signers and Verifiers are described in later sections ("Signer
Actions" (<xref target="signer-actions"/>) and "Verifier Actions" (<xref target="verifier_actions"/>).
NOTE: This section must be read in the context of those sections.</t>

<section anchor="selectors"><name>Selectors</name>

<t>To support multiple concurrent public keys per signing domain, the
key namespace is subdivided using "selectors".</t>

<t>Periods are allowed in selectors and are component separators. Periods in
selectors define DNS label boundaries in a manner similar to the
 conventional use in domain names.  This will allow portions of
the selector namespace to be delegated.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
selector = sub-domain *( "." sub-domain )
]]></artwork></figure>

<t>The number of public keys and corresponding selectors for each domain
is determined by the domain owner.  Many domain owners will be
satisfied with just one selector, whereas administratively
distributed organizations can choose to manage disparate selectors
and key pairs in different regions or on different email servers.</t>

<t>Beyond administrative convenience, selectors make it possible to
seamlessly replace public keys on a routine basis.  If a domain
wishes to change from using a public key associated with selector
"january2026" to a public key associated with selector
"february2026", it merely makes sure that both public keys are
advertised in the public key repository concurrently for the
transition period during which email may be in transit prior to
verification.  At the start of the transition period, the outbound
email servers are configured to sign with the "february2026" private
key.  At the end of the transition period, the "january2026" public
key is removed from the public key repository.</t>

<t>INFORMATIVE NOTE: A key may also be revoked as described below.
   The distinction between revoking and removing a key selector
   record is subtle.  When phasing out keys as described above, a
   signing domain would probably simply remove the key record after
   the transition period.  However, a signing domain could elect to
   revoke the key (but maintain the key record) for a further period.
   There is no defined semantic difference between a revoked key and
   a removed key.</t>

</section>
<section anchor="tagvaluelists"><name>Tag=Value Lists</name>

<t>DKIM2 uses a simple "tag=value" syntax in several contexts, including
in messages and domain signature records (see <xref target="DKIMKEYS"></xref>).</t>

<t>Values are a series of strings containing either plain text or "base64"
text (as defined in <xref target="RFC2045"></xref>, Section 6.8). The name of the tag will
determine the encoding of each value.  Unencoded semicolon (";")
characters MUST NOT occur in the tag value, since that separates tag-specs.</t>

<t>INFORMATIVE IMPLEMENTATION NOTE: Although the "plain text" defined
   below (as "tag-value") only includes 7-bit characters, an
   implementation that wished to anticipate future standards would be
   advised not to preclude the use of UTF-8-encoded (<xref target="RFC3629"></xref>) text
   in tag=value lists.</t>

<t>Formally, the ABNF syntax rules are as follows:</t>

<figure><artwork><![CDATA[
tag-list  =  tag-spec *( ";" tag-spec ) [ ";" ]
tag-spec  =  [FWS] tag-name [FWS] "=" [FWS] tag-value [FWS]
tag-name  =  ALPHA *ALNUMPUNC
tag-value =  [ tval *( 1*(WSP / FWS) tval ) ]
                  ; Prohibits WSP and FWS at beginning and end
tval      =  1*VALCHAR
VALCHAR   =  %x21-3A / %x3C-7E
                  ; EXCLAMATION to TILDE except SEMICOLON
ALNUMPUNC =  ALPHA / DIGIT / "_"
]]></artwork></figure>

<t>Note that WSP is allowed anywhere around tags.  In particular, any
WSP after the "=" and any WSP before the terminating ";" is not part
of the value; however, WSP inside the value is significant.</t>

<t>Tags MUST be interpreted in a case-sensitive manner.  Values MUST be
processed as case sensitive unless the specific tag description of
semantics specifies case insensitivity.</t>

<t>Tags with duplicate names MUST NOT occur within a single tag-list; if
a tag name does occur more than once, the entire tag-list is invalid.</t>

<t>Whitespace within a value MUST be retained unless explicitly excluded
by the specific tag description.</t>

<t>Tag=value pairs that represent the default value MAY be included to
aid legibility.</t>

<t>Unrecognized tags MUST be ignored.</t>

<t>Tags that have an empty value are not the same as omitted tags.  An
omitted tag is treated as having the default value; a tag with an
empty value explicitly designates the empty string as the value.</t>

</section>
</section>
<section anchor="algorithms"><name>Signing and Verification Cryptographic Algorithms</name>

<t>DKIM2 supports multiple digital signature algorithms.  Two algorithms
are defined by this specification: RSA-SHA256 and Ed25519-SHA256.
Signers SHOULD implement both RSA-SHA256 and Ed25519-SHA256. Verifiers MUST
implement both RSA-SHA256 and Ed25519-SHA256.</t>

<section anchor="key_management"><name>Key Management</name>

<t>Some level of assurance is required that
a public key is associated with the claimed Signer. DKIM2
does this by fetching the key from the DNS for the domain specified
in the d= field.</t>

<t>DKIM2 keys are stored in a subdomain named "_domainkey".  Given a
DKIM2-Signature field with a "d=" tag of "example.com" and an "s1=" tag
of "foo.bar", the DNS query will be for "foo.bar._domainkey.example.com".</t>

<t>NOTE: these keys are no different, and are stored in the same locations
as those for DKIM1 (<xref target="RFC6376"></xref>).</t>

<t>Further details can be found in <xref target="DKIMKEYS"></xref>.</t>

</section>
<section anchor="the-rsa-sha256-signing-algorithm"><name>The RSA-SHA256 Signing Algorithm</name>

<t>The RSA-SHA256 Signing Algorithm computes a message hash as described
in <xref target="computing-hashes"/> using SHA-256 (FIPS-180-4-2015) as the hash-alg.  That
hash is then signed by the Signer using the RSA algorithm (defined in
PKCS#1 version 1.5 <xref target="RFC8017"></xref>) as the crypt-alg and the Signer's
private key.  The hash MUST NOT be truncated or converted into any
form other than the native binary form before being signed.  The
signing algorithm SHOULD use a public exponent of 65537.</t>

<t>Signers MUST use RSA keys of at least 1024 bits.  Verifiers MUST be able
to validate signatures with keys ranging from 1024 bits to 2048 bits, and
they MAY be able to validate signatures with larger keys.</t>

</section>
<section anchor="the-ed25519-sha256-signing-algorithm"><name>The Ed25519-SHA256 Signing Algorithm</name>

<t>The Ed25519-SHA256 signing algorithm computes a message hash as
defined in Section 3 of <xref target="RFC6376"></xref> using SHA-256 (FIPS-180-4-2015) as
the hash-alg.  It signs the hash with the PureEdDSA variant Ed25519,
as defined in Section 5.1 of <xref target="RFC8032"></xref>.</t>

</section>
<section anchor="other-algorithms"><name>Other Algorithms</name>

<t>Other algorithms MAY be defined in the future.  Verifiers MUST ignore
any signatures using algorithms that they do not implement.</t>

</section>
<section anchor="semantics-of-multiple-signatures"><name>Semantics of Multiple Signatures</name>

<t>In DKIM2 a new signature (with an incremented i= value) is added by
every MTA that handles a message. However, if these MTAs are handling
email within an organization then it is only necessary for the MTA
that sends the email outside of that organization to apply a DKIM2
signature.</t>

<t>Verifiers may check the entire chain of signatures to establish that
there is a valid chain from start to finish; however where the chain
shows that the email has not been modified during its travels it will
generally be sufficient to check only the first and last signature.</t>

<t>When there is evidence of "DKIM replay" inspection of the entire
chain will enable the location of the replay to be determined and
appropriate action can then be taken.</t>

<t>Further information about multiple signatures can be found in TBA.</t>

</section>
</section>
<section anchor="hfDKIM2signature"><name>The DKIM2-Signature Header Field</name>

<t>The signature of the email is stored in a DKIM2-Signature header
field.  This header field contains all of the signature and key-
fetching data.  The DKIM2-Signature value is a tag-list as described
in <xref target="tagvaluelists"/>.</t>

<t>Tags on the DKIM2-Signature header field along with their type,
encoding and requirement status are shown below. It will be noted that we
have not included a version number.  Experience from IMF onwards shows
that it is essentially impossible to change version numbers.
If it becomes necessary to change DKIM2 in the sort of incompatible way that
a v=2 / v=3 version number would support, it is expected that header
fields will be labelled as DKIM3 instead.</t>

<t>i= The sequence number of the DKIM2-Signature header field.</t>

<figure><artwork><![CDATA[
plain-text unsigned decimal integer; REQUIRED
]]></artwork></figure>

<t>The originator of a message uses the
value 1. Further DKIM2-Signature header fields are added with a value one
more than the current highest numbered DKIM2-Signature header field. Gaps
in the numbering MUST be treated as making the whole message unsigned.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
sig-i-tag    = %x69 [FWS] "=" [FWS] 1*2DIGIT
]]></artwork></figure>

<t>n=  Nonce value</t>

<figure><artwork><![CDATA[
plain-text unsigned decimal integer; OPTIONAL
]]></artwork></figure>

<t>This value, if present, has a meaning to the creator of the signature
but MUST NOT be assumed to have any meaning to any other entity. It
MAY be used as an index into a database to assist in handling Delivery
Status Notifications or for any other purpose.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
sig-n-tag    = %x6e [FWS] "=" [FWS] 1*(DIGIT)
]]></artwork></figure>

<t>t=  Signature Timestamp</t>

<figure><artwork><![CDATA[
plain-text unsigned decimal integer; REQUIRED
]]></artwork></figure>

<t>The time that this header field was created.  The format
is the number of seconds since 1970-01-01T00:00:00 UTC. This value
is not constrained to fit into a 31- or 32-bit integer.
Implementations SHOULD be prepared to handle values up to at least
10^12 (until approximately AD 200,000; this fits into 40 bits).
Implementations MAY ignore signatures that have a timestamp in the future.
Implementations MAY ignore signatures that are more than 14 days old.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
sig-t-tag    = %x74 [FWS] "=" [FWS] 1*12DIGIT
]]></artwork></figure>

<t>mf= The <xref target="RFC5321"></xref> MAIL FROM value to be used when this message is transmitted
    over an SMTP link from the signing MTA.</t>

<figure><artwork><![CDATA[
plain-text; REQUIRED
]]></artwork></figure>

<t>Note that MAIL FROM may be just "&lt;&gt;", for example for a Delivery Status Notification.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
sig-mf-tag = %x6d %65 [FWS] "="
             [FWS] "<" [ local-part "@" domain-name ] ">"
]]></artwork></figure>

<t>rt= The <xref target="RFC5321"></xref> RCPT TO value(s) to be used when this message is transmitted
    over an SMTP link from the signing MTA.</t>

<figure><artwork><![CDATA[
plain-text; REQUIRED
]]></artwork></figure>

<t>When a message is intended for more than one recipient then this field MAY include
all of the recipients so that a single copy of the email MAY be sent to all of
the recipients in a single SMTP transaction. Note that if "bcc:" recipients are
involved then in order to meet the requirements of <xref target="RFC5322"></xref> Section 3.6.3 each
bcc recipient MUST be sent a message with just their email address appearing
in this tag.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
sig-rt-tag = %72 %x74 [FWS] "="
             1*( [FWS] "<" local-part "@" domain-name ">" )
]]></artwork></figure>

<t>d=  The domain associated with this signature.</t>

<figure><artwork><![CDATA[
plain-text; REQUIRED
]]></artwork></figure>

<t>This domain is used to form the query for the public key. The domain MUST be a valid DNS
name under which the DKIM2 key record is published. Internationalized domain
names MUST be encoded as A-labels, as described in Section 2.3 of <xref target="RFC5890"></xref>.</t>

<t>The domain in the d= tag MUST exactly match the rightmost labels of the domain-name part
of the mf= tag. That is to say, the domain-name of the mf= tag MUST either match the
d= domain exactly or be a sub-domain of d= domain.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
sig-d-tag   = %x64 [FWS] "=" [FWS] domain-name
domain-name = sub-domain 1*("." sub-domain)
                         ; from [RFC5321] Domain,
                         ; excluding address-literal
]]></artwork></figure>

<t>s1= The selector subdividing the namespace for the "d=" (domain) tag.</t>

<figure><artwork><![CDATA[
plain-text; REQUIRED
]]></artwork></figure>

<t>Internationalized selector names MUST be encoded as A-labels, as
described in Section 2.3 of <xref target="RFC5890"></xref>.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
sig-s-tag = %x73 %x31 [FWS] "=" [FWS] selector
]]></artwork></figure>

<t>a1= The algorithm used to generate the signature.</t>

<figure><artwork><![CDATA[
plain-text; REQUIRED
]]></artwork></figure>

<t>Verifiers MUST support "rsa-sha256" and "ed25519"; See <xref target="algorithms"/> for a
description of the algorithms.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
sig-a-tag     = %x61 %x31 [FWS] "=" [FWS] sig-a-tag-alg
sig-a-tag-alg = sig-a-tag-k "-" sig-a-tag-h
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)
                         ; for later extension
x-sig-a-tag-h = ALPHA *(ALPHA / DIGIT)
                         ; for later extension
]]></artwork></figure>

<t>b1= The signature data.</t>

<figure><artwork><![CDATA[
base64; REQUIRED
]]></artwork></figure>

<t>Whitespace is ignored in this value and MUST be ignored when reassembling the original
signature.  In particular, the signing process can safely insert
FWS in this value in arbitrary places to conform to line-length
limits.  See "Signer Actions" (<xref target="signer-actions"/>) for how the signature is computed.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
sig-b-tag      = %x62 %x31 [FWS] "=" [FWS] sig-b-tag-data
sig-b-tag-data = base64string
]]></artwork></figure>

<t>bh1=  The hash of the canonicalized body part of the message.</t>

<figure><artwork><![CDATA[
base64; REQUIRED
]]></artwork></figure>

<t>Whitespace is ignored in this value and MUST be ignored when reassembling the original
signature.  In particular, the signing process can safely insert
FWS in this value in arbitrary places to conform to line-length
limits.  See <xref target="computing-hashes"/> for how the body hash is computed.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
sig-bh-tag      = %x62 %x68 %x31 [FWS] "=" [FWS] sig-bh-tag-data
sig-bh-tag-data = base64string
]]></artwork></figure>

<t>s2=, a2= b2= bh2= Further signatures (equivalent to s1, a1, b2 and bh1)</t>

<figure><artwork><![CDATA[
plain text / base64; OPTIONAL
]]></artwork></figure>

<t>To provide for algorithmic dexterity a second signature, using a
different algorithm MAY be supplied. A verifier MUST check all
signatures that it understands and SHOULD treat any failure as
invalidating all signatures.</t>

<t>f=  Flags</t>

<figure><artwork><![CDATA[
plain text; OPTIONAL
]]></artwork></figure>

<t>Flags serve two purposes; they either report what has been done to
the message by the system creating the DKIM2-Signature or they make
a request to systems that handle the mail thereafter. Flags are
separated by commas, and optional white-space allows systems to
add several flags without creating long lines.</t>

<t>If a flag value is not recognised it MUST be ignored.</t>

<t>The flag values that report things are:</t>

<t>"exploded": this message (identified by its unique header hash value (recorded
in b1= and perhaps b2=)) is being sent to more than one email address. An
MTA which receives a message MAY use this information to help it distinguish
between malicious "DKIM replay" and legitimate activity performed by
mailing list. If this flag is not present in at least one DKIM2-Signature
header field then an MTA MAY assume that only one copy of a particular
message (identified by relevant cryptographic hash values) is intended
to exist;</t>

<t>"modifiedbody": the body of the message has been altered in some way. A
corresponding DKIM2-Delta-Body MUST be present with the same i= value
as defined in <xref target="ALGEBRA"></xref>. This flag MUST
NOT be present when i=1;</t>

<t>"modifiedheader": the header of the message has been altered in some way. A
corresponding DKIM2-Delta-Header must be present with the same i= value
as defined in <xref target="ALGEBRA"></xref>. This flag MUST
NOT be present when i=1;</t>

<t>The flags values that make requests are:</t>

<t>"donotexplode": this signer requests that the message not be sent to more
than one recipient. A system that, by local policy, ignores this request
MUST NOT allow any of the copies it creates to be forwarded on to any
MTA outside its control.</t>

<t>"donotmodify": this signer requests that the message not be modified from
the form in which it is sent. A system that, by local policy, ignores this
request MUST NOT allow the message to be forwarded on to any
MTA outside its control.</t>

<t>"feedback": this signer requests feedback about how this message is handled
during delivery and thereafter. This document does not describe what such
feedback might be or where it might be delivered. If this flag is absent
then feedback is explicitly not required.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
sig-f-tag = %x66 [FWS] "=" [FWS] sig-f-data *("," [FWS] sig-f-tag-data)
sig-f-tag-data   = "modifiedbody" | "modifiedheader" | "exploded" |
                   "donotmodify" | "donotexplode" | "feedback"
x-sig-f-tag-data = ALPHA *(ALPHA / DIGIT)
                         ; for later extension
]]></artwork></figure>

</section>
<section anchor="signer-actions"><name>Signer Actions</name>

<t>The following steps are performed in order by Signers.</t>

<section anchor="document-any-modifications-made-to-a-message"><name>Document any modifications made to a message</name>

<t>MTAs that accept a DKIM2 signed message and send it onward to
another MTA MUST record the changes that they have made to the
message. A scheme for generating appropriate DKIM2-Delta-Header header fields
to describe such modifications can be found in <xref target="ALGEBRA"></xref>.</t>

<t>Note in particular that adding header fields must be documented, although
some header fields (such as Received:) are not signed. Details can
be found in {#computing-hashes}.</t>

<t>Failure to record modifications will mean that an MTA that subsequently
handles the message SHOULD detect this and this MAY lead to the message being
rejected.</t>

</section>
<section anchor="determine-what-rfc5321-envelope-will-be-used-for-the-message"><name>Determine what <xref target="RFC5321"></xref> "envelope" will be used for the message</name>

<t>The DKIM2-Signature field contains mf= and rt= values, so the MAIL FROM
and RCPT TO values that will be used when the message is transmitted MUST
be available to (or deducible by) a Signer.</t>

<t>When the message being signed already has a DKIM2-Signature header field (i.e. it has
already been transmitted at least once) then the mf= of the message to be signed MUST
match with an entry in the rt= of currently highest numbered (i=) DKIM2-Signature
header field.</t>

<t>The match algorithm only considers the domain part of the rt= and mf= values, that
is the local part is ignored. If there is not an exact match then labels are
removed, one by one from the left hand side of the mf= domain and compared with the rt=
domain until there is an exact match or no labels remain. This approach allows
systems to use existing "bounce-handling" schemes with special subdomains in
their MAIL FROM values.</t>

<t>If there will not be a match between the rt= and mf= values then the Signer MUST
generate an extra DKIM2-Signature field that causes values to match, i.e. a record
of the mail being passed from one domain to another. It will be noted that the
creation of this extra header field will require the Signer to have access
to the DKIM2 key value associated with a domain in the rt= entry.</t>

</section>
<section anchor="signer_privatekey"><name>Select a Private Key and corresponding Selector value</name>

<t>This specification does not define the basis by which a Signer should
choose which private key and selector value to use.  Currently,
all selectors are equal as far as this specification is concerned, so
the decision should largely be a matter of administrative
convenience.  Distribution and management of private keys is also
outside the scope of this document.</t>

</section>
<section anchor="signer_normalize"><name>Normalize the Message to Prevent Transport Conversions</name>

<t>In order to be signed a message will need to be in "network normal" format
(text is ASCII encoded, lines are separated with CRLF characters, etc.).</t>

<t>A message that is not compliant with <xref target="RFC5322"></xref>, <xref target="RFC2045"></xref>, and
<xref target="RFC2047"></xref> can be subject to attempts by intermediaries to correct or
interpret such content.  See Section 8 of <xref target="RFC6409"></xref> for examples of
changes that are commonly made.  Such "corrections" may invalidate
DKIM2 signatures or have other undesirable effects, including some
that involve changes to the way a message is presented to an end
user.</t>

<t>Accordingly, DKIM2's design is predicated on valid input.  Therefore,
Signers and Verifiers SHOULD take reasonable steps to ensure that the
messages they are processing are valid according to <xref target="RFC5322"></xref>,
<xref target="RFC2045"></xref>, and any other relevant message format standards.</t>

<t>In particular, messages using 8-bit characters, are subject
to modification during transit, notably conversion to 7-bit form.
Such conversions will break DKIM2 signatures. Hence the message
SHOULD be converted to only contain 7-bit characters, for example by
employing a suitable MIME content-transfer encoding such as quoted-printable or
base64 as described in <xref target="RFC2045"></xref>. The way in which this is achieved is
outside the scope of this specification.</t>

<t>If the message contains local encoding that will be modified before transmission,
that modification to canonical <xref target="RFC5322"></xref> form MUST be done before signing.
In particular, bare CR or LF characters (used by some systems as a local line
separator convention) MUST be converted to the SMTP-standard CRLF
sequence before the message is signed.  Any conversion of this sort
SHOULD be applied to the message actually sent to the recipient(s),
not just to the version presented to the signing algorithm.</t>

<t>More generally, the Signer MUST sign the message as it is expected to
be received by the Verifier rather than in some local or internal
form.</t>

</section>
<section anchor="compute-the-message-hash-and-signaturesigner-compute"><name>Compute the Message Hash and Signature{#signer-compute}</name>

<t>The Signer MUST compute the message hash as described in <xref target="computing-hashes"/>
and then sign it using the selected public key algorithm.  This will
result in a DKIM2-Signature header field that will include the body
hash and a signature of the header hash, where that header includes
the DKIM2-Signature header field itself.</t>

</section>
<section anchor="signer-insert"><name>Insert the DKIM2-Signature Header Field</name>

<t>Finally, the Signer MUST insert the DKIM2-Signature header field
created in the previous step prior to transmitting the email.  The
DKIM2-Signature header field MUST be the same as used to compute the
hash as described above, except that the value of the "b1=" tag
(and "b2=" if present) MUST be the appropriately signed hash computed
in the previous step, signed using the algorithm specified in the
"a1=" (or "a2=") tag of the DKIM2- Signature header field and using
the private key corresponding to the selector given in the "s1="
(or "s2=") tag of the DKIM2-Signature header field, as
chosen above in <xref target="signer_privatekey"/>}.</t>

<t>The DKIM2-Signature header field SHOULD be inserted before any other
DKIM2-Signature fields in the header block.</t>

<t>INFORMATIVE IMPLEMENTATION NOTE: The easiest way to achieve this
   is to insert the DKIM2-Signature header field at the beginning of
   the header block before any existing Received header fields.</t>

</section>
</section>
<section anchor="verifier_actions"><name>Verifier Actions</name>

<t>A border or intermediate MTA MAY verify the message signature(s).  An
MTA that has performed verification MAY communicate the result of that
verification by adding a verification header field to incoming
messages.  This simplifies things considerably for the user, who can
now use an existing mail user agent.  Most MUAs have the ability to
filter messages based on message header fields or content; these
filters would be used to implement whatever policy the user wishes
with respect to unsigned mail.</t>

<t>A verifying MTA MAY implement a policy with respect to unverifiable
mail, regardless of whether or not it applies the verification header
field to signed messages.</t>

<t>Verifiers MUST produce a result that is semantically equivalent to
applying the steps listed in <xref target="verifier_extract"/>, <xref target="verifier_valheader"/>,
and <xref target="verifier_publickey"/> in order.
In practice, several of these steps can be performed in parallel in
order to improve performance.</t>

<section anchor="verifier_extract"><name>Extract Signatures from the Message</name>

<t>A Verifier SHOULD check the most recently applied (highest numbered
i= value) DKIM2-Signature before accepting an email. If this check
does not pass then a Delivery Status Notification for the email MUST
NOT be generated thereafter -- hence the best strategy, if the email
is not wanted, is to reject it (with a 5xx error code) whilst the
relevant SMTP conversation is still ongoing.</t>

<t>A Verifier that wishes to ascertain whether or not a message has
been modified since it was first created need only check the first (i=1)
DKIM2-Signature.</t>

<t>If the message has been modified since its original creation then
the DKIM2-Modification header fields (see <xref target="ALGEBRA"></xref>)
will enable a Verifier to determine whether or not all the changes
made are correctly recorded.</t>

<t>For each signature to be validated, the following steps should be
performed in such a manner as to produce a result that is
semantically equivalent to performing them in the indicated order.</t>

<t>Where the status is TEMPFAIL then it may be possible for the
Verifier to determine the validity of the signature at a later
time. If the SMTP conversation is still ongoing then a 4xx
error code SHOULD be used to allow the sending MTA to understand
the situation.</t>

<section anchor="verifier_valheader"><name>Validate the Signature Header Field</name>

<t>Implementers MUST meticulously validate the format and values in the
DKIM2-Signature header field; any inconsistency or unexpected values
MUST cause the header field to be completely ignored and the Verifier
to return PERMFAIL (signature syntax error).  Being "liberal in what
you accept" is definitely a bad strategy in this security context.</t>

<t>Note, however, that this does not include the existence of unknown
tags in a DKIM2-Signature header field, which are explicitly
permitted.</t>

<t>Verifiers MAY return PERMFAIL (signature expired) if it is more than
14 days since the timestamp recorded in the "t=" tag.</t>

</section>
<section anchor="verifier_publickey"><name>Get the Public Key</name>

<t>The public key for a signature is needed to complete the verification
process. Details of key management and representation are described in
<xref target="key_management"/>.  The Verifier MUST validate the key record and MUST
ignore any public key records that are malformed.</t>

<t>NOTE: The use of a wildcard TXT RR that covers a queried DKIM
   domain name will produce a response to a DKIM query that is
   unlikely to be a valid DKIM key record.  This problem is not
   specific to DKIM and applies to many other types of queries.
   Client software that processes DNS responses needs to take this
   problem into account.</t>

<t>When validating a message, a Verifier MUST perform the following
steps in a manner that is semantically the same as performing them in
the order indicated; in some cases, the implementation may
parallelize or reorder these steps, as long as the semantics remain
unchanged:</t>

<t><list style="numbers" type="1">
  <t>The Verifier retrieves the public key as described in <xref target="signer_privatekey"/>
using the algorithm in the "a=" tag, the domain from the "d="
tag, and the selector from the "s=" tag.</t>
  <t>If the query for the public key fails to respond, the Verifier
MAY seek a later verification attempt by returning TEMPFAIL (key
unavailable).</t>
  <t>If the query for the public key fails because the corresponding
key record does not exist, the Verifier MUST return
PERMFAIL (no key for signature).</t>
  <t>If the query for the public key returns multiple key records, the
Verifier can choose one of the key records or may cycle through
the key records, performing the remainder of these steps on each
record at the discretion of the implementer.  The order of the
key records is unspecified.  If the Verifier chooses to cycle
through the key records, then the "return ..." wording in the
remainder of this section means "try the next key record, if any;
if none, return to try another signature in the usual way".</t>
  <t>If the result returned from the query does not adhere to the
format defined in the DKIM key specification <xref target="DKIMKEYS"></xref>, the Verifier MUST ignore
the key record and return PERMFAIL (key syntax error).  Verifiers
are urged to validate the syntax of key records carefully to
avoid attempted attacks.  In particular, the Verifier MUST ignore
keys with a version code ("v=" tag) that they do not implement.</t>
  <t>If the public key data (the "p=" tag) is empty, then this key has
been revoked and the Verifier MUST treat this as a failed
signature check and return PERMFAIL (key revoked).  There is no
defined semantic difference between a key that has been revoked
and a key record that has been removed.</t>
  <t>If the public key data is not suitable for use with the algorithm
and key types defined by the "a=" and "k=" tags in the DKIM-
Signature header field, the Verifier MAY immediately return
PERMFAIL (inappropriate key algorithm). However, these fields
are now deprecated so DKIM2 implementations MAY ignore them
altogether.</t>
  <t>If the "h=" tag exists in the public key record and the hash
algorithm implied by the "a=" tag in the DKIM2-Signature header
field is not included in the contents of the "h=" tag, the
Verifier MUST ignore the key record and return PERMFAIL
(inappropriate hash algorithm).</t>
</list></t>

</section>
<section anchor="compute-the-verification"><name>Compute the Verification</name>

<t>Given a Signer and a public key, verifying a signature consists of
actions semantically equivalent to the following steps.</t>

<t><list style="numbers" type="1">
  <t>Prepare a canonicalized version of the message as is
described in <xref target="computing-hashes"/> (note that this canonicalized version
does not actually replace the original content).</t>
  <t>Based on the algorithm indicated in the "a1=" tag, compute the
message hashes from the canonical copy as described in
<xref target="computing-hashes"/>.</t>
  <t>Verify that the hash of the canonicalized message body computed
in the previous step matches the hash value conveyed in the "bh="
tag.  If the hash does not match, the Verifier SHOULD ignore the
signature and return PERMFAIL (body hash did not verify).</t>
  <t>Using the signature conveyed in the "b1=" tag, verify the
signature against the header hash using the mechanism appropriate
for the public key algorithm described in the "a1=" tag.  If the
signature does not validate, the Verifier SHOULD ignore the
signature and return PERMFAIL (signature did not verify).</t>
  <t>Otherwise, the signature has correctly verified.</t>
</list></t>

</section>
</section>
<section anchor="output-requirements"><name>Output Requirements</name>

<t>The evaluation of each signature ends in one of three states, which
this document refers to as follows:</t>

<t>SUCCESS:  a successful verification</t>

<t>PERMFAIL:  a permanent, non-recoverable error such as a signature
   verification failure</t>

<t>TEMPFAIL:  a temporary, recoverable error such as a DNS query timeout</t>

<t>For each signature that verifies successfully or produces a TEMPFAIL
result, output of the DKIM2 algorithm MUST include the set of:</t>

<t><list style="symbols">
  <t>The domain name, taken from the "d=" signature tag; and</t>
  <t>The result of the verification attempt for that signature.</t>
</list></t>

<t>The output MAY include other signature properties or result meta-
data, including PERMFAILed or otherwise ignored signatures, for use
by modules that consume those results.</t>

<t>See <xref target="verifier_extract"/> for discussion of signature validation result codes.</t>

</section>
<section anchor="verifier_communicate"><name>Communicate Verification Results</name>

<t>Verifiers wishing to communicate the results of verification to other
parts of the mail system may do so in whatever manner they see fit.
For example, implementations might choose to add an email header
field to the message before passing it on.  Any such header field
SHOULD be inserted before any existing DKIM2-Signature or pre-existing
authentication status header fields in the header field block.  The
Authentication-Results: header field (<xref target="RFC8601"></xref>) MAY be used for this
purpose.</t>

</section>
<section anchor="verifier_interpret"><name>Interpret Results/Apply Local Policy</name>

<t>It is beyond the scope of this specification to describe what actions
the recipient of an email performs, but mail carrying valid DKIM2
signatures gives the recipient opportunities that unauthenticated
email would not.  Specifically, an authenticated email provides
predictable information by which other decisions can reliably be
managed, such as trust and reputation.  Conversely, it is hard
to assign trust or reputation to unauthenticated email.</t>

<t>In general, modules that consume DKIM2 verification results SHOULD NOT
determine message acceptability based solely on a lack of any
signature or on an unverifiable signature; such rejection would cause
severe interoperability problems.  If an MTA does wish to reject such
messages during an SMTP session (for example, when communicating with
a peer who, by prior agreement, agrees to only send signed messages),
and a signature is missing or does not verify, the handling MTA
SHOULD use a 550/5.7.x reply code.</t>

<t>Where the Verifier is integrated within the MTA and it is not
possible to fetch the public key, perhaps because the key server is
not available, a temporary failure message MAY be generated using a
451/4.7.5 reply code, such as:</t>

<t>451 4.7.5 Unable to verify signature - key server unavailable</t>

<t>Temporary failures such as inability to access the key server or
other external service are the only conditions that SHOULD use a 4xx
SMTP reply code.  In particular, cryptographic signature verification
failures MUST NOT provoke 4xx SMTP replies.</t>

<t>If the email cannot be verified, then it SHOULD be treated the same
as all unverified email, regardless of whether or not it looks like
it was signed.</t>

</section>
</section>
<section anchor="computing-hashes"><name>Computing the Message Hashes</name>

<t>Both signing and verifying message signatures start by computing
cryptographic hashes over the body and then over selected
header fields message.  Signers will
choose the parameters of the signature as described in "Signer
Actions" (<xref target="signer-actions"/>); Verifiers will use the parameters specified in
the DKIM2-Signature header field being verified.  In the following
discussion, the names of the tags in the DKIM2-Signature header field
that either exist (when verifying) or will be created (when signing)
are used.</t>

<t>Some mail systems modify email in transit, potentially invalidating a
signature. DKIM2 provides a method of documenting such changes as
they occur. However, in order to reduce the necessity to document minor
changes to header fields DKIM2 uses an algorithm for computing header
hashes which permits minor changes. This is identical to the "relaxed"
algorithm of DKIM1 (<xref target="RFC6376"></xref>). Minor changes to</t>

<t>Some systems make minor changes to white space and line endings within
messages. To avoid having to document such changes DKIM2 canonicalises
the body before hashing using a scheme which is identical to the DKIM1
"relaxed" algorithm.</t>

<t>NOTE: canonicalization simply prepares the email for presentation
to the signing or verification algorithm.  It MUST NOT change the
transmitted data in any way.</t>

<t>When calculating the hash on messages that will be transmitted using
base64 or quoted-printable encoding, Signers MUST compute the hash
after the encoding.  Likewise, the Verifier MUST incorporate the
values into the hash before decoding the base64 or quoted-printable
text.  However, the hash MUST be computed before transport-level
encodings such as SMTP "dot-stuffing" (the modification of lines
beginning with a "." to avoid confusion with the SMTP end-of-message
marker, as specified in <xref target="RFC5321"></xref>).</t>

<t>For clarity this section will discuss the first pair of signatures
(s1=, a1=, h1=, bh1). If a second pair (s2=, a2=, h2=, bh2=) is
present then that is calculated or verified in an identical manner
except using the "2" values rather than the "1" values.</t>

<section anchor="computing-the-body-hash"><name>Computing the Body Hash</name>

<t>The body hash MUST be computed first by a signer because its value will be
included in the subsequent hash of the header fields. A Verifier MAY
check the hashes in any convenient order.</t>

<t>The body of messages is treated as merely a string of octets. DKIM2
messages MAY be either in plain-text or in MIME format; no special
treatment is afforded to MIME content. Message attachments in MIME
format MUST be included in the content that is signed.</t>

<t>The body canonicalization algorithm MUST apply the
following steps in order:</t>

<t><list style="symbols">
  <t>Ignore all whitespace at the end of lines.  Implementations
MUST NOT remove the CRLF at the end of the line.</t>
  <t>Reduce all sequences of WSP within a line to a single SP
character.</t>
  <t>Ignore all empty lines at the end of the message body. An empty line is
a line of zero length after removal of the line terminator. If there is
no body or no trailing CRLF on the message body, a CRLF is added.</t>
</list></t>

<t>Note that a completely empty or missing body is canonicalized as a
single "CRLF"; that is, the canonicalized length will be 2 octets.</t>

<t>The canonicalized version of the body is then hashed by the
relevant algorithm(s). The value is converted to base64 form and
inserted into (Signers) or compared to (Verifiers) the "bh1=" tag
of the DKIM-Signature header field that is being created.</t>

</section>
<section anchor="construct-appropriate-dkim2-header-fields"><name>Construct appropriate DKIM2 header fields</name>

<t>A signer will need to provide appropriate DKIM2-Delta-Header fields
if the message arrived with a DKIM2 signature and changes have been
made to the message.</t>

<t>A DKIM2-Signature header field should then be constructed. The bh=
value(s) should be filled in with the body hash value(s) that have
been calculated as above. The value of the "b=" tag(s) (including
all surrounding whitespace) should be omitted.</t>

<t>The i= values for these header fields MUST be one greater that the
highest i= value in any existing DKIM2-Signature header field, or
if there is no such header field then i=1 MUST be used.</t>

<t>Unlike DKIM1 these DKIM2 header fields are terminated by a CRLF.</t>

</section>
<section anchor="computing-the-header-hash"><name>Computing the Header Hash</name>

<t>The header hash algorithm signing MUST apply the following steps
in the order given. A verifier will need to do the equivalent
steps in order to check that the hash they have received is correct.</t>

<t><list style="symbols">
  <t>Construct a DKIM2-Signature header field with the</t>
  <t>Ignore header fields that are never signed:  <vspace blankLines='1'/>
DKIM2 implementations MUST NOT sign "Received" or "Return-Path"
header fields. These are Trace headers as described in <xref target="RFC5321"></xref>
and serve only to document details of the SMTP transmission process.  <vspace blankLines='1'/>
DKIM2 implementations MUST NOT sign "DKIM-Signature" header fields
or any header field whose name starts with "ARC". Not over-signing
DKIM1 and ARC signatures means that systems that wish to add other
types of signature are free to do this in any convenient order.  <vspace blankLines='1'/>
DKIM2 implementations MUST NOT sign any header field whose name starts
with "X-". Currently deployed email systems use these fields as
proprietary Trace headers and it considerably simplifies reporting
on changes to header fields not to sign them.</t>
  <t>Convert all header field names (not the header field values) to
lowercase.  For example, convert "SUBJect: AbC" to "subject: AbC".</t>
  <t>Unfold all header field continuation lines as described in
<xref target="RFC5322"></xref>; in particular, lines with terminators embedded in
continued header field values (that is, CRLF sequences followed by
WSP) MUST be interpreted without the CRLF.  Implementations MUST
NOT remove the CRLF at the end of the header field value.</t>
  <t>Convert all sequences of one or more WSP characters to a single SP
character.  WSP characters here include those before and after a
line folding boundary.</t>
  <t>Delete all WSP characters at the end of each unfolded header field
value.</t>
  <t>Delete any WSP characters remaining before and after the colon
separating the header field name from the header field value.  The
colon separator MUST be retained.</t>
  <t>Place the header fields in alphabetical order by the header field
name, except for any header fields that start "DKIM2" which are
ordered specially.</t>
  <t>If there is more than one header with the same header field name
then the header fields are placed in the order in which they occur
in the email header  <vspace blankLines='1'/>
It is sometimes suggested that some MTAs re-order
header fields after they receive an email, if they do then it is their
responsibility to recover the original order of any header fields
with identical header field names (that are part of a signature calculation)
before verifying an existing signature or passing a previously signed
message to another MTA that is going to wish to verify a signature.</t>
  <t>The DKIM2 header fields are placed at the end of the list of header
fields to be signed, ordered first by their "i=" value (in ascending
numerical order) and then by the alphabetical order of their header field name.  <vspace blankLines='1'/>
NOTE: the special rules for ordering DKIM2 header fields are intended
to assist systems that wish to pre-calculate a hash value for all the
other header fields and then finish off with the actual DKIM2 headers
that they will be adding.</t>
  <t>The hash(es) of the concatenated header fields is calculated.</t>
  <t>The value(s) of the hash(es) are then converted to base64 and added
to the b= tags.</t>
</list></t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>TBA</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>TBA</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC1034">
  <front>
    <title>Domain names - concepts and facilities</title>
    <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
    <date month="November" year="1987"/>
    <abstract>
      <t>This RFC is the revised basic definition of The Domain Name System. It obsoletes RFC-882. This memo describes the domain style names and their used for host address look up and electronic mail forwarding. It discusses the clients and servers in the domain name system and the protocol used between them.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="13"/>
  <seriesInfo name="RFC" value="1034"/>
  <seriesInfo name="DOI" value="10.17487/RFC1034"/>
</reference>

<reference anchor="RFC2045">
  <front>
    <title>Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies</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 initial document specifies the various headers used to describe the structure of MIME messages. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2045"/>
  <seriesInfo name="DOI" value="10.17487/RFC2045"/>
</reference>

<reference anchor="RFC2047">
  <front>
    <title>MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text</title>
    <author fullname="K. Moore" initials="K." surname="Moore"/>
    <date month="November" year="1996"/>
    <abstract>
      <t>This particular document is the third document in the series. It describes extensions to RFC 822 to allow non-US-ASCII text data in Internet mail header fields. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="2047"/>
  <seriesInfo name="DOI" value="10.17487/RFC2047"/>
</reference>

<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="RFC3629">
  <front>
    <title>UTF-8, a transformation format of ISO 10646</title>
    <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
    <date month="November" year="2003"/>
    <abstract>
      <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="63"/>
  <seriesInfo name="RFC" value="3629"/>
  <seriesInfo name="DOI" value="10.17487/RFC3629"/>
</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="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="RFC6409">
  <front>
    <title>Message Submission for Mail</title>
    <author fullname="R. Gellens" initials="R." surname="Gellens"/>
    <author fullname="J. Klensin" initials="J." surname="Klensin"/>
    <date month="November" year="2011"/>
    <abstract>
      <t>This memo splits message submission from message relay, allowing each service to operate according to its own rules (for security, policy, etc.), and specifies what actions are to be taken by a submission server.</t>
      <t>Message relay is unaffected, and continues to use SMTP over port 25.</t>
      <t>When conforming to this document, message submission uses the protocol specified here, normally over port 587.</t>
      <t>This separation of function offers a number of benefits, including the ability to apply specific security or policy requirements. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="72"/>
  <seriesInfo name="RFC" value="6409"/>
  <seriesInfo name="DOI" value="10.17487/RFC6409"/>
</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="ALGEBRA">
   <front>
      <title>A method for describing changes made to an email</title>
      <author fullname="Bron Gondwana" initials="B." surname="Gondwana">
         <organization>Fastmail Pty Ltd</organization>
      </author>
      <date day="1" month="October" year="2025"/>
      <abstract>
	 <t>   This memo describes a method for describing the changes made to an
   email during common email modifications, for example those caused by
   mailing lists and forwarders.

   While this is general enough to be used for any changes, it is
   anticipated that this method will normally be used for removing added
   data rather than large complex changes.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-gondwana-dkim2-modification-alegbra-03"/>
   
</reference>


<reference anchor="DKIMKEYS">
   <front>
      <title>Domain Name Specification for DKIM2</title>
      <author fullname="Wei Chuang" initials="W." surname="Chuang">
         <organization>Google</organization>
      </author>
      <date day="7" month="July" year="2025"/>
      <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-chuang-dkim2-dns-02"/>
   
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">



<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="RFC8017">
  <front>
    <title>PKCS #1: RSA Cryptography Specifications Version 2.2</title>
    <author fullname="K. Moriarty" initials="K." role="editor" surname="Moriarty"/>
    <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
    <author fullname="J. Jonsson" initials="J." surname="Jonsson"/>
    <author fullname="A. Rusch" initials="A." surname="Rusch"/>
    <date month="November" year="2016"/>
    <abstract>
      <t>This document provides recommendations for the implementation of public-key cryptography based on the RSA algorithm, covering cryptographic primitives, encryption schemes, signature schemes with appendix, and ASN.1 syntax for representing keys and for identifying the schemes.</t>
      <t>This document represents a republication of PKCS #1 v2.2 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series. By publishing this RFC, change control is transferred to the IETF.</t>
      <t>This document also obsoletes RFC 3447.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8017"/>
  <seriesInfo name="DOI" value="10.17487/RFC8017"/>
</reference>

<reference anchor="RFC8032">
  <front>
    <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
    <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
    <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
    <date month="January" year="2017"/>
    <abstract>
      <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8032"/>
  <seriesInfo name="DOI" value="10.17487/RFC8032"/>
</reference>




    </references>

</references>


<?line 1133?>

<section anchor="changes-from-earlier-versions"><name>Changes from Earlier Versions</name>

<t>draft-clayton-dkim2-spec-01</t>

<t>Significant re-ordering of sections and removal of repetitious material.</t>

<t>Relax the matching algorithm between rt= and mf=</t>

<t>[[This section to be removed by RFC Editor]]</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAL5m7mgAA+V9a3MbV5Ll9xv7Iyrg6BjSA9Ak9bAtjSaaetnaFmWtSLWn
w63tKAAFolqFKkxVgRTao/++mScz76MA0vJEb+yHdXTbBFB1n3kzTz7vZDJx
fdlXxaPsebPKy/pPxbbLXs2Lui8XZTHPzvOyyi7KqzrvN23RZden2cHzP706
Pz10+XTaFtf0In/EM3jEzZtZna+oxXmbL/rJrMq3fVNP5h/L1emkWxezyfGJ
6zbTVdl1ZVNfbtf07KsXly9dvVlNi/aRm+d98chdP3Iz+uOqabePsq6fu82a
f+geuXLdPsr6dtP1p8fH3x+fuo/F9qZp59RM3RdtXfST59y36/q8nv8tr5qa
utjS2Nblo+yXvpmNs65p+7ZYdPTXdsV/fHAu3/TLhvq3/2YTl9E/Zd09yt4d
Zc9kJvhOZviunC3zdp780rRXj7K/5MumwceCVrV6lLW6DH/c8i9lPTuaNauk
g5+pg+Umr6+i9n8uyvhLNP1D01xVRdz2TVEu85s/XuGHnXafHtEr9fwmr/Oo
5adtU6ffo/GXeddzo9nbfpu9pjXnXzpaqKJ/lL0urosqOx1nJyf3s5/Lqirz
VXaBH/HcrJlTy/eOj4/146buee/OaKPanJ7G1+sldmP0rw9PsvsPvs3unzzM
7t97OIpnNKXRXf1xoYPpi3yFabm6aVd5X14TdfDT714+Ozm+d99/OD2+/yD+
8G34cHLyvf9w7+Fp+PDgNGrgwb3Tk/jDafjw3ffH/sPDe98+DB/uH4fWvnt4
rA2cvf7hxdN3Z0SSk+dHV7rQeghWzZxOFxE3kf8kr4qraStrw0fpTy/+ciFv
zbDz+s687pwr68XOCjx48P13of/jk2+jD/doAm4ymWT5lLdg1jt3xzEPZztb
F+2q7Lss57+6ph5nbVMVYyISR3SS1+U/MPisX+Z91tzU/GRHHKCsr7I5esj6
hv6abVbUhzxW9tky79ySjmRFXea17Ha2Krouvyqy6TbLu66ZldQ0NdMvi7K1
xm7KfsnfOH34KMsul2WX0f/y2bIkwpzj/fW62vLLeTZrt+u+uWrz9bKcuc44
GA+L2sl8O38uWr8X3BzNl9dY2vvPTdFKezRYJmbHA+HJURPpfP+ly56/uci6
dT5DJ23RtzwufpWG1TbrliZWZOvNtKIBEcc6ys542Wz61DdtUd0tiral3hdt
s8qEEUlzs3Jd8louNi313mZ+Sh0NqqqyKXU1n9Ob9DR1d13O6Yvsms4dcc18
WhXZiJhVWY+OZOlsi/WJpu0cvVkKTWyzm2VR29g62jiaybSgrzZ18Yl4eF/M
q202aos18bViPqJpzrMZlqnDMtOOu3lREaW2W+IgNNIuq5verzVNnR5ramql
A4k0vMJlX1JvIJeboi2I4K+bijdX1xwrpIIjaxZh+Y6EzlflnIjLua9YErTN
fDPjvv7pVD8kbRraVtboDup2MXXnRtnMjrNflJN98ITu3/tFOdEHIhcnxJMR
8YTtZ8LZdLLvRCUkBodjwr4xBTg8ks/RwawhWVnTbGkZ4w55I2/asgcVlz0t
bHJE6GkSZeVq5+wtip4+YWrxMImwirnT7eMTsqnnRL38qS2q4jqnNdSl4J57
JrvZsph9VB4QJkojOdcxggyIn9x6SPgwLdtmc7V0L5v2hmQ0baiuy3ZNc6mI
7lb5x4JoMiMswkCBuSp1TSx3yCWcrpWOkCh5TceuaK8LmRUAUBhn9jOdz0I2
YN6gG5f7lpfWSRdt0Srn00ovGV3RmnaNnCJ6qitwtuiIj2j5SH6ObLGINsur
ss6riCD0RBdzWrGfeT0TJrPQ9VAWQ40RAur6YsWTzumIMnPJa0fMpOQdp6YH
E8TOg9UQPRREA1kzm+V8JJW1gM84phSS/M0cfL3sEl7DB3pO39Eub8oOdDMt
+psiZjqYPbMBepiWX3kbLYIxDKK0vO3L2abKWz1uNC7amk6Xp+mI5nnTeWmn
BfcSsaxeFtjeodW6lM0phcx18LzyedWhZztoEZfLBlzO/W4ulw24nLuLy/0U
MSJtg7j9DHP224whz+dKxmUkLIgQ24LEWtczIdChLebTfPaRdki2f5s167Lm
fg/49+JTvlozC1QJ7m7oQToNHcmJNuzHOl8deq6TEUcgVYDoJpzHlMeQwOqW
BXrsCD/ztL76SqnsrCUu0pOA4fV9rqeBoM874lt8hnk98/l12fneF/mqJHDZ
RryTiJ+kbcXrefn0bMz/AkXQf90N4YGll5D8OC/AFTELeoDnzF/NGeo265WO
HUMbM1NvaKevy+LG6YyYC5SzYozm50RazXZlnKIhKaL7REQ+z+uZcFce/gyT
zi5Z4tRN1Vxt8dPzYkGrj3eYGuksdQVEGLVNv/Ca0RvK8JWptryZOhxjH9S4
LCe1MC9492W5ZEhFFsEYU5lEGob5kCKHLtHPLwo0SQplT+moz/S49dH4mecS
q6uFr+Dwsrbnz0IYU00shuXsiumNdoFoCu/wz9nBL4qwPxxm2KsxdoWEDr1D
AIwnvCjA7zEDXqO4GyZlbuiE+rvY1n3+iVdg1pZr2QpaOtJIrpTJPn3zMjs4
o38fyhxJG/igjIDFF2uVXTY6f39xORrLf7M3P+Hvdy/+1/tX7148578vfjx7
/dr/IU84+vDT+9f6O/8V3nz20/n5izfP5WX6Nht8dX72lxFIyo1+env56qc3
Z69HfrYeeuQCZ6fCH1uSSTyjvNP5TrF17hdVfz4AM7MokUnxXil38GoVHdCc
MW0nLAsYkIWU464g87BoNBKe5vu3b1+8e3Z28ULOrxe0znly8WSbZ+8KYrvg
M8LdeuAg2llGytE3nou56aYHTzVeSQIfSJcYbAYVaivspsZZ5VVQ7Yi5Zhur
CwZ2iLxXLOhn3VH2qheuHkb4A3V1I2PMs+V22pZ0hhfufQeBONcZYCjUXk0H
k4AxrXnbXBV10WyYoMMR6sZ0tLBjzu/YDSSIwa9Zse6FvfulE4qHgK2z88sz
6Y34aEG707k8QWnASkUJga1CqONFImpg2UhUQAsqy8EDmzafGMmq/MeTgmVN
6CsMABJjVNUwH52PeeMn80KOOn+mJayLljad9BdTPTqS3OMswlorXkhS3dts
uAcsVnTLOuwx2pgRMO0LVSOJxhTK0vLcpGiW4Y8QHJucqCvnXlQFpIRxRNkG
BTX8NrcZcEXDSGqZVwtZfEGfIHFwFpVrRAXagT84PCea6/l7mvgB2CVo4+yK
Oz8cu/ML/8OFt2/5n3k/7edL1fTCj7Qq2AWX4xsCpUQHuZAUH4uKwFI2It2r
anh9SYtj8mLCa/NqDMktw8VyuukOqqD//F1lSQwphFpiBcCTgesa0k3oRMgC
gCGum9LgNSMn/9KKwBLoQHZvWhCZFQwYqoI2DVCX5B4RUMmGCPAaRf0quWTw
srGicHzZ1l7zs5E6JAgh3UjnGxxuZSBY2Z6xSMHnBulke2jTnp/pJvHmH7lX
vZ5RUYa9aiQCTtcmgT9hqbA/jIB4cDZ8XmlqnfSSeCq6jHb4mA6IJ+Ow0klm
Psjzm4GRxFtILa0Jc+8ecYDPbTg+3KLoxnSaE5XUlFVaQ+CqPFZwLkUO4WlZ
STd8HhsumhnPXtXhsUqcWJ0m4iUFa7VmEl6WumnKz4TBy5t5ehYEyjQt1HNZ
v2iKsgeijXfSAutlCSehwVO/K9h9VE3oZSeEyvXJOVa460wp5A7aHf3Zqf7B
2rNgelZPmq40iwHweArGfYsYHjblZwa/MCIBhLSiFfY3DYOgVSf80B6JYOAQ
BT1y7uss+/niLVGhCm56omQwHzUwzsqj4oiXVtpjCiRgMGUliM2FxI6yDJrA
itD03INTDwkZLh0eoa+XP1+IelnNhU6tE+ZULGur5obY2abqSx5EBaHbFaTB
gWimW+7q2bvXL7kJelYten1GHIS3u04HLsDn7w2LJAVsOkxGcwbkO1m/A16I
KyKoGj8kQIGAziGtFttM+akn9F/6zzfZj5dnT/EtT4y//eVr/p1H+CE74b+l
12hVaHN0FcSMNqPRmJJpK8amHOIaOLI0Cof9/zSrNqbsNdNuQq0IObxarZuW
lweTumwIXnc2WV4kGEnwLeZZ2uOi2uM8UKcdCxLiALRSzP9YK8a33bLZVMys
Y5XO5nNdHH1xTzqzkw9CdqOqoalPWDkfZQcgOmbisuDEb5ntPBKiNZPbf24a
2Dz6luHnoTTTbaYT4TKj3zuUUxsKsf1qPmGWRkMBZwMzXkKdzPAr9fYTlkob
Zb5qug8fQT7K+/uBtqAiBQCC2MYGa0egqVzhryDKL96OQVVjJrQxQei3P5Ju
+vzVD68ux6CrsSv6mWz8M2FMd2w7foqWAbygqLriZqn8J9EWlMTRKbp8C6o+
wBdE7viO/jv61xH/+5vRIZ6f5l3x8L5sCz+fvP/1wS9EqR+SL+W14T+/ZPLk
6Mko+ftD9oHV4Ldt0zezpspM3Du38xUmqaiZjQtMXd54ubanvbWHNtGrnzC7
CE5WSMecbgAKQhuxushw2b/EzN2/Jea6SNPKKjY7mMJOoGEk77kz+YLo79df
gY/aSS5fff58iEZH1moWP3utX/4tPH3kSFt88ShLTAOGvWDaVZwE6fRJ7QJ0
4P2wVPYXFX1mm7+7ZAPomkk7MGde5g3hJxKCwZaLwzrwekCeszMDoEGECI9s
M52XbF+ZE1nC6tZZhyMawFuaWDNXW47yehq3f0asJNhuOnO1KG4QFA3vlr3O
CNW/IgcWFuYqnxaklLBBJ2/Z0gZZLFoLy8CSzYUieh1Plc1VYuhk5YwNkwEH
deZpgpKCwWa8VthhUg7FBiSDiNZApBOBmOJKDbF8XPUM+uefZIHD0WHKRkej
+JtDOfLiFeedjPcC/paG9qijFYLEDWsByx3bZVW1gRHI9DeWqmIqEvh9w7A7
I9xbb5PvvG7nOmLcHRwmQHZ/36g4tg7HGVgOq80Jwq+2jk28dD42zDabxHLJ
JsrZsmHS7NlGXjNupccFD4TJOJ4oNI+8NLPxgsA9E0VbXMk+tAxzw/eF18P5
dDv3tNg2sLsl+ofsPOFzhhNh8eAVIOBM2K0r2W3WN0Rm+YpwZFdtM5iPZ0Wy
F2x0ytpm0zMFEscsmWpeRbplsHeqFwAiRI5G4i4Zomgblhv9Pa83ebs9PT59
OFLb95e8tiimrX9vzPNa0Rqp84MPqlmxp4QWUgJjY/GcVrAvI2Nj1CmtBMPb
htSkwC+oZYVeTp00zKHWOLHZfNMqNCTaVPeY6GHcuvp0SHDCm+OuI7cTreeZ
qDhdT3zf2P5OF2PxiWx6nH6XEIIJkEV5tVEtA3YBr66ki8UDuaYlFVetdV/U
89/oPN2p4O5lvtgWq+baEMSty3kENvHqzcuf3p2fXb7684tMmP4ZnhPDirgj
2uKaAMDA5kfMr7k54iYAT+FkEUFhHha8Jm7tuYxJCBEOOyMdel9tMMLQ+4qR
PPxJ62UO0qV1VlqJ+8+nNEdW6pjVpTEBN8CbJGin+ZRdIgwNt7oqWA9ZCPSa
L1T92LvWNJQfSW7Qvo53Qw9m6AYTYULCTHihfBcHbHbiR/tc6Tp0fAgCzr2f
XfvT9RTvV914gGgWRc9+ZoVf59xvEA5pjXCa3FMBExak8WV+9eTPebUpstdw
k/36VZ9fXfMXrOl2n81wTuJJAi2gxo3ooSd4iqSGGLohRK/ZImQAoKMzX5N2
wRKCvbDeCAZ/hSxX0EdlBQi6dEWR/WLRKNDwMD4V2XyiWK7SQVDAju5ysVAo
0iI2yWsLENJmIwGSI4cvDvIuG3gXOHbnw5iAiZDqw6PvDo9AwIbZQQb5lZhP
vDjTQzlrIALpMcg9rAqRyPsaP8k2lYTt2K81ekzY1iu4XWZGffZiblofaUBd
oRmSDSVvqhgSVV9l8/kVgtm63dP66vzt6xfnL95cnrHp3g5vRThsc6WcJizO
yBaCW8HRxerw5k5kcw/FGC/bSD1/O5kSmwwTYOMfvzzQs8S9yIJHrGBMpOWa
Zetig81GcBwswTeqBoI81bemxqU1kQR3i2EzPKIlfn/5cvLdxFYW/hoOqfpw
iAlhKHXmiRPWGl6ll1DPq62wSagvSrbtpjLS6lTD6RQr8TLA3MPKh605sNLj
Ufh8SEoFf/HBv4Ov+R3RNfgribQIaoj/QYaJz/59POwVnuzrs9dv3p+/ff/m
mX9C3uIesp7+5jGdfA1DwzdsBTiUbw91TLv/PGatZ1lOWfvlt/hAsvWAZTHh
mro2Bl0I35D28A91evL1n89eP/vx7B1+0r/lpz98Oj2Z3GOd7g+f7j2bfPvi
1gG8+I9nr8/OhUppry9fvX7+wmwTFy/OXz376fVPb1Rt1OmHJYlUxr+Rev6m
6fWM8GTYOKrAnnDljRqy4GKltevEeB2c97BfO6wCc305I08kyIFxKf+itlCc
TZx9CaThbS9FZ+f2zC+L3XmcLU1GYFCwcYSfIdhYcjDKgM+UGLHyg4FTDRrE
jFjYpCsgiBCzUQt0Vtao7zl1x4tY5ney8M6mrmBJZCDjlVPiNJHKyVqFd1PZ
U4W2RFPQtsSMiwEDwMw364rBkjDMHa6mDl8WHvVVVfhz9TgrFy7HGEDy84b5
Ol5ZyXKz0xsQObJ9+lPJpq4aUR2INfGGSd+dLLQtKS1mDqav68DuDOJKjBph
AyN+4lQ9uW15ZNLKWkQnUB+ZmjnVf7/ISZm17s/+IhsqXTAmyMt5RsoZHb9K
VvJ9zcKPiOEfhdBooIOrmmOYbLXVsCyRfcVq3W+1F7U6yOjFhJ417NUsPNGf
1S76RkL+ily9ttSmxTwlw3+c5Sr42Axfu7jPaAHFza/e0kJHpoabvAtUT/Nw
wfgfTBrqPX8Wx02S1LpqWup3xaAk9x88IlHLQWTXnZdXZZ+EI4XXWJe+aaIv
nNhQFkEv3bFjZ+8uziYXP56dPniIwb6Ynz54cPK9fnXkzDajLnYvBEWhufvl
yJjDm+1+18tAbn8iXHcO3RWv/foVYbq/rfwXtE4X7E+oEDnNhseONC4EgkAb
+M+N+Ds4ViJR6Jh/7nGoIPKOvlBnmbibHM4sli4OwzNU63UNNo34+BZFfspd
fIDe/ImYRH2shqmCGsgnjJDNO8FEMicBIB/pYfZL/gBDey4tTHzygLRs3qTR
/AkEOK/KSMOMOMjbmH426k7kCWbpo0XTHE3zdjT2U0Fsrvc/88TsoaMwnKO4
ZZqUYDFxDPipMZo328HY257ChP2BZrO2WAVxoNh2wf0i2iSOW2Gwo9rDnDle
1Vn43gIikCGvB9eqAlAfEb3Z8fTnT0xBdz0BY9mmL+I4MNLTlolyxvv866/y
JL094QeK7vNntUVQ2xNu/ODlq7cXk5Pvjif3J6fHJw8OjYPw8xM6v7CKEdGi
A3iDi9r7freRQ1cb7mXw4ehnBwH/u7d/enbx1Qn7QuEEOTl6AJWAg9k/+K4R
0M19+9BH6eFfOqeaeiaa+qWOM4jAKSuQm3qWixlKLD+tyHWJemMzrzlMIPJ6
aB6Q2VOCGi3MGisDIRJKKPOVHp2poGGGypEYNPuzTfxa7JlE0w8fPLj3LQcp
KQfDcPlpXiixKy2C/+vk+PR+xmCRAUfCthD5rdG9FvoZO5Fx4NAecZ4rHiNY
gm+QoR9pX9/hg0QdwfOpUjMXG9jtTRN+u6Jl4x4CLafM8jZ6Hjy1u4a303Qc
nWZK4z1eMX8Mv4Cm3YCmX0moSKD1wHrf0oRfzJ/T1lznbclRyzr4sUuVWRvM
g6MTGw4nYug5F0dTEKvmegoy0dY9apL7F6Vtd/MFnThGydHGqGkxNBpCwucN
UIqXdeYQMMRJYz43YR4Sv5wjwC4iIc/q4iaS7wcKTBhftYXG1ZVPBG0chmDh
6dYVCKrwcU3mng/xrcGoUy6UTSNqhhkynmYzhlj1DGLW2SAjhThRCWQKtbku
GIzrAcZKUoNOlfl6bmCJW2w2PRQEqBCc1zKI+Ud2CQ1WpG4clx72hK1zCF9P
QgUspDjaIXZJdZyXgUAQjfPW2Go5a/oaDqtYPekd9s12S6/YiOVd+COCrrsl
e9lDKC4mthT3ryQCSPJR4a2x4AAt4dmqswg7p2FFFWyz3WZBaKzU8GWZHJYW
ZEkAXKJdK+ZS8aL8rNGDMqmC3UEMfFiaI9BTArE5rpFhiDnQw7I5mT8kfFEL
G1oGIWwPSzPe4+LdHMzH4sQbcaJBEINGWChwuGokrOO4gHzK1k0Pa6OdG4ry
y6dnEstrqQAR5PlR3MwvgXx+/Wq5wAO+sc/CBsNZsgXAtjEWjlDXsG1xYTvB
a+qlit3aZpODKm4tR7Bc/CoT5xEj5wmp/Bz25fXlPOh+u7gitVp+No2p0eSP
vePXsXKO5pXntmXLaRrF2HnLnliqgZeBtDWjCECNSL5WqzdzcIOECHhQM1jh
oLGB8ZkWmHvAIR42mvqLT2ztBZni2L06f0mjl3BJnCxngahM0R2rmyWOCccG
eHeROXnS5jlqbMGvTknPZA09cKbwigVIy1414umgEXN4VI/mbzQElfSF6yen
2Tf073uDntSep7rZ2IaraVvKeiPiCVGc8JxWoo7yUO7x4ezpUdpK4uigVc4e
4AUKbsnf2lyxkIpBeAL776ZWrDgn/WOFQP2+IBDxOLOoajkYmtzSaxCZxwAw
hLOPSejy5CizI3zXOCx5YB5i2uR9gmQuWDvATNX7vSyvlhxeL5Ol9+6cZ/ZD
vu5MlZJXmHYNpEW6/ir3+U03y6YKkXu2MgOPcXk1KSesLcHE94dPD7/fsWSe
fH0Kg5xz9ZMse8M2G5ne71h9CzbX3AO1f5MoVtvKGKIktzBxi19D7G7T7vAY
RPfGKJzV35XYo9WCso3bQvpJH8Up0nF2Coc2alADzpgXn3yUMyc35uJFljQj
Pj6GFXwkp7sQhvEmSc7hDBh29vh+15uWDnKxu/p1svq7duSTrw+w+ofO9bT8
gUAuSWEnZrVa/7cPQU8tmEQfsnik4whZKecWCeZEJ4sOaUdch+GOODNOvv/2
eHJ8Qv+7PD5+hP9l7y+faWSnkI1aVTk0jPBBqRkkixBgfu9kwit47xQOCR09
cbnED+EtM1NkEKzz1vafsZ90RXh1jf1TZcedHP/vk9PsYENUUEn27KeSg9GJ
0549J2XleHx8fPxY1mNRIjqYXr9/DBXmcHcITEMClBMIFix5WGRs0wBv/56m
mLsENnJyn2iTlbhqz2HuY3L69v4ecjqx07xaCOP1MXY0hFevs5fvfjpX9tWH
1DTN2KBlGaYVi9lRMv2vkdCQXZxfvuU4zI/BRmQaGGHkHa4d02Ww9ofBqCsf
4SGjf/v3keTtqAFGnao+sHrPcdxdpdUCy4QjN8/+8PBBWKddn4b+9G8cYBbi
D7PRH0dq7RKfDj3y7yPn2n64qu+evb3MLn+SNT3oDv9fLOtutqbPfOT1iy3y
RRRe3vvhCVcAjQrMcRH28y90llsa/AGzZr1N0afyXZ9riXbcoJ3YpYB5Y1EE
ah9lgUpIhIyms9mjUfxyHid4i97GytxckrtWRdHrsD3s60yjljBar/cfPTy6
B8+vo06ihTHJi0nEEfgWxiRYc5A6ul4Xeav+cqwqEeEucba9Eee3p4NDvEuc
JB4iAr2DPIk4Oe5r/kSjNzQzescWrK4r07VuJ6k4VD/KFIc1i1dXzKimGwcT
9FHcvzczqWb6/M2Fw3AlmVsCejwMjKM4OMR3AyWXJZTkGuYSbQdPiwZIRT6r
qfrzRdyfTYBJ2S6V5rX5zT898mYfLtJh2Xs2ZW/X5s1CB8SRZj0ioHodNaHM
Zb9qiB6ks5BNGTYmdi4yS2aagA0UrKDJulwd2/FL6fPavYRH+N55r3WwNjLa
DCx2FAtILfnndmlxruIEnHJXmkRDwivxEJMYRCLTNAZxfzRv5EJOw781l2T8
W2+Jsw96nRw60ih7tjg4152YnqFBkhZLang5BFka0cKVcKAD1sN6+4HYpcE0
fvO3qNB9KRUO9qjzsuzbe+yZP9nZJh965XJdhGAItXMrlpm+SIH2nRMeGAwt
2HfUdvmkW+anDx6Kz2VUiEFz9JhmVZA6H/n7Pov8dqmfGoOI3Hs7c84N5ghl
ntwyb3uSrbDpu7D3P4k+f8xGk1H0eTl4/iP64rkhjN2mRH9/mkRPDd5aylu2
GunD0kXyOj2scSFp/PxvHxdaRQkTp01iT74WjUr6+6e27qZ2oLxKAjuPi8L7
UwjinfgMP8T37bMJ1NNN1DLwjgtE4iDgrlhNKzusVp0ispbuhH7EAMlKGbCN
rcsXBeKeuoJYLxJrklEgLYMAf8smFATlSoRtU4twa5BjNKmK+qpfuorTMdh5
wrStkfnZ3ZH5vJzL5mZgN+P6FuKV2IPrp57gheJPb6d4PDrhvUjfxlf0dpx5
Qbu4PHkSubb07NEyNTWnGYGPTblaxToKjw1VI/4/3uu97s54a7Fs5si8Y2uX
e/b24Xd3bPByzw4vb9/i7vQJyZdT+pr/v6R/vdwp9ZQdMBimNVFU3p3QK/T/
6Sk2iqjkMBIFEn35jd/5yLwTakSBsRsP5zhW5h1cagFxnmw0CP2PzbHkQrB9
kFGmMZCAqUqGe2eZpbAICYnvgDQJ1w1U57IXKImYRAlOVbMBjGaw0CwIpMNw
zSY29UaKlyvOmaWNI7SVvazyq264FPEK4IFMi/jcNGb56R6Ll0xRGgdl03m6
EUtBJx4UzkDnGKLoiJnTWzOTYZKxczE0GQpq2VpdICvHwruJt71hAgYSdIJS
G8ix4PC4I5kd9Kc4gRLZrLm4cLNmrTktSJqcyCnXJEzfT8NVfnzI8KKyaDJ2
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
lVJmDpK5AAA=

-->

</rfc>

