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


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

]>


<rfc ipr="trust200902" docName="draft-gondwana-dkim2-mailversion-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Email Modification Versioning">A method for describing changes to emails</title>

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


<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.</t>

<t>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>

<t>This method also captures hashes of important features of the message,
allowing validation that the changes were described correctly, and allowing
a signature which covers the Mail-Version header to, by extention, ensure
that the important content of the message is unchanged.</t>



    </abstract>



  </front>

  <middle>


<section anchor="background-and-motivations"><name>Background and motivations</name>

<t>Currently, when an email is sent with a DKIM signature, the message can go
through multiple forwarders and still be authenticated, however if a single
change is made to a header which is covered by the signature, or to the body,
then the signature no longer validates - and it's impossible for the receiver
to know what was changed, or even if the entire message was replaced.</t>

<t>By producing a way to describe changes, the recipient can examine the sections
which were changed and determine whether the change was malicious.  By undoing
the changes, it is possible to recreate a message which matches the original
signature, and hence provide accountability for the content which was present
in the copy of the message to which the signature was applied.</t>

</section>
<section anchor="the-mail-version-header-field"><name>The Mail-Version Header Field</name>

<t>This document describes an ordered set of header fields, each of
which describes the message at a specific version, along with
instructions on how to convert that version back to the previous
version.</t>

<t>To well formed, a message must have a monotonically increasing
set of Mail-Version header fields, with the first having mv=1
and each having an increasing integer number, with no gaps.</t>

<section anchor="mail-version-header"><name>Mail-Version Header</name>

<t>The format of the value is a tag-list.  Tag-lists contain key=value; key2=value2; - they can be wrapped,
and all whitespace is normalised to a single space.</t>

<t>TODO: we need to specify tag-list.</t>

<texttable>
      <ttcol align='left'>Tag</ttcol>
      <ttcol align='left'>Type</ttcol>
      <ttcol align='left'>Value</ttcol>
      <c>mv</c>
      <c>position</c>
      <c>Revision number (range: 1 to 100)</c>
      <c>h</c>
      <c>headerlist</c>
      <c>List of headers signed by the hh field.</c>
      <c>a</c>
      <c>hash-alg</c>
      <c>Hash Algorithm used (at least sha256 must be supported); used for hh, bh and ph</c>
      <c>hh</c>
      <c>base64</c>
      <c>Header Hash for the named headers, using the 'relaxed' header algorith from <xref target="DKIM"/></c>
      <c>bh</c>
      <c>base64</c>
      <c>Body Hash, using the 'relaxed' body algorithm from <xref target="DKIM"/></c>
      <c>ph.n.m</c>
      <c>base64</c>
      <c>Hash for the binary representation of the numbered mime part, after removal of any content-transfer-encoding (this is the data returned by <spanx style="verb">FETCH BINARY[n.m]</spanx> as described in <xref target="IMAP"/> section 7.5.2)</c>
      <c>b</c>
      <c>body-recipe</c>
      <c>Recipe to replicate the previous version of the message body</c>
      <c>h.header</c>
      <c>head-recipe</c>
      <c>Recipe to replicate the previous version of the named header field</c>
</texttable>

<t>TODO: do we want to add 'bh.n.m' to hash the un-decoded body of individual MIME parts,
and hh.n.m to hash the headers of the MIME part as well?</t>

</section>
<section anchor="body-recipe"><name>body-recipe</name>

<t>The Body Recipe is a comma separated list of instructions.  Each instruction starts with a
prefix.  Commas can be followed by optional whitespace.</t>

<t>The presence of a recipe replaces the previous value, so the tag-value <spanx style="verb">b=</spanx> creates an empty body, while the tag-value <spanx style="verb">b=b:</spanx> creates a message with a single blank line for the body.</t>

<texttable>
      <ttcol align='left'>Prefix</ttcol>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Action</ttcol>
      <c>c:</c>
      <c>start-end</c>
      <c>Copy the lines (inclusive) numbered from 1.  E.g. "c:1-3" copies the first three lines.</c>
      <c>b:</c>
      <c>base64</c>
      <c>Decode the base64 to get the value of a line to insert.  The base64 value does NOT include the trailing CRLF, which must be added at the end of the line, hence "b:" means insert an empty line, and "b:SGVsbG8=" inserts the line "Hello".</c>
      <c>z</c>
      <c>none</c>
      <c>If present, says that changes have been made to the body which can not be described to get back to the earlier version, meaning the signing system takes accountability for the full content.</c>
</texttable>

</section>
<section anchor="header-recipe"><name>header-recipe</name>

<t>The Header Recipe is a comma separated list of instructions.  Each instruction starts with a
prefix.  Commas can be followed by optional whitespace.</t>

<t>While key names are case insensitive, implementations SHOULD create the header with the same
case as the key.</t>

<t>The presence of a recipe removes every instance of the named header field before applying the recipe,
so the tag-value <spanx style="verb">h.foo=</spanx> removes all instances of Foo from the message.</t>

<texttable>
      <ttcol align='left'>Prefix</ttcol>
      <ttcol align='left'>Value</ttcol>
      <ttcol align='left'>Action</ttcol>
      <c>c:</c>
      <c>start-end</c>
      <c>Copy the values of the header-fields with the indexes, numbered from 1 and starting at the bottom;</c>
      <c>b:</c>
      <c>base64</c>
      <c>Decode the base64 to get the value of a header field to insert. The base64 value does NOT include the trailing CRLF, which must be added at the end of the line, hence "b:" means insert a header-field with an empty value.</c>
      <c>z</c>
      <c>none</c>
      <c>If present, says that changes have been made to the named header field which can not be described to get back to the earlier version, meaning the signing system takes accountability for the full content of this message.</c>
</texttable>

<t>NOTE: the headers are inserted from the bottom, i.e. prepended to the message in the order that they are named.</t>

<t>e.g. given a message with headers:</t>

<figure><artwork><![CDATA[
Foo: three
Foo: two
Foo: one
]]></artwork></figure>

<t>And the recipe: <spanx style="verb">h.Foo=c:1-1,b:Zm91cg==,c:2-3</spanx></t>

<t>The output will be:
~~~
Foo: three
Foo: two
Foo: four
Foo: one
~~~</t>

</section>
<section anchor="examples"><name>Examples</name>

<t>Example for a message which has had Subject and From replaced,
and Reply-To added.</t>

<figure><artwork><![CDATA[
From: brong@fastmailteam.com.dmarc.fail
To: dkim2@lists.ietf.org
Reply-To: dkim2@lists.ietf.org
Mail-Version: mv=2;
 h.Subject=b:QSByZXBsYWNlbWVudCBmb3IgREtJTQ==;
 h.From=b:YnJvbmdAZmFzdG1haWx0ZWFtLmNvbQo=;
 h.Reply-To=
]]></artwork></figure>

<t>Example:</t>

<figure><artwork><![CDATA[
Mail-Version: mv=3; b=c:1-500,c:520-520
]]></artwork></figure>

<t>Example - a URL was substituted in the content of the body (complex, but still
easily doable!)</t>

<figure><artwork><![CDATA[
Mail-Version: mv=4;
 b=c:1-500,
   b:PGEgaHJlZj0iaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iPkV4YW1wbGU8L2E+Cg==,
   c:501-702
]]></artwork></figure>

<t>It is expected that 'c' will normally be used to copy lines directly from
the new message, however in cases where a message needs to transit 7 bit systems
cleanly, the email modifier may need to re-encode the octets of the original message,
and this allows for doing so, albeit at some expense in header bloat!</t>

</section>
</section>
<section anchor="iterative-application"><name>Iterative application</name>

<t>To get back to the original message and confirm that it was unchanged, it is necessary
to apply this algorith iteratively.</t>

<t>For example if you receive a message for which there is a modification to the
headers at <spanx style="verb">mv=3</spanx> and a modification to both headers and body at <spanx style="verb">mv=2</spanx>, to recreate the
original message you would first apply the header changes from <spanx style="verb">mv=3</spanx>, then apply the
header and body changes for <spanx style="verb">mv=2</spanx>.  If this doesn't create a message which validates
with the initial <spanx style="verb">mv=1</spanx> hash, then some hop has corrupted the message.</t>

</section>
<section anchor="security"><name>Security</name>

<t>Since a Mail-Version header can be used to recreate any email content, implementations
need to be aware that this could be used to bypass security checks, and passing the
generated message to a parser could expose it to content that would otherwise be blocked
by earlier security checks, e.g. the base64 output could generate 8 bit content or NULL
bytes that would otherwise be blocked by a simple filter.</t>

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

<t>IANA is requested to add to the Permanent Message Header Field Names registry
the following record.</t>

<t><list style="symbols">
  <t>Header Field Name: Mail-Version</t>
  <t>Template:</t>
  <t>Protocol: mail</t>
  <t>Status: standard</t>
  <t>Trace: no</t>
  <t>Reference: this document</t>
</list></t>

</section>


  </middle>

  <back>


    <references title='Normative References'>



<reference anchor='DKIM'>
  <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='IMAP'>
  <front>
    <title>Internet Message Access Protocol (IMAP) - Version 4rev2</title>
    <author fullname='A. Melnikov' initials='A.' role='editor' surname='Melnikov'/>
    <author fullname='B. Leiba' initials='B.' role='editor' surname='Leiba'/>
    <date month='August' year='2021'/>
    <abstract>
      <t>The Internet Message Access Protocol Version 4rev2 (IMAP4rev2) allows a client to access and manipulate electronic mail messages on a server. IMAP4rev2 permits manipulation of mailboxes (remote message folders) in a way that is functionally equivalent to local folders. IMAP4rev2 also provides the capability for an offline client to resynchronize with the server.</t>
      <t>IMAP4rev2 includes operations for creating, deleting, and renaming mailboxes; checking for new messages; removing messages permanently; setting and clearing flags; parsing per RFCs 5322, 2045, and 2231; searching; and selective fetching of message attributes, texts, and portions thereof. Messages in IMAP4rev2 are accessed by the use of numbers. These numbers are either message sequence numbers or unique identifiers.</t>
      <t>IMAP4rev2 does not specify a means of posting mail; this function is handled by a mail submission protocol such as the one specified in RFC 6409.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='9051'/>
  <seriesInfo name='DOI' value='10.17487/RFC9051'/>
</reference>




    </references>



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

<section anchor="draft-gondwana-dkim2-mailversion-00"><name>draft-gondwana-dkim2-mailversion-00</name>

<t><list style="symbols">
  <t>Rename this draft to "mailversion".</t>
  <t>Rename the header field to 'Mail-Version'</t>
  <t>Change 'v=' to 'mv=' so it matches DKIM2-Signature and doesn't confuse protocol versions</t>
  <t>Removed 't:' optional fields entirely.</t>
  <t>Added ha= to select the hash algorithm and documentation about how the hashes are calculated</t>
  <t>Renamed bin.partspec to ph.partspec for "part hash" and described it with reference to IMAP.</t>
  <t>Added security considerations</t>
  <t>Added IANA considerations</t>
</list></t>

</section>
<section anchor="draft-gondwana-dkim2-modification-algebra-03"><name>draft-gondwana-dkim2-modification-algebra-03</name>

<t><list style="symbols">
  <t>Rename header to 'MailVersion'</t>
  <t>Remove all requirements that it integrates with DKIM2.</t>
  <t>Add body hash and per-mime-part hashes (NOTE: this is a bunch of extra calculation, so
definitely to discuss)</t>
</list></t>

</section>
<section anchor="draft-gondwana-dkim2-modification-algebra-02"><name>draft-gondwana-dkim2-modification-algebra-02</name>

<t><list style="symbols">
  <t>change the header format to have unique keys, making it fit the ABNF for these types
of headers.</t>
  <t>allow easier editing of multi-value headers by always popping the first header and
always prepending newly added headers.</t>
  <t>change body to use d.0, d.1, etc with the program in the value, so that the program
ordering is reliable regardless of the parser used to read the header.</t>
</list></t>

</section>
<section anchor="draft-gondwana-dkim2-modification-algebra-02-1"><name>draft-gondwana-dkim2-modification-algebra-02</name>

<t><list style="symbols">
  <t>change to using line numbers rather than octet offsets</t>
  <t>remove d= base64 decoding capability</t>
  <t>for multiple lines; require a separate b= or t= for each line</t>
</list></t>

</section>
<section anchor="draft-gondwana-dkim2-modification-algebra-01"><name>draft-gondwana-dkim2-modification-algebra-01</name>

<t><list style="symbols">
  <t>rename 'DKIM2-Diff' headers to 'DKIM2-Delta'</t>
  <t>add 'z=y' option to DKIM2-Delta-Body for "complete replacement"</t>
  <t>add d= base64 decoding option to DKIM2-Delta-Body</t>
</list></t>

</section>
<section anchor="draft-gondwana-dkim2-modification-algebra-00"><name>draft-gondwana-dkim2-modification-algebra-00</name>

<t><list style="symbols">
  <t>original version</t>
</list></t>

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

</section>
</section>


  </back>

<!-- ##markdown-source:
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

-->

</rfc>

