<?xml version="1.0" encoding="utf-8"?>
<!-- 
     draft-crocker-dkor-00
  
     Documentation is at https://authors.ietf.org/en/templates-and-schemas
-->

<?xml-model href="rfc7991bis.rnc"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>



<!DOCTYPE rfc [
  <!ENTITY nbsp "&#160;">
  <!ENTITY zwsp "​">
  <!ENTITY nbhy "‑">
  <!ENTITY wj "⁠">
]>


<rfc
  xmlns:xi="http://www.w3.org/2001/XInclude"
  category="std"
  docName="draft-crocker-dkor-00"
  ipr="trust200902"
  obsoletes=""
  updates=""
  submissionType="IETF"
  xml:lang="en"
  version="3">

  <front>
    <title abbrev="DKOR">DomainKeys Originator Recipient (DKOR)</title>

    <seriesInfo name="Internet-Draft" value="draft-crocker-dkor-00"/>
    
    <author fullname="Dave Crocker" initials="D" surname="Crocker">
      <organization>Brandenburg Internetworking</organization>
      <address>
        <email>dcrocker@bbiw.net</email>
        <uri>https://bbiw.net</uri>
      </address>
    </author>
    
    <date year="2025"/>

    <area>General</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <!-- "Internet Engineering Task Force" is fine for individual submissions.  If this element is 
          not present, the default is "Network Working Group", which is used by the RFC Editor as 
          a nod to the history of the RFC Series. -->
    <keyword>email</keyword>
    <keyword>DKIM</keyword>
    <keyword>DKIM replay</keyword>
    <abstract>
      <t>DKIM associates a domain name with a message stream, using cryptographic methods, to permit reliable and accurate reputation-oriented analysis of the stream. It is possible for an authorized user to conspire for additional distribution of a message, leveraging the domain name reputation for promoting spam. This is called DKIM Replay. DKOR defines a means of limiting that ability, by associating original addressing information with the message's DKIM signature, to detect distribution beyond the intended recipient. DKOR uses existing DKIM services and only requires implementation of the additional DKOR requirements by the signer and any receiving site wishing to participate in DKOR services.  Other DKIM receivers can process the same DKIM signature without knowledge of DKOR.</t>
    </abstract>
  </front>
  
  <middle>
    <section>
      <name>Introduction</name>
      <t>DKIM <xref target="RFC6376"/> associates a domain name with a message stream, using cryptographic methods, to permit reliable and accurate reputation-oriented analysis of the stream. Each message in the stream has a DKIM digital signature attached to it, using the domain name.  Receiving sites can then develop a reputation analysis for messages in that stream, without concern that a message was created by an unauthorized actor.</t>
      
      <t>However, it is possible for an authorized user of a platform, which is signing messages with a domain name, to conspire for additional distribution of a message, beyond the set of recipients that were included at the time of original posting.  The message goes through an additional platform, which then redistributes the message, while preserving the original DKIM signature. Reception and delivery of the message to these additional recipients is aided by the reputation of the domain name used in the DKIM signature.  This capability can, therefore, be used for spamming. This is called DKIM Replay.</t>
      
      <t>Ideally, authorized users of a platform are subject to sufficient controls and accountability, so their likelihood -- or even ability -- to effect this abuse is severely limited.  Unfortunately, operational realities on some platforms do no achieve such control. There is therefore a need for a mechanism that can be added to aid email transit handling, to detect DKIM Replay and facilitate differential handling of such messages.</t>
      
      <t>Extensive community discussion converged on the view that a useful line of effort, for enabling this detection, is to include the email envelope address (e.g., SMTP RCPT-TO) <xref target="RFC5321"/> as part of the DKIM hash calculation.  There is also interest in similarly encoding the email envelope notification return address (e.g., SMTP MAIL FROM), with the view that this might be helpful in efforts to limit use of the return 'channel' as a spamming path, called backscatter. </t>
      
      <dl newline="true">
      <dt>[ Note:  </dt>
      <dd>Including the return address needs a more complete explanation. I gather it is for backscatter control, but am not clear on how it will get used to achieve that.  So it's inclusion here is as a placeholder, pending further text. /d ]</dd>
      </dl>
      
      <t>Domain Keys Originator Recipient (DKOR) defines such a mechanism, using existing DKIM services and only requiring implementation of the additional DKOR requirements by the signer and any receiving site wishing to participate in DKOR services.  Other DKIM receivers can process the same DKIM signature without knowledge of DKOR.</t>
      
      <dl newline="true">
      <dt>Note:  </dt>
      <dd>Reference to SMTP in this document is strictly informative. Nothing in this specification is dependent upon the specific email transport service details, other than being able to obtain recipient and return address information.<xref target="RFC5598"/>  The means for obtaining these is outside the scope of this specification.</dd>
      </dl>

      <section>
        <name>Requirements Language</name>
        <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 BCP 14
          <xref target="RFC2119"/>
          <xref target="RFC8174"/> when, and only when, they appear in
          all capitals, as shown here.
        </t>
      </section>
      
    </section>
    
    <section>
         <name>DKOR Design</name>
             <t>A message covered by DKOR is restricted to having a single recipient address.</t>

         <t>DKOR defines a use of DKIM, with the DKIM signature covering whatever other header fields it is normally used to cover. For DKOR, it also covers one header field that specifies the original recipient address, and another field that specifies the envelope notifications return address. The addresses in these fields are redundant with the addresses in their corresponding envelope fields/commands. </t>
         
         <t>The presence of either DKOR header field self-declares the use of DKOR.  Further there is no benefit in having the signer publish that it uses DKOR.</t>

         <t>The method(s) for obtaining envelope information, to be used by DKOR, are a matter of local implementation and are outside the scope of this specification.</t>

         <t>If the addresses in the fields match those in their corresponding envelope fields/commands, and the DKIM signature validates, then DKOR passes.  If either does not match, or the DKIM evaluation fails, then DKOR fails. </t>
         
         <t>Policies and actions that apply to the handling of messages that pass or fail DKOR are local matters for the evaluating service and are outside the scope of this specification. An example of challenges in determining the handling of a DKOR failure is that the failure can be the result of entirely legitimate reasons, such as a legitimate redistribution service that does not make changes to message content and only uses a new recipient address.  Failures can also occur due to the considerable vagaries of email handling idiosyncrasiesf.</t>
         
      <dl newline="true">
      <dt>Note:  </dt>
      <dd>The header fields used by this specification are independent of any other header fields that might contain the same addresses, in order to avoid any potential confusion about semantics or purpose.  Also the field names were chosen for obvious correspondence to their SMTP equivalent envelope fields/commands; however this specification has no dependence on SMTP and the values can come from whatever email transport service is being used.</dd>
      </dl>

         </section>

         <section>
         <name>Signing Behavior</name>

                <ol>
                <li>If the recipient address (e.g., RCPT TO) is to be protected, obtain that envelope address and place a copy of it into a RCPT-TO header field. <xref target="RFC5322"/></li>
                <li>If the return notices address (e.g., MAIL FROM) is to be protected, obtain that envelope) address and place a copy of it into a MAIL-FROM header field.</li>
                <li>DKOR permits either or both fields to be present; however the signature MUST cover both fields.</li>
                
                <li>Create a DKIM signature that includes both of these header fields.</li>
                </ol>

         </section>
         
         <section>
         <name>Evaluating Behavior</name>

         <ol>
         <li>If either of the DKOR header fields is present, then perform a DKOR evaluation.</li>
         <li>Obtain the two envelope address values used by DKOR.</li>
         <li>Compare the values to the corresponding DKOR header field values.</li>
         <li>If either value does not match, then DKOR fails.</li>
         <li>Perform a DKIM validation.</li>
         <li>If DKIM validation fails, then DKOR fails. </li>
            
         </ol>

         </section>


    <section anchor="IANA">
      <name>IANA Considerations</name>
      
      <section>
      <name>RCPT-TO Header Field</name>
      <t>IANA has added RCPT-TO to the "Permanent Message Header Field
   Names" registry (see <xref target="RFC3864"/>) for the "mail" protocol, using this
   document as the reference.</t>
      </section>
      
      <section>
      <name>MAIL-FROM header field</name>
      <t>IANA has added MAIL-FROM to the "Permanent Message Header Field
   Names" registry (see <xref target="RFC3864"/> for the "mail" protocol, using this
   document as the reference.</t>
      </section>
      
    </section>
    
    <section anchor="Security">

      <name>Security Considerations</name>
      
      <t>This specification defines a mechanism for detecting retransmission of a message, that sends it to additional addressees, while preserving a DKIM signature from its original posting.  The incremental security considerations are accuracy of creating and evaluating the two address fields defined here.</t>
      
               <t>As with other email assessment mechanisms and the heuristics they use, DKOR creates opportunities for false positives, which can produce hostile treatment of legitimate email.</t>

        <t>There are no other security considerations that result from using DKOR.</t>
    </section>

  </middle>
  
  <back>
  
    <references>
      <name>References</name>
      
      <references>
        <name>Normative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6376.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5322.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3864.xml"/>
        
      </references>
      
      <references>
        <name>Informative References</name>
        
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5321.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5598.xml"/>

      </references>
    </references>

    <section anchor="Acknowledgements" numbered="false">
      <name>Acknowledgements</name>
      
      <t>Extended discussions about DKIM Replay converged on the unpleasant necessity to have messages contain only one recipient in the envelope.  No alternative approach gained any traction.</t>
      
    </section>
  </back>
</rfc>
















