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