Internet DRAFT - draft-wing-smtp-session
draft-wing-smtp-session
HTTP/1.1 200 OK
Date: Tue, 09 Apr 2002 12:12:32 GMT
Server: Apache/1.3.20 (Unix)
Last-Modified: Tue, 26 Aug 1997 15:15:00 GMT
ETag: "3ddc3d-5318-3402f2f4"
Accept-Ranges: bytes
Content-Length: 21272
Connection: close
Content-Type: text/plain
Internet Draft Dan Wing
August 26, 1997 Neil Joffe
Expires February 1998 Cisco Systems, Inc.
Larry Masinter
Xerox Corporation
Immediate Delivery over SMTP
draft-wing-smtp-session-00.txt
Status of this memo
This document is an Internet-Draft. 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."
To learn the current status of any Internet-Draft, please check the
"1id-abstracts.txt" listing contained in the Internet- Drafts Shadow
Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
ftp.isi.edu (US West Coast).
1. Abstract
This memo defines an extension to SMTP [RFC821] which provides a
mechanism for immediate message delivery over ESMTP, bypassing SMTP's
normal store-and-forward behavior.
2. Introduction
Historically, SMTP [RFC821, RFC822] and [SMTP-EXT] have been used for
store and forward delivery of messages. This draft defines a new
transport mode for ESMTP delivery known as SESSION. When SESSION is
used, the ESMTP server delivers the message before the ESMTP client
disconnects from it.
This feature allows for 'priority' delivery of mail if all MTAs in the
SMTP "path" support SESSION delivery. If any MTA does not support
SESSION, automatic fallback to normal store and forward delivery occurs.
Wing, Joffe, Masinter Expires February 1998 [Page 1]
Internet Draft Immediate Delivery over ESMTP August 1997
Such priority delivery may be useful in certain business environments,
or to more closely emulate behavior of other office equipment (such as
fax machines).
This memo uses the mechanism described in [SMTP-EXT] to define an
extension to the SMTP protocol for immediate delivery.
2.1. Discussion of this draft
This draft is being discussed on the "ietf-fax" mailing list. To
subscribe, send a message to:
ietf-fax-request@imc.org
with the line:
subscribe
in the body of the message. Archives are available from
http://www.imc.org/ietf-fax.
2.2. Requirements notation
This document occasionally uses terms that appear in capital
letters. When the terms "MUST", "SHOULD", "MUST NOT", "SHOULD
NOT", and "MAY" appear capitalized, they are being used to
indicate particular requirements of this specification. A
discussion of the meanings of these terms appears in [REQ].
3. Framework for immediate delivery support
The immediate message delivery is defined as follows:
(1) The name of the immediate extension is Session;
(2) the EHLO keyword value associated with the immediate extension
is SESSION;
(3) no parameter is used with the SESSION EHLO keyword;
(4) one new SMTP verb, STAT, (used to query the status of each
Session recipient), is defined with this extension, and is
described in section 4;
(5) one optional parameter is added to the RCPT command, using the
esmtp-keyword SESSION, and is described in section 4,
no parameters are added to the MAIL FROM command;
(6) the esmtp-keyword SESSION changes the meaning of the terminating
Wing, Joffe, Masinter Expires February 1998 [Page 2]
Internet Draft Immediate Delivery over ESMTP August 1997
"." as described in section 4.2;
(7) the maximum length of a RCPT TO is increased by 8 characters.
4. Behavior of RCPT TO:<forward-path> SESSION
A RCPT command issued by a client may also contain the esmtp-keyword
SESSION. This keyword causes the ESMTP server to attempt immediate
delivery of the message to the local user, or immediate connection with
the next MTA in the ESMTP path. The ESMTP server SHOULD only respond
after it has successfully connected to the next MTA in the ESMTP path
and received the remote ESMTP server's response to the RCPT command.
4.1. Response to esmtp-keyword SESSION
Upon receiving a RCPT command with the esmtp-keyword SESSION, an ESMTP server
MUST respond with a 250 only if:
a) the SMTP server is able to connect to the "next hop" in the SMTP
"path" and after it has received a 250 reply to its RCPT command
(with the esmtp-keyword SESSION) with that "next hop" ESMTP
server,
or
b) the SMTP server is delivering to a local user's mailbox.
If SESSION isn't available for this recipient and the recipient is valid
in all other respects, then the ESMTP server MUST respond with 251 and
deliver the message using normal store-and-forward.
The ESMTP server returns 450 if SESSION mode isn't available due to
resource constraints. The ESMTP client may attempt to send the message
without Session in this transaction, or the ESMTP client may retry
sending the message with Session as a new transaction later.
4.2. Meaning of "250" reply to terminating "." with SESSION
The ESMTP server's response to the end of mail data indication ("." or
BDAT LAST if using [CHUNKING]) only indicates successful receipt of
the mail data -- as with [RFC821] the data could still be spooling to
the recipient(s). However, with SESSION, the ESMTP client MUST use the
STAT verb to determine the success (or failure) of the delivery to each
of the forward-path(s) that used the esmtp-keyword SESSION.
If the ESMTP server has responded with a "250" reply to the end of mail
data indication, but has not successfully completed delivery before the
Wing, Joffe, Masinter Expires February 1998 [Page 3]
Internet Draft Immediate Delivery over ESMTP August 1997
ESMTP client disconnects from the ESMTP server (either by a QUIT command
or a TCP FIN or RST), the ESMTP server SHOULD attempt to continue
deliverying the message(s).
4.3. SESSION-only ESMTP servers that cannot relay mail
A legacy SMTP client (which doesn't support SESSION) may connect to an
ESMTP server that only supports SESSION and cannot relay mail (such as a
printer or fax machine). As the ESMTP client isn't SESSION aware and
won't send STAT commands for each recipient, the ESMTP server cannot
indicate which of several recipients has succeeded or failed. Thus,
only one recipient is permitted.
If a SESSION-only ESMTP server receives a RCPT TO without the
esmtp-keyword SESSION, the ESMTP server MUST:
(1) allow only one valid forward-path, as there is no way to indicate
delivery success/failure to multiple recipients. If the SMTP
client sends more than one valid forward-path in a single SMTP
transaction, the ESMTP server should reject them with a "421"
response.
(2) only respond to the terminating "." after the message has been
successfully or unsuccessfully received by the recipient.
4.4. Behavior of esmtp-keyword SESSION with DSN
If an ESMTP server supports Delivery Status Notification [DSN] and
SESSION, and a RCPT command contains both SESSION and a DSN request
for either SUCCESS or FAILURE, then one of the following scenerios
is possible:
(1) SESSION is successful, in which case a DSN MUST NOT be generated;
(2) SESSION is unsuccessful, and fallback to store and forward
occurred, then the DSN MUST be handled normally (by requesting DSN
from the remote MTA);
(3) SESSION is unsuccessful, and fallback to store and forward did
not occur, and the ESMTP client is informed (in a reply to a STAT
command) that fallback to store and forward did not occur,
a DSN MUST NOT be generated;
(4) SESSION is unsuccessful, and fallback to store and forward did
not occur, and the ESMTP client is not informed (in a reply to
a STAT command, perhaps due to the ESMTP client disconnecting
Wing, Joffe, Masinter Expires February 1998 [Page 4]
Internet Draft Immediate Delivery over ESMTP August 1997
or improperly sending a QUIT command), a DSN MUST be generated
by this MTA.
5. New SMTP verb STAT
One new SMTP verb is introduced with the Session extension. The STAT
verb allows a client to query the success, failure, and progress of
message transmission to any Session mode recipient.
5.1. Usage and syntax of STAT verb
The STAT verb MUST be used by the ESMTP client to determine the success
or failure of a RCPT command that included the esmtp-keyword SESSION.
An ESMTP client MUST NOT send a "STAT <forward-path>" command unless
both of the following conditions are true:
1. the RCPT command for that forward-path included the esmtp-keyword
SESSION, and
2. the ESMTP server responded to that forward-path with a 2xx
(success) reply code.
If the ESMTP client violates one of the above restrictions, the ESMTP
server SHOULD respond with a 501 error code.
The syntax of the STAT verb, using the format described in [ABNF], is:
stat-cmd = "STAT" SP <forward-path> CR LF
5.2. Server reply to STAT
The ESMTP server's reply to STAT must be parsable by the ESMTP client
for possible presentation to the user via a progress indicator. The
replies must adhere to the following [ABNF] format:
stat-int-rsp = rsp-code SP [status-code SP]
<forward-path> SP
cmpl-seconds ";" total-bytes ";" bytes-sent ";" pages-sent
[SP 1*text]
rsp-code = "250" / "251" / "550" / "450"
cmpl-seconds = 1*DIGIT ; estimated seconds to complete,
; 0=completed or fallback occurred
total-bytes = 1*DIGIT
Wing, Joffe, Masinter Expires February 1998 [Page 5]
Internet Draft Immediate Delivery over ESMTP August 1997
bytes-sent = 1*DIGIT
pages-sent = 1*DIGIT ; pages sent. If this is not a
; printable document (where pages
; make sense), the value MUST be 0.
text = <any CHAR except CTL, DIGIT, and ";">
status-code = <`status-code' from section 4 of [ENH-RET]>
If the ESMTP server has completed mail data transfer (either
successfully or unsucessfully), <cmpl-seconds> is zero. In no other
cases shall <cmpl-seconds> be zero.
If fallback to store-and-forward occurred, the ESMTP server MUST respond
with a 251 reply code, and <cmpl-seconds> is 0, <total-bytes> is the
number of bytes that the server intended to send in session mode, and
<bytes-sent> is the number of bytes that were actually sent by the
server when the session delivery failed.
<total-bytes> and <bytes-sent> should both be equal to the number of
bytes that will be sent by the server.
If the attempt at SESSION delivery failed and store and forward
did not occur, the ESMTP server MUST respond with a 550 or 450 reply
code.
Note that <total-bytes>, <bytes-sent>, and <pages-sent> are all
determined by the server. The number of bytes sent by the ESMTP client
may be different than the number of bytes being sent by the ESMTP server,
especially if the ESMTP server is performing any data conversion.
Example responses:
Transmission not yet complete:
250 2.5.0 <masinter@parc.xerox.com> 30;782732;5567;0
250 2.5.0 <masinter@parc.xerox.com> 20;5321;78275;0
250 <+1-303-555-1212@gw.xerox.com> 3;3210;100;0
Transmission complete:
250 <masinter@parc.xerox.com> 0;7828;7828;0
250 2.5.0 <+1-303-555-1212@gw.xerox.com> 0;8891;8891;10
251 <dwing@cisco.com> 0;2131;30158;0 fallback occured
Transmission errors:
550 5.2.0 <dwing@cisco.com> 0;72194;0;0 unable to lock user's mailbox
550 <dwing@cisco.com> 0;81731;0;0 infinite forwarding detected
550 5.2.1 <dwing@cisco.com> 0;87287;0;0 busy
550 5.4.1 <+1-303-555-1212@gw.xerox.com> 0;72831;0;0 no answer
450 4.4.2 <+1-303-555-1212@gw.xerox.com> 0;87513;0;0 no carrier
Wing, Joffe, Masinter Expires February 1998 [Page 6]
Internet Draft Immediate Delivery over ESMTP August 1997
450 <+1-303-555-1212@xerox.com> 0;878821;830131;4 no page confirmation
450 <masinter@parc.xerox.com> 0;893121;830141;0 lost Session connection
6. Examples
6.1. SESSION delivery
6.1.1. Two recipients
S: 220 foo.cisco.com ESMTP service ready
C: EHLO pc.cisco.com
S: 250-foo.cisco.com says hello
S: 250 SESSION
C: MAIL FROM:<dwing@cisco.com>
S: 250 <dwing@cisco.com> Sender ok
C: RCPT TO:<masinter@parc.xerox.com> SESSION
S: 250 <masinter@parc.xerox.com> and options ok
C: RCPT TO:<njoffe@cisco.com> SESSION
S: 250 <njoffe@cisco.com> and options ok
C: DATA
S: 354 Enter your data
C: <... message ...>
C: .
S: 250 message accepted; use STAT to query delivery
C: STAT <masinter@parc.xerox.com>
S: 250 <masinter@parc.xerox.com> 0;88991;88991;0 completed
C: STAT <njoffe@cisco.com>
S: 250 <njoffe@cisco.com> 3;5613;88991;10 still sending data
C: STAT <njoffe@cisco.com>
S: 250 <njoffe@cisco.com> 0;88991;88991;12 completed
C: QUIT
S: 221 Goodbye
6.1.2. Two recipients, one doesn't support SESSION
S: 220 foo.cisco.com ESMTP service ready
C: EHLO pc.cisco.com
S: 250-foo.cisco.com says hello
S: 250 SESSION
C: MAIL FROM:<dwing@cisco.com>
S: 250 <dwing@cisco.com> Sender ok
C: RCPT TO:<masinter@parc.xerox.com> SESSION
S: 250 <masinter@parc.xerox.com> and options ok
C: RCPT TO:<njoffe@cisco.com> SESSION
Wing, Joffe, Masinter Expires February 1998 [Page 7]
Internet Draft Immediate Delivery over ESMTP August 1997
S: 251 <njoffe@cisco.com> and options ok; non-SESSION intermediate MTA
C: DATA
S: 354 Enter your data
C: <... message ...>
C: .
S: 250 message accepted; use STAT to query delivery
C: STAT <masinter@parc.xerox.com>
S: 250 <masinter@parc.xerox.com> 0;891;891;0 completed
C: STAT <njoffe@cisco.com>
S: 251 <njoffe@cisco.com> 0;891;891;0 store and forward at gw.cisco.com
C: QUIT
S: 221 Goodbye
6.2. SESSION with insufficient resources
The client attempts a SESSION delivery, but the ESMTP server has
exceeded its maximum simultaneous Session delivery limit. The ESMTP
client responds by requesting a normal (store-and-forward) delivery for
the same recipient, which is accepted by the ESMTP server.
S: 220 foo.cisco.com ESMTP service ready
C: EHLO pc.cisco.com
S: 250-foo.cisco.com says hello
S: 250 SESSION
C: MAIL FROM:<dwing@cisco.com>
S: 250 <dwing@cisco.com> Sender ok
C: RCPT TO:<masinter@parc.xerox.com> SESSION
S: 450 <masinter@parc.xerox.com> try later - exceeded maximum Session count
C: RCPT TO:<masinter@parc.xerox.com>
S: 250 <masinter@parc.xerox.com> Recipient ok
C: DATA
S: 354 Enter your data
C: <... message ...>
C: .
S: 250 message accepted
C: QUIT
S: 221 Goodbye
6.3. SESSION-only ESMTP servers that cannot store and forward mail
6.3.1. Successful transmission (one recipient)
S: 220 gizmo.cisco.com FAX offramp ESMTP server ready
C: HELO sendmail.cisco.com
S: 250 gizmo.cisco.com; Hi there, sendmail.cisco.com
Wing, Joffe, Masinter Expires February 1998 [Page 8]
Internet Draft Immediate Delivery over ESMTP August 1997
C: MAIL FROM:<dwing@cisco.com>
S: 250 <dwing@cisco.com> Sender ok
C: RCPT TO:<+14084575208@gizmo.cisco.com>
S: 250 <+14084575208@gizmo.cisco.com> Okay
C: DATA
S: 354 Enter your data
C: <... message ...>
C: .
(SMTP server doesn't respond until delivery to
<+14084575208@gizmo.cisco.com> is complete)
S: 250 successful delivery to <+14084575208@gizmo.cisco.com>
C: QUIT
S: 221 Goodbye
6.3.2. ESMTP server cannot relay mail
S: 220 gizmo.cisco.com FAX offramp ESMTP server ready
C: HELO sendmail.cisco.com
S: 250 gizmo.cisco.com; Hi there, sendmail.cisco.com
C: MAIL FROM:<dwing@cisco.com>
S: 250 <dwing@cisco.com> Sender ok
C: RCPT TO:<+14084575208@gw.xerox.com>
S: 550 <+14084575208@gw.xerox.com> relaying not permitted
C: QUIT
S: 221 Goodbye
6.3.3. Only one recipient allowed
S: 220 gizmo.cisco.com FAX offramp ESMTP server ready
C: HELO sendmail.cisco.com
S: 250 gizmo.cisco.com; Hi there, sendmail.cisco.com
C: MAIL FROM:<dwing@cisco.com>
S: 250 <dwing@cisco.com> Sender ok
C: RCPT TO:<+14084575208@gizmo.cisco.com>
S: 250 <+14084575208@gizmo.cisco.com> Okay
C: RCPT TO:<+14158124333@gizmo.xerox.com>
S: 450 <+14158124333@gizmo.xerox.com> Try again later
C: DATA
S: 354 Enter your data
C: <... message ...>
C: .
(SMTP server doesn't respond until fax is delivered)
S: 250 fax delivered to <+14084575208@gizmo.cisco.com>
C: QUIT
S: 221 Goodbye
Wing, Joffe, Masinter Expires February 1998 [Page 9]
Internet Draft Immediate Delivery over ESMTP August 1997
The SMTP client would be responsible for retrying
<+14158124333@gizmo.xerox.com> per its normal retry interval.
7. Security Considerations
Denial of service attacks are possible with SESSION. [%% more verbage]
8. Implementation notes
8.1. ESMTP server response to STAT
To prevent excessive network activity by an ESMTP client querying
the status of a forward-path "too often", the ESMTP server may
delay responding to a client's STAT command. Such a delay should
not exceed 10 seconds or any previously indicated <cmpl-seconds>.
8.2. SESSION and PIPELINING
Due to the delays inherent with establishing connections with each
MTA in the ESMTP path, ESMTP servers that implement SESSION SHOULD also
implement [PIPELINING].
8.3. ESMTP client pipelining STAT commands
The ESMTP client may use [PIPELINING] for its STAT commands. The group
of STAT commands for each of the forward-paths in this transaction may
be considered a pipelined command group. The ESMTP client should wait
for the response to the last STAT for that pipelined command group
before sending other commands.
9. Acknowledgments
Much of this document was produced by work begun in the Internet FAX
Working Group of the IETF.
The authors would like to thank Graham Klyne (Integralis Ltd.) for his
contributions to this work.
10. References
[ABNF]
Wing, Joffe, Masinter Expires February 1998 [Page 10]
Internet Draft Immediate Delivery over ESMTP August 1997
D. Crocker, P. Overell, "Augmented BNF for Syntax Specifications:
ABNF", Internet Draft, Work in Progress,
draft-ietf-drums-abnf-03.txt, July 1997.
[CHUNKING]
G. Vaudreuil, "SMTP Service Extensions for Transmission of Large
and Binary MIME Messages", RFC 1830 (Experimental), August 1995.
[DSN]
K. Moore, "SMTP Service Extension for Delivery Status
Notifications", RFC 1891, January 1996.
[ENH-RET]
N. Freed, "SMTP Service Extension for Returning Enhanced Error
Codes", RFC 2034, October 1996.
[PIPELINING]
N. Freed, A. Cargille, "SMTP Service Extension for Command
Pipelining", RFC 1854, October 1995.
N. Freed, "SMTP Service Extension for Command Pipelining",
Internet Draft, Work in Progress,
draft-freed-smtp-pipeline-02.txt, July 1997.
[REQ]
S. Bradner, "Key words for use in RFCs to Indicate Requirement
Levels", BCP-14, RFC 2119, March 1997.
[RFC821]
J. Postel, "Simple Mail Transfer Protocol", STD-10, RFC 821,
August 1982.
[RFC822]
D. Crocker, "Standard for the Format of ARPA Internet Text
Messages", STD-11, RFC 822, August 1982.
[SMTP-EXT]
J. Klensin, N. Freed, M. Rose, E. Stefferud, D. Crocker, "SMTP
Service Extensions", STD-10, RFC 1869, November 1995.
11. Authors' Addresses
Dan Wing
Cisco Systems, Inc.
101 Cooper Street
Santa Cruz, CA 95060 USA
Wing, Joffe, Masinter Expires February 1998 [Page 11]
Internet Draft Immediate Delivery over ESMTP August 1997
Phone: +1 408 457 5200
Fax: +1 408 457 5208
EMail: dwing@cisco.com
Neil Joffe
Cisco Systems, Inc.
170 West Tasman Drive
San Jose, CA 95134-1706 USA
Phone: +1 408 526 4000
Email: njoffe@cisco.com
Larry Masinter
Xerox Palo Alto Research Center
3333 Coyote Hill Road
Palo Alto, CA 94304 USA
Phone: +1 415 812 4365
Fax: +1 415 812 4333
EMail: masinter@parc.xerox.com
X1. Notes and unresolved issues
X1.1. More verbage needed for security section
X1.2. RFC1123 timeouts may cause problems (5 minutes to the third
MTA hop is greater than 5 minutes for the first MTA hop, so
first MTA hop could timeout)
X1.3. Add example showing DSN in conjunction with SESSION
Wing, Joffe, Masinter Expires February 1998 [Page 12]