< draft-dewinter-queue-start-01.txt   draft-dewinter-queue-start-02.txt >
Mail Working Group Jack De Winter, Director Mail Working Group Jack De Winter, Director
Internet Draft Wildbear Consulting, Inc. Internet Draft Wildbear Consulting, Inc.
Expires in six months Expires in six months
SMTP Service Extension SMTP Service Extension
for Remote Message Queue Starting for Remote Message Queue Starting
<draft-dewinter-queue-start-02.txt>
January 26, 1996 June 12, 1996
1. Status of this Memo 1. Status of this Memo
This document is an Internet-Draft. Internet-Drafts are working This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas, documents of the Internet Engineering Task Force (IETF), its areas,
and its working groups. Note that other groups may also distribute and its working groups. Note that other groups may also distribute
working documents as Internet-Drafts. working documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other months and may be updated, replaced, or obsoleted by other
skipping to change at line 65 skipping to change at line 66
any messages are at the server for the client, then the server should any messages are at the server for the client, then the server should
create a new SMTP session and send the messages at that time. create a new SMTP session and send the messages at that time.
4. Framework for the ETRN Extension 4. Framework for the ETRN Extension
The following service extension is therefore defined: The following service extension is therefore defined:
(1) the name of the SMTP service extension is "Remote Queue (1) the name of the SMTP service extension is "Remote Queue
Processing Declaration"; Processing Declaration";
(2) the EHLO keyword value associated with this extension is "ETRN"; (2) the EHLO keyword value associated with this extension is "ETRN",
with no associated parameters;
(3) one additional command, ETRN, with a single parameter that (3) one additional verb, ETRN, with a single parameter that
specifies the name of the client to start processing for specifies the name of the client(s) to start processing for;
(4) no additional SMTP verbs are defined by this extension. (4) no additional SMTP verbs are defined by this extension.
The remainder of this memo specifies how support for the extension The remainder of this memo specifies how support for the extension
affects the behavior of an SMTP client and server. affects the behavior of an SMTP client and server.
5. The Remote Queue Processing Declaration service extension 5. The Remote Queue Processing Declaration service extension
To save money, many small companies want to only maintain To save money, many small companies want to only maintain
transient connections to their service providers. In addition, there transient connections to their service providers. In addition, there
are some situations where the client sites depend on their mail are some situations where the client sites depend on their mail
arriving quickly, so forcing the queues on the server belonging to arriving quickly, so forcing the queues on the server belonging to
their service provider may be more desirable than waiting for the their service provider may be more desirable than waiting for the
retry timeout to occur. retry timeout to occur.
Both of these situations could currently be fixed using the TURN Both of these situations could currently be fixed using the TURN
command defined in [1], if it were not for a large security loophole command defined in [1], if it were not for a large security loophole
in the TURN command. As it stands, the TURN command will reverse the in the TURN command. As it stands, the TURN command will reverse the
direction of the SMTP connection and assume that the remote host is direction of the SMTP connection and assume that the remote host is
being honest about what its name is. The security loophole is that being honest about what its name is. The security loophole is that
there is no stipulation for checking the authenticity of the remote there is no documented stipulation for checking the authenticity of
host name, as given in the HELO or EHLO (for the ESMTP extensions in the remote host name, as given in the HELO or EHLO command. As such,
[4]). most SMTP and ESMTP implementations do not implement the TURN command
to avoid this security loophole.
This has been addressed in the design of the ETRN command. This This has been addressed in the design of the ETRN command. This
extended turn command was written with the points in the first extended turn command was written with the points in the first
paragraph in mind, yet paying attention to the problems that paragraph in mind, yet paying attention to the problems that
currently exist with the TURN command. The security loophole is currently exist with the TURN command. The security loophole is
avoided by placing the focus on the server to start a new connection avoided by asking the server to start a new connection aimed at the
aimed at the specified client. specified client.
In this manner, the server has a lot more certainty that it is In this manner, the server has a lot more certainty that it is
talking to the correct SMTP client. This mechanism can just be seen talking to the correct SMTP client. This mechanism can just be seen
as a more immediate version of the retry queues that appear in most as a more immediate version of the retry queues that appear in most
SMTP implementations. In addition, as this command will take a SMTP implementations. In addition, as this command will take a
single parameter, the name of the remote host to start the queues for, single parameter, the name of the remote host(s) to start the queues for,
the server can make a decision as to whether it wishes to respect the the server can decide whether it wishes to respect the request or deny
request or deny it for administrative reasons. it for any local administrative reasons.
6. Definitions 6. Definitions
The term remote queue processing is meant to reflect the manner in Remote queue processing means that using an SMTP or ESMTP connection,
which a server implementation of the SMTP protocol maintains its the client may request that the server start to process parts of its
queue of messages that it currently cannot send to the proper hosts. messaging queue. This processing is performed using the existing SMTP
This method reflects the wishes of that remote host, as reflected by infrastructure and will occur at some point after the processing is
the MX records, and most likely will reflect that the local host is initiated.
listed in the MX records or that there is no MX record for the remote
host. The server host is the node that is responding to the ETRN command.
The client host is the node that is initiating the ETRN command.
The remote host name is defined to be a plain-text field that The remote host name is defined to be a plain-text field that
specifies a fully qualified domain name for the remote host. This specifies a name for the remote host(s). This remote host name may also
remote host name may also include an alias for the specified remote include an alias for the specified remote host or special commands to
host. identify other types of queues.
7. The extended ETRN command 7. The extended ETRN command
The extended ETRN command is issued by a client when it wishes to The extended ETRN command is issued by the client host when it wishes to
start the SMTP queue processing of a remote host. The syntax of this start the SMTP queue processing of a given server host. The syntax of this
command is as follows: command is as follows:
ETRN [<option character>]<node name><CR><LF> ETRN [<option character>]<node name><CR><LF>
This command may only be issued at any time once a session is This command may be issued at any time once a session is established, as
established, as long as there is not a transaction occuring. Thus, long as there is not a transaction occuring. Thus, this command is
this command is illegal between a MAIL FROM: command to the end of illegal between a MAIL FROM: command and the end of the DATA commands
the DATA commands and responses. and responses.
The specified node name must be a fully qualified domain name for The specified node name must be a fully qualified domain name for
the node, but may include an alias for the local node. If an alias the node, which may refer to a CNAME or MX pointer in the DNS. If an alias
is used for the node, multiple ETRN commands may be needed to start is used for the node, multiple ETRN commands may be needed to start
the processing for the node as it may be listed at the remote site the processing for the node as it may be listed at the remote site
under multiple names. The option character under normal circumstances under multiple names. This can also be addressed using the options
is not used. discussed in section 7.3.
The option character under normal circumstances is not used.
7.1 Server action on receipt of the extended ETRN command 7.1 Server action on receipt of the extended ETRN command
When the server receives the ETRN command, it should have a look When the server host receives the ETRN command, it should have a look
at the node name that is specified in the command and make a local at the node name that is specified in the command and make a local
decision if it should respect the node name. If not, the decision if it should honour the request. If not, the appropriate error
appropriate error codes should be returned to the client. codes should be returned to the client.
Otherwise, the server should start force its retry queues to start Otherwise, the server host should force its retry queues to start
sending messages to that remote site, using another SMTP connection. sending messages to that remote site, using another SMTP connection.
At the moment, there is no definition that a connection must occur. At the moment, there is no requirement that a connection must occur,
This should be noted in the case where there are no messages for the or that the connection must occur within a given time frame. This
client at the server site. should be noted in the case where there are no messages for the
client host at the server host and only the 250 response is used.
Seeing as the processing of the queues may take an indeterminate Since the processing of the queues may take an indeterminate
amount of time, this command should return immediately with a amount of time, this command should return immediately with a
response to the client side. The valid return codes for this command response to the client host. The valid return codes for this command
are: are:
250 OK, queuing for node <x> started 250 OK, queuing for node <x> started
251 OK, no messages waiting for node <x> 251 OK, no messages waiting for node <x>
252 OK, pending messages for node <x> started
253 OK, <n> pending messages for node <x> started
458 Unable to queue messages for node <x> 458 Unable to queue messages for node <x>
459 Node <x> not allowed: <reason> 459 Node <x> not allowed: <reason>
500 Syntax Error 500 Syntax Error
501 Syntax Error in Parameters 501 Syntax Error in Parameters
The 250 response code does not indicate that messages will be sent to
the system in question, just that the queue has been started and some
action will occur. If the server is capable of supporting it, the 251,
252 or 253 response codes should be used to give more information to the
client side. In this case, if there are messages waiting for the client
side node, a check can be performed using these responses codes as an
indication of when there are no more pending messages in the queue for
that node.
The 458 and 459 result codes should be used to give more information
back to the client host as to why the action was not performed. If the
syntax of the request is not correct, then the 500 and 501 result codes
should be used.
7.2 Client action on receiving response to extended ETRN command 7.2 Client action on receiving response to extended ETRN command
If one of the 500 level error codes (550 or 551) are sent, the If one of the 500 level error codes (550 or 551) are sent, the
client should assume that the protocol is not supported in the remote client should assume that the protocol is not supported in the remote
site or that the protocol has not been implemented correctly on host or that the protocol has not been implemented correctly on
either the client or server site. In this case, multiple ETRN either the client or server host. In this case, multiple ETRN
commands (dealing with the aliases for the system) should not be commands (dealing with the aliases for the system) should not be
sent. sent.
If the 250 response is received, then the client can assume that If the 250 response is received, then the client host can assume
the server found its request to be satisfactory and it will send that the server host found its request to be satisfactory and it
any queued messages. This process may involve going through a very will send any queued messages. This process may involve going
large retry queue, and may take some time. through a very large retry queue, and may take some time.
If the 400 level response is received, then the client can assume If the 400 level response is received, then the client can assume
that the server supports the command, but for some local reason does that the server supports the command, but for some local reason does
not want to accept the ETRN command as is. In most cases, it will not want to accept the ETRN command as is. In most cases, it will
mean that there is a list of nodes that it will accept the command mean that there is a list of nodes that it will accept the command
from and the current client is not on that list. The 459 response from and the current client is not on that list. The 459 response
code is presented to allow for a more in-depth reason as to why the code is presented to allow for a more in-depth reason as to why the
remote queuing cannot be started. remote queuing cannot be started.
7.3 Use Of ETRN to release mail for a subdomain or queue 7.3 Use Of ETRN to release mail for a subdomain or queue
If the requesting server wishes to release all of the mail for If the requesting server wishes to release all of the mail for
a given subdomain, a variation on the ETRN command can be used. a given subdomain, a variation on the ETRN command can be used.
To perform this request, the option character '@' should be used To perform this request, the option character '@' should be used
in front of the node name. In this manner, any node names that in front of the node name. In this manner, any domain names that
are formed of a prefix of characters and a suffix of the specified are formed with a suffix of the specified node name are released.
node name are released.
For example, if the command ETRN @foo.com was issued, then any For example, if the command ETRN @foo.com was issued, then any
accumulated mail for fred.foo.com, a.b.c.d.e.f.g.foo.com or foo.com accumulated mail for fred.foo.com, a.b.c.d.e.f.g.foo.com or foo.com
may be released. It should be noted that the receiving side of the may be released. It should be noted that the receiving side of the
ETRN command should make a decision based on the node in question ETRN command should make a decision based on the client in question
and only allow certain combinations for each of the nodes. This is and only allow certain combinations for each of the nodes. This is
more of a security issue than anything else. more of a security issue than anything else.
In a similar vein, it might be necessary under some circumstances In a similar vein, it might be necessary under some circumstances
to release a certain queue containing information. To this end, to release a certain queue, where that queue does not correspond to
the option character '#' can be used to force the processing of a a given domain name. To this end, the option character '#' can be
given queue. In this case, the node name would be used as a queue used to force the processing of a given queue. In this case, the
name instead, and its syntactical structure would be dependant on node name would be used as a queue name instead, and its syntactical
the receiving server. An example of this would be using the command structure would be dependant on the receiving server. An example of
ETRN #uucp to force the flush of a UUCP queue. this would be using the command ETRN #uucp to force the flush of a
UUCP queue. Note that the use of this option is entirely a local
matter and there is no way for a client to find a list of any such
queues that exist.
8. Minimal usage 8. Minimal usage
A "minimal" client may use this extension to simply force its A "minimal" client may use this extension with its host name to
empirical name to be used to start the queues on the remote host. start the queues on the server host. This minimal usage will not
This minimal usage will not handle cases where mail for 'x.y' is sent handle cases where mail for 'x.y' is sent to 's.x.y'.
to 's.x.y' which is aliased through a firewall or simple for local
site management reasons.
A minimal server may use this extensions to start the processing A minimal server may use this extensions to start the processing
of the queues for all remote sites. In this case, the 458 error of the queues for all remote sites. In this case, the 458 error
response will not be seen, and it should always return the 250 response will not be seen, and it should always return the 250
response as it will always try and start the processing for any response as it will always try and start the processing for any
request. request.
9. Example 9. Example
The following example illustrates the use of remote queue processing The following example illustrates the use of remote queue processing
skipping to change at line 248 skipping to change at line 272
S: 250-EXPN S: 250-EXPN
S: 250-HELP S: 250-HELP
S: 250 ETRN S: 250 ETRN
C: ETRN C: ETRN
S: 500 Syntax Error S: 500 Syntax Error
C: ETRN localname C: ETRN localname
S: 501 Syntax Error in Parameters S: 501 Syntax Error in Parameters
C: ETRN uu.net C: ETRN uu.net
S: 458 Unable to queue messages for node uu.net S: 458 Unable to queue messages for node uu.net
... ...
C: ETRN sigurd.innosoft.com C: ETRN sigurd.innosoft.com
S: 250 OK, queuing for node sigurd.innosoft.com started S: 250 OK, queuing for node sigurd.innosoft.com started
C: ETRN innosoft.com C: ETRN innosoft.com
S: 250 OK, queuing for node innosoft.com started S: 250 OK, queuing for node innosoft.com started
OR
C: ETRN sigurd.innosoft.com
S: 251 OK, no messages waiting for node sigurd.innosoft.com
C: ETRN innosoft.com
S: 252 OK, pending messages for node innosoft.com started
C: ETRN mysoft.com
S: 253 OK, 14 pending messages for node mysoft.com started
... ...
C: ETRN foo.bar C: ETRN foo.bar
S: 459 Node foo.bar not allowed: Unable to resolve name. S: 459 Node foo.bar not allowed: Unable to resolve name.
... ...
C: QUIT C: QUIT
S: 250 Goodbye S: 250 Goodbye
10. Security considerations 10. Security considerations
This command does not compromise any security considerations of any This command does not compromise any security considerations of any
existing SMTP or ESMTP protocols as it merely shortens the time that existing SMTP or ESMTP protocols as it merely shortens the time that
a client needs to wait before their messages are retried. a client needs to wait before their messages are retried.
Precautions should be taken to make sure that any client server should Precautions should be taken to make sure that any client server can
only use the @ and # option characters for systems that make sense. only use the @ and # option characters for systems that make sense.
Failure to implement some kind of secure sanity checking on the Failure to implement some kind of sanity checking on the
parameters could lead to congestion. This would be evident of a person parameters could lead to congestion. This would be evident if a person
asking to release #com, which would release mail for any address that asking to release @com, which would release mail for any address that
ended with com. ended with com.
11. Acknowledgements 11. Acknowledgements
This document was created with lots of support from the users of our This document was created with lots of support from the users of our
products, who have given some input to the functionality that they products, who have given some input to the functionality that they
would like to see in the software that they bought. would like to see in the software that they bought.
11. References 11. References
[1] J. B. Postel. Simple Mail Transfer Protocol. Request for Comments [1] J. B. Postel. Simple Mail Transfer Protocol. Request for Comments
821, August 1982. 821, August 1982.
[2] D. H. Crocker. Standard for the Format of ARPA Internet Text [2] Klensin, J., WG Chair, Freed, N., Editor, Rose, M., Stefferud,
Messages. Request for Comments 822, August 1982. E., and D. Crocker, "SMTP Service Extensions" RFC 1425, United
Nations University, Innosoft International, Inc., Dover Beach
[3] K. Moore. Representation of Non-ASCII Text in Internet Message Consulting, Inc., Network Management Associates, Inc., The Branch
Headers. Request for Comments 1522, September 1993. Office, February 1993.
[4] M. T. Rose, E. A. Stefferud, D. H. Crocker, John C. Klensin, Ned
Freed. SMTP Service Extensions. Internet-draft, April 1995.
[5] C. Partridge. Mail Routing and the Domain System. Request for
Comments 974, January 1986.
12. Chair, editor, and author addresses
John Klensin, WG Chair
MCI
2100 Reston Parkway
Reston, VA 22091
tel: +1 703 715-7361 fax: +1 703 715-7436
email: klensin@mci.net
Ned Freed, Editor 12. Author addresses
Innosoft International, Inc.
1050 East Garvey Avenue South
West Covina, CA 91790
USA
tel: +1 818 919 3600 fax: +1 818 919 3614
email: ned@innosoft.com
Jack De Winter Jack De Winter
Wildbear Consulting, Inc. Wildbear Consulting, Inc.
8-589 Beechwood Drive 17 Brock Street
Waterloo, Ontario, Canada Kitchener, Ontario, Canada
N2T 2K9 N2M 1X2
tel: +1 519 886 3683 tel: +1 519 576 3873
email: jack@wildside.kwnet.on.ca email: jack@wildbear.on.ca

 End of changes. 34 change blocks. 
92 lines changed or deleted 106 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/