RFC 1047 (rfc1047) - Page 1 of 3
Duplicate messages and SMTP
Alternative Format: Original Text Document
Network Working Group Craig Partridge
Request for Comments: 1047 CIC at BBN Labs
February 1988
DUPLICATE MESSAGES AND SMTP
STATUS OF THIS MEMO
An examination of a synchronization problem in the Simple Mail
Transfer Protocol (SMTP) is presented. This synchronization problem
can cause a message to be delivered multiple times. A method for
avoiding this problem is suggested. Nodding familiarity with the
SMTP specification, RFC-821, is required. Distribution of this memo
is unlimited.
INTRODUCTION
Over the past few years, the staff of the CSNET Coordination and
Information Center (CIC) has often been asked to help determine why a
single mail message is being delivered multiple times to its
recipients. In the process of tracing the problems of multiple
delivery, we have discovered that many duplicate messages are the
result of a synchronization problem in SMTP. There is a point in the
process of delivering a message where the receiving mailer knows it
has accepted the message but the sending mailer is still not sure the
message has been reliably delivered. If the SMTP conversation is
broken at this point, the sending mailer will be forced to re-deliver
the message, even though the message has already been received and
delivered by the receiving mailer.
DESCRIPTION OF THE PROBLEM
The synchronization problem occurs at the end of delivering a
message. When the sending mailer has finished sending the text of a
message, it is required to send a line containing a single dot or
period. When the receiving mailer receives this final dot, it is
expected to do its final message processing and either confirm
receipt of the message (with a 250 reply) or reject the message with
any one of several error codes.
Observe that there is a potential synchronization gap here. During
the period between the time the receiving mailer has determined that
it will accept the message, and the time that sending mailer gets the
250 reply, the message is active at both the sending and receiving
mailer. Until the sending mailer gets the 250 reply, it must assume
the message was not delivered. After the receiving mailer has
Partridge