ietf-smtp
[Top] [All Lists]

Re: STARTTLS & EHLO: Errata text?

2009-01-29 12:28:50

If we were to write an Errata against RFC 3207, I'd suggest text such as
the following (in Errata format):

Section:
   4.2 Result of the STARTTLS Command

Old text:
   The server MUST discard any knowledge obtained from the client, such
   as the argument to the EHLO command, which was not obtained from the
   TLS negotiation itself.

New text:
   The server MUST discard any knowledge obtained from the client that
   was not obtained from the TLS negotiation itself. The server state
   is otherwise as if the connection had just been opened.

Reason:
   The example is misleading and has lead some people to think that
   knowledge of an EHLO having been sent previously should be
   remembered.

Section:
   4.2 Result of the STARTTLS Command

Old text:
   The client SHOULD send an EHLO command as the
   first command after a successful TLS negotiation.

New text:
   The client MUST send either an EHLO command or a HELO command as the
   first command after a successful TLS negotiation.

Reason:
   Since the state is reset to that of a connection having just been
   opened, the requirement from RFC 5321 applies:

        In any event, a client MUST issue HELO or EHLO before starting a
        mail transaction.

   The previous text implied that a client can get by without sending
   one or the either.

Section:
   4. The STARTTLS Command

Old text:
   The format for the STARTTLS command is:

   STARTTLS

   with no parameters.

New text:
   The format for the STARTTLS command is:

   STARTTLS

   with no parameters.

   Because the server state machine is reset to an initial connection
   state after negotiating TLS, and any modifications to the server
   state will be lost, the client SHOULD NOT issue any MAIL
   FROM or RCPT TO commands prior to using the STARTTLS command.


Now for the $64k questions:

1) Is there consensus behind this viewpoint?

2) If so, does the text above cover the ground?

3) If so, who wants to file the Errata?

        Tony Hansen
        tony(_at_)att(_dot_)com

John C Klensin wrote:


--On Thursday, January 29, 2009 10:09 -0500 Tony Hansen
<tony(_at_)att(_dot_)com> wrote:

If this is the interpretation that we gain consensus on, that
it means "start over from scratch", it might as well also say
that it

     SHOULD only be executed immediately after the initial EHLO.

The only possible exceptions to this rule would be for verbs
that don't affect the state machine, such as VRFY, EXPN, HELP,
NOOP.

RSET is also harmless immediately after EHLO.  Changing the
state from "session open (EHLO issued), no mail transaction
state" to "session open (EHLO issued), no mail transaction
state" is a no-op.  And the first paragraph of 4.1.1.5 of 5321
says that.

Out of context, I'm not sure exactly what you are suggesting
above, but I believe that it would mean:

    S: 220 ...
    C: EHLO ...
    S: 250-...
    S: 250-STARTTLS
    S: 250-...
    S: 250 OK
    C: STARTTLS  ...
    (TLS session starts)
    and the next command must be either EHLO
    or as many instances of any of VRFY, 
      EXPN, HELP, NOOP, RSET as desired, followed by EHLO

Also, the "what the server MUST (or SHOULD) discard and the
client MUST (or SHOULD) not depend on" sentences and example
might reasonably be modified to explicitly include any
information gained from VRFY or EXPN issued between the 220
greeting and the initial EHLO.  While one might not trust VRFY
or EXPN queries or results issued under TLS either, it would be
pointless and silly to send them before the initial EHLO if one
knew that one was going to issue STARTTLS if the server
permitted it.   Indeed the only reason for doing so would be if
one intended to make a decision about whether to continue with a
mail transaction at all based on the results of VRFY or EXPN...
and that would be very rare today except in special
circumstances.

      john


<Prev in Thread] Current Thread [Next in Thread>