RFC 1830 (rfc1830) - Page 3 of 8
SMTP Service Extensions for Transmission of Large and Binary MIME Messages
Alternative Format: Original Text Document
RFC 1830 Binary and Large Message Transport August 1995
sequence of commands" reply code. The state resulting from this error
is indeterminate. A RSET command must be sent to clear the
transaction before continuing.
A 250 response should be sent to each BDAT data block. If a 5XX code
is sent in response to a BDAT chunk the message should be considered
failed and, the sender SMTP must not send any additional BDAT
segments. If using the ESMTP pipelining extensions [PIPE], the
sender SMTP must complete the sending of the current segment and not
send any more BDATs. When streaming, the receiver SMTP must accept
and discard additional BDAT chunks after the failed BDAT. After
receiving a 5XX error in response to a BDAT command, the resulting
state is indeterminate. A RSET command must be issued to clear the
transaction before additional commands may be sent.
Note that an error on the receiver SMTP such as disk full or
imminent shutdown can only be reported after the BDAT segment has
been sent. It is therefore important to choose a reasonable chunk
size given the expected end to end bandwidth.
The RSET command when issued during after the first BDAT and before
the BDAT LAST clears all segments sent during that transaction and
resets the session.
DATA and BDAT commands cannot be used in the same transaction. If a
DATA statement is issued after a BDAT for the current transaction, a
503 "Bad sequence of commands" must be issued. The state resulting
from this error is indeterminate. A RSET command must be sent to
clear the transaction before continuing. There is no prohibition on
using DATA and BDAT in the same session, so long as they are not
mixed in the same transaction.
The local storage size of a message may not accurately reflect the
actual size of the message sent due to local storage conventions. In
particular, text messages sent with the BDAT command must be sent in
the canonical MIME format with lines delimited with a . It
may not be possible to convert the entire message to the canonical
format at once. Chunking provides a mechanism to convert the message
to canonical form, accurately count the bytes, and send the message a
single chunk at a time.
Note that correct byte counting is essential. If too many bytes
are indicated by the sender SMTP, the receiver SMTP will continue
to wait for the remainder of the data or will read the subsequent
command as additional message data. In the case where a portion
of the previous command was read as data, the parser will return a
syntax error when the incomplete command is read.
Vaudreuil Experimental