<?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-02" 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="20"/>

    
    
    <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 the
email 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"/>)
and 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 use just one
selector, whereas administratively distributed organizations can choose
to manage disparate selectors
and key pairs in different regions or on different email servers.
Selectors can also be used to delegate a signing authority, which
can be withdraw at any time. Selectors also make it possible to
seamlessly replace keys on a routine basis by signing with a new
selector, while keeping the key associated with the old selector
available.</t>

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

<t>DKIM2 uses a simple "tag=value" syntax in several contexts, including
in messages, domain signature records (see <xref target="DKIMKEYS"></xref>) and MailVersion
header fields (see <xref target="ALGEBRA"></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="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="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>
<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>mv= The version of the email signed by this DKIM2-Signature header field.</t>

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

<t>The mail version value MUST be taken from highest v= revision value of any
MailVersion header fields in the email. If there are none then 0 MUST be used.</t>

<t>ABNF:</t>

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

<t>h=  Names of any relevant header fields that have been added to the email message.</t>

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

<t>If a message is being forwarded and email header fields that will be
signed have been added then this tag provides a colon-separated list of
these header field names. This list MUST NOT include header field-names (such
as "Received" or "X-") that will not be signed.</t>

<t>Newly added header-fields (as specified by this tag) must be placed before
any existing header-fields with the same field-name.</t>

<t>See {#header-hash} to determine which header fields will be signed.</t>

<t>If more than one header field is added with
the same header-field name then an appropriate number of repetitions of
the header field name MUST be provided.</t>

<t>This tag is intended to provide a light-weight method of documenting
that header-fields have been added without resorting to the MailVersion
mechanisms described in <xref target="ALGEBRA"></xref>. If those mechanisms have been used
then any relevant header field-names MUST NOT appear in this tag.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
sig-h-tag     = %x68 [FWS] "=" [FWS] filed-name
                *( [FWS] ":" [FWS] field-name )
]]></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>pp= The domain on whose behalf we are signing.</t>

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

<t>The domain on whose behalf we are signing. See the discussion in {#determine-envelope}
for a discussion on what it means to sign for another domain and how the validity
of this can be determined.</t>

<figure><artwork><![CDATA[
sig-pp-tag   = %x70 %70 [FWS] "=" [FWS] domain-name
]]></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>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.</t>

<t>In particular, if header fields have been added that will be
signed then this must be documented. Details can be found in
{#computing-hashes}, where it will be noted that some header fields
(such as "Received") are not signed.</t>

<t>A scheme for generating appropriate MessageVersion header fields
to describe modifications can be found in <xref target="ALGEBRA"></xref>, and it is also
possible to specify additions by using the h= tag field in the
DKIM2-Signature header field that will be added.</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-envelope"><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 has two
options and MUST do one on the other.</t>

<t>The first option is to 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 private key associated with a domain in the rt= entry.</t>

<t>The second option, where the private key is not available is to document that
the email has been passed from one domain to the next by setting "d=" to match
the domain in "mf=" in the usual manner, but adding a "pp=" tag field which
matches the domain in the "rt=" tag field of the currently highest numbered
(i=) DKIM2-Signature header field.</t>

<t>Verifiers can check that the signing
domain is authorised to sign by proxy (pp is from the Latin "per procurationem")
in this manner by doing a DNS lookup for the "_pp." label in the DNS for the
pp= domain (see <xref target="DKIMKEYS"></xref>).</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 -- this will 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>DKIM2's design is predicated on valid input.</t>

<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>, <xref target="RFC2047"></xref>
and other relevant message format standards 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>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>Further, 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. If the check gives
a TEMPFAIL result then a 4xx error code SHOULD be used to allow the
sending MTA to understand the situation.</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 header-field.</t>

<t>If the message has been modified since its original creation then
the MessageVersion 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>Should checking these signatures (all but the most recently applied)
give the status is TEMPFAIL then it may be possible for the Verifier
to determine the validity of the signature at a later time. It the
TEMPFAIL status continues to occur, or if a PERMFAIL is encountered
then this MAY be reported to the sending MTA by means of a Delivery
Status Notification. However the non-validating email MUST not be
forwarded to any MTA outside of the current organisation.</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"/> and <xref target="DKIMKEYS"></xref>.  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 "a1=" tag, the domain from the "d="
tag, and the selector from the "s1=" tag. If a2= and s2 tags
are present, subsequent steps are repeated for the second signture.</t>
  <t>If the query for the public key fails to complete, 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 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 in the DKIM-Signature header field, the Verifier MAY immediately
return PERMFAIL (inappropriate key algorithm). However, the tag fields
in the public key record that would cause this to occur are now deprecated
so DKIM2 implementations MAY ignore these tag fields altogether.</t>
  <t>If the "h=" tag exists in the public key record and the hash
algorithm implied by the "a1=" (or "a2=") 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 "bh1="
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-states"><name>Output States</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 software that consumes those results.</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. It should be noted that any "Authentication-Results" header
field will count as a modification to the email if any further
DKIM2-Signature header fields are to be generated.</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, mechanisms 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.</t>

<t>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="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="17" 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-04"/>
   
</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="20" month="October" 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-03"/>
   
</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 1154?>

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

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

<t>Further clarifications and tidying up; alignment of <xref target="ALGEBRA"></xref> description with
the new MailVersion header field-name; addition of h= tag field.</t>

<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:
H4sIAFGH9mgAA+V9a3MbR7Ll94r9ER1wTAzpC8Ak9bKlqxtD62FzR5S4IjWe
CY/W0QAaRI+AbtzuBimMr//75slHPRogbd+Yjf2wDlkige56ZGVl5eNk1mg0
cl3ZLYun2ct6lZfVn4ttm53Niqor52Uxy87zcpldltdV3m2aos1uTrKDl38+
Oz85dPlk0hQ39CJ+5Wf4ETerp1W+ohZnTT7vRtNlvu3qajT7VK5ORu26mI6O
Tly7mazKti3r6mq7pmfPXl29dtVmNSmap26Wd8VTd/PUTemH67rZPs3abuY2
a3zRPnXlunmadc2m7U6Ojr6h1j4V29u6mVEzVVc0VdGNXqJv13Z5NfspX9YV
dbGlsa3Lp9mPXT0dZm3ddE0xb+mn7Qo/fHQu33SLmvq3f7ORy+i/smqfZu/H
2QuZCX8mM3xfThd5M0u+qZvrp9nf8kVd868FUXX5NGuUDH/a4puymo6n9Srp
4AfqYLHJq+uo/R+KMv6Qm/6urq+XRdz2bVEu8ts/XfMXO+1+O6ZXqtltXuVR
y982dZV+zo2/ztsOjWYX3TZ7QzTHNy0RquieZm+Km2KZnQyz4+OH2Q/lclnm
q+ySv+TnpvWMWn5wdHSkv26qDmt3SgvV5PQ0f7xe8GoM/u3xcfbw0ZPs4fHj
7OGDx4N4RhMa3fWf5jqYrshXPC1X1c0q78ob4g48/f71i+OjBw/9LydHDx/F
vzwJvxwff+N/efD4JPzy6CRq4NGDk+P4l5Pwy9ffHPlfHj948jj88vAotPb1
4yNt4PTNd6++fX9KLDl6Ob5WQusmWNUz2l3E3MT+o3xZXE8aoQ220p9f/e1S
3pryyus7s6p1rqzmOxR49Oibr0P/R8dPol8e0ATcaDTK8gmWYNo5d882D3s7
WxfNquzaLMdPbV0Ns6ZeFkNiEkd8klflP3nwWbfIu6y+rfBkSxKgrK6zGfeQ
dTX9NN2sqA95rOyyRd66BW3JJXWZV7La2apo2/y6yCbbLG/belpS09RMtyjK
xhq7LbsFPnH68DjLrhZlm9GffLooiTFn/P56vdzi5TybNtt1V183+XpRTl1r
EgzDonYy385fisavBZqj+YLG0t5/bopG2qPBgpkdBoLJURPpfP/YZi/fXmbt
Op9yJ03RNRgXXqVhNfW6oYkV2XozWdKASGKNs1OQzaZPfdMSVe28aBrqfd7U
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
/R8U7fp6pLwAAA==

-->

</rfc>

