| < 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/ | ||||