RFC 2197 (rfc2197) - Page 2 of 8


SMTP Service Extension for Command Pipelining



Alternative Format: Original Text Document



RFC 2197                 SMTP Service Extension           September 1997


    (1)   Connection handoff and buffer flushes in the middle of
          the SMTP dialogue.  Creation of server processes for
          incoming SMTP connections is a useful, obvious, and
          harmless implementation technique. However, some SMTP
          servers defer process forking and connection handoff
          until some intermediate point in the SMTP dialogue.
          When this is done material read from the TCP connection
          and kept in process buffers can be lost.

    (2)   Flushing the TCP input buffer when an SMTP command
          fails. SMTP commands often fail but there is no reason
          to flush the TCP input buffer when this happens.
          Nevertheless, some SMTP servers do this.

    (3)   Improper processing and promulgation of SMTP command
          failures. For example, some SMTP servers will refuse to
          accept a DATA command if the last RCPT TO command
          fails, paying no attention to the success or failure of
          prior RCPT TO command results. Other servers will
          accept a DATA command even when all previous RCPT TO
          commands have failed. Although it is possible to
          accommodate this sort of behavior in a client that
          employs command pipelining, it does complicate the
          construction of the client unnecessarily.

   This memo uses the mechanism described in [2] to define an extension
   to the SMTP service whereby an SMTP server can declare that it is
   capable of handling pipelined commands. The SMTP client can then
   check for this declaration and use pipelining only when the server
   declares itself capable of handling it.

2.1.  Requirements notation

   This document occasionally uses terms that appear in capital letters.
   When the terms "MUST", "SHOULD", "MUST NOT", "SHOULD NOT", and "MAY"
   appear capitalized, they are being used to indicate particular
   requirements of this specification. A discussion of the meanings of
   these terms appears in RFC 2119 [4].

3.  Framework for the Command Pipelining Extension

   The Command Pipelining extension is defined as follows:

    (1)   the name of the SMTP service extension is Pipelining;

    (2)   the EHLO keyword value associated with the extension is
          PIPELINING;




Freed                       Standards Track