Name

PIPELINING

Synopsis

RFC2920 defines an SMTP extension called “pipelining.” With pipelining, SMTP commands and replies do not have to be synchronized. To illustrate, consider the following example of a normal (not pipelined) SMTP dialog, in which the server machine’s half of the dialog is shown in bold font and the client machine’s dialog is not:

220 your.host ESMTP Sendmail 8.12.2/8.12.2; Sat, 16 Feb 2002 08:12:44 -0700 (MST)
HELO some.domain.com
250 your.host.domain Hello some.domain.com [123.45.67.8], pleased to meet you
MAIL FROM: <friend@some.domain.com>
250 2.1.0 <friend@some.domain.com>... Sender ok
RCPT TO: <bcx@your.host>
250 2.1.5 <bcx@your.host>... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
                                               message sent, end with a dot
.
250 2.0.0 g1GFCigc025138 Message accepted for delivery
QUIT221 2.0.0 your.host closing connection

The important point to notice about this SMTP conversation is that it is synchronous. The client machine always waits for a reply from the server before sending its next command. For example, in the preceding dialog it waits for the 220 before sending the HELO command, and then waits for the 250 before sending the MAIL command.

Pipelining allows the commands of the client machine to be sent without waiting for the replies from the server machine.[9] The same dialog as before, but with pipelining enabled, might look like the following (again the server is shown in bold font):

220 your.host ESMTP Sendmail 8.12.2/8.12.2; Sat, 16 Feb ...

Get Sendmail, 3rd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.