Difference between revisions of "RFC2034"

From RFC-Wiki
 
Line 1: Line 1:
 
Network Working Group                                      N. Freed
 
Network Working Group                                      N. Freed
Request for Comments: RFC 2034                              Innosoft
+
Request for Comments: [[RFC2034|RFC 2034]]                             Innosoft
 
Category: Standards Track                              October 1996
 
Category: Standards Track                              October 1996
  
Line 11: Line 11:
 
Internet community, and requests discussion and suggestions for
 
Internet community, and requests discussion and suggestions for
 
improvements.  Please refer to the current edition of the "Internet
 
improvements.  Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
+
Official Protocol Standards" ([[STD1|STD 1]]) for the standardization state
 
and status of this protocol.  Distribution of this memo is unlimited.
 
and status of this protocol.  Distribution of this memo is unlimited.
  
Line 18: Line 18:
 
This memo defines an extension to the SMTP service [RFC-821, RFC-
 
This memo defines an extension to the SMTP service [RFC-821, RFC-
 
1869] whereby an SMTP server augments its responses with the enhanced
 
1869] whereby an SMTP server augments its responses with the enhanced
mail system status codes defined in RFC 1893.  These codes can then
+
mail system status codes defined in [[RFC1893|RFC 1893]].  These codes can then
 
be used to provide more informative explanations of error conditions,
 
be used to provide more informative explanations of error conditions,
 
especially in the context of the delivery status notifications format
 
especially in the context of the delivery status notifications format
defined in RFC 1894.
+
defined in [[RFC1894|RFC 1894]].
  
 
== Introduction ==
 
== Introduction ==
Line 29: Line 29:
 
particular, in the modern, international, and multilingual Internet a
 
particular, in the modern, international, and multilingual Internet a
 
need exists to assign codes to specific error conditions that can be
 
need exists to assign codes to specific error conditions that can be
translated into different languages. RFC 1893 defines such a set of
+
translated into different languages. [[RFC1893|RFC 1893]] defines such a set of
status codes and RFC 1894 defines a mechanism to send such coded
+
status codes and [[RFC1894|RFC 1894]] defines a mechanism to send such coded
 
material to users. However, in many cases the agent creating the RFC
 
material to users. However, in many cases the agent creating the RFC
 
1894 delivery status notification is doing so in response to errors
 
1894 delivery status notification is doing so in response to errors
Line 38: Line 38:
 
status codes in their responses as well as a way to indicate to a
 
status codes in their responses as well as a way to indicate to a
 
client when they are in fact doing this. This memo uses the SMTP
 
client when they are in fact doing this. This memo uses the SMTP
extension mechanism described in RFC 1869 to define such a mechanism.
+
extension mechanism described in [[RFC1869|RFC 1869]] to define such a mechanism.
  
 
== Framework for the Enhanced Error Statuses Extension ==
 
== Framework for the Enhanced Error Statuses Extension ==
Line 57: Line 57:
 
       other than the initial greeting and any response to
 
       other than the initial greeting and any response to
 
       HELO or EHLO are prefaced with a status code as defined
 
       HELO or EHLO are prefaced with a status code as defined
       in RFC 1893. This status code is always followed by one
+
       in [[RFC1893|RFC 1893]]. This status code is always followed by one
 
       or more spaces.
 
       or more spaces.
  
Line 71: Line 71:
 
Servers supporting the Enhanced-Status-Codes extension must preface
 
Servers supporting the Enhanced-Status-Codes extension must preface
 
the text part of almost all response lines with a status code. As in
 
the text part of almost all response lines with a status code. As in
RFC 1893, the syntax of these status codes is given by the ABNF:
+
[[RFC1893|RFC 1893]], the syntax of these status codes is given by the ABNF:
  
 
     status-code ::= class "." subject "." detail
 
     status-code ::= class "." subject "." detail
Line 222: Line 222:
  
 
[RFC-821]
 
[RFC-821]
     Postel, J., "Simple Mail Transfer Protocol", RFC 821,
+
     Postel, J., "Simple Mail Transfer Protocol", [[RFC821|RFC 821]],
 
     August, 1982.  (August, 1982).
 
     August, 1982.  (August, 1982).
  
 
[RFC-1869]
 
[RFC-1869]
 
     Rose, M., Stefferud, E., Crocker, C., Klensin, J., Freed,
 
     Rose, M., Stefferud, E., Crocker, C., Klensin, J., Freed,
     N., "SMTP Service Extensions", RFC 1869, November, 1995.
+
     N., "SMTP Service Extensions", [[RFC1869|RFC 1869]], November, 1995.
  
 
[RFC-1893]
 
[RFC-1893]
Line 235: Line 235:
 
[RFC-1894]
 
[RFC-1894]
 
     Moore, K., Vaudreuil, G., "An Extensible Message Format
 
     Moore, K., Vaudreuil, G., "An Extensible Message Format
     for Delivery Status Notifications", RFC 1894, January,
+
     for Delivery Status Notifications", [[RFC1894|RFC 1894]], January,
 
     1996.
 
     1996.
  

Latest revision as of 14:11, 19 October 2020

Network Working Group N. Freed Request for Comments: RFC 2034 Innosoft Category: Standards Track October 1996

                   SMTP Service Extension for
                 Returning Enhanced Error Codes

Status of this Memo

This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited.

Abstract

This memo defines an extension to the SMTP service [RFC-821, RFC- 1869] whereby an SMTP server augments its responses with the enhanced mail system status codes defined in RFC 1893. These codes can then be used to provide more informative explanations of error conditions, especially in the context of the delivery status notifications format defined in RFC 1894.

Introduction

Although SMTP is widely and robustly deployed, various extensions have been requested by parts of the Internet community. In particular, in the modern, international, and multilingual Internet a need exists to assign codes to specific error conditions that can be translated into different languages. RFC 1893 defines such a set of status codes and RFC 1894 defines a mechanism to send such coded material to users. However, in many cases the agent creating the RFC 1894 delivery status notification is doing so in response to errors it received from a remote SMTP server.

As such, remote servers need a mechanism for embedding enhanced status codes in their responses as well as a way to indicate to a client when they are in fact doing this. This memo uses the SMTP extension mechanism described in RFC 1869 to define such a mechanism.

Framework for the Enhanced Error Statuses Extension

The enhanced error statuses transport extension is laid out as follows:

(1) the name of the SMTP service extension defined here is

     Enhanced-Status-Codes;

(2) the EHLO keyword value associated with the extension is

     ENHANCEDSTATUSCODES;

(3) no parameter is used with the ENHANCEDSTATUSCODES EHLO

     keyword;

(4) the text part of all 2xx, 4xx, and 5xx SMTP responses

     other than the initial greeting and any response to
     HELO or EHLO are prefaced with a status code as defined
     in RFC 1893. This status code is always followed by one
     or more spaces.

(5) no additional SMTP verbs are defined by this extension;

     and,

(6) the next section specifies how support for the

     extension affects the behavior of a server and client
     SMTP.

The Enhanced-Status-Codes service extension

Servers supporting the Enhanced-Status-Codes extension must preface the text part of almost all response lines with a status code. As in RFC 1893, the syntax of these status codes is given by the ABNF:

    status-code ::= class "." subject "." detail
    class       ::= "2" / "4" / "5"
    subject     ::= 1*3digit
    detail      ::= 1*3digit

These codes must appear in all 2xx, 4xx, and 5xx response lines other than initial greeting and any response to HELO or EHLO. Note that 3xx responses are NOT included in this list.

All status codes returned by the server must agree with the primary response code, that is, a 2xx response must incorporate a 2.X.X code, a 4xx response must incorporate a 4.X.X code, and a 5xx response must incorporate a 5.X.X code.

When responses are continued across multiple lines the same status code must appear at the beginning of the text in each line of the response.

Servers supporting this extension must attach enhanced status codes to their responses regardless of whether or not EHLO is employed by the client.

Status Codes and Negotiation

This specification does not provide a means for clients to request that status codes be returned or that they not be returned; a compliant server includes these codes in the responses it sends regardless of whether or not the client expects them. This is somewhat different from most other SMTP extensions, where generally speaking a client must specifically make a request before the extended server behaves any differently than an unextended server. The omission of client negotiation in this case is entirely intentional: Given the generally poor state of SMTP server error code implementation it is felt that any step taken towards more comprehensible error codes is something that all clients, extended or not, should benefit from.

IMPORTANT NOTE: The use of this approach in this extension should be seen as a very special case. It MUST NOT be taken as a license for future SMTP extensions to dramatically change the nature of SMTP client-server interaction without proper announcement from the server and a corresponding enabling command from the client.

Usage Example

The following dialogue illustrates the use of enhanced status codes by a server:

S: <wait for connection on TCP port 25> C: <open connection to server> S: 220 dbc.mtview.ca.us SMTP service ready C: EHLO ymir.claremont.edu S: 250-dbc.mtview.ca.us says hello S: 250 ENHANCEDSTATUSCODES C: MAIL FROM:<[email protected]> S: 250 2.1.0 Originator <[email protected]> ok C: RCPT TO:<[email protected]> S: 250 2.1.5 Recipient <[email protected]> ok C: RCPT TO:<[email protected]> S: 550 5.1.1 Mailbox "nosuchuser" does not exist C: RCPT TO:<[email protected]> S: 551-5.7.1 Forwarding to remote hosts disabled

S: 551 5.7.1 Select another host to act as your forwarder C: DATA S: 354 Send message, ending in CRLF.CRLF.

...

C: . S: 250 2.6.0 Message accepted C: QUIT S: 221 2.0.0 Goodbye

The client that receives these responses might then send a nondelivery notification of the general form:

  Date: Mon, 11 Mar 1996 09:21:47 -0400
  From: Mail Delivery Subsystem <[email protected]>
  Subject: Returned mail
  To: <[email protected]>
  MIME-Version: 1.0
  Content-Type: multipart/report; report-type=delivery-status;
        boundary="JAA13167.773673707/YMIR.CLAREMONT.EDU"
  --JAA13167.773673707/YMIR.CLAREMONT.EDU
  content-type: text/plain; charset=us-ascii
     ----- Mail was successfully relayed to
           the following addresses -----
  <[email protected]>
     ----- The following addresses had delivery problems -----
  <[email protected]>
    (Mailbox "nosuchuser" does not exist)
  <[email protected]>
    (Forwarding to remote hosts disabled)
  --JAA13167.773673707/YMIR.CLAREMONT.EDU
  content-type: message/delivery-status
  Reporting-MTA: dns; ymir.claremont.edu
  Original-Recipient: rfc822;[email protected]
  Final-Recipient: rfc822;[email protected]
  Action: relayed
  Status: 2.1.5 (Destination address valid)
  Diagnostic-Code: smtp;
   250 Recipient <[email protected]> ok
  Remote-MTA: dns; dbc.mtview.ca.us
  Original-Recipient: rfc822;[email protected]
  Final-Recipient: rfc822;[email protected]
  Action: failed
  Status: 5.1.1 (Bad destination mailbox address)
  Diagnostic-Code: smtp;
   550 Mailbox "nosuchuser" does not exist
  Remote-MTA: dns; dbc.mtview.ca.us
  Original-Recipient: rfc822;[email protected]
  Final-Recipient: rfc822;[email protected]
  Action: failed
  Status: 5.7.1 (Delivery not authorized, message refused)
  Diagnostic-Code: smtp;
    551 Forwarding to remote hosts disabled
    Select another host to act as your forwarder
  Remote-MTA: dns; dbc.mtview.ca.us
  --JAA13167.773673707/YMIR.CLAREMONT.EDU
  content-type: message/rfc822
  [original message goes here]
  --JAA13167.773673707/YMIR.CLAREMONT.EDU--

Note that in order to reduce clutter the reporting MTA has omitted enhanced status code information from the diagnostic-code fields it has generated.

Security Considerations

Additional detail in server responses axiomatically provides additional information about the server. It is conceivable that additional information of this sort may be of assistance in circumventing server security. The advantages of provides additional information must always be weighed against the security implications of doing so.

References

[RFC-821]

    Postel, J., "Simple Mail Transfer Protocol", RFC 821,
    August, 1982.  (August, 1982).

[RFC-1869]

    Rose, M., Stefferud, E., Crocker, C., Klensin, J., Freed,
    N., "SMTP Service Extensions", RFC 1869, November, 1995.

[RFC-1893]

    Vaudreuil, G., "Enhanced Mail System Status Codes", RFC
    1893, January, 1996.

[RFC-1894]

    Moore, K., Vaudreuil, G., "An Extensible Message Format
    for Delivery Status Notifications", RFC 1894, January,
    1996.

Author Address

Ned Freed Innosoft International, Inc. 1050 East Garvey Avenue South West Covina, CA 91790 USA

tel: +1 818 919 3600           fax: +1 818 919 3614
email: [email protected]