Internet DRAFT - draft-burger-smtp-rdlv

draft-burger-smtp-rdlv






Individual                                                     E. Burger
Internet-Draft                               Brooktrout Technology, Inc.
Expires: January 4, 2006                                     A. Melnikov
                                                              Isode Ltd.
                                                           July 03, 2005


              SMTP Service Extension for Reliable Delivery
                       draft-burger-smtp-rdlv-01

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on January 4, 2006.

Copyright Notice

   Copyright (C) The Internet Society (2005).

Abstract

   There is an issue with SMTP that RFC 1047 raised in 1988.  The time
   between a SMTP client submitting a mail object and the SMTP server
   responding to the request can be arbitrarily long.  SMTP addresses
   this issue by a hack, hoping that the SMTP server responds fast
   enough and the SMTP client waits long enough to find out if the
   submission was successful.




Burger & Melnikov        Expires January 4, 2006                [Page 1]

Internet-Draft                  SMTP RDLV                      July 2005


   Unfortunately, this approach is, by its nature, unreliable.  Besides
   the duplicate delivery problem identified by RFC 1047, this behavior
   introduces serious human factors problems for submission servers.

   This document describes a SMTP Service Extension that enables the
   SMTP client to reliably know that the SMTP server is alive, well, and
   working on the message submission.

Conventions used in this document

   RFC 2119 [RFC2119] provides the interpretations for the key words
   "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
   "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" found in this
   document.

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  Overview of the Extension  . . . . . . . . . . . . . . . . . .  4
   3.  Formal Description of the Extension  . . . . . . . . . . . . .  4
     3.1   Extension Definition . . . . . . . . . . . . . . . . . . .  4
     3.2   Extension Operation  . . . . . . . . . . . . . . . . . . .  5
       3.2.1   Server Behavior  . . . . . . . . . . . . . . . . . . .  5
       3.2.2   Client Behavior  . . . . . . . . . . . . . . . . . . .  6
   4.  Formal Syntax  . . . . . . . . . . . . . . . . . . . . . . . .  7
   5.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . .  7
   6.  Examples . . . . . . . . . . . . . . . . . . . . . . . . . . .  7
     6.1   Long Submit  . . . . . . . . . . . . . . . . . . . . . . .  7
     6.2   Unsupported Verb . . . . . . . . . . . . . . . . . . . . .  8
     6.3   Remote Submit  . . . . . . . . . . . . . . . . . . . . . .  9
   7.  Security Considerations  . . . . . . . . . . . . . . . . . . . 10
   8.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 10
     8.1   Normative References . . . . . . . . . . . . . . . . . . . 10
     8.2   Informative References . . . . . . . . . . . . . . . . . . 11
       Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 12
   A.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 12
       Intellectual Property and Copyright Statements . . . . . . . . 13














Burger & Melnikov        Expires January 4, 2006                [Page 2]

Internet-Draft                  SMTP RDLV                      July 2005


1.  Introduction

   The Simple Mail Transfer Protocol, SMTP [RFC2821], has over twenty
   years of field experience.  SMTP is one of the most widely
   implemented  application protocols in the Internet.  Virtually every
   Internet host of every kind -- mainframe, minicomputer,
   microcomputer, PDA, or even wristwatch -- interacts with the Internet
   Mail system.

   RFC 1047 [RFC1047] identified a problem with the message submission
   protocol in SMTP.  Namely, the SMTP server has to guarantee that it
   has responsibility for the message once it issues the 250 response at
   the end of the DATA request.  However, the time from the final dot
   indicating the end of the DATA request to the actual 250 response can
   be arbitrarily long.

   From the perspective of the SMTP client, it cannot discern between
   the following situations:
   o  The SMTP server process has crashed, but the TCP connection is
      still up.
   o  The SMTP host has crashed, but the TCP connection has not yet
      timed-out.
   o  The SMTP server is under great load, and will get to the message
      soon.
   o  The message is "big" in some respect, such as message size or
      number of recipients.  Thus the SMTP server, even under normal
      circumstances, requires a significant amount of time to process
      the message.
   The approach espoused by RFC 2821 is for the server to respond as
   fast as possible to the request and for the client to wait long
   enough for the response.

   Over the years, this has been the staple approach.  RFC 1123
   [RFC1123] reiterates that the server should respond "quickly" and the
   client should "wait long enough."  LMTP [RFC2033] shares the syntax
   of SMTP, and shares the submission timeout problem.  The advice
   offered in LMTP is that if it will take a long time to submit an
   object, one should not use LMTP.  Even RFC 3464 [RFC3464] on Delivery
   Status Notifications, points out that duplicate submissions can occur
   and one should just "live with it."

   Besides the obvious problem of an unreliable protocol, in the
   Lemonade working group we have run into a human factors problem made
   worse by this time out issue.  There are extensions being proposed,
   such as BURL [burl], which can suffer from the same lack of protocol
   support for long requests.  This impacts the user's experience,
   especially when they have intermittent connectivity, as experienced
   on wide-area wireless networks.  The user has no idea if a submission



Burger & Melnikov        Expires January 4, 2006                [Page 3]

Internet-Draft                  SMTP RDLV                      July 2005


   request is taking a long time because the server needs a long time or
   if they have lost their connection.

   What we need is a method for the SMTP server to inform the SMTP
   client that the server is alive and still working on the submission.

2.  Overview of the Extension

   This document introduces the RDLV extension.  When indicated, SMTP
   servers implementing the RDLV extension periodically issue a 120
   response.  The SMTP client then issues a CONT command to continue the
   operation.
      DISCUSSION POINT:  Ideally, the response should be truly
      preliminary and not change the SMTP state machine.  If the server
      is under load, the last thing it needs is more handshake protocol
      actions to perform.  I could see having the server simply
      periodically issuing 120 responses.  However, in this case neither
      RSET to cancel nor DETA to detach would work.  Moreover, the
      proposal in this document follows the VERB-RESULT model of SMTP.
      Periodic emission of 120's changes the model to VERB-
      InterimRESULT-InterimRESULT-FinalRESULT.  On the other hand, This
      extension adds sub-states to potentially all long commands, which
      is a major change, as well.

3.  Formal Description of the Extension

3.1  Extension Definition

   1.  The text name of this SMTP service extension is "Reliable
       Delivery".
   2.  The EHLO keyword associated with this SMTP service extension is
       "RDLV".
   3.  The RDLV EHLO keyword has one parameter, mintimer.  Mintimer
       specifies the minimum amount of time in integer seconds the
       server will wait before issuing a 120 response to a long command.
   4.  This extension doesn't add any new parameters to MAIL or RCPT
       commands.
   5.  This document defines a new SMTP verb, RDLV.  The RDLV verb
       indicates that the following transmission verb, such as DATA,
       BDAT [RFC3030], and so on is to use the procedures described in
       this document for generating 120 responses.
          DISCUSSION POINT:  We are really describing an adverb here,
          not a verb.  On the one hand, this should be a new parameter
          to each of the "takes a long time" verbs.  On the other hand,
          it is much easier to describe the behavior if we keep them
          separate.





Burger & Melnikov        Expires January 4, 2006                [Page 4]

Internet-Draft                  SMTP RDLV                      July 2005


          Conversely, we could define RDLV to be for the entire session,
          not just the following command.  What do we think of that?
   6.  The RDLV verb takes a single parameter, maxtimer.  Maxtimer
       specifies the maximum amount of time in integer seconds the
       client will wait for a response from the server before assuming
       the server is not available.
   7.  This service extension is appropriate for the standard SMTP
       [RFC2821], SMTP submission protocol [RFC2476] and LMTP [RFC2033].

3.2  Extension Operation

3.2.1  Server Behavior

   Upon receiving a RDLV verb, the server examines the maxtimer
   parameter.  If maxtimer is less than mintimer, the server SHOULD
   respond with a 501 (5.5.4 Bad Parameter).  The server MAY elect to
   honor the shorter timer.  However, especially under load, the server
   should not accept undue burdens from clients.

   If there is no maxtimer parameter, the server MUST respond with a 501
   (5.5.2 Missing parameter).

   If the maxtimer parameter is acceptable, the server MUST respond with
   a 250 response code and set the server's state to issue 120 responses
   to the following long command, at least every maxtimer seconds.

   If, when the client issues the next command, the server determines it
   is not able to issue 120 responses to the particular command, the
   server MUST respond with a 520 (5.3.3 System not capable of selected
   features [Is this correct?]) response code.  The server MUST
   terminate both the RDLV and the last received command request.

   The server MUST set its interval timer to something less than
   maxtimer to ensure that the time from the client's perspective,
   including transit delays, is less than maxtimer.  A reasonable amount
   of time to reduce maxtimer is 7 seconds.

   If the server receives a EHLO, HELO, or RSET, it MUST clear the
   server's state, including terminating the sending 120 responses.

   If the server completes processing the long command, the server
   responds to the client with the appropriate response code.  If the
   server has not completed processing in maxtimer seconds since the
   last response, the server MUST issue a 120 response.

   When the server issues the 120 response, the server waits for the
   client to issue a CONT request.  The server SHOULD continue
   processing while waiting for the CONT request.



Burger & Melnikov        Expires January 4, 2006                [Page 5]

Internet-Draft                  SMTP RDLV                      July 2005


   When the server receives the CONT request, the server MUST continue
   processing, and the server MUST issue another 120 response (now to
   the CONT request) within maxtimer seconds.

   If the server does not receive a CONT request within maxtimer
   seconds, the server MUST consider the client gone.

   After the long transaction completes or the client abandons the
   transaction, the server MUST set its state to not issue 120
   responses, unless requested again by a new RDLV request.

3.2.2  Client Behavior

   To receive notifications from the server that the server is still
   working on a long transaction, the client MUST issue a RDLV request
   before the long transaction request, such as DATA, BDAT, or BURL.
   The RDLV request MUST have a maxtimer parameter indicating the
   maximum number of seconds the server can wait before issuing a 120
   request.  Maxtimer MUST NOT be less than the mintimer parameter
   issued by the server in the EHLO keyword.

   The client then issues the long transaction request as normal.  The
   server will respond with the normal result code for the request or a
   120 response.

   To continue the long transaction, the client MUST issue a CONT
   request.  Issuing other requests, or ignoring the 120 response, is
   not defined, except for the client issuing a new EHLO, HELO, or RSET
   requests.  Those requests reset the state of the server, as specified
   in SMTP [RFC2821].

   The client MUST wait a reasonable amount of time, in addition to
   maxtimer seconds, for the 120 response.  This is to account for
   congested transit delays between the client and server.  A reasonable
   amount of time to wait before abandoning the transaction is 7
   seconds.

   Server generation of 120 responses is per-transaction.  Thus, if the
   client wishes to receive 120 responses on a new long request, the
   client MUST issue a new RDLV request before issuing the long
   transaction request.

   If the server is unable to comply with the RDLV request for a
   particular verb, the server will respond with a 520 (5.3.3 System not
   capable of selected features) response code to the verb.  In this
   case the server has rejected both the RDLV and the verb request.  The
   client is free to make the verb request again without preceding it
   with a RDLV request.



Burger & Melnikov        Expires January 4, 2006                [Page 6]

Internet-Draft                  SMTP RDLV                      July 2005


   If the server also supports PIPELINING [RFC3030] SMTP extension, then
   the RDLV command MUST be the last command in a group of pipelined
   commands.

4.  Formal Syntax

   Formal syntax is defined using ABNF [ABNF].  Elements not defined
   here can be found in the [ABNF] and SMTP [RFC2821].

   seconds     = 1*DIGIT
                 ; 31-bit positive integer
                 ; (1 <= n < 2,147,483,648)

   rdlv-param  = "mintimer" "=" seconds
                 ; parameter to RDLV EHLO keyword.
                 ; matches "ehlo-keyword"

   rdlv-cmd    = "RDLV" SP "maxtimer" "=" seconds CRLF

   cont-cmd    = "CONT"


5.  IANA Considerations

   Please register the RDLV service extension in the Simple Mail
   Transfer Protocol (SMTP) Service Extensions table as follows.

   Service Extension
      Keyword: RDLV
      Description: Reliable Delivery
      Reference: RFCXXXX

   Service Extension Parameters
      Service Extension: Reliable Delivery
      EHLO Keyword: RDLV
      Parameters: maxtimer
      Reference: RFCXXXX

6.  Examples

   These examples are informative in nature.  For any discrepancies
   between behavior here and the normative behavior, the normative
   behavior is correct.

6.1  Long Submit

   This addresses the classic long submit problem.  The client sets the
   RDLV to 600 seconds, the classic 10-minute timeout.  Rather than



Burger & Melnikov        Expires January 4, 2006                [Page 7]

Internet-Draft                  SMTP RDLV                      July 2005


   giving up at 10 minutes, the client watches for the 120.  Upon
   receiving the 120, it knows the server is still alive.  The client
   requests a continuation of the request, and after 22 minutes, the
   submission succeeds.  Compare that to the classic way, where the
   submission would fail.

   S: 220 example.net SMTP XYZ Ready
   C: EHLO example.com
   S: 250-example.net greets example.com
   S: 250-8BITMIME
   S: 250-BURL imap
   S: 250-RDLV mintimer=30
   S: 250-DSN
   S: 250 HELP
   C: MAIL FROM:<smith@example.com>
   S: 250 OK
   C: RCPT TO:<jones@example.net>
   S: 250 OK
   C: RDLV maxtimer=600
   S: 200 OK
   C: DATA
   S: 354 Start mail input; end with <CRLF>.<CRLF>
   C: [... lots and lots of data ...]
   C:
   C: .
   [about 10 minutes pass]
   S: 120 DATA processing in progress
   C: CONT
   [about 10 minutes pass]
   S: 120 DATA processing in progress
   C: CONT
   [about 2 minutes pass]
   S: 250 OK
   C: QUIT
   S: 221 example.net Service closing transmission channel


6.2  Unsupported Verb

   The client requests in-process notifications for a method that the
   server does not support in-process notifications for the following
   verb, BURL in this case.









Burger & Melnikov        Expires January 4, 2006                [Page 8]

Internet-Draft                  SMTP RDLV                      July 2005


   S: 220 example.net SMTP XYZ Ready
   C: EHLO example.com
   S: 250-example.net greets example.com
   S: 250-8BITMIME
   S: 250-BURL imap
   S: 250-RDLV mintimer=30
   S: 250-DSN
   S: 250-ENHANCEDSTATUSCODES
   S: 250 HELP
   C: MAIL FROM:<smith@example.com>
   S: 250 2.5.0 OK
   C: RCPT TO:<jones@example.net>
   S: 250 2.1.5 OK
   C: RDLV maxtimer=600
   S: 200 2.5.0 OK
   C: BURL imap://handset@host.example.com/outbox
           ;uidvalidity=a9j230r932/;uid=32
           ;authid=fred;urlauth=submit+handset
           :internal:91354a473744909de610943775f92038 LAST
   S: 520 5.3.3 This server does not support RDLV for BURL
   C: QUIT
   S: 221 2.0.0 example.net Service closing transmission channel


6.3  Remote Submit

   This addresses the problem raised by the Lemonade WG.  The client
   issues a very small request, a BURL.  However, the object referenced
   by the BURL is quite large.  The client sets the RDLV to 60 seconds,
   so it keeps aware of the progress of message.





















Burger & Melnikov        Expires January 4, 2006                [Page 9]

Internet-Draft                  SMTP RDLV                      July 2005


   S: 220 example.net SMTP XYZ Ready
   C: EHLO example.com
   S: 250-example.net greets example.com
   S: 250-8BITMIME
   S: 250-BURL imap
   S: 250-RDLV mintimer=30
   S: 250-DSN
   S: 250 HELP
   C: MAIL FROM:<handset@example.com>
   S: 250 OK
   C: RCPT TO:<jones@example.net>
   S: 250 OK
   C: RDLV maxtimer=60
   S: 200 OK
   C: BURL imap://handset@host.example.com/outbox
           ;uidvalidity=a9j230r932/;uid=32
           ;authid=fred;urlauth=submit+handset
           :internal:91354a473744909de610943775f92038 LAST
   [about a minute passes]
   S: 120 DATA processing in progress
   C: CONT
   [about a minute passes]
   S: 120 DATA processing in progress
   C: CONT
   [about a minute passes]
   S: 120 DATA processing in progress
   C: CONT
   [about a minute passes]
   S: 120 DATA processing in progress
   C: CONT
   S: 250 OK
   C: QUIT
   S: 221 example.net Service closing transmission channel


7.  Security Considerations

   Malicious clients can amplify server load by issuing unreasonably
   high notification rates in addition to sending large, complex
   documents.  Servers MUST ensure to deny client requests for unduly
   short inter-notification times.

8.  References

8.1  Normative References

   [ABNF]     Crocker, D. and P. Overell, "Augmented BNF for Syntax
              Specifications: ABNF", RFC 2234, November 1997.



Burger & Melnikov        Expires January 4, 2006               [Page 10]

Internet-Draft                  SMTP RDLV                      July 2005


   [PIPELINING]
              Freed, N., "SMTP Service Extension for Command
              Pipelining", STD 60, RFC 2920, September 2000.

   [RFC2033]  Myers, J., "Local Mail Transfer Protocol", RFC 2033,
              October 1996.

   [RFC2034]  Freed, N., "SMTP Service Extension for Returning Enhanced
              Error Codes", RFC 2034, October 1996.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC2476]  Gellens, R. and J. Klensin, "Message Submission",
              RFC 2476, December 1998.

   [RFC2821]  Klensin, J., "Simple Mail Transfer Protocol", RFC 2821,
              April 2001.

   [RFC3463]  Vaudreuil, G., "Enhanced Mail System Status Codes",
              RFC 3464, January 2003.

8.2  Informative References

   [RFC1047]  Partridge, C., "Duplicate messages and SMTP", RFC 1047,
              February 1988.

   [RFC1123]  Braden, R., "Requirements for Internet Hosts - Application
              and Support", STD 3, RFC 1123, October 1989.

   [RFC3030]  Vaudreuil, G., "SMTP Service Extensions for Transmission
              of Large and Binary MIME Messages", RFC 3030,
              December 2000.

   [RFC3464]  Moore, K. and G. Vaudreuil, "An Extensible Message Format
              for Delivery Status Notifications", RFC 3464,
              January 2003.

   [burl]     Newman, C., "Message Submission BURL Extension", Internet
              Draft draft-ietf-lemonade-burl-00.txt, July 2004.











Burger & Melnikov        Expires January 4, 2006               [Page 11]

Internet-Draft                  SMTP RDLV                      July 2005


Authors' Addresses

   Eric Burger
   Brooktrout Technology, Inc.
   18 Keewaydin Dr.
   Salem, NH  03079
   USA

   Email: e.burger@ieee.org


   Alexey Melnikov
   Isode Ltd.
   5 Castle Business Village
   36 Station Road
   Hampton, Middlesex  TW12 2BX
   GB

   Email: alexey.melnikov@isode.com

Appendix A.  Acknowledgements

   The need for notification that the SMTP server is still doing work
   came from the lemonade interim meeting in May of 2004 in Richardson,
   TX, USA.


























Burger & Melnikov        Expires January 4, 2006               [Page 12]

Internet-Draft                  SMTP RDLV                      July 2005


Intellectual Property Statement

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.

   The IETF has been notified of intellectual property rights claimed in
   regard to some or all of the specification contained in this
   document.  For more information consult the online list of claimed
   rights.


Disclaimer of Validity

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.


Copyright Statement

   Copyright (C) The Internet Society (2005).  This document is subject
   to the rights, licenses and restrictions contained in BCP 78, and
   except as set forth therein, the authors retain all their rights.





Burger & Melnikov        Expires January 4, 2006               [Page 13]

Internet-Draft                  SMTP RDLV                      July 2005


Acknowledgment

   Funding for the RFC Editor function is currently provided by the
   Internet Society.















































Burger & Melnikov        Expires January 4, 2006               [Page 14]