<?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-03" 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="November" day="03"/>

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

<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>The following tokens are imported from <xref target="RFC3339"></xref></t>

<t><list style="symbols">
  <t>"date-time" (a date and time in UTC)</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[
base64; 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>The base64 string MAY be terminated by '==' but the base64 part
MUST NOT exceed 64 characters.</t>

<t>ABNF:</t>

<figure><artwork><![CDATA[
sig-n-tag    = %x6e [FWS] "=" [FWS] base64string
]]></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 using the "date-time" format
defined in <xref target="RFC3339"></xref> (i.e. YYYY-MM-DDThh:mm:ss). This value MUST be
expressed in UTC.</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] date-time
]]></artwork></figure>

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

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

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

<t>ABNF:</t>

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

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

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

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

<t>ABNF:</t>

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

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

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

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

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

<t>ABNF:</t>

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

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

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

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

<t>ABNF:</t>

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

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

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

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

<t>ABNF:</t>

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

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

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

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

<t>ABNF:</t>

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

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

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

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

<t>ABNF:</t>

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

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

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

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

<t>f=  Flags</t>

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

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

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

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

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

<t>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 MUST
generate an extra DKIM2-Signature field that causes values to match, i.e. a record
of the mail being passed from one domain to another.</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="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 the body
is non-empty but there is no trailing CRLF on the message body,
a CRLF is added.</t>
</list></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="RFC3339">
  <front>
    <title>Date and Time on the Internet: Timestamps</title>
    <author fullname="G. Klyne" initials="G." surname="Klyne"/>
    <author fullname="C. Newman" initials="C." surname="Newman"/>
    <date month="July" year="2002"/>
    <abstract>
      <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3339"/>
  <seriesInfo name="DOI" value="10.17487/RFC3339"/>
</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 1142?>

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

<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 <xref target="ALGEBRA"></xref> 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:
H4sIANSvCGkAA+V9+3Mbx7Xm7137R0zBlQrpC8Ai9bAtXd66NCXZ3IgSV6Ti
pBxVagAMiImAGdyZASnE1//7nu88+jEAaXsrW/vDuhKbAGb6cfr06e88ezQa
ua7slsXz7GW9ysvqT8W2zc5nRdWV87KYZRd5ucyuypsq7zZN0Wa3x9nByz+d
XxwfunwyaYpbehEf+Rl+xM3qaZWvqMVZk8+70XSZb7u6Gs0+lavjUbsupqNH
j127mazKti3r6nq7pmfPX12/dtVmNSma526Wd8Vzd/vcTemPm7rZPs/abuY2
a/zQPnflunmedc2m7Y4fPfr20bH7VGzv6mZGzVRd0VRFN3qJvl3b5dXs7/my
rqiLLY1tXT7Pfurq6TBr66ZrinlLf21X+OOjc/mmW9TUv/03G7mM/imr9nn2
fpydyUz4O5nh+3K6yJtZ8kvd3DzP/pov6po/FkTV5fOsUTL85xa/lNV0PK1X
SQc/UgeLTV7dRO3/WJTxl9z093V9syzitu+KcpHf/ecN/7DT7ndjeqWa3eVV
HrX8XVNX6ffc+Ou87dBodtltszdEc/zSEqGK7nn2prgtltnxMDs6epL9WC6X
Zb7KrvhHfm5az6jlx48ePdKPm6rD2p3SQjU5Pc1frxe8GoN/e3aUPXn6dfbk
6Fn25PGzQTyjCY3u5j/nOpiuyFc8LVfVzSrvylviDjz9/vXZ0aPHT/yH40dP
nsYfvg4fjo6+9R8eP34cfXh2HD48PY5ae/r4+Cj+cBw+fPPtI//h2eOvn4UP
Tx6F1r559kgbOH3z/avv3p8Sf45ejm+U6rojVvWMthpxOu2FUb4sbiaNEAr7
6k+v/nolb02ZDfSdWdU6V1bzHXI8ffrtN6H/R0dfRx8e0wTcaDTK8gnWY9o5
98CeDxs9WxfNquzaLMdfbV0Ns6ZeFkPiGEdMk1flP3nwWbfIu6y+q/BkS+Kg
rG6yGfeQdTX9Nd2sqA95rOyyRd66Be3PJXWZV7L02apo2/ymyCbbLG/belpS
09RMtyjKxhq7K7sFvnH68DjLrhdlm9H/8umiJC6d8fvr9XKLl/Ns2mzXXX3T
5OtFOXWtiTMMi9rJfDt/Lhq/FmiO5gsaS3v/tSkaaY8GC852GAgmR02k8/1j
m718e5W163zKnTRF12BceJWG1dTrhiZWZOvNZEkDIvE1zk5BNps+9U1LVLXz
ommo93lTrzKRStLctFyXoOV801DvTean1NKglstsQl3NZvQmPU3d3ZYz+iK7
pU1IIjSfLItsQJKrrAZjIZ0tsT5RN62jN0vhiW12tygqG1tLC0czmRT01aYq
PpNA74rZcpsNmmJNQq6YDWias2zKZGqZzLTiblYsiVObLYkTGmmbVXXnaU1T
p8fqilppmUVqULjsSuqN2eWuaApi+Nt6icVVmjOF9BTJ6nkg31j4fFXOiLmc
+wLHQlPPNlP09S/n+j5r09C2QqMHuNvF3J0bZ0M2Zz+pWPvoGd2/95NKoo/E
Lk6YJyPmCcsPxtm0su7EJXQm9sfE6wYOcPxIPuMOpjUdnBXNlsgYd4iFvGvK
jrm47IiwyRahp+lcK1c7e29edPSJpxYPkxirmDldPuyQTTUj7sWnplgWtznR
UEmBnjuw3XRRTD+pDAgTpZFc6BiZDUie3LtJsJkWTb25WbjXdXNHBzYtqNJl
u6a5LInvVvmngngyI2AC1ACpSl2TyO1LCae00hESJ69p2xXNbSGzYjQUxpn9
SPuzkAWY1dyNy33LC+ukjZZolWO30kvGV0TTtpZdRE+1Be8t2uIDIh8dpgMj
FvFmeVNW+TJiCN3RxYwo9iPomQiZudJDRQw1RnCo7YoVJp3TFoVwyStHwqTE
ilPTvQnyyrOoIX4oiAeyejrNsSVVtLCcceAUggH1jOV62SayBht6Rt/RKm/K
lvlmUnR3RSx0ePYQA/QwkV9lGxHBBAZxWt505XSzzBvdbjQuWppWyVO3xPNY
dJB2UqCXSGR1QmB7h6h1LYtTCpvr4EH5fNlyz7bRIimX9aSc+91SLutJOfeQ
lHsXCSJtg6T9lOfsl5mHPJspG5fRYUGM2BR0rLUdGIE2bTGb5NNPtEKy/Nus
XpcV+j3A78XnfLWGCDSR4oTMd/Q8bYqWjosmLMs6Xx36JzMSDKQeEPuEbVnP
XSxq7mjlC+64JUyN2X3xhTLbaUPCpKNzBmR+qZuCENB7El/YyiBrPrstW9/7
PF+VBDibSITSHqBDdwmyXn93OsS/mDHov+6OYMHCH5R4HHS4IZlBD2Dq+GoG
+FuvVzJ2GdoQsr2mBb8tizunwhPCoJwWQ25+RhxWb1cmMGo6THS5iNdneTUV
IYvhT3nS2TUOnqpe1jdb/ullMadF4HfAlLSl2oJPMmqbfgHN6A2V+ypbG6yp
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
/+H+N0jrumpUuwAA

-->

</rfc>

