| < draft-gellens-on-demand-06.txt | draft-gellens-on-demand-07.txt > | |||
|---|---|---|---|---|
| Internet Draft: On-Demand Mail Relay R. Gellens | Internet Draft: On-Demand Mail Relay R. Gellens | |||
| Document: draft-gellens-on-demand-06.txt QUALCOMM | Document: draft-gellens-on-demand-07.txt Qualcomm | |||
| Expires: 30 September 1999 31 March 1999 | Expires: 7 November 1999 7 May 1999 | |||
| ON-DEMAND MAIL RELAY (ODMR) | ON-DEMAND MAIL RELAY (ODMR) | |||
| SMTP with Dynamic IP Addresses | SMTP with Dynamic IP Addresses | |||
| Status of this Memo: | Status of this Memo: | |||
| This document is an Internet-Draft and is in full conformance with | This document is an Internet-Draft and is in full conformance with | |||
| all provisions of Section 10 of RFC2026. | all provisions of Section 10 of RFC2026. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| skipping to change at page 9, line ? ¶ | skipping to change at page 9, line ? ¶ | |||
| ! ! ! reversed state ! | ! ! ! reversed state ! | |||
| ! ! ------------------ | ! ! ------------------ | |||
| ! ! ! | ! ! ! | |||
| ! ! QUIT | ! ! QUIT | |||
| ! ! ! | ! ! ! | |||
| V V V | V V V | |||
| --------------------- | --------------------- | |||
| ! termination ! | ! termination ! | |||
| --------------------- | --------------------- | |||
| (Note that in the reversed state, commands are sent by the provider, | ||||
| not the customer.) | ||||
| 5.1. Initial State | 5.1. Initial State | |||
| In the initial state, the provider is the server and the customer is | In the initial state, the provider is the server and the customer is | |||
| the client. Three commands are valid: EHLO, AUTH, and QUIT. | the client. Three commands are valid: EHLO, AUTH, and QUIT. | |||
| 5.1.1. EHLO | 5.1.1. EHLO | |||
| The EHLO command is the same as in [ESMTP]. The response MUST | The EHLO command is the same as in [ESMTP]. The response MUST | |||
| include AUTH and ATRN. | include AUTH and ATRN. | |||
| skipping to change at page 9, line ? ¶ | skipping to change at page 9, line ? ¶ | |||
| 5.2. Authenticated State | 5.2. Authenticated State | |||
| The authenticated state is entered after a successful AUTH command. | The authenticated state is entered after a successful AUTH command. | |||
| Two commands are valid in the authenticated state: ATRN and QUIT. | Two commands are valid in the authenticated state: ATRN and QUIT. | |||
| 5.2.1. ATRN (Authenticated TURN) | 5.2.1. ATRN (Authenticated TURN) | |||
| Unlike the TURN command in [SMTP], the ATRN command optionally takes | Unlike the TURN command in [SMTP], the ATRN command optionally takes | |||
| one or more domains as a parameter. The ATRN command MUST be | one or more domains as a parameter. The ATRN command MUST be | |||
| rejected if the session has not been authenticated. Response code | rejected if the session has not been authenticated. Response code | |||
| 530 [AUTH] should be used for this. | 530 [AUTH] is used for this. | |||
| The timeout for this command MUST be at least 10 minutes to allow | The timeout for this command MUST be at least 10 minutes to allow | |||
| the provider time to process its mail queue. | the provider time to process its mail queue. | |||
| An ATRN command sent with no domains is equivalent to an ATRN | An ATRN command sent with no domains is equivalent to an ATRN | |||
| command specifying all domains to which the customer has access. | command specifying all domains to which the customer has access. | |||
| If the authentication used by the customer does not provide access | If the authentication used by the customer does not provide access | |||
| to all of the domains specified in ATRN, the provider MUST NOT send | to all of the domains specified in ATRN, the provider MUST NOT send | |||
| mail for any domains to the customer; the provider MUST reject the | mail for any domains to the customer; the provider MUST reject the | |||
| ATRN command with a 450 code. | ATRN command with a 450 code. | |||
| If the customer does have access to all of the specified domains, | If the customer does have access to all of the specified domains, | |||
| but none of them have any queued mail, the provider normally rejects | but none of them have any queued mail, the provider normally rejects | |||
| the ATRN command with response code 453. The provider MAY use | the ATRN command with response code 453. The provider MAY instead | |||
| response code 450, to avoid disclosing information to unauthorized | issue a 250 success code, and after the roles are reversed, send a | |||
| parties regarding the domains for which it provides ODMR service. | QUIT following the EHLO. | |||
| Or, the provider MAY issue a 250 success code, and after the roles | ||||
| are reversed, send a QUIT following the EHLO. | ||||
| The provider MAY also reject the ATRN command with a 450 response to | The provider MAY also reject the ATRN command with a 450 response to | |||
| indicate refusal to accept multiple requests issued within a | indicate refusal to accept multiple requests issued within a | |||
| particular time interval. | particular time interval. | |||
| If the customer has access to all of the specified domains and mail | If the customer has access to all of the specified domains and mail | |||
| exists in at least one of them, the provider issues a 250 success | exists in at least one of them, the provider issues a 250 success | |||
| code. | code. | |||
| If the server is unable to verify access to the requested domains | If the server is unable to verify access to the requested domains | |||
| (for example, a mapping database is temporarily unavailable), | (for example, a mapping database is temporarily unavailable), | |||
| response code 451 is sent. | response code 451 is sent. | |||
| [ABNF] for ATRN: | [ABNF] for ATRN: | |||
| atrn = "ATRN" [domain *("," domain)] | atrn = "ATRN" [SP domain *("," domain)] | |||
| domain = sub-domain 1*("." sub-domain) | domain = sub-domain 1*("." sub-domain) | |||
| sub-domain = (ALPHA / DIGIT) *(ldh-str) | sub-domain = (ALPHA / DIGIT) *(ldh-str) | |||
| ldh-str = *(ALPHA / DIGIT / "-") (ALPHA / DIGIT) | ldh-str = *(ALPHA / DIGIT / "-") (ALPHA / DIGIT) | |||
| 5.3. Reversed State | 5.3. Reversed State | |||
| After the provider has sent a success reply to the ATRN command, the | After the provider has sent a success reply to the ATRN command, the | |||
| skipping to change at page 9, line ? ¶ | skipping to change at page 9, line ? ¶ | |||
| 6. Example On-Demand Mail Relay Session: | 6. Example On-Demand Mail Relay Session: | |||
| P: 220 EXAMPLE.NET on-demand mail relay server ready | P: 220 EXAMPLE.NET on-demand mail relay server ready | |||
| C: EHLO example.org | C: EHLO example.org | |||
| P: 250-EXAMPLE.NET | P: 250-EXAMPLE.NET | |||
| P: 250-AUTH CRAM-MD5 EXTERNAL | P: 250-AUTH CRAM-MD5 EXTERNAL | |||
| P: 250 ATRN | P: 250 ATRN | |||
| C: AUTH CRAM-MD5 | C: AUTH CRAM-MD5 | |||
| P: 334 MTg5Ni42OTcxNzA5NTJASVNQLkNPTQo= | P: 334 MTg5Ni42OTcxNzA5NTJASVNQLkNPTQo= | |||
| C: Zm9vYmFyLm5ldCBiOTEzYTYwMmM3ZWRhN2E0OTViNGU2ZTczMzRkMzg5MAo= | C: Zm9vYmFyLm5ldCBiOTEzYTYwMmM3ZWRhN2E0OTViNGU2ZTczMzRkMzg5MAo= | |||
| P: 235 now authenticated as example.org | P: 235 now authenticated as example.org | |||
| C: ATRN example.org, example.com | C: ATRN example.org,example.com | |||
| P: 250 OK now reversing the connection | P: 250 OK now reversing the connection | |||
| C: 220 example.org ready to receive email | C: 220 example.org ready to receive email | |||
| P: EHLO EXAMPLE.NET | P: EHLO EXAMPLE.NET | |||
| C: 250-example.org | C: 250-example.org | |||
| C: 250 SIZE | C: 250 SIZE | |||
| P: MAIL FROM: <Lester.Tester@dot.foo.bar> | P: MAIL FROM: <Lester.Tester@dot.foo.bar> | |||
| C: 250 OK | C: 250 OK | |||
| P: RCPT TO: <l.eva.msg@example.com> | P: RCPT TO: <l.eva.msg@example.com> | |||
| C: 250 OK, recipient accepted | C: 250 OK, recipient accepted | |||
| ... | ... | |||
| End of changes. 7 change blocks. | ||||
| 11 lines changed or deleted | 11 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/ | ||||