ietf-smtp
[Top] [All Lists]

Re: New Issue: NOOP clarification

2007-11-29 16:32:17


John C Klensin wrote:

This is just my personal opinion, but if we add specific text to
deal with every clear violation of the existing standard text,
we will make 2821bis twice as long and add approximately zero
new information.  I don't particularly object to this change but
wonder where things end if we start down that path.

And, of course, if the "Microsoft ESMTP server" issued the 421
because it intended to shut the connection down, then not only
is the response valid but I think we would prefer it to
"ignoring the command" by sending a 250 and suppressing that
information.

John, I looked into this more, and I think I found how what is going on.

First the summary of all this:

Maybe simply this change to the last sentence of the NOOP command section is appropriate:

     If a parameter string is specified, servers MUST ignore the
     string as a reason for a 421 response. It MAY be used for
     logging purposes only.

Background:

What's going on that these specific ESMTP (Extended Server) are still following RFC 821 where there is ABNF or expecting for a NOOP string:

With RFC 821:

   4.1.  SMTP COMMANDS

         NOOP (NOOP)

            This command does not affect any parameters or previously
            entered commands.  It specifies no action other than that
            the receiver send an OK reply.

            This command has no effect on any of the reverse-path
            buffer, the forward-path buffer, or the mail data buffer.

   4.3.  SEQUENCING OF COMMANDS AND REPLIES

         NOOP
             S: 250
             E: 500, 421

Please note that in RFC821, the 421 is specifically stated for ALL commands. This is important when it comes to RFC 2821 because it is now removed and implied across all commands, and it adds ABNF for NOOP.

With RFC 2821 (same text in 2821bis):

   4.1.1.9 NOOP (NOOP)

     This command does not affect any parameters or previously entered
     commands.  It specifies no action other than that the receiver send
     an OK reply.

     This command has no effect on the reverse-path buffer, the forward-
     path buffer, or the mail data buffer and may be issued at any time.
     If a parameter string is specified, servers SHOULD ignore it.

     Syntax:
        "NOOP" [ SP String ] CRLF

   4.3.2 Command-Reply Sequences

     NOOP
        S: 250


So 421 is implied for real server critical shut down reasons in 2821 compliant servers across the board.

For 821 compliant servers, the 421 is appropiate for an unexpected NOOP string. No bug.

So in summary, you might want to consider these history real possibilities where there some innocent "bugs" to help codify 2821 expected behaviors, especially when the server indicated it is an EXTENDED SMTP (ESMTP) server. :-)

So maybe simply this change to the last sentence of the NOOP command section is appropriate:

     If a parameter string is specified, servers MUST ignore the
     string as a reason for a 421 response. It MAY be used for
     logging purposes only.

This will make it backward compatible and helpful to legacy programmers of 821 base logic that might want to revisit their code, and it will also make it very clear to future programmers.

--
Sincerely

Hector Santos, CTO
http://www.santronics.com
http://santronics.blogspot.com