RFC 2920 (rfc2920) - Page 2 of 9
SMTP Service Extension for Command Pipelining
Alternative Format: Original Text Document
RFC 2920 SMTP for Command Pipelining September 2000
(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 [RFC-1869] 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.
1.1. Requirements Notation
This document occasionally uses terms that appear in capital letters.
When the terms "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", and "MAY"
appear capitalized, they are being used to indicate particular
requirements of this specification. A discussion of the meanings of
the terms "MUST", "SHOULD", and "MAY" appears in [RFC-1123]; the
terms "MUST NOT" and "SHOULD NOT" are logical extensions of this
usage.
2. 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