<?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-04" 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="December" day="12"/>

    
    
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 60?>

<t>DomainKeys Identified Mail v2 (DKIM2) permits a person, role, or
organization that owns a signing domain to document that it has
handled an email message by associating their domain with the
message.  This is achieved by providing a hash value that has
been calculated on the current contents of the message and then applying a cryptographic
signature that covers the hash values and other details about the
transmission of the message. Verification is performed by querying an entry
within the signing domain's DNS space to retrieve an appropriate public
key. As a message is transferred from author to recipient systems that
alter the body or header fields will provide details of their changes
and calculate new hash values. Further signatures 
will be added to provide a validatable "chain". This permits validators
to identify the nature of changes made by intermediaries and apply a
reputation to the systems that made changed. DKIM2 also allows
recipients to detect when messages have been unexpectedly "replayed"
and can also ensure that delivery status notifications are only sent
to entities that were involved in the transmission of a message.</t>



    </abstract>



  </front>

  <middle>


<?line 80?>

<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. In addition, some features
were influenced by experience from (see <xref target="CONCLUDEARC"></xref>) the experimental
ARC protocol (<xref target="RFC8617"></xref>).</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="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="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>

</section>
<section anchor="reviser"><name>Reviser</name>

<t>As will be seen, a Forwarder may alter the message content or header
fields, in such a way that existing signatures on the message will
no longer validate. If so, then a record will be made of these
changes. We call a Forwarder that makes such changes a Reviser.</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, Revisers, 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[
VALCHAR      =  %x21-3A / %x3C-7E
                  ; EXCLAMATION to TILDE except SEMICOLON
ALPHADIGITPS =  (ALPHA / DIGIT / "+" / "/")
ALNUMPUNC    =  ALPHA / DIGIT / "_"

base64string =  ALPHADIGITPS *([FWS] ALPHADIGITPS)
                [ [FWS] "=" [ [FWS] "=" ] ]
textstring   =  VALCHAR * (FWS / VALCHAR)
]]></artwork></figure>

<t>Note that base64strings are defined in <xref target="RFC4648"></xref>, but that document
does not contain any ABNF. Note that a base64string MUST be padded
with trailing = characters if needed.</t>

<t>Note that the definitions of both textstring and base64string allow
for the presence of FWS, which simplifies folding header fields
to an allowable line length. FWS within base64strings will be
ignored when their value is being used. FWS within a textstring
MUST be treated as a single space when this value is used.</t>

</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 the Message-Instance and
DKIM2-Signature header fields, as well as in 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>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]
tval      =  1*VALCHAR
tag-name  =  ALPHA *ALNUMPUNC
tag-value =  [ tval *( 1*(WSP / FWS) tval ) ]
                  ; Prohibits WSP and FWS at beginning and end
]]></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 hashing and digital signature algorithms. One
hash function (SHA256) if specified here and two signing algorithms
are defined by this specification: RSA-SHA256 and Ed25519-SHA256.
Signers and Verifiers MUST implement SHA256. Signers SHOULD implement
both RSA-SHA256 and Ed25519-SHA256. Verifiers MUST implement both
RSA-SHA256 and Ed25519-SHA256.</t>

<section anchor="the-sha256-hashing-algorithm"><name>The SHA256 Hashing Algorithm</name>

<t>The SHA256 hashing algorithm is used to compute body and
header hashes as defined in <xref target="computing-body-hash"/> and
<xref target="computing-header-hash"/>. The resultant
values are stored within Message-Instance header fields.</t>

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

<t>The RSA-SHA256 Signing Algorithm computes a hash over all the Message-Instance
and DKIM2-Signature header fields as described in <xref target="calculate-signature"/> 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 MUST 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 hash over all the Message-Instance
and DKIM2-Signature fields as described in <xref target="calculate-signature"/> 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 hashes or 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="hfMessageInstance"><name>The Message-Instance Header Field</name>

<t>The hash values for a message are stored in a Message-Instance header
field. This header field documents the current contents of the message
and, in the case of a Reviser records any relevant changes that have been made
to the incoming message.</t>

<t>The Message-Instance header field is a tag-list as described in
<xref target="tagvaluelists"/>.</t>

<t>Tags on the Message-Instance header field along with their type,
encoding and requirement status are shown below.</t>

<t>v= The revision number of the Message-Instance 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 Message-Instance header fields are added with a value one
more than the current highest numbered Message-Instance header field. Gaps
in the numbering MUST be treated as making the whole message impossible
to verify.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
mi-v-tag    = %x76 [FWS] "=" [FWS] 1*2DIGIT
]]></artwork></figure>

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

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

<t>ABNF:</t>

<figure><artwork><![CDATA[
mi-a-tag     = %x61 %x31 [FWS] "=" [FWS] mi-a-tag-alg
mi-a-tag-alg = "sha256" / x-mi-a-tag-h
x-mi-a-tag-h = ALPHA *(ALPHA / DIGIT)  ; for later extension
]]></artwork></figure>

<t>b1=  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
hash.  In particular, FWS can be safely inserted
this value in arbitrary places to conform to line-length
limits.  See <xref target="computing-body-hash"/> for how the body hash is computed.</t>

<t>ABNF:</t>

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

<t>h1=  The hash of the canonicalized headers 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
hash.  In particular, FWS can be safely inserted
this value in arbitrary places to conform to line-length
limits.  See <xref target="computing-header-hash"/> for how the header hash is computed.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
mi-h-tag      = %x68 %x31 [FWS] "=" [FWS] mi-h-tag-data
mi-h-tag-data = base64string
]]></artwork></figure>

<t>a2=, b2=, h2= Further hashes (equivalent to a1, b1 and h1)</t>

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

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

<t>r= A "recipe" to recreate the previous version of the message body.</t>

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

A Body Recipe is a comma separated list of instructions.  Each
instruction starts with a prefix. Commas can be followed by optional
whitespace.

The idea is that you take the message which has been received and
apply the Body Recipes so as to recreate the message as it was before
modifications were made. Hence it is necessary to cope with body
lines being added (c: is used to indicate which lines were original)
or removed/altered (b: is used to indicate what the body
line was before the removal/alteration).

c: startnumber-endnumber

Copy the lines numbered startnumber up to and including the line
numbered endnumber. The first line of the body (immediately after
the blank line that indicates that there are no more header fields)
is numbered 1. If the endnumber is omitted then all lines
(from the startnumber line onwards) are to be copied.

b: base64string

Decode the base64string to get the value of a line to be inserted.
If the base64string contains an encoded CRLF then more than one
line is being added but note that a CRLF will automatically be
added after the decoded text -- i.e. if only one line is being
added there MUST NOT be an encoded CRLF present. If the
base64string is absent then a blank line is being added. 

z

If a z is present then it MUST be the only "recipe". It indicates
that the changes that have been made to the body cannot be undone.
For example, a malware attachment may have been removed and it is
inappropriate to enable the malicious content to be recreated.
Verifiers of the message may be able to inspect the first signer
of this Message-Instance header field and determine that the
presence of z is acceptable to them because, for example, that
signer is providing a contractually arranged service.
]]></artwork></figure>

<t>ABNF:</t>

<figure><artwork><![CDATA[
mi-r-tag       = %x72 [FWS] "=" [FWS] mi-r-tag-data
mi-r-tag-data  = mi-r-recipes / %x7a
mi-r-recipes   = mi-r-recipe * ("," [FWS] mi-r-recipe)
mi-r-recipe    = %x63 ":" 1*DIGIT "-" [ 1*DIGIT ] /
                 %x62 ":" [ base64string ]
]]></artwork></figure>

<t>r.header= A "recipe" to replicate the previous version of a header field.</t>

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

A Header Recipe is a comma separated list of instructions. Commas can
be followed by optional whitespace. Each
set of instructions refers to a particular header field name. There
MUST be only one set of instructions for any given header field name

The idea is that you take the message which has been received and
apply the Header Recipes so as to recreate the relevant
header fields as they were before
modifications were made. Hence it is necessary to cope with header
fields being added (c: is used to indicate how many header fields,
if any, should be kept so that the addition is undone) or
removed/altered (b: is used to provide the contents of the the header
field was before the removal/alteration).

Header fields are numbered "bottom up" (the opposite directtion to
the body lines). That is to say, when walking the header from top
to bottom the last header field instance
encountered with any particular header field name is numbered 1,
the header field (with the same header field name) before that is
numbered 2, and so on. The header fields should be treated as
being unwrapped (in the normal [RFC5321] manner). That is, all
of the physical lines that form a single header field are
processed under the same logical number.

If there are no "recipes" for a specified header field name that
means that all instances of that header field should be removed
to reinstate the previous state of the message. If a header field
name is not present at all then all of header fields with that
header field name are to be retained.

c: startnumber-endnumber

Keep the header field (with the relevant header field name)
from position startnumber to endnumber.

b: base64string

Decode the base64string value to get the header field to be inserted.
The header field will start with the field name and a colon. These
MUST NOT be specified again. A CRLF will be added after the text.
When the base64string has been decoded it MUST NOT contain a CRLF.
If the base64string is absent then there will be no text after the
colon.

Note that the hashing algorithm for processing the header fields will
work on unwrapped lines -- so there is no need to wrap the header
field created by this recipe because it will never appear "on the
wire". 

z

If a z is present then it MUST be the only "recipe". It indicates
that the changes that have been made to the header field
cannot be undone and/or that it is inappropriate to provide
the original value.
Verifiers of the message may be able to inspect the first signer
of this Message-Instance header field and determine that the
presence of z is acceptable to them because, for example, that
signer is providing a contractually arranged service.
]]></artwork></figure>

<t>ABNF:</t>

<figure><artwork><![CDATA[
mi-rh-tag       = %x68 "." field-name [FWS] "=" [FWS] mi-rh-tag-data
mi-rh-tag-data  = mi-rh-recipes / %07A
mi-rh-recipes   = mi-rh-recipe * ("," [FWS] mi-rh-recipe)
mi-rh-recipe    = %x63 ":" 1*DIGIT /
                  %x62 ":" base64string
]]></artwork></figure>

</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*DIGIT
]]></artwork></figure>

<t>v= The highest numbered Message-Instance header field</t>

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

<t>This value allows verifiers to determine which entity made a particular
revision to the message body or header fields.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
sig-v-tag    = %x76 [FWS] "=" [FWS] 1*DIGIT
]]></artwork></figure>

<t>n=  Nonce value</t>

<figure><artwork><![CDATA[
textstring; 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>To discourage use of the tag field as an alternative to the use of more
appropriate header fields, the length of the textstring MUST NOT
exceed 64 characters and implementations SHOULD reject messages
where this limit has been ignored.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
sig-n-tag    = %x6e [FWS] "=" [FWS] textstring
]]></artwork></figure>

<t>t=  Signature Timestamp</t>

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

<t>The time that this header field was created. The format is the number of
seconds since 00:00:00 on January 1, 1970 in the UTC time zone.  The value
is expressed as an unsigned integer in decimal ASCII.  This value
is not constrained to fit into a 31- or 32-bit integer.</t>

<t>Implementations SHOULD be prepared to handle values up to at least
10^12 (until approximately AD 200,000; this fits into 40 bits).</t>

<t>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] dat
]]></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.</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>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>s2=, a2= b2= Second signature (equivalent to s1, a1 and b1)</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>Since the DNS lookup for the public key will check that the
algorithm is correct a different MUST necessarily be used
for the second signature.</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="computing-body-hash"><name>Computing the Body Hash</name>

<t>Although the body hash value will be incorporated into a Message-Instance header
field, these header fields are ignored when calculating the header hash
value and so the body hash and header hash may be calculated 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 DKIM2 body hash is calculated in the same manner as DKIM1's "simple"
scheme:</t>

<t>All empty lines at the end of the message body are ignored. 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. That
is "*CRLF" at the end of the body is converted to "CRLF".</t>

<t>No other changes are made to the body, which is then processed by the
relevant hash algorithm(s). The hash value is converted to base64 form and
inserted into (Signers) or compared to (Verifiers) the "bh1=" tag
of the Message-Instance header field that is being created. If a second
hash is calculated then its base64 representation will be included
in the "bh2=" tag.</t>

<section anchor="signer_normalize"><name>Preventing 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>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>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>
<section anchor="computing-header-hash"><name>Computing the Header Fields Hash</name>

<t>The header fields hash calculation 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>Ignore some header fields  <vspace blankLines='1'/>
When calculating the header field hash "Received" or "Return-Path"
header fields MUST be ignored.
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'/>
When calculating the header field hash any header field with
a header field name starting with "X-" MUST be ignored.
Currently deployed email systems use these fields as
proprietary Trace headers which have no defined meaning for
other systems and it considerably simplifies reporting
on changes to header fields to ignore them.  <vspace blankLines='1'/>
When calculating the header field hash any "Message-Instance" or
"DKIM2-Signature" header fields MUST be ignored. These header
fields will be included in the hash value that will be signed
by a DKIM2-Signature header field and it simplifies implementations
if they are not included twice, especially when determining
whether all modifications to a message have been correctly declared.  <vspace blankLines='1'/>
When calculating the header field hash any "DKIM-Signature" header
fields and any header fields whose name starts with "ARC" MUST be
ignored. Not including
DKIM1 and ARC signatures means that systems that wish to add other
types of signature are free to do this in any convenient order.</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.</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, from the top downwards.  <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 hash(es) of the concatenated header fields are calculated.</t>
</list></t>

<t>The hash value is converted to base64 form and
inserted into (Signers) or compared to (Verifiers) the "h1=" tag
of the Message-Instance header field that is being created. If a second
hash is calculated then its base64 representation will be included
in the "h2=" tag.</t>

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

<t>This section gives the actions that need to be undertaken by the signer
of a message. They may be done in any appropriate order.</t>

<section anchor="add-any-necessary-message-instance-header-fields"><name>Add any Necessary Message-Instance Header Fields</name>

<t>If a system is generating the initial form of a message or if
it a Reviser that has made to changes to the message body and/or
header fields then it MUST compute the body hash as described in
<xref target="computing-body-hash"/> and the hash of the header fields
as described in <xref target="computing-header-hash"/>.</t>

<t>If the message does contain a Message-Instance header field then one
MUST be added. This MUST NOT contain any "recipes" (b=, h.field=).</t>

<t>If hashing the message body or relevant header fields does not
give the same hash values as those recorded in the highest version
(v=) Message-Instance field then a new Message-Instance MUST be added.
This Message-Instance field MUST contain "recipes" to be able to
recreate the message corresponding to the hash values in the
highest numbered Message-Instance field, or a "recipe" of "z"
to indicate that recreating the previous version of the message
will not be possible.</t>

<t>A system may add more than one Message-Instance field if it wishes to
do so, but the DKIM2 design allows all modifications made by
any single system to be documented
in a single Message-Instance header field. Note that the v=1 Message-Instance
header field MUST NOT contains any "recipes" and any other Message-Instance
field MUST contain at least one "recipe".</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>In any situation where a messages will be forwarded in such a way that the
mf= on the outgoing message would not match with the rt= value then the Signer
MUST generate an extra DKIM2-Signature field that causes values to match, i.e. a
record must be fabricated that documents the mail being passed from one domain to another.</t>

<t>It will be noted that the
creation of this extra header field will require the Signer to have access
to a DKIM2 private key associated with a domain in the rt= entry. This is
often achieved by the Signer creating the private key and never sharing it.
The Signer gives the public key (and selector value) to the domain owner who
creates an appropriate DNS entry. Alternatively, the Signer creates a public
key DNS entry within a part of the DNS that they control and the domain owner
merely needs to publish a CNAME pointing at this.</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="calculate-signature"><name>Calculate a Signature Value</name>

<t>A signer calculates a hash solely over the Message-Instance and DKIM2-Signature
header fields of the message and then signs this. The hashes of the body and
other header fields are covered by the hashes in the highest version (v=)
Message-Instance header field.</t>

<t>Note that the DKIM2-Signature header field contains a signature but
does not give the hash value that was signed. This permits flexibility
for any future signature schemes where a relevant hash value may not
be readily available (or may be inordinately long).</t>

<t>The signature algorithm MUST apply the following steps
in the order given.</t>

<t><list style="symbols">
  <t>Convert all relevant header field names (not the header field values) to
lowercase.  For example, convert "DKIM2-signature" to "dkim2-signature".</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 order. First come the Message-Instance
header fields in ascending version (v=) order. Second are the
DKIM2-Signature header fields in ascending sequence (i=) order.
Last of all is an incomplete DKIM2-Signature header field (the
one that this system is creating) with all tags present except
that the signature value (b1=) is null (that is the base64 value
is absent. If there will be a second signature then the b2= tag
must be present, again with a null base64 value.</t>
  <t>The hash of the concatenated header fields is calculated and this
value is then signed using the algorithm specified in the
"a1=" tag of the DKIM2- Signature header field and using
the private key corresponding to the selector given in the "s1="
tag of the DKIM2-Signature header field, as
chosen above in <xref target="signer_privatekey"/>}.</t>
  <t>If a second signature is to be generated then the process
if repeated with the a2= and s2= settings.</t>
</list></t>

<t>The signature value(s) are converted to base64 form and inserted into the
"b1=" tag (and "b2=") tags of the DKIM2-Signature header field which
MUST then be placed into the message.</t>

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

<t>This section discusses the actions taken by a Verifier. In essence
this will involve repeating all the actions taken by a Signer to
produce a Message-Instance or DKIM2-Signature header field. To
avoid a lot of repetition these actions will not be spelled out
in detail. Once a hash value has been calculated it is then
compared with the value reported by the Signer, or the Signer's
public key is used to determine whether the signature that has
been provided is correct.</t>

<section anchor="output-states"><name>Output States</name>

<t>A verification 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 or mismatched hash value</t>

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

<t>A verifier MAY cease verifying once a single failure is detected.</t>

<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_extract"><name>Check Most Recent Signature and Hashes for the Message</name>

<t>A Verifier SHOULD check the validity of the most recently applied
(highest numbered i= value) DKIM2-Signature and the associated (v=)
Message-Instance 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 SHOULD check that the rt= and mf= values in the most
recent DKIM2-Signature header field are consistent with the MAIL
FROM and RCPT TO values from the SMTP protocol interaction that
delivered the email to the Verifier.</t>

<t>If the message has been modified since its original creation then
the Message-Instance header fields will enable a Verifier to determine
whether or not all the changes made are correctly recorded. If the
only concern is whether or not a particular stage of modification
is correct (for example the very first form of the message) it is
not necessary to check very hash and signature in order to do this,
if applying "recipes" produces a message with the correct hashes for
Message-Instance field of interest then this is sufficient.</t>

<t>Verifiers who wish to honour "feedback" requests or who wish to
assess assign reputation to Revisers SHOULD check all relevant
signatures and hashes. The TBA document explores these issues
in more detail.</t>

<t>Should checking these signatures (all but the most recently applied)
give the status 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="validation-of-tag-fields"><name>Validation of Tag Fields</name>

<t>Implementers MUST meticulously validate the format and values of
Message-Instance and DKIM2-Signature header fields. Errors SHOULD
be treated as a PERMFAIL (signature syntax error).  Being "liberal in what
you accept" is an inappropriate strategy.</t>

<t>Note, however, that the presence of unknown tags in a DKIM2-Signature
header field (or a Message-Instance header field), MUST NOT cause a
verification to fail.</t>

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

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

<t>The public key of 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>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 signature.</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
specified 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="perform-the-signature-verification-calculation"><name>Perform the Signature Verification Calculation</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-Instance and DKIM2-Signature
header fields as described in <xref target="calculate-signature"/>. 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
hashes of the canonical copy.  Then verify that the the signature
conveyed in the "b1=" tag is correct for this hash value 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>
  <t>If there is more than one signature provided then the second signature MUST be
checked if the verifier is able to do so, using a2= and b2= as appropriate.</t>
  <t>If either signature fails then an error SHOULD be reported.</t>
  <t>If one signature fails and the other passes then the error that is
reported should provide that information (e.g. PERMFAIL "RSA signature
passed, elliptic curve signature failed")</t>
</list></t>

<t>The reasoning for requiring that both signatures pass is that if a signature
scheme has recently become deprecated because it is known to be cryptographically
flawed then Signers will use a second (unbroken) signature scheme. However, such
a Signer may still provide the other signature for the benefit of Verifiers
that have yet to upgrade -- reasoning perhaps that attacks are too expensive
to be a very significant security issue. A Verifier that determines that
one signature passes whilst the other fails may well be in a position to
prevent an attack.</t>

</section>
<section anchor="verifier_instance"><name>Validation of a Message-Instance Header Field</name>

<t>Implementers MUST meticulously validate the format and values in any
Message-Instance header field they rely on; 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 the presence of unknown tags in a Message-Instance
header field, MUST NOT cause a verification to fail.</t>

<t>In order to check the hash values in a Message-Instance header field
are correct it will be necessary to repeat the steps taken by the Signer
as set out in <xref target="computing-body-hash"/> and <xref target="computing-header-hash"/>.</t>

</section>
</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>If an MTA wishes to reject messages where signatures are missing
or do 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>

</section>
</section>
<section anchor="delivery-status-notifications-in-the-dkim2-ecosystem"><name>Delivery Status Notifications in the DKIM2 ecosystem</name>

<t><xref target="BOUNCES"></xref> should be incorporated here.</t>

</section>
<section anchor="eai-rfc6530-considerations-for-dkim2"><name>EAI (<xref target="RFC6530"></xref>) considerations for DKIM2</name>

<t>TBA</t>

</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="RFC4648">
  <front>
    <title>The Base16, Base32, and Base64 Data Encodings</title>
    <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
    <date month="October" year="2006"/>
    <abstract>
      <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4648"/>
  <seriesInfo name="DOI" value="10.17487/RFC4648"/>
</reference>
<reference anchor="RFC5234">
  <front>
    <title>Augmented BNF for Syntax Specifications: ABNF</title>
    <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
    <author fullname="P. Overell" initials="P." surname="Overell"/>
    <date month="January" year="2008"/>
    <abstract>
      <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="68"/>
  <seriesInfo name="RFC" value="5234"/>
  <seriesInfo name="DOI" value="10.17487/RFC5234"/>
</reference>
<reference anchor="RFC5321">
  <front>
    <title>Simple Mail Transfer Protocol</title>
    <author fullname="J. Klensin" initials="J." surname="Klensin"/>
    <date month="October" year="2008"/>
    <abstract>
      <t>This document is a specification of the basic protocol for Internet electronic mail transport. It consolidates, updates, and clarifies several previous documents, making all or parts of most of them obsolete. It covers the SMTP extension mechanisms and best practices for the contemporary Internet, but does not provide details about particular extensions. Although SMTP was designed as a mail transport and delivery protocol, this specification also contains information that is important to its use as a "mail submission" protocol for "split-UA" (User Agent) mail reading systems and mobile environments. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5321"/>
  <seriesInfo name="DOI" value="10.17487/RFC5321"/>
</reference>
<reference anchor="RFC5322">
  <front>
    <title>Internet Message Format</title>
    <author fullname="P. Resnick" initials="P." role="editor" surname="Resnick"/>
    <date month="October" year="2008"/>
    <abstract>
      <t>This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5322"/>
  <seriesInfo name="DOI" value="10.17487/RFC5322"/>
</reference>
<reference anchor="RFC6376">
  <front>
    <title>DomainKeys Identified Mail (DKIM) Signatures</title>
    <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
    <author fullname="T. Hansen" initials="T." role="editor" surname="Hansen"/>
    <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
    <date month="September" year="2011"/>
    <abstract>
      <t>DomainKeys Identified Mail (DKIM) permits a person, role, or organization that owns the signing domain to claim some responsibility for a message by associating the domain with the message. This can be an author's organization, an operational relay, or one of their agents. DKIM separates the question of the identity of the Signer of the message from the purported author of the message. Assertion of responsibility is validated through a cryptographic signature and by querying the Signer's domain directly to retrieve the appropriate public key. Message transit from author to recipient is through relays that typically make no substantive change to the message content and thus preserve the DKIM signature.</t>
      <t>This memo obsoletes RFC 4871 and RFC 5672. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="76"/>
  <seriesInfo name="RFC" value="6376"/>
  <seriesInfo name="DOI" value="10.17487/RFC6376"/>
</reference>
<reference anchor="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="RFC6530">
  <front>
    <title>Overview and Framework for Internationalized Email</title>
    <author fullname="J. Klensin" initials="J." surname="Klensin"/>
    <author fullname="Y. Ko" initials="Y." surname="Ko"/>
    <date month="February" year="2012"/>
    <abstract>
      <t>Full use of electronic mail throughout the world requires that (subject to other constraints) people be able to use close variations on their own names (written correctly in their own languages and scripts) as mailbox names in email addresses. This document introduces a series of specifications that define mechanisms and protocol extensions needed to fully support internationalized email addresses. These changes include an SMTP extension and extension of email header syntax to accommodate UTF-8 data. The document set also includes discussion of key assumptions and issues in deploying fully internationalized email. This document is a replacement for RFC 4952; it reflects additional issues identified since that document was published. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6530"/>
  <seriesInfo name="DOI" value="10.17487/RFC6530"/>
</reference>
<reference anchor="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="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>

<reference anchor="BOUNCES">
   <front>
      <title>DKIM2 Procedures for bounce processing</title>
      <author fullname="Allen Robinson" initials="A." surname="Robinson">
         <organization>Google Inc.</organization>
      </author>
      <date day="7" month="July" year="2025"/>
      <abstract>
	 <t>   This memo provides a description of the procedures for bounce
   processing that should be performed by any mail system that
   implements DKIM2, as part of the overall DKIM2 protcol definition.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-robinson-dkim2-bounce-processing-01"/>
   
</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>
<reference anchor="RFC8617">
  <front>
    <title>The Authenticated Received Chain (ARC) Protocol</title>
    <author fullname="K. Andersen" initials="K." surname="Andersen"/>
    <author fullname="B. Long" initials="B." role="editor" surname="Long"/>
    <author fullname="S. Blank" initials="S." role="editor" surname="Blank"/>
    <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
    <date month="July" year="2019"/>
    <abstract>
      <t>The Authenticated Received Chain (ARC) protocol provides an authenticated "chain of custody" for a message, allowing each entity that handles the message to see what entities handled it before and what the message's authentication assessment was at each step in the handling.</t>
      <t>ARC allows Internet Mail Handlers to attach assertions of message authentication assessment to individual messages. As messages traverse ARC-enabled Internet Mail Handlers, additional ARC assertions can be attached to messages to form ordered sets of ARC assertions that represent the authentication assessment at each step of the message-handling paths.</t>
      <t>ARC-enabled Internet Mail Handlers can process sets of ARC assertions to inform message disposition decisions, identify Internet Mail Handlers that might break existing authentication mechanisms, and convey original authentication assessments across trust boundaries.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8617"/>
  <seriesInfo name="DOI" value="10.17487/RFC8617"/>
</reference>

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

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-adams-arc-experiment-conclusion-01"/>
   
</reference>



    </references>

</references>


<?line 1314?>

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

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

<t>Added a definition of a Reviser. Incorporate the Message-Instance scheme
previously found in ALGEBRA.
Recast the text relating to hashes and signatures accordingly. Changed
t= back to just digits.</t>

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

<t>Removed the pp= proposal, and briefly explained how signers often handle
private keys on behalf of domain owners. Changed t= to be human-readable.
Fixed description of body canonicalisation to match DKIM1/relaxed.</t>

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

<t>Further clarifications and tidying up; alignment of ALGEBRA description with
the new MailVersion header field-name; addition of h= tag field. Also added
the pp= mechanism to address forwarders who do not have private keys to
hand to make the rt/mf/rt chains validate.</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:
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

-->

</rfc>

