Internet DRAFT - draft-klensin-email-for-clause

draft-klensin-email-for-clause







Network Working Group                                       J.C. Klensin
Internet-Draft                                              24 July 2022
Intended status: Informational                                          
Expires: 25 January 2023


           Issues with the SMTP/IMF 'for' Clause and Remedies
                   draft-klensin-email-for-clause-00

Abstract

   The "for" clause of the "Received:" header field goes back to the
   first widely deployed version of SMTP (RFC 821).  However SMTP also
   allows multiple-recipient messages to be transmitted in a single mail
   transaction.  The combination may, in some cases, lead to undesirable
   disclosure of information, including disclosing mail addresses that
   were intended to be kept hidden from other recipients.  In the
   process of working on revisions to RFC 5321 and developing a new
   Applicability Statement in the EMAILCORE WG, there have been attempts
   to fix the problems by find-tuning text about actions and warnings.
   This document is an attempt to explore the issues in somewhat more
   depth for members of the community who are, or should be,
   participating in the WG.

Status and Audience

   This document is intended for discussion during the scheduled
   2022-07-26 meeting of the EMAILCORE WG.  It is being posted in
   Internet-Draft form rather than simply to the WG mailing list because
   it addresses issues outside the WG's scope that might be of interest
   to the community in the future.  It is not expected to evolve into a
   Standards Track document in it current form and may be abandoned
   after IETF 114.  In conjunction with those characteristics, it is
   written very informally.

   The current version assumes familiarity with the current versions of
   the specs being developed in that WG [rfc5321bis][rfc5322bis]
   [email-as].

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.



Klensin                  Expires 25 January 2023                [Page 1]

Internet-Draft             SMTP/IMF for Clause                 July 2022


   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on 25 January 2023.

Copyright Notice

   Copyright (c) 2022 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) in effect on the date of publication of this document.
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.  Code Components
   extracted from this document must include Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Issues and the Problem  . . . . . . . . . . . . . . . . . . .   3
     2.1.  History . . . . . . . . . . . . . . . . . . . . . . . . .   3
     2.2.  Status as of draft-ietf-emailcore-rfc5321bis-11
           ("rfc5321bis" below) and draft-ietf-emailcore-as-05 (the
           "Applicability Statement" or "A/S" below) . . . . . . . .   4
   3.  Edge Cases, Elephants in the Room, and Other Technical
           Complications . . . . . . . . . . . . . . . . . . . . . .   4
   4.  Some Options  . . . . . . . . . . . . . . . . . . . . . . . .   7
     4.1.  Time to Give Up . . . . . . . . . . . . . . . . . . . . .   7
     4.2.  Deprecate It in the Applicability Statement Instead . . .   7
     4.3.  Prohibit "for" in SMTP Without Discarding It In Message
           Submission  . . . . . . . . . . . . . . . . . . . . . . .   8
     4.4.  Fine-tuning Example . . . . . . . . . . . . . . . . . . .   8
   5.  Acknowledgments . . . . . . . . . . . . . . . . . . . . . . .   9
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   9
   7.  Security Considerations . . . . . . . . . . . . . . . . . . .   9
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   9
     8.1.  Consolidated References (temporary) . . . . . . . . . . .   9
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .  10








Klensin                  Expires 25 January 2023                [Page 2]

Internet-Draft             SMTP/IMF for Clause                 July 2022


1.  Introduction

   The "for" clause of the "Received:" header field goes back to the
   first normative version of SMTP (usually known just as "RFC 821"
   [RFC0821]).  However SMTP also allows multiple-recipient messages to
   be transmitted in a single mail transaction.  The combination may, in
   some cases, lead to undesirable disclosure of information, including
   disclosing mail addresses that were intended to be kept hidden from
   other recipients.  In the process of working on revisions to RFC 5321
   [rfc5321bis] and developing a new Applicability Statement [email-as]
   in the EMAILCORE WG [EMAILCORE-wg], there have been attempts to fix
   the problems by find-tuning text about actions and warnings.  This
   document is an attempt to explore the issues in somewhat more depth
   for members of the community who are, or should be, participating in
   the WG.

   Because some of the changes it suggests as possibilities might change
   the syntax of the "for" clause, syntax currently defined in the
   Internet Message Format (IMF, Mail Headers) document [rfc5322bis],
   that document or its successors could, in principle, be affected as
   well.

   While it may suggest paths that might lead to normative
   specifications, this document is not intended to contain any
   normative language and any text that appears to be normative is a
   result of haste in writing and should not be interpreted that way.

2.  Issues and the Problem

2.1.  History

   Section 4.1.2 of the Internet Standard SMTP protocol [RFC0821],
   defines the "for" clause as an optional part of the <time-stamp-line>
   (aka the "Received:" header field, later known as a "trace field").
   It allows only one argument, a <path>, which, with later
   modifications, became a mailbox name.  It also allowed only one "for"
   clause in a "Received:" header field.  However, it also allows
   multiple RCPT commands in a mail transaction.  It does not specify
   when "for" should or should not be supplied nor which mailbox name
   should be used (i.e., which RCPT command is more important than the
   others).  We can look at that today and say "whatever were they (or
   was he) thinking?", but, a month short of forty years later, that
   question would be a bit late.  For most of those forty years, or at
   least the first half of them, the ambiguity was not seen as causing
   harm.






Klensin                  Expires 25 January 2023                [Page 3]

Internet-Draft             SMTP/IMF for Clause                 July 2022


   Skipping over some intermediate documents, the current spec in
   general use, RFC 5321 [RFC5321], is somewhat more specific.  Its
   section 4.4 includes:

   |  If the FOR clause appears, it MUST contain exactly one <path>
   |  entry, even when multiple RCPT commands have been given.  Multiple
   |  <path>s raise some security issues and have been deprecated, see
   |  Section 7.2.

   And then Section 7.2 discusses "blind copies" and the possible
   advantages of sending such copies as separate mail transactions with
   only a single RCPT command each.  It also reinforces the principle
   that there should be "no more than one mailbox" in the "for" clause
   of a "Received" mail header field and urges that other information
   not supply more than one address either.  Its description avoids
   telling implementers what they should do, only what they should
   avoid.

2.2.  Status as of draft-ietf-emailcore-rfc5321bis-11 ("rfc5321bis"
      below) and draft-ietf-emailcore-as-05 (the "Applicability
      Statement" or "A/S" below)

   In an attempt to better deal with the problem, the last sentence in
   the current version of rfc5321bis [rfc5321bis] contains the sentence:

   |  Also, the optional FOR clause should be supplied with caution or
   |  not at all when multiple recipients are involved lest it
   |  inadvertently disclose the identities of 'blind copy' recipients
   |  to others.

   That still does not say very much and its meaning in various edge
   cases may be subject to interpretation.  That is uncomfortable, but
   it may be hard to do much better without getting severely tangled up
   in those edge cases (see the next Section).  The WG has also reached
   consensus that whatever detailed explanation of the "for" clause is
   needed (presumably including discussion of the edge cases) will be
   included in the Applicability Statement [email-as] rather than in
   rfc5321bis, but there is no clear agreement yet about exactly what
   that other document should say.

3.  Edge Cases, Elephants in the Room, and Other Technical Complications

   While numbered, the issues below are not in any particular order and
   may not be completely separable.

   (1)  In the Internet most of us deal with most of the time,
        connectivity is very good and most of the email is handled by a
        few large providers.  Many of those providers have their own



Klensin                  Expires 25 January 2023                [Page 4]

Internet-Draft             SMTP/IMF for Clause                 July 2022


        infrastructure and are not dependent on the SMTP relay
        mechanisms defined in RFC 821 and subsequent specifications.  We
        have strongly discouraged so-called "open relays" (relay MTAs
        that have no administrative relationship with either the
        originating or delivery systems), but that does not mean that
        mail necessarily moves from a collection of originating systems
        (starting with an MUA and sometimes a submission server)
        controlled by one entity to a collection of receiving ones
        (including the one that makes "final delivery" to either a
        mailbox, a gateway into some other environment, or the
        equivalent).  For example, a destination system might contract
        with an independent third party provider to relay mail as a so-
        called "backup MX".  Unless specified by the contract or in
        other ways, that does not make that third party part of the
        administrative domain of the recipient, at least as we usually
        think of those terms.  Changing SMTP to ignore or exclude those
        other cases would, at least in my opinion, make the
        specification more confusing and less generally applicable and
        the Internet worse.

   (2)  With regard to that "for" clause, it may be worth remembering
        that SMTP has no mechanism for specifying or determining which
        RCPT command is more important than others (for example, RFC 821
        could easily have made the first one, or the first one that was
        accepted, primary, but did not).  Whatever heuristics we might
        invent notwithstanding, in many cases, the only computer
        entities that really know what mailbox should be exposed in the
        "for" clause are the MUA and maybe the Submission system.  We
        given them permission to do things "ordinary" MTAs are
        prohibited from doing and even require that they do such things
        in order to ensure conceptual message integrity and conformance
        with standards.  Both are, fwiw, out of scope for EMAILCORE and
        we have never required a simple first-hop SMTP server to conform
        to Submission server rules or allowed it the same flexibility.

   (3)  We do allow an MTA to take a message that comes to it with
        multiple RCPT commands, break it apart, and send out separate
        messages in separate mail transactions.  That is essentially
        required when the RCPT commands it receives contain different
        domains that resolve to different MX record collections (or at
        least the preferred server for the next hop), but it is clearly
        allowed for other cases, and, in rfc5321bis section 7.2, we
        encourage it for cases involving "bcc"s where the server knows
        what is going on.  But there may be cases where MTAs might want
        to recombine things as well as splitting them apart.






Klensin                  Expires 25 January 2023                [Page 5]

Internet-Draft             SMTP/IMF for Clause                 July 2022


        As an extreme example, suppose there were a relay at the
        boundary between the high-speed and well-connected part of the
        Internet and a part of the network that involves intermittent
        connections, long delays, and expensive bandwidth (if an example
        is needed, think Mars or something further out).  That situation
        implies that it should have, and carefully curate, mail queues,
        at least somewhat organized around the availability of
        particular destinations (or appropriate intermediaries in their
        direction).  So it receives two messages (different mail
        transactions in the same or different SMTP sessions), each of
        which has one RCPT command, and the arguments to those commands
        have the same target domains.  Given what we seem to be telling
        the servers in the path up to that point, it is entirely
        reasonable for the trace fields in those messages to contain
        "for" clauses that identify the (only) recipient address.
        However, because bandwidth and transaction time are important
        for that relay, it checks the Message-IDs, discovers that they
        are identical, and then maybe goes on to verify that the message
        bodies are bit-for-bit identical.  There might be other cases,
        but the most obvious one is a message that left a Submission
        server with multiple recipients (RCPT commands in the same mail
        transaction) but was broken into separate mail transactions
        along the line.  Ignoring the widely-abused rule against MTAs
        looking at headers to figure out what to do (see rfc5321bis
        Section 3.6), I don't think there is anything in rfc5321bis (or
        5321 itself) that prohibits it from re-combining those messages
        and sending them out in a single mail transaction with multiple
        RCPT commands.  I can imagine some interesting choices if the
        messages took different paths reaching it where recombining
        might do a real job on signatures over the message headers, but
        that is getting far afield.  Now, if we discourage inserting a
        "for" clause when one receives mail transactions with multiple
        RCPT commands, no more "for" clauses are going to get added, at
        least prior to the delivery server.  But the privacy damage is
        already done because earlier servers in the path have already
        inserted "for" clauses that, with a little bad luck, could
        disclose bcc recipients.

   (4)  As far as I can tell, the only MTAs who may actually have the
        information needed to "understand" what should should go into
        the "for" clause (or if it should be provided) are the
        submission server and the delivery MTA.  The submission server
        at least knows that it is a submission server.  In many cases,
        the delivery MTA might not actually know whether it is in that
        role or just thinks it is.






Klensin                  Expires 25 January 2023                [Page 6]

Internet-Draft             SMTP/IMF for Clause                 July 2022


   Snark: If, by now, readers are not either suffering from bad
   headaches or muttering things about cans of worms, this document may
   be failing in its intent.

4.  Some Options

   Note: Before considering the subsections below (and variations on
   them) in context with rfc5321bis, remember or review the very limited
   type of changes that can be made, relative to prior specs, in
   bringing a document to Internet Standard [RFC2026] [RFC6410].  Some
   of what follows might be consistent with those requirements; some
   others clearly are not.  Also note that at least one of them is
   clearly out of scope for EMAILCORE even if it required a syntax
   change in rfc5321bis/rfc5322bis (and it is not clear whether the
   syntax change would be allowed while going to Internet Standard).

4.1.  Time to Give Up

   We could conclude that, because of under-specification going back at
   least to RFC 821 and the complexities of the modern world (including
   but certainly not limited to privacy considerations) the "for" clause
   has outlived its usefulness.  Deprecating it would require an
   explanation in rfc5321bis but, otherwise, would just require removing
   some syntax and assorted clumsy explanations.

   One of several problems with this approach is that I gather there are
   people out there who think it is useful (that includes myself on some
   days).  Probably there are enough of them that some implementations
   would ignore the prohibition and then we would have no guidance at
   all (I don't see how the Applicability Statement could include an
   extensive discussion of a feature that rfc5321bis had discarded,
   presumably with its own Deprecated, Obsolete, or "NOT RECOMMENDED"
   text).

4.2.  Deprecate It in the Applicability Statement Instead

   Leave the text in rfc5321bis alone, plus or minus minor tuning (see
   Section 4.4 below) and push this entirely onto the Applicability
   Statement, including (presumably in a battle to be fought later) the
   possibility of a careful explanation of why the "for" clause has
   become more trouble than it is worth and is NOT RECOMMENDED
   regardless of what rfc5321bis appears to say.

   Same comments as above about people who may think the feature is
   useful.  Also, slipping on my hat as nominal co-author of the A/S for
   a moment, I really hope we don't dump such baggage there.





Klensin                  Expires 25 January 2023                [Page 7]

Internet-Draft             SMTP/IMF for Clause                 July 2022


4.3.  Prohibit "for" in SMTP Without Discarding It In Message Submission

   Modify the Submission spec [RFC6409] to include more information
   about when a Submission server should, or should not, provide a "for"
   clause (even if nominally in the "Received:" header field associated
   with the message it received) and what should be in it.  Ideally,
   allow some additional/special syntax to distinguish between "just did
   not include one of those" (since providing one probably cannot be
   required) and "'for' clause deliberately omitted".

   Then leave the syntax (or include the new syntax) in rfc5321bis but
   indicate that SMTP MTAs SHOULD NOT (or maybe even MUST NOT) insert
   the "for" clause.  That eliminates the insertion of a "for" clause by
   the delivery server, but maybe "Apparently-to:" (despite being
   explicitly deprecated in RFC 5321 (and, so far, rfc5321bis)) and/or
   "Delivered-to:" [RFC9228] or some successor are better solutions to
   whatever the actual requirement is at that point.

   Possibly the existing text in rfc5321bis that would be left after
   removing a good deal of handwaving ought to be modified as well.  Or
   not.

4.4.  Fine-tuning Example

   In an offlist conversation, Alexey proposed changing the current text
   in rfc5321bis (see Section 2.2 above) to approximately:

   |  Also, the optional FOR clause should not be supplied when the same
   |  message body is sent, in the same mail transaction, to multiple
   |  recipients in order not to inadvertently disclose the identities
   |  of "blind copy" recipients to others.

   While this does not cover all of the cases above, it may still be an
   improvement by virtue of being (at least apparently) less ambiguous.
   On the other hand, it does not cover all cases and hence does not
   completely protect against "for" clauses that inadvertently disclose
   information.

   So:

   1.  Independent of any of the other options (other than those that
       would remove the subject text entirely), does the WG believe
       that, on balance, this (or something like it) would be an
       improvement?

   2.  Is it good enough or does it, or that section, or the sections
       that refer to it, need additional tuning?




Klensin                  Expires 25 January 2023                [Page 8]

Internet-Draft             SMTP/IMF for Clause                 July 2022


5.  Acknowledgments

   Thanks to Alexey Melnikov, EMAILCORE co-chair, for finally getting me
   to the point where it became obvious (at least to me) that this
   document was needed.

6.  IANA Considerations


   // RFC Editor: Please remove this section before publication.

   This memo includes no requests to or actions for IANA.

7.  Security Considerations

   Once we decide what to do with the notes above, it will be possible
   to describe their security implications.  On the other hand, there is
   a sense in which the entire conversation about the "for" clause is
   about privacy and prevention of unwanted disclosures of information.

8.  References

8.1.  Consolidated References (temporary)

   [email-as] Klensin, J.C., Murchison, K., and E. Sam, "Applicability
              Statement for IETF Core Email Protocols", 23 May 2022,
              <draft-ietf-emailcore-as-05>.

   [EMAILCORE-wg]
              IETF, "Revision of core Email specifications (emailcore)",
              2022, <https://datatracker.ietf.org/wg/emailcore/about/>.

   [RFC0821]  Postel, J., "Simple Mail Transfer Protocol", RFC 821,
              DOI 10.17487/RFC0821, STD 10, August 1982,
              <https://www.rfc-editor.org/info/rfc821>.

   [RFC2026]  Bradner, S., "The Internet Standards Process -- Revision
              3", BCP 9, RFC 2026, DOI 10.17487/RFC2026, October 1996,
              <https://www.rfc-editor.org/info/rfc2026>.

   [RFC5321]  Klensin, J., "Simple Mail Transfer Protocol", RFC 5321,
              DOI 10.17487/RFC5321, October 2008,
              <https://www.rfc-editor.org/info/rfc5321>.

   [rfc5321bis]
              Klensin, J.C., "Simple Mail Transfer Protocol", 9 July
              2022, <draft-ietf-emailcore-rfc5321bis-12>.




Klensin                  Expires 25 January 2023                [Page 9]

Internet-Draft             SMTP/IMF for Clause                 July 2022


   [rfc5322bis]
              Resnick, P., "Internet Message Format", 4 April 2022,
              <draft-ietf-emailcore-rfc5322bis-03>.

   [RFC6409]  Gellens, R. and J. Klensin, "Message Submission for Mail",
              RFC 6409, DOI 10.17487/RFC6409, STD 72, November 2011,
              <https://www.rfc-editor.org/info/rfc6409>.

   [RFC6410]  Housley, R., Crocker, D., and E. Burger, "Reducing the
              Standards Track to Two Maturity Levels", BCP 9, RFC 6410,
              DOI 10.17487/RFC6410, October 2011,
              <https://www.rfc-editor.org/info/rfc6410>.

   [RFC9228]  Crocker, D., Ed., "Delivered-To Email Header Field",
              DOI 10.17487/RFC9228, RFC 9228, April 2022,
              <https://www.rfc-editor.org/info/rfc9228>.

Author's Address

   John C Klensin
   1770 Massachusetts Ave, Ste 322
   Cambridge, MA 02140
   United States of America
   Email: john-ietf@jck.com



























Klensin                  Expires 25 January 2023               [Page 10]