summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorfukachan <fukachan>2001-07-14 04:35:12 +0000
committerfukachan <fukachan>2001-07-14 04:35:12 +0000
commit3eabb3821f867c6b51d84a2a2066f67ed1cb07c4 (patch)
treecde45b297561d07e2d6770c3ccc2d74e207daeab /Documentation
parent077a433ea6a398464142f5a91297a03091360437 (diff)
downloadfml8-3eabb3821f867c6b51d84a2a2066f67ed1cb07c4.tar.gz
fml8-3eabb3821f867c6b51d84a2a2066f67ed1cb07c4.tar.bz2
fml8-3eabb3821f867c6b51d84a2a2066f67ed1cb07c4.zip
nuke old I-D
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/en/I-D/draft-ietf-drums-smtpupd-06.txt4053
-rw-r--r--Documentation/en/I-D/draft-ietf-drums-smtpupd-07.txt4053
-rw-r--r--Documentation/en/I-D/draft-ietf-drums-smtpupd-08.txt3574
-rw-r--r--Documentation/en/I-D/draft-ietf-drums-smtpupd-09.txt3734
-rw-r--r--Documentation/en/I-D/draft-ietf-drums-smtpupd-10.txt3796
-rw-r--r--Documentation/en/I-D/draft-ietf-drums-smtpupd-11.txt4018
-rw-r--r--Documentation/en/I-D/draft-ietf-drums-smtpupd-12.txt4076
-rw-r--r--Documentation/en/I-D/draft-ietf-ngtrans-ipv6-smtp-requirement-00.txt354
-rw-r--r--Documentation/en/I-D/draft-varshavchik-verp-smtpext-01.txt538
-rw-r--r--Documentation/en/I-D/draft-vaudreuil-esmtp-binary2-00.txt679
-rw-r--r--Documentation/en/I-D/draft-ward-esmtp-slide-03.txt563
11 files changed, 0 insertions, 29438 deletions
diff --git a/Documentation/en/I-D/draft-ietf-drums-smtpupd-06.txt b/Documentation/en/I-D/draft-ietf-drums-smtpupd-06.txt
deleted file mode 100644
index 80b62634..00000000
--- a/Documentation/en/I-D/draft-ietf-drums-smtpupd-06.txt
+++ /dev/null
@@ -1,4053 +0,0 @@
-
-INTERNET-DRAFT John C. Klensin, Editor
-Expires in six months Dawn P. Mann, Co-Editor
- July 30, 1997
-
-
- Simple Mail Transfer Protocol
-
- draft-ietf-drums-smtpupd-06.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. Internet-Drafts may be updated, replaced, or obsoleted by
-other documents at any time. It is not appropriate to use
-Internet-Drafts as reference material or to cite them other than as a
-"working draft" or "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 ds.internic.net (US East Coast), nic.nordu.net
-(Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific Rim).
-
-If consensus is reached on this document, it will be forwarded to the
-IESG with the recommendation that it be processed onto the Standards
-track.
-
-[[Sections marked with doubled brackets (e.g., "<<") are explicit
-placeholders or known major loose ends. The marking ## is a note in
-the draft to recheck a section number and should be ignored.]]
-
-[[As discussed in the WG, most of the syntax and examples have not
-been changed from 821 -- those changes are a last- step item, after
-the ABNF document completely stabilizes and differences with 822bis
-have been resolved. Similarly, the numbers of appendices will be
-rationalized (and Appendix X removed) before the document is
-submitted to the IESG. Please check appendix X.2 for additional
-problems of which the editor is already painfully aware before
-complaining about things that are missing.]]
-
-
- TABLE OF CONTENTS
- 0. ABSTRACT
-
- 1. INTRODUCTION
-
- 2. THE SMTP MODEL
-
- 2.1 Basic structure
- 2.2 The extension model
- 2.3 Other terminology
- 2.4 Syntax Principles
-
-
- 3. THE SMTP PROCEDURES: AN OVERVIEW
-
- 3.1 Session initiation
- 3.2 Client initiation
- 3.3 Mail transactions
- 3.4 Forwarding for Address Correction or Updating
- 3.5 Commands for Debugging Addresses
- 3.6 Domains
- 3.7 Relaying
- 3.8 Mail Gatewaying
- 3.9 Terminating sessions and connections
- 3.10 Mailing lists and Aliases
-
-
- 4. THE SMTP SPECIFICATIONS
-
- 4.1. SMTP Commands
- 4.1.1. Command Semantics and Syntax
- 4.1.2. Lower-level Syntax
- 4.1.3. Address literals
- 4.1.4. Order of commands
- 4.1.5. Private-use commands
- 4.2. SMTP Replies
- 4.2.1. Reply Code Severities and Theory
- 4.2.2. Reply Codes by Function Group
- 4.2.3. Reply Codes in Numeric Order
- 4.2.4. Reply code 502
- 4.2.5 Reply codes after DATA and the subsequent CRLF.CRLF.
- 4.3. Sequencing of Commands and Replies
- 4.4 Trace information
- 4.5. Details
- 4.5.1. Minimum Implementation
- 4.5.2. Transparency
- 4.5.3. Sizes and Timeouts
- 4.5.4 SMTP Queuing Strategies
-
- 5. Address resolution and mail handling
-
- 6. Problem detection and handling
- 6.1 Reliable delivery and replies by email
- 6.2 Loop detection
- 6.3 Compensating for irregularities
-
- 7. Security Considerations
- 7.1 Mail security and spoofing
- 7.2 "Blind" copies
- 7.3 VRFY, EXPN, and security
- 7.4 Information disclosure
- 7.5 Scope of operation of SMTP servers
-
- 8. IANA Considerations
-
- 9. References
-
- 10. Editor's addresses
-
- 11. Acknowledgments
-
- APPENDIX A: TCP
- APPENDIX B: Generating SMTP commands from RFC 822 headers
- APPENDIX C: Source routes
- APPENDIX F: Scenarios
- APPENDIX G: Other gateway issues.
- APPENDIX I: Deprecated features of RFC 821
- APPENDIX X: Change summary and Loose ends (temporary)
-
-
-
-
-
-0. Abstract
-
-This document is a self-contained specification of the basic protocol
-for the Internet electronic mail transport, consolidating and
-updating
-
- * the original SMTP specification of RFC 821 [RFC-821],
- * Domain name system requirements and implications for mail
- transport from RFC 1035 [RFC-DNS] and RFC 974 [RFC974],
- * the clarifications and applicability statements in
- RFC 1123 [RFC-1123], and
- * material drawn from the SMTP Extension mechanisms [SMTPEXT].
-
-It replaces RFC 821, RFC 974, and the mail transport materials of RFC
-1123. However, RFC 821 specifies some features that are not in
-significant use in the Internet of the mid-1990s and (in appendices)
-some additional transport models. Those sections are omitted here in
-the interest of clarity and brevity; readers needing them should
-refer to RFC 821.
-
-It also includes some additional material from RFC 1123 that required
-amplification. This material has been identified in multiple ways,
-mostly by tracking flaming on the header-people list [HEADER-PEOPLE]
-and problems of unusual readings or interpretations that have turned
-up as the SMTP extensions have been deployed. Where this
-specification moves beyond consolidation and actually differs from
-earlier documents, it supersedes them technically as well as
-textually.
-
-Although SMTP was designed as a mail transport and delivery protocol,
-this specification also contains information that is important to its
-use as a 'mail posting' protocol, as recommended for POP [RFC-POP2,
-RFC-POP3] and IMAP [RFC-IMAP4].
-
-Section ##2.3 provides definitions of terms specific to this
-document. Except when the historical terminology is necessary for
-clarity, this document uses the current 'client' and 'server'
-terminology to identify the sending and receiving SMTP processes,
-respectively.
-
-A companion document discusses message bodies and formats RFC 822,
-MIME, and their relationship - [MSGFMT].
-
-1. INTRODUCTION
-
-The objective of the Simple Mail Transfer Protocol (SMTP) is to
-transfer mail reliably and efficiently.
-
-SMTP is independent of the particular transmission subsystem and
-requires only a reliable ordered data stream channel. While this
-document specifically discusses transport over TCP, other transports
-are possible. Appendices to RFC 821 describe some of them.
-
-An important feature of SMTP is its capability to transport mail
-across transport service environments, usually referred to as "mail
-gatewaying" (see section 3.8). A transport service environment might
-consist of the mutually-TCP-accessible hosts on the public Internet,
-a firewall-isolated private TCP/IP LAN, or a LAN or WAN environment
-utilizing an entirely different transport-level protocol. It is
-important to realize that "transport systems" are one-to-one with
-usual definitions of "networks". A process can communicate directly
-with another process, and transport mail using this protocol, through
-any mutually known transport layer. Conversely, mail can be relayed
-(actually gatewayed) between hosts on different transport systems by
-a host on both transport systems. The Mail eXchanger mechanisms of
-the domain name system [RFC-DNS, and section ##5 of this document]
-usually permit relaying and gatewaying to occur invisibly to the user.
-
-
-2. THE SMTP MODEL
-
-2.1 Basic structure
-
-The SMTP design is based on the following model of communication: as
-the result of a user mail request (or transfer from a mail user agent
-(see section ##2.3)), the SMTP client establishes a two-way
-transmission channel to an SMTP server. A fully-capable SMTP client
-determines the address of an appropriate host running an SMTP server
-by resolving the domain name given in the SMTP request to either an
-intermediate mail exchanger host or a final target host. In other
-cases, common with clients associated with implementations of the POP
-[RFC-POP2, RFC-POP3] or IMAP [RFC-IMAP4] protocols, or when the
-client is inside an isolated transport service environment, the SMTP
-client may send all of its traffic to a single SMTP server which, in
-turn, relays the mail to final (or other intermediate) destinations.
-The relay and those destinations are expected to support all of the
-queuing, retrying, and alternate address functions discussed in this
-specification.
-
-The SMTP server may be either the ultimate destination or an
-intermediate "relay" (i.e., may assume the role of an SMTP client
-after receiving the message). SMTP commands are generated by the
-SMTP client and sent to the SMTP server. SMTP replies are sent from
-the SMTP server to the SMTP client in response to the commands.
-
-Once the transmission channel is established and initial handshaking
-completed, the SMTP client normally initiates a mail transaction.
-Such a transaction consists of a series of commands to specify the
-originator and destination of the mail and transmission of the
-message content (including any headers or other structure) itself.
-When the same message is sent to multiple recipients, this protocol
-encourages the transmission of only one copy of the data for all
-recipients at the same destination (or intermediate relay) host.
-
-The server responds to each command with a reply; replies may
-indicate that the command was accepted, that additional commands are
-expected, or that a temporary or permanent error condition exists.
-Commands specifying the sender or recipients may include
-server-permitted SMTP service extension requests as discussed in
-section ##2.2. The dialog is purposely lock-step, one-at-a-time,
-although this can be modified by mutually-agreed extension requests
-(e.g., [RFC-Pipeline]).
-
-Once a given mail message has been transmitted, the client may either
-request that the connection be shut down or may initiate other mail
-transactions.
-
- -------------------------------------------------------------
-
-
- +----------+ +----------+
- +------+ | | | |
- | User |<-->| | SMTP | |
- +------+ | Sender- |Commands/Replies| Receiver-|
- +------+ | SMTP |<-------------->| SMTP | +------+
- | File |<-->| | and Mail | |<-->| File |
- |System| | | | | |System|
- +------+ +----------+ +----------+ +------+
-
-
- SMTP client SMTP server
-
- Model for SMTP Use
-
- Figure 1
-
- -------------------------------------------------------------
-
-In addition, an SMTP client may use a connection to an SMTP server
-for ancillary services such as verification of email addresses or
-retrieval of mailing list subscriber addresses.
-
-As suggested above, this protocol provides mechanisms for the
-transmission of mail. This transmission normally occurs directly
-from the sending user's host to the receiving user's host when the
-two hosts are connected to the same transport service. When they are
-not connected to the same transport service, transmission occurs via
-one or more relay SMTP servers. An intermediate host that acts
-as either an SMTP relay or as a gateway into some other transmission
-environment may also be selected through the use of the domain name
-service (DNS) Mail eXchanger mechanism.
-
-To provide relay capability, the SMTP server is supplied with the
-name of the ultimate destination host as well as the destination
-mailbox name. Usually, intermediate hosts are determined via the DNS
-MX record, not by explicit "source" routing (see Appendices ##C and
-##I).
-
-
-
-2.2 The Extension Model
-
-2.2.1 Background
-
-In an effort that started in 1990, approximately a decade after RFC
-821 was completed, the protocol was modified with a "service
-extensions" model permitting the client and server to agree to
-utilize shared functionality beyond the original SMTP requirements.
-Contemporary SMTP implementations MUST support the basic extension
-mechanisms (see below for details), i.e., servers MUST support the
-EHLO command even if they do not implement any specific extensions
-and clients MUST preferentially utilize EHLO rather than HELO.
-(However, for compatibility with older conforming implementations,
-SMTP clients and servers MUST support the original HELO mechanisms as
-a fallback.) Unless the different characteristics of HELO must be
-identified for interoperability purposes, this document discusses
-only EHLO.
-
-SMTP is widely and deployed and high-quality implementations have
-proven to be very robust., However, the Internet community now
-considers some services to be important that were not anticipated
-when the protocol was first designed. If support for those services
-is to be added, it must be done in a way that permits older
-implementations to continue working acceptably.
-
-In an effort that started in 1990, approximately a decade after RFC
-821 was completed, the protocol was modified with a "service
-extensions" model permitting the client and server to agree to
-utilize shared functionality beyond the original SMTP requirements.
-The SMTP extension mechanism defines a means whereby an extended SMTP
-client and server may recognize each other, and the server can inform
-the client as to the service extensions that it supports.
-
-The extension framework consists of:
-
- (1) The SMTP command EHLO, superseding the earlier HELO,
-
- (2) a registry of SMTP service extensions,
-
- (3) additional parameters to the SMTP MAIL FROM and RCPT TO
- commands, and
-
- (4) optional replacements for verbs defined in this protocol,
- such as for DATA (e.g., see [RFC-BDAT]).
-
-SMTP's strength comes primarily from its simplicity. Experience with
-many protocols has shown that:
-
- -- protocols with few options tend towards ubiquity, whereas
- -- protocols with many options tend towards obscurity.
-
-Each and every extension, regardless of its benefits, must be
-carefully scrutinized with respect to its implementation, deployment,
-and interoperability costs. In many cases, the cost of extending the
-SMTP service will likely outweigh the benefit.
-
-Contemporary SMTP implementations MUST support the basic extension
-mechanism (see below for details), i.e., servers MUST support the
-EHLO command even if they do not implement any specific extensions
-and clients MUST preferentially utilize EHLO rather than HELO.
-
-
-
-
-
-2.2.2 Definition and Registration of Extensions
-
-The IANA maintains a registry of SMTP service extensions. A
-corresponding EHLO keyword value is associated with each extension .
-Each service extension registered with the IANA must be defined in
-aformal standards-track or IESG-approved experimental protocol
-document. The definition must include:
-
- (1) the textual name of the SMTP service extension;
-
- (2) the EHLO keyword value associated with the extension;
-
- (3) the syntax and possible values of parameters associated with
- the EHLO keyword value;
-
- (4) any additional SMTP verbs associated with the extension
- (additional verbs will usually be, but are not required
- to be, the same as the EHLO keyword value);
-
- (5) any new parameters the extension associates with the
- MAIL FROM or RCPT TO verbs;
-
- (6) a description of how support for the extension affects the
- behavior of a server and client SMTP; and,
-
- (7) the increment by which the extension is increasing the
- maximum length of the commands MAIL FROM and/or RCPT TO, over
- that specified in RFC 821.
-
-In addition, any EHLO keyword value starting with an upper or lower
-case "X" refers to a local SMTP service extension used exclusively
-through bilateral agreement. Keywords beginning with "X" may not be
-used in a registered service extension. Conversely, keyword values
-presented in the EHLO response that do not begin with "X" must
-correspond to a standard, standards-track, or IESG-approved
-experimental SMTP service extension registered with IANA. A
-conforming server MUST NOT offer non-"X"-prefixed keyword values that
-are not described in a registered extension.
-
-Additional verbs and parameter names are bound by the same rules as
-EHLO keywords; specifically, verbs beginning with "X" are local
-extensions that may not be registered or standardized. Conversely,
-verbs not beginning with "X" must always be registered.
-
-
-2.3 Terminology
-
-Most of the terminology in this document is common in the Internet at
-the time of its writing. However, the following terms and concepts
-are used in special ways here, or represent differences in
-terminology between RFC 821 and this document, and should be
-understood before reading further. These definitions are normative,
-i.e., they contain specifications to which SMTP implementations are
-required to conform.
-
-2.3.1 Mail objects
-
-SMTP transports a mail object containing an envelope and content.
-
- (1) The SMTP envelope is straightforward, and is sent as a
- series of SMTP protocol units (described in section ##3): it
- consists of an originator address (to which error reports
- should be directed); a delivery mode (e.g., deliver to
- recipient mailboxes); one or more recipient addresses; and
- optional protocol extension material.
-
- (2) The SMTP content is sent in the SMTP DATA protocol unit and
- has two parts: the headers and the body. The headers form a
- collection of field/value pairs structured as described in
- [MSGFMT]; the body, if structured, is defined according to
- MIME [RFC-MIME]. The content is textual in nature, expressed
- using the US ASCII repertoire[1]. Although extensions (such as
- MIME) may relax this restriction for the content body, the
- content headers are always encoded using the US ASCII
- repertoire. The algorithm defined in [RFC-INTLHDR] is used to
- represent header values outside the US ASCII repertoire, while
- still encoding them using the US ASCII repertoire.
-
-2.3.2. Senders and receivers
-
-In RFC 821, the two hosts participating in an SMTP transaction were
-described as the "SMTP-sender" and "SMTP-receiver". This document
-has been changed to reflect current industry terminology and hence
-refers to them as the "SMTP client" (or sometimes just "the client")
-and "SMTP server" (or just "the server"), respectively. Since a
-given host may act both as server and client in a relay situation,
-"receiver" and "sender" terminology is still used where needed for
-clarity.
-
-2.3.3. Mail agents
-
-Additional mail system terminology became common after RFC 821 was
-published and, where convenient, is used in this specification. In
-particular, SMTP servers and clients provide a mail transport service
-and therefore act as Mail Transfer Agents (MTAs). Mail User Agents
-(MUAs or UAs) are normally thought of as the sources and targets of
-mail. At the source, an MUA might collect mail to be transmitted
-from a user and hand it off to an MTA; the final ("delivery") MTA
-would be thought of as handing the mail off to an MUA (or at least
-transferring responsibility to it). However, while these terms are
-used with at least the appearance of great precision in other
-environments, the implied boundaries between MUAs and MTAs often do
-not accurately match common, and conforming, practices with Internet
-mail. Hence, the reader should be cautious about inferring the
-strong relationships and responsibilities that might be implied if
-these terms were used elsewhere.
-
-2.3.4 host
-
-For the purposes of this specification, a host is a computer system
-attached to the Internet (or, in some cases, to a private TCP/IP
-network) and supporting the SMTP protocol. Hosts are known by names
-(see "domain"); identifying them by numerical address is discouraged.
-
-2.3.5 domain
-
-The name of a host (often referred to as a "fully-qualified domain
-name" or "FQDN"), or some entry in the domain name hierarchy, usually
-referred to as a "subdomain", that may contain many hosts. A domain,
-or domain name, may also refer to an alias (label of a CNAME RR) or
-name the label of Mail eXchanger records to be used to deliver mail.
-See [RFC-DNS] and section ##5.
-
-The domain name, as described in this document and in [RFC-DNS], is
-the entire, fully-qualified name, and an apparent host name that is
-not in FQDN form is no more than a local alias. Local aliases MUST
-NOT appear in any SMTP transaction.
-
-
-In other works, if ab.cd.ef is the fully-qualified name of a host (or
-label for an MX record), then it is obviously a "domain". However,
-"cd.ef" may be only a domain name; it is possible for it to not refer
-to any host.
-
-2.3.6 buffer and state table
-
-SMTP sessions are stateful, with both parties carefully maintaining a
-common view of the current state. In this document we model this
-state by a virtual "buffer" and a "state table" on the server which
-may be used by the client to, for example, "clear the buffer" or
-"reset the state table," causing the information in the buffer to be
-discarded and the state to be returned to some previous state
-
-2.3.7 lines
-
-SMTP commands and, unless altered by a service extension, message
-data, are transmitted in "lines". Lines consist of zero or more data
-characters terminated by the ASCII sequence "CR" followed immediately
-by "LF". Conforming implementations MUST NOT recognize or generate
-any other character or character sequence as a line terminator.
-
-2.3.8 Gateway, relay, originator, and delivery system
-
-This specification makes a distinction among four types of SMTP
-systems, based on the role those systems play in transmitting
-electronic mail. An "originating" system (sometimes called an SMTP
-originator) introduces mail into the Internet or, more generally,
-into a transport service environment. A "delivery" SMTP system is one
-that receives mail from a transport service environment and hands it
-to a mail user agent or deposits it in a maildrop which a mail user
-agent is expected to subsequently access. A "relay" SMTP system
-(usually referred to just as a "relay") receives mail from an SMTP
-client and transmits it, without modification to the message data
-other than adding trace information, to another SMTP server for
-further relaying or for delivery.
-
-A "gateway" SMTP system (usually referred to just as a "gateway")
-receives mail from a client system in one transport environment and
-transmits it to a server system in another transport environment.
-Differences in protocols or message semantics between the transport
-environments on either side of a gateway may require that the gateway
-system perform transformations to the message that are not permitted
-to SMTP relay systems.
-
-
-2.3.9 Message content and message body
-
-The terms "message content" and "mail data" are used interchangably
-in this document to describe the material transmitted after the DATA
-command is accepted and before the end of data indication is
-transmitted. Message content includes message headers and the
-possibly-structured message body. The MIME specification [RFC-MIME]
-provides the Standard mechanisms for structured message bodies See
-##2.3.1.
-
-2.3.10 mailbox and address
-
-As used in this specification, an "address" is a character string
-that identifies a user to whom mail will be sent or a location into
-which mail will be deposited. The term "mailbox" refers to that
-depository. The two terms are typically used interchangeably unless
-the distinction between the location in which mail is placed (the
-mailbox) and a reference to it (the address) is important. An
-address normally consists of user and domain specifications. The
-standard mailbox naming convention is defined to be
-"local-part@domain": contemporary usage permits a much broader set of
-applications than simple "user names" and, consequently, the
-local-part is interpreted and assigned semantics only by the host
-specified in the domain part of the address.
-
-
-2.3.11. reply
-
-An SMTP reply is an acknowledgment (positive or negative) sent from
-receiver to sender via the transmission channel in response to a
-command. The general form of a reply is a numeric completion code
-(indicating failure or success) followed by a text string. The codes
-are for use by programs and the text is usually intended for human
-users.
-
-
-
-2.4 Syntax Principles
-
-
-2.4.1 General syntax and transaction model
-
-The mail commands and replies have a rigid syntax. Replies also have
-a numeric code. Complete lists of commands and replies appear in
-Section ##4 "The SMTP Specification".
-
-Commands and replies are not case sensitive. That is, a command or
-reply word MAY be upper case, lower case, or any mixture of upper and
-lower case. Note that this is NOT true of mailbox user names. For
-some hosts the user name is case sensitive (this practice impedes
-interoperability and is discouraged), therefore, SMTP implementations
-MUST take care to preserve the case of user names as they appear in
-mailbox arguments. Domain names are not case sensitive.
-
-Commands and replies are composed of characters from the ASCII
-character set [1]. When the transport service provides an 8-bit byte
-(octet) transmission channel, each 7-bit character is transmitted
-right justified in an octet with the high order bit cleared to zero.
-More specifically, the unextended SMTP service provides seven bit
-transport only. Originating SMTP clients MUST NOT transmit messages
-with information in the high-order bit of octets. If such messages
-are transmitted in violation of this rule, receiving SMTP servers MAY
-clear the high-order bit or reject the message as invalid. In
-general, a relay SMTP SHOULD assume that the message content it has
-received is valid and, assuming that the envelope permits doing so,
-relay it without inspecting that content. Of course, if the content
-is mislabelled and the data path cannot accept the actual content,
-this may result in ultimate delivery of a severely garbled message to
-the recipient. Delivery SMTP systems MAY reject ("bounce") such
-messages rather than deliver them. No sending SMTP system is
-permitted to send envelope commands in any character set other than
-US-ASCII; receiving systems SHOULD reject such commands, normally
-using "500 syntax error - invalid character" replies.
-
-Eight-bit message content transmission MAY be requested of the server
-by a client using extended SMTP facilities, notably the "8BITMIME"
-extension [8BITMIME]. 8BITMIME SHOULD be supported by SMTP servers.
-However, it MUST not be construed as authorization to transmit
-unrestricted eight bit material. 8BITMIME MUST NOT be requested by
-senders for material with the high bit on that is not in MIME format
-with an appropriate content-transfer encoding and servers MAY reject
-such messages.
-
-The metalinguistic notation used in this document corresponds to the
-"Augmented BNF" used in other Internet mail system documents. The
-reader who is not familiar with that syntax should consult [ABNF].
-Metalanguage terms used in running text and examples are surrounded
-by pointed brackets (e.g., <CRLF>) for clarity.
-
-
-2.4.2 Command and reply syntax
-
-The commands consist of a command code followed by an argument field.
-Command codes are four alphabetic characters and are case insensitive.
-
-This also applies to any symbols representing parameter values, such
-as "TO" or "to" for the forward-path. Command codes and the argument
-fields are separated by one or more spaces. However, case is
-important in the local-part within the reverse-path and forward-path
-arguments. In particular, in some hosts the user "smith" is
-different from the user "Smith".
-
-A few SMTP receiver systems, in violation of this specification (and
-RFC 821) require that a particular case be transmitted by clients.
-Implementations MAY wish to make provision to accommodate those
-systems.
-
-The argument field consists of a variable length character string
-ending with the character sequence <CRLF>. The receiver will take no
-action until this sequence is received.
-
-The syntax for each command is shown with the discussion of that
-command. Common elements and parameters are shown in section ##4.1.2.
-
-
-
-3. THE SMTP PROCEDURES: AN OVERVIEW
-
-This section contains descriptions of the procedures used in SMTP:
-session initiation, the mail transaction, forwarding mail, verifying
-mailbox names and expanding mailing lists, and the opening and
-closing exchanges. Comments on relaying, a note on mail domains, and
-a discussion of changing roles are included at the end of this
-section. Examples of partial command and reply sequences are used
-throughout; several complete scenarios are presented in Appendix ##F.
-
-
-3.1 Session initiation
-
-An SMTP session is initiated when a client opens a connection to
-a server and the server responds with an opening message.
-
-SMTP server implementations MAY include identification of their
-software and version information in the connection greeting reply
-after the 220 code (see section ##7.4), a practice that permits more
-efficient isolation and repair of any problems. Implementations MAY
-make provision for SMTP servers to disable the software and version
-announcement where it causes security concerns. While some systems
-also identify their contact point for mail problems, this is not a
-substitute for maintaining the required "postmaster" address (see
-[MSGFMT]).
-
-The SMTP protocol allows a server to formally reject a transaction
- while still allowing the initial connection as follows: a 554
-response MAY be given in the initial connection opening message
-instead of the 220. A server taking this approach MUST still wait
-for the client to send a QUIT (see section ##4.1.1.10) before closing
-the connection and SHOULD respond to any intervening commands with
-"503 bad sequence of commands". Since an attempt to make an SMTP
-connection to such a system is probably in error, a server returning a
-554 response on connection opening SHOULD provide enough information
-in the reply text to facilitate debugging of the sending system.
-
-Once the server has sent the welcoming message and the client has
-received it, the client then sends the EHLO command to the server,
-indicating the client’s identity. In addition to opening the
-session, use of EHLO indicates that the client is able to process
-service extensions and requests that the server provide a list of the
-extensions it supports. Older SMTP systems, unable to support
-service extensions, MAY use HELO instead of EHLO. Servers SHOULD NOT
-return the extended EHLO-style response to a HELO command.
-
-In the EHLO command the host sending the command identifies itself;
-the command may be interpreted as saying "Hello, I am <domain>" (and,
-in the case of EHLO, "and I support service extension requests").
-
- -------------------------------------------------------------
- |
- | Example of Connection Opening
- |
- | S: 220 UNIX.BBN.COM SMTP Ready - trashmail 1.99.a
- | C: EHLO ISIF.ISI.EDU
- | S: 250-UNIX.BBN.COM
- | S: 250 EXPN
- |
- | Example 1 |
- -------------------------------------------------------------
-
- -------------------------------------------------------------
- |
- | Example of Connection Closing
- |
- | S: QUIT
- | R: 221 UNIX.BBN.COM Service closing transmission channel
- |
- | Example 2
- |
- -------------------------------------------------------------
-
-
-3.3. Mail Transactions
-
-There are three steps to SMTP mail transactions. The transaction
-starts with a MAIL command which gives the sender identification. A
-series of one or more RCPT commands follows giving the receiver
-information. Then a DATA command initiates transfer of the mail data
-and is terminated by the "end of mail" data indicator, which also
-confirms the transaction.
-
- The first step in the procedure is the MAIL command.
-
- MAIL <SP> FROM:<reverse-path> [<SP> <mail-parameters>] <CRLF>
-
- This command tells the SMTP-receiver that a new mail transaction
- is starting and to reset all its state tables and buffers,
- including any recipients or mail data. The <reverse-path> contains
- the source mailbox, which can be used to report errors (see
- section ##4.2 for a discussion of error reporting). If accepted,
- the SMTP server returns a 250 OK reply. If the mailbox
- specification is not acceptable for some reason, the server MUST
- return a reply indicating whether the failure is permanent (i.e.,
- will occur again if the client tries to send the same address
- again) or temporary (i.e., the address might be accepted if the
- client tries again later). See section ##4.2.1. Normally,
- failures produce 550 or 553 replies.
-
- Historically, the <reverse-path> can contain more than just a
- mailbox, however, contemporary systems SHOULD NOT use source
- routing (see Appendix ##C).
-
- The optional <mail-parameters> are associated with negotiated SMTP
- service extensions (see section ##2.2).
-
- The second step in the procedure is the RCPT command.
-
- RCPT <SP> TO:<forward-path> [<SP> <rcpt-parameters>] <CRLF>
-
- This command gives a forward-path (normally a mailbox and domain)
- identifying one recipient. If accepted, the SMTP server returns a
- 250 OK reply and stores the forward-path. If the recipient is
- known not to be a deliverable address, the SMTP server returns a
- 550 reply, typically with a string such as "no such user - " and
- the mailbox name (other circumstances and reply codes are
- possible). This step of the procedure can be repeated any number
- of times. The <forward-path> can contain more than just a
- mailbox. Historically, the <forward-path> can be a source routing
- list of hosts and the destination mailbox, however, contemporary
- SMTP clients SHOULD NOT utilize source routes (see Appendix ##C).
- Servers MUST be prepared to encounter a list of source routes in
- the forward path, but SHOULD ignore the routes or MAY decline to
- support the relaying they imply. Similarly, servers MAY decline
- to accept mail that is destined for other hosts or systems. These
- restrictions make a server useless as a relay for clients that do
- not support full SMTP functionality. Consequently,
- restricted-capability clients MUST NOT assume that any SMTP server
- on the Internet can be used as their mail processing (relaying)
- site. If RCPT TO appears without a previous MAIL FROM, the server
- MUST return a 503 "Bad sequence of commands" response. The
- optional <mail-parameters> are associated with negotiated SMTP
- service extensions (see section ##2.2).
-
- The third step in the procedure is the DATA command (or some
- alternative specified in a service extension).
-
- DATA <CRLF>
-
- If accepted, the SMTP server returns a 354 Intermediate reply and
- considers all succeeding lines up to but not including the end of
- mail data indicator to be the message text. When the end of text
- is received and stored the SMTP-receiver sends a 250 OK reply.
-
- Since the mail data is sent on the transmission channel, the end
- of mail data indicator must be indicated so that the command and
- reply dialog can be resumed. SMTP indicates the end of the mail
- data by sending a line containing only a "." (period or full
- stop). A transparency procedure is used to prevent this from
- interfering with the user's text (see Section ##4.5.2).
-
- The end of mail data indicator also confirms the mail transaction
- and tells the SMTP server to now process the stored recipients and
- mail data. If accepted, the SMTP server returns a 250 OK reply.
- The DATA command can fail in only two ways:
-
- o If there was no MAIL FROM, or no RCPT TO, command, or all
- such commands were rejected, the server MAY return a "command
- out of sequence" (503) reply. If that reply is received,
- the client MUST NOT send the message data; more generally,
- message data MUST NOT be sent unless a 354 reply is received.
-
- o If the verb is initially accepted and the 354 reply issued,
- the DATA command should fail only if the mail transaction was
- incomplete (for example, no recipients), or if resources were
- unavailable. However, in practice, some servers do not
- perform recipient verification until after the message text
- is received. These servers SHOULD treat a failure for one or
- more recipients as a "subsequent failure" and return a mail
- message as discussed in section ##6. Using a "550 mailbox
- not found" (or equivalent) reply code after the data are
- accepted makes it difficult or impossible for the client to
- determine which recipients failed.
-
-When RFC 822 format is being used, the mail data include the memo
-header items such as Date, Subject, To, Cc, From [MSGFMT]. Server
-SMTP systems SHOULD NOT reject messages based on perceived defects in
-the RFC 822 or MIME [RFC-MIME] message header or message body. In
-particular, they MUST NOT reject messages in which the numbers of
-Resent- fields do not match or Resent-to appears without Resent-from
-and/or Resent-date.
-
-
-Mail transaction commands MUST be used in the order discussed above.
-Example 3 (below) illustrates the use of these commands in a mail
-transaction.
-
-
- -------------------------------------------------------------
- |
- | Example of the SMTP Mail Transaction Procedure
- |
- | This SMTP example shows mail sent by Smith at host Alpha.foo,
- | to Jones, Green, and Brown at host Beta.org. Here we assume
- | that host Alpha contacts host Beta directly.
- |
- | C: MAIL FROM:<Smith@Alpha.foo
- | S: 250 OK
- |
- | C: RCPT TO:<Jones@Beta.org
- | S: 250 OK
- |
- | C: RCPT TO:<Green@Beta.org
- | S: 550 No such user here
- |
- | C: RCPT TO:<Brown@Beta.org
- | S: 250 OK
- |
- | C: DATA
- | S: 354 Start mail input; end with <CRLF>.<CRLF>
- | C: Blah blah blah...<CRLF>
- | C: ...etc. etc. etc.
- | C: <CRLF>.<CRLF>
- | S: 250 OK
- |
- | The mail has now been accepted for Jones and Brown. Green did
- | not have a mailbox at domain Beta.org
- |
- | Example 3
- |
- -------------------------------------------------------------
-
-
-
-3.4. Forwarding for Address Correction or Updating
-
-Forwarding support is most often required to consolidate and simplify
-addresses within, or relative to, some enterprise and less frequently
-to establish addresses to link a person’s prior address with a
-current one.. Silent forwarding of messages (without server
-notification to the sender), for security or non-disclosure purposes,
-is common in the contemporary Internet.
-
-In both the enterprise and the "new address" cases, information
-hiding (and sometimes security) considerations argue against exposure
-of the "final" address through the SMTP protocol as a side-effectof
-the forwarding activity. This may be especially important when the
-final address may not even be reachable by the sender. Consequently,
-the "forwarding" mechanisms described in section 3.2 of RFC 821, and
-especially the 251 (corrected destination) reply code from RCPT TO
-are deprecated: Servers SHOULD NOT provide that service or return
-that code.
-
-
-
-3.5. Commands for Debugging Addresses
-
-3.5.1 Overview
-
-SMTP provides commands to verify a user name or expand a mailing
-list. This is done with the VRFY and EXPN commands, which have
-character string arguments. Implementations MUST support VRFY and
-SHOULD support EXPN (however, see section ##3.5.2 and ##7.3).
-
-For the VRFY command, the string is a user name or a user name and
-domain (see below). The response MAYinclude the full name of the user
-and MUST include the mailbox of the user, e.g., it MUST be in either
- User Name <mailbox@domain>
-or
- mailbox@domain
-form.
-
-
-When a name that is the argument to VRFY could identify more than one
-mailbox, the server MAY either note the ambiguity or identify the
-alternatives. In other words, either of the following are legitimate
-response to VRFY:
-
- 553 User ambiguous
- or
- 553- Ambiguous; Possibilities are
- 553-Joe Smith <jsmith@somedomain>
- 553-Harry Smith <hsmith@somedomain>
- 553 Melvin Smith <dweep@somedomain>
- or
- 553-Ambiguous; Possibilities
- 553- <jsmith@somedomain>
- 553- <hsmith@somedomain>
- 553 <dweep@somedomain>
-
-Under normal circumstances, a client receiving a 553 reply would be
-expected to expose the result to the user. Use of exactly the forms
-given, and the "user ambiguous" or "ambiguous" keywords, possibly
-supplemented by extended reply codes as described in [RFC-REPLY],
-will facilitate automated translation into other languages as needed.
-Of course, a client that was highly automated or that was operating
-in another language than English, might choose to try to translate
-the response, to return some other indication to the user than the
-literal text of the reply, or to take some automated action such as
-consulting a directory service for additional information before
-reporting to the user.
-
-For the EXPN command, the string identifies a mailing list, and the
-multiline response MAY include the full name of the users and MUST
-give the mailboxes on the mailing list.
-
-In some hosts the distinction between a mailing list and an alias for
-a single mailbox is a bit fuzzy, since a common data structure may
-hold both types of entries, and it is possible to have mailing lists
-of one mailbox. If a request is made to verify a mailing list, a
-positive response can be given if a message so addressed would be
-delivered to everyone on the list, otherwise an error should be
-reported (e.g., "550 That is a mailing list, not a user"). If a
-request is made to expand a user name, the server MAY return a
-positive response consisting of a list containing one name, or an
-error MAY be reported (e.g., "550 That is a user name, not a mailing
-list").
-
-In the case of a multiline reply (normal for EXPN) exactly one
-mailbox is to be specified on each line of the reply. The case of an
-ambiguous request is discussed above.
-
-"User name" is a fuzzy term and has been used deliberately. An
-implementation of the VRFY or EXPN commands MUST include at least
-recognition of local mailboxes as "user names". However, since
-current Internet practice often results in a single host handling
-mail for multiple domains, hosts, especially hosts that provide this
-functionality, SHOULD accept the "user@domain" form as a "user name";
-hosts MAY also choose to recognize other strings as "user names".
-
-
-
-The case of verifying a user name is straightforward as shown in
-example 4.
-
-
- -----------------------------------------------------------------
- |
- | Example of Verifying a User Name
- |
- | Either
- |
- | C: VRFY Smith
- | S: 250 Fred Smith <Smith@F.ISI.EDU >
- |
- | Or
- |
- | C: VRFY Jones
- | S: 550 String does not match anything.
- |
- | Or
- |
- | C: VRFY Jones
- | S: 551 User not local; please try <Jones@ ISIQ.ISI.EDU>
- |
- | Or
- |
- | C: VRFY Gourzenkyinplatz
- | S: 553 User ambiguous.
- |
- | Or
- |
- | C: VRFY fizzle
- | S: 252-Cannot VRFY fizzle, but will accept message and
- | S: 252 attempt delivery
- |
- | Example 4
- |
- -----------------------------------------------------------------
-
- The case of expanding a mailbox list requires a multiline reply
- as shown in example 5.
-
- -------------------------------------------------------------
- |
- | Example of Expanding a Mailing List
- |
- | Either
- |
- | C: EXPN Example-People
- | S: 250-Jon Postel <Postel@isi.edu
- | S: 250-Fred Fonebone <Fonebone@physics.foo-u.edu>
- | S: 250-Sam Q. Smith <SQSmith@specific.generic.com>>
- | S: 250-Quincy Smith <Q-Smith@VAXA.EDU
- | S: 250-<joe@totalitarian.org>
- | S: 250 <xyz@dominance.universal.int>
- |
- | Or
- |
- | C EXPN Executive-Washroom-List
- | S: 550 Access Denied to You.
- |
- | Example 5
- |
- -------------------------------------------------------------
-
- The character string arguments of the VRFY and EXPN commands
- cannot be further restricted due to the variety of
- implementations of the user name and mailbox list concepts. On
- some systems it may be appropriate for the argument of the EXPN
- command to be a file name for a file containing a mailing list,
- but again there are a variety of file naming conventions in the
- Internet.
-
-
-3.5.2 VRFY normal response.
-
-When normal (2yz or 551) responses are returned from a VRFY or EXPN
-request, the reply should normally include the mailbox name, e.g.,
-"<foo@bar>" (where "bar" is a fully qualified domain name) must
-appear in the syntax. In exceptional circumstances, free-form text
-MAY be returned. In order to facilitate parsing by both computers
-and people, addresses SHOULD appear in pointed brackets. EXPN and
-VRFY MUST return only valid domain addresses that are usable in SMTP
-RCPT commands. Consequently, if an address implies delivery to a
-program or other system, the mailbox name used to reach that target
-MUST be given. Paths (explicit source routes) MUST NOT be returned by
-VRFY or EXPN.
-
-
-Server implementations MUST support VRFY and SHOULD support EXPN.
-For security reasons, implementations MAY provide local installations
-a way to disable either or both of these commands through
-configuration options or the equivalent. When these commands are
-supported, they are not required to work across relays when relaying
-is supported. Since they were both optional in RFC 821, they MUST,
-if supported, be listed in the response to EHLO if service extensions
-are supported.
-
-
-3.5.3 Meaning of VRFY or EXPN success response.
-
-A server MUST NOT return a 220 code in response to a VRFY or EXPN
-command unless it has actually verified the address. In particular,
-a server MUST NOT return 220 if all it has done is to verify that the
-syntax given is valid. In that case, 502 (Command not implemented)
-or 500 (Syntax error, command unrecognized) SHOULD be returned. As
-stated elsewhere, implementation of VRFY is required and EXPN is
-strongly recommended. Hence, except as provided in section ##7.3,
-implementations that return 500 or 502 for VRFY are not in compliance
-with this specification.
-
-There may be circumstances where an address appears to be valid but
-cannot reasonably be verified in real time, particularly when a
-server is acting as a mail exchanger for another server or domain.
-"Apparent validity" in this case would normally involve at least
-syntax checking and might involve verification that any domains
-specified were ones to which the host expected to be able to relay
-mail. In these situations, reply code 252 SHOULD BE returned. These
-cases parallel the discussion of RCPT verification discussed in
-section ##2.1 Implementations generally SHOULD be more aggressive
-about address verification in the case of VRFY than in the case of
-RCPT, even if it takes a little longer to do so.
-
-
-3.5.4. Semantics and applications of EXPN.
-
-EXPN is often very useful in debugging and understanding problems
-with mailing lists and multiple-target-address aliases. Some systems
-have attempted to use source expansion of mailing lists as a means of
-eliminating duplicates. The propagation of aliasing systems with
-mail on the Internet--both for hosts (typically with MX and CNAME DNS
-records) and for mailboxes (various types of local host aliases)--has
-made it nearly impossible for these strategies to work, and mail
-systems SHOULD NOT attempt them.
-
-
-
-3.6. Domains
-
-
-Only resolvable, fully-qualified, domain names (FQDNs) are permitted
-when domain names are used in SMTP. In other words, names that can
-be resolved to MX RRs or A RRs (as discussed in section ##5) are
-permitted, as are CNAME RRs whose targets can be resolved, in turn,
-to MX or A RRs. Local nicknames or unqualified names MUST NOT be
-used. There are two exceptions to this rule: (i) The domain name
-given in the EHLO command MUST BE either a primary host name (a
-domain name that resolves to an A RR) or, if the host has no name, an
-address literal as described in section ##4.1.1.1 and (ii) The
-reserved mailbox name "postmaster" may be used in a RCPT TO command
-without domain qualification (see section ##4.1.1.3).
-
-
-
-3.7. RELAYING
-
-In general, the availability of Mail eXchanger records in the domain
-name system [RFC-DNS] makes the use of explicit source routes in the
-Internet mail system unnecessary. Many historical problems with
-their interpretation have made their use undesirable. SMTP clients
-SHOULD NOT generate explicit source routes except under unusual
-circumstances. SMTP servers MAY decline to act as mail relays or to
-accept addresses that specify source routes. They are also permitted
-to ignore the route information and simply send to the final
-destination specified as the last element in the route . There has
-been an invalid practice of using names that do not appear in the DNS
-as destination names, with the senders counting on the intermediate
-hosts specified in source routing to resolve any problems. If source
-routes are stripped, this practice will cause failures -- one of
-several reasons why SMTP clients MUST NOT generate invalid source
-routes or depend on serial resolution of names.
-
-When source routes are not used, the process described in RFC 821 for
-constructing a reverse-path from the forward-path is not applicable
-and the reverse-path at the time of delivery will simply be the
-address that appeared in the MAIL command.
-
-A relay SMTP server is usually the target of a DNS MX record that
-designates it, rather than the final delivery system. The relay
-server may accept or reject the task of relaying the mail in the same
-way it accepts or rejects mail for a local user. If it accepts the
-task, it then becomes an SMTP client, establishes a transmission
-channel to the next SMTP server specified in the DNS (according to
-the rules in section ##5), and sends it the mail.
-
-If an SMTP server has accepted the task of relaying the mail and
-later finds that the destination is incorrect or that the mail cannot
-be delivered for some other reason, then it MUST construct an
-"undeliverable mail" notification message and send it to the
-originator of the undeliverable mail (as indicated by the
-reverse-path). Formats specified for non-delivery reports by other
-standards SHOULD be used if possible.
-
-This notification message must be from the SMTP server at the relay
-host or the host that first determines that delivery cannot be
-accomplished. Of course, SMTP servers MUST NOT send notification
-messages about problems transporting notification messages. One way
-to prevent loops in error reporting is to specify a null reverse-path
-in the MAIL command of a notification message. When such a message
-is transmitted the reverse-path MUST beset to null. A MAIL command
-with a null reverse-path appears as follows:
-
- MAIL FROM:<>
-
-An undeliverable mail notification message is shown in example 6.
-This notification is in response to a message originated by JOE at
-xyz.somecollege.edu and sent to a user on HOSTY.org
-
- -------------------------------------------------------------
- |
- | Example Undeliverable Mail Notification Message
- |
- | C: MAIL FROM:<>
- | S: 250 ok
- | C: RCPT TO:< JOE@xyz.somecollege.edu>
- | S: 250 ok
- | C: DATA
- | S: 354 send the mail data, end with .
- | C: Date: 23 Oct 81 11:22:33
- | C: From: SMTP@HOSTY.org
- | C: To: JOE@xyz.somecollege.edu
- | C: Subject: Mail System Problem
- | C:
-<<replace with NOTARY format >>
- | C: .
- | S: 250 ok
- |
- | Example 6
- |
-
-As discussed in section ##2.4.1, a relay SMTP has no need to inspect
-or act upon the headers or body of the message data and MUST NOT do
-so.
-
-
-
-
-3.8 Mail Gatewaying
-
-While the relay function discussed above operates within the Internet
-SMTP transport service environment, MX records or various forms of
-explicit routing may require that an intermediate SMTP server perform
-a translation function between one transport service and another. As
-discussed in section ##2.3.8, when such a system is at the boundary
-between two transport service environments, we refer to it as a
-"gateway" or "gateway SMTP".
-
-Gatewaying mail between different mail environments, i.e., different
-mail formats and protocols, is complex and does not easily yield to
-standardization. However, some general requirements may be given for
-a gateway between the Internet and another mail environment.
-
-
-3.8.1 Header fields MAY be rewritten when necessary as messages are
-gatewayed across mail environment boundaries.
-
-This may involve inspecting the message body or interpreting the
-local-part of the destination address in spite of the prohibitions in
-section ##2.4.1
-
-Other mail systems gatewayed to the Internet often use a subset of
-RFC-822 headers or provide similar functionality with a different
-syntax, but some of these mail systems do not have an equivalent to
-the SMTP envelope. Therefore, when a message leaves the Internet
-environment, it may be necessary to fold the SMTP envelope
-information into the message header. A possible solution would be to
-create new header fields to carry the envelope information (e.g.,
-"X-SMTP-MAIL:" and "X-SMTP-RCPT:"); however, this would require
-changes in mail programs in foreign environments.
-
-
-3.8.2 When forwarding a message into or out of the Internet
-environment, a gateway MUST prepend a Received: line, but it MUST NOT
-alter in any way a Received: line that is already in the header.
-
-Received: fields of messages originating from other environments may
-not conform exactly to this specification. However, the most
-important use of Received: lines is for debugging mail faults, and
-this debugging can be severely hampered by well-meaning gateways that
-try to "fix" a Received: line. As another consequence of trace
-fields arising in non-SMTP environments, receiving systems MUST NOT
-reject mail based on the format of a trace field and SHOULD be
-extremely robust in the light of unexpected information or formats in
-those fields.
-
-The gateway SHOULD indicate the environment and protocol in the "via"
-clauses of Received field(s) that it supplies.
-
-
-3.8.3 From the Internet side, the gateway SHOULD accept all valid
-address formats in SMTP commands and in RFC-822 headers, and all
-valid RFC-822 messages. Gateways are, of course, subject to the same
-rules for handling source routes as those described for other SMTP
-systems in section ##3.3.
-
-
-3.8.4 The gateway MUST ensure that all header fields of a message
-that it forwards into the Internet meet the requirements for Internet
-mail. In particular, all addresses in "From:", "To:", "Cc:", etc.,
-fields MUSTbe transformed (if necessary) to satisfy RFC-822 syntax,
-MUST reference only fully-qualified domain names, and MUSTbe
-effective and useful for sending replies. 3.8.5 The translation
-algorithm used to convert mail from the Internet protocols to another
-environment's protocol SHOULD ensure that error messages from the
-foreign mail environment are delivered to the return path from the
-SMTP envelope, not to the sender listed in the "From:" field (or
-other fields) of the RFC-822 message.
-
-3.8.6 Similarly, when forwarding a message from another environment
-into the Internet, the gateway SHOULD set the envelope return path in
-accordance with an error message return address, if supplied by the
-foreign environment. If the foreign environment has no equivalent
-concept, the gateway must select and use a best approximation, with
-the message originator’s address as the default of last resort.
-
-
-
-3.9. Terminating Sessions and Connections
-
-An SMTP connection is terminated when the client sends a QUIT
-command. The server responds with a positive reply code, after which
-it closes the connection.
-
-An SMTP server MUST NOT intentionally close the connection except:
-
- o After receiving a QUIT command and responding with a 221 reply.
-
- o After detecting the need to shutdown the SMTP service and
- returning a message with a 451 response code. This response
- code can be issued after the server receives any command or, if
- necessary, asynchronously from command receipt (on the
- assumption that the client will receive it after the next
- command is issued).
-
-In particular, a server that closes connections in response to
-commands that are not understood is in violation of this
-specification. Servers are expected to be tolerant of unknown
-commands, issuing a 500 reply and awaiting further instructions from
-the client.
-
-An SMTP server which is forcibly shut down via external means SHOULD
-attempt to send a line containing 451 response code to the SMTP
-client before exiting. The SMTP client will normally read the 451
-response code after sending its next command.
-
-SMTP clients that experience a connection close, reset, or other
-communications failure due to circumstances not under their control
-(in violation of the intent of this specification but sometimes
-unavoidable) should, to maintain the robustness of the mail system,
-treat the mail transaction as if a 451 response had been received and
-act accordingly.
-
-
-
-
-
-3.10 Mailing Lists and Aliases
-
-An SMTP-capable host SHOULD support both the alias and the list form
-of address expansion for multiple delivery. When a message is
-delivered or forwarded to each address of an expanded list form, the
-return address in the envelope ("MAIL FROM:") MUST be changed to be
-the address of a person or other entity who administers the list but
-the message header MUST be left unchanged; in particular, the "From"
-field of the message is unaffected.
-
-An important mail facility is a mechanism for multi-destination
-delivery of a single message, by transforming or "expanding" a
-pseudo-mailbox address into a list of destination mailbox addresses.
-When a message is sent to such a pseudo-mailbox (sometimes called an
-"exploder"), copies are forwarded or redistributed to each mailbox in
-the expanded list. We classify such a pseudo-mailbox as an "alias"
-or a "list", depending upon the expansion rules.
-
-
-3.10.1 Alias
-
-To expand an alias, the recipient mailer simply replaces the
-pseudo-mailbox address in the envelope with each of the expanded
-addresses in turn; the rest of the envelope and the message body are
-left unchanged. The message is then delivered or forwarded to each
-expanded address.
-
-
-3.10.11 List
-
-A mailing list may be said to operate by "redistribution" rather than
-by "forwarding". To expand a list, the recipient mailer replaces the
-pseudo-mailbox address in the envelope with each of the expanded
-addresses in turn. The return address in the envelope is changed so
-that all error messages generated by the final deliveries will be
-returned to a list administrator, not to the message originator, who
-generally has no control over the contents of the list and will
-typically find error messages annoying.
-
-
-
-
-4. THE SMTP SPECIFICATIONS
-
-4.1. SMTP COMMANDS
-
-4.1.1. COMMAND SEMANTICS AND SYNTAX
-
-The SMTP commands define the mail transfer or the mail system
-function requested by the user. SMTP commands are character strings
-terminated by <CRLF>. The command codes themselves are alphabetic
-characters terminated by <SP> if parameters follow and <CRLF>
-otherwise. The syntax of the local part of a mailbox must conform to
-receiver site conventions and the syntax specified in section
-##4.1.2. The SMTP commands are discussed below. The SMTP replies
-are discussed in Section ##4.2.
-
-A mail transaction involves several data objects which are
-communicated as arguments to different commands. The reverse-path is
-the argument of the MAIL command, the forward-path is the argument of
-the RCPT command, and the mail data is the argument of the DATA
-command. These arguments or data objects must be transmitted and
-held pending the confirmation communicated by the end of mail data
-indication which finalizes the transaction. The model for this is
-that distinct buffers are provided to hold the types of data objects,
-that is, there is a reverse-path buffer, a forward-path buffer, and a
-mail data buffer. Specific commands cause information to be appended
-to a specific buffer, or cause one or more buffers to be cleared.
-
-
-4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)
-
-These commands are used to identify the SMTP client to the SMTP
-server. The argument field contains the fully-qualified domain name
-of the SMTP client if one is available. In situations in which the
-SMTP client system does not have a meaningful domain name (e.g., when
-its address is dynamically allocated and no reverse mapping record is
-available), the client should send an address literal (see section
-##4.1.3), optionally followed by information that will help to
-identify the client system.
-
-The SMTP server identifies itself to the SMTP client in the
-connection greeting reply and in the response to this command.
-
-A client SMTP SHOULD start an SMTP session by issuing the EHLO
-command. If the SMTP server supports the SMTP service extensions it
-will give a successful response, a failure response, or an error
-response. If the SMTP server, in violation of this specification,
-does not support any SMTP service extensions it will generate an
-error response. Older client SMTP systems MAY, as discussed above,
-use HELO (as specified in RFC 821) instead of EHLO and servers MUST
-support the HELO command and reply properly to it.
-
-These commands, and a "250 OK" reply to one of them, confirm that
-both the SMTP client and the SMTP server are in the initial state,
-that is, there is no transaction in progress and all state tables and
-buffers are cleared.
-
-Normally, the response to EHLO will be a multiline reply. Each line
-of the response contains a keyword and, optionally, one or more
-parameters. The syntax for a positive response, using the ABNF
-notation and low-level terminals of [ABNF], is:
-
- ehlo-ok-rsp ::= "250" domain [ SP greeting ] CR LF
- / ( "250-" domain [ SP greeting ] CR LF
- *( "250-" ehlo-line CR LF )
- "250" SP ehlo-line CR LF )
-
- greeting ::= 1*<any character other than CR or LF>
-
- ehlo-line ::= ehlo-keyword *( SP ehlo-param )
-
- ehlo-keyword ::= (ALPHA / DIGIT) *(ALPHA / DIGIT / "-")
-
- ; syntax and values depend on ehlo-keyword
- ehlo-param ::= 1*<any CHAR excluding SP and all
- control characters (US ASCII 0-31
- inclusive)>
-
-[[xxx ALPHA ::= <any one of the 52 alphabetic characters
- (A through Z in upper case, and,
- a through z in lower case)>
- DIGIT ::= <any one of the 10 numeric characters
- (0 through 9)>
-
- CR ::= <the carriage-return character
- (ASCII decimal code 13)>
- LF ::= <the line-feed character
- (ASCII decimal code 10)>
- SP ::= <the space character
- (ASCII decimal code 32)> /xxx]]
-
-Although EHLO keywords may be specified in upper, lower, or mixed
-case, they must always be recognized and processed in a
-case-insensitive manner. This is simply an extension of practices
-specified in RFC 821 and section ##2.4.1.
-
-
-4.1.1.2 MAIL (MAIL)
-
-This command is used to initiate a mail transaction in which the mail
-data is delivered to one or more mailboxes. The argument field
-contains a reverse-path.
-
-The reverse-path consists of the sender mailbox or a list of hosts as
-described in Appendix C. In some types of reporting messages for
-which a reply is likely to cause a mail loop (for example, mail
-delivery and nondelivery notifications), the reverse-path may be null
-(see section ##3.7).
-
-This command clears the reverse-path buffer, the forward-path buffer,
-and the mail data buffer; and inserts the reverse-path information
-from this command into the reverse-path buffer.
-
-If service extensions were negotiated, the MAIL command may also
-carry parameters associated with a particular service extension.
-
-Syntax: "MAIL FROM:" Reverse-path [ SP Mail-parameters ]
- or
- "MAIL FROM:<>"
-
-
-4.1.1.3 RECIPIENT (RCPT)
-
-This command is used to identify an individual recipient of the mail
-data; multiple recipients are specified by multiple use of this
-command.
-
-The forward-path normally consists of the required destination
-mailbox(es). Sending systems SHOULD not generate the optimal list of
-hosts known as a source route. Receiving systems MUST recognize
-source route syntax but SHOULD strip off the source route
-specification and utilize the domain name associated with the mailbox
-as if the source route had not been provided.
-
-Similarly, relay hosts SHOULD strip or ignore source routes, and
-names MUST NOT be copied into the reverse-path. When mail reaches its
-ultimate destination (the forward-path contains only a destination
-mailbox), the SMTP server inserts it into the destination mailbox in
-accordance with its host mail conventions.
-
-
-For example, mail received at relay host A with envelope commands
-
- MAIL FROM:<USERX@Y.foo.org
- RCPT TO:<@HOSTA.INT,@HOSTB.INT:USERC@D.bar.org>
-
-will normally be sent directly on to host D.bar.org with envelope
-commands
-
- MAIL FROM:<USERX@foo.org>
- RCPT TO:<USERC@D.bar.org>
-
-as provided in Appendix C, HostA MAY also choose to relay the message
-to HostB, using the envelope commands
-
- MAIL FROM:<USERX@HOSTY.ARPA>
- RCPT TO:<@HOSTB.int:USERC@D. BAR.ORG>
-
-Of course, since hosts are not required to relay mail at all, HostA
-may also reject the message entirely when the RCPT TO command is
-received, using a 550 code (since this is a "policy reason").
-
-If service extensions were negotiated, the RCPT TO command may also
-carry parameters associated with a particular service extension
-offered by the server. The client MUST NOT transmit parameters other
-than those associated with a service extension offered by the server
-in its EHLO response.
-
-Syntax: "RCPT TO:" Forward-path [ SP Rcpt-parameters ]
- or
- "RCPT TO:<Postmaster>" [ SP Rcpt-parameters ]
-
-
-4.1.1.4 DATA (DATA)
-
-The receiver treats the lines (strings ending in CRLF sequences, see
-section ##2.3.7) following the command as mail data from the sender.
-This command causes the mail data to be appended to the mail data
-buffer. The mail data may contain any of the 128 ASCII character
-codes, although experience has indicated that use of control
-characters other than SP, HT, CR, and LF may cause problems and
-should be avoided when possible.
-
-The mail data is terminated by a line containing only a period, that
-is, the character sequence "<CRLF>.<CRLF>" (see Section ##4.5.2 on
-Transparency). This is the end of mail data indication. Note that
-the first <CRLF> of this terminating sequence is also the <CRLF> that
-ends the final line of the data (message text) or, if there was no
-data, ends the DATA command itself. An extra <CRLF> MUST NOT be
-added, as that would cause an empty line to be added to the message.
-The only exception to this rule would arise if the message body were
-passed to the originating SMTP-sender with a final "line" that did
-not end in <CRLF>; in that case, the originating SMTP system MUST
-either reject the message as invalid or add <CRLF> in order to have
-the receiving SMTP server recognize the "end of data" condition.
-
-The custom of accepting lines ending only in <LF>, as a concession to
-non-conforming behavior on the part of some UNIX systems, has proven
-to cause more interoperability problems than it solves, and SMTP
-server systems MUST NOT do this, even in the name of improved
-robustness. In particular, the sequence "<LF>.<LF>" (bare line
-feeds, without carriage returns) MUST NOT be treated as equivalent to
-<CRLF>.<CRLF> as the end of mail data indication.
-
-Receipt of the end of mail data indication requires the server to
-process the stored mail transaction information. This processing
-consumes the information in the reverse-path buffer, the forward-path
-buffer, and the mail data buffer, and on the completion of this
-command these buffers are cleared. If the processing is successful
-the receiver must send an OK reply. If the processing fails the
-receiver must send a failure reply. The SMTP model does not allow for
-partial failures at this point: either the message is accepted by the
-server for delivery and a positive response is returned or it is not
-accepted and a failure reply is returned. Errors that are diagnosed
-subsequently MUST be reported in a mail message, as discussed in
-section ##4.4 In sending a positive completion reply to the end of
-data indication, the receiver takes full responsibility for the
-message (see section ##6.1).
-
-When the SMTP server accepts a message either for relaying or for
-final delivery, it inserts a trace record (also referred to
-interchangeably as a "time stamp line" or "Received" line) at the top
-of the mail data. This trace record indicates the identity of the
-host that sent the message, the identity of the host that received
-the message (and is inserting this time stamp), and the date and time
-the message was received. Relayed messages will have multiple time
-stamp lines. Details for formation of these lines, including their
-syntax, is specified in section ##4.4.
-
-
-4.1.1.5 RESET (RSET)
-
-This command specifies that the current mail transaction will be
-aborted. Any stored sender, recipients, and mail data MUST be
-discarded, and all buffers and state tables cleared. The receiver
-MUST send a "250 OK" reply. A reset command may be issued by the
-client at any time. It is effectively equivalent to a NOOP if issued
-immediately after EHLO, or before either of those commands are
-issued. In other situations, it restores the state to that
-immediately after the most recent EHLO. An SMTP server MUST NOT
-close the connection as the result of receiving a RSET; that action
-is reserved for QUIT (see section ##4.1.1.10, below).
-
-Since EHLO imply some additional processing and response by the
-server, RSET will normally be more efficient than reissuing those
-commands, even though the formal semantics are the same.
-
-There are circumstances, contrary to the intent of this
-specification, in which an SMTP server may receive an indication that
-the underlying TCP connection has been closed or reset. To preserve
-the robustness of the mail system, SMTP servers should be prepared
-for this condition and should treat it as if a RSET, followed by a
-QUIT, had been received before the connection disappeared.
-
-4.1.1.6 VERIFY (VRFY)
-
-This command asks the receiver to confirm that the argument
-identifies a user or mailbox. If it is a user name, information is
-returned as specified in section ##3.5.
-
-This command has no effect on the reverse-path buffer, the
-forward-path buffer, or the mail data buffer.
-
-Syntax: "VRFY" SP String
-
-4.1.1.7 EXPAND (EXPN)
-
-This command asks the receiver to confirm that the argument
-identifies a mailing list, and if so, to return the membership of
-that list. If the command is successful, a multiline reply is
-returned containing information as described in section ##3.5.
-
-This command has no effect on the reverse-path buffer, the
-forward-path buffer, or the mail data buffer.
-
-Syntax: "EXPN" SP String
-
-4.1.1.8 HELP (HELP)
-
-This command causes the server to send helpful information to the
-client. The command MAY take an argument (e.g., any command name)
-and return more specific information as a response.
-
-This command has no effect on the reverse-path buffer, the
-forward-path buffer, or the mail data buffer.
-
-SMTP servers SHOULD support HELP without arguments and MAY support it
-with arguments.
-
-Syntax: "HELP" [ SP String ]
-
-
-4.1.1.9 NOOP (NOOP)
-
-This command does not affect any parameters or previously entered
-commands. It specifies no action other than that the receiver send
-an OK reply.
-
-This command has no effect on the reverse-path buffer, the
-forward-path buffer, or the mail data buffer.
-
-Syntax: "NOOP" [SP String]
-
-4.1.1.10 QUIT (QUIT)
-
-This command specifies that the receiver must send an OK reply, and
-then close the transmission channel.
-
-The receiver MUST NOT intentionally close the transmission channel
-until it receives and replies to a QUIT command (even if there was an
-error). The sender MUST NOT intentionally close the transmission
-channel until it sends a QUIT command and receives the reply (even if
-there was an error response to a previous command). If the
-connection is closed prematurely due to violations of the above or
-system or network failure, the server MUST act as if a RSET command
-had been received (canceling any pending transaction, but not undoing
-any previously completed transaction) and the client MUST act as if
-the command or transaction in progress had received a temporary error
-(4xx).
-
-Syntax: "QUIT"
-
-
-4.1.2. LOWER-LEVEL SYNTAX
-
-The syntax of the argument fields of the above commands (using the
-syntax specified in [ABNF] where applicable) is given below. Some of
-the productions given below are used only in conjunction with source
-routes as described in Appendix C.
-
- Reverse-path ::= Path
-
- Forward-path ::= Path
-
- Path ::= "<" [ A-d-l ":" ] <mailbox> ">"
-
- A-d-l ::= At-domain *( "," A-d-l )
-
- At-domain ::= "@" Domain
-
- Mail-parameters ::= *( SP Keyword "=" Argument )
-
- Rcpt-parameters ::= *( SP Keyword "=" Argument )
-
- Keyword ::= String <<>>???
- Argument ::= String <<>>???
-
- Domain ::= sub-domain 1*("." sub-domain) | address-literal
-
- sub-domain ::= let-dig *(ldh-str)
- address-literal ::= "[" IPv4-address-literal |
- IPv6-address-literal | General-address-literal "]"
- IPv4-address-literal ::= snum 3("." snum)
- IPv6-address-literal ::= "IPv6" SP <<what did we finally decide on?>>
- General-address-literal ::= Standardized-tag SP String
- Standardized-tag ::= String (Specified in a standards-track RFC
- and registered with IANA)
- snum = one, two, or three digits representing a decimal
- integer value in the range 0 through 255
- let-dig = Alpha / Digit
- ldh-str = *( Alpha / Digit / "-" ) let-dig
-
-<< Placeholder: the following are not right, and the "alpha" one
-<<may need separate rules for case-sensitive and case-insensitive.
-<<Waiting for ABNF to stabilize. >>
-
- Alpha = ASCII character in the range A-Z or a-z. As specified in
- the domain name system definition [RFC-DNS], case is not
- significant in domain strings.
- Digit = 0 - 9
-
- Mailbox ::= Local-part "@" Domain
-
- Local-part ::= Dot-string | Quoted-string
-
-While the above definition for Local-part is relatively permissive,
-for maximum interoperability, a host that expects to receive mail
-SHOULD avoid defining mailboxes where the Local-part requires (or
-uses) the Quoted-string form or where the Local-part is
-case-sensitive. For any purposes that require generating or
-comparing Local-parts (e.g., to specific mailbox names), all quoted
-forms MUST be treated as equivalent and the sending system SHOULD
-transmit the form that uses the minimum quoting possible.
-
-Systems MUST NOT define mailboxes in such a way as to require the use
-of non-ASCII characters (octets with the high order bit set to one)
-or ASCII "control characters" (decimal value 0-31 and 127). These
-characters MUST NOT be used in MAIL FROM or RCPT TO commands or other
-commands that require mailbox names.
-
-
-<<?>> <string> ::= <char> | <char> <string>
-
-<<?>> <quoted-string> ::= """ <qtext> """
-
-<<?>> <qtext> ::= "\" <x> | "\" <x> <qtext> | <q> | <q> <qtext>
-
- <char> ::= <c> | "\" <x>
-
- <number> ::= <d> | <d> <number>
-
- <CRLF> ::= <CR> <LF>
-
- <CR> ::= the carriage return character (ASCII code 13)
-
- <LF> ::= the line feed character (ASCII code 10)
-
- <SP> ::= the space character (ASCII code 32)
-
- <a> ::= any one of the 52 alphabetic characters A through Z
- in upper case and a through z in lower case
-
- <c> ::= any one of the 128 ASCII characters, but not any
- <special> or <SP>
-
- <d> ::= any one of the ten digits 0 through 9
-
- <q> ::= any one of the 128 ASCII characters except <CR>,
- <LF>, quote ("), or backslash (\)
-
- <x> ::= any one of the 128 ASCII characters (no exceptions)
-
- <special> ::= "<" | ">" | "(" | ")" | "[" | "]" | "\" | "."
- | "," | ";" | ":" | "@" """ | the control
- characters (ASCII codes 0 through 31 inclusive and
- 127)
-
-Note that the backslash, "\", is a quote character, which is used to
-indicate that the next character is to be used literally (instead of
-its normal interpretation). For example, "Joe\,Smith" indicates a
-single nine character user field with the comma being the fourth
-character of the field.
-
-Characters outside the set of alphas, digits, and hyphen MUST NOT
-appear in domain names. In particular, the underscore character is
-not permitted.
-
-
-
-4.1.3. Address literals
-
-Sometimes a host is not known to the domain name system and
-communication (and, in particular, communication to report and repair
-the error) is blocked. To bypass this barrier a special literal form
-of the address is allowed as an alternative to a domain name. For
-IPv4 addresses, this form uses four or more small decimal integers
-separated by dots and enclosed by brackets, e.g., [123.255.37.2],
-which indicates an (IPv4) Internet Address in sequence-of-octets
-form. For IPv6 and other forms of addressing that might eventually
-be standardized, the form consists of a standardized "tag" that
-identifies the address syntax, a space, and the address itself, in a
-format specified elsewhere. (where?)<<IPv6 reference?? >>
-
-
-
-4.1.4. Order of commands
-
-There are restrictions on the order in which these commands may be
-used.
-
-A session that will contain mail transactions MUST first be
-initialized by the use of the EHLO command. An SMTP server SHOULD
-accept commands for non-mail transactions (e.g., VRFY or EXPN)
-without this initialization.
-
-An EHLO command MAY be issued by a client later in the session. If
-it is issued after the session begins, the SMTP server MUST clear all
-buffers and reset the state exactly as if a RSET command had been
-issued. In other words, the sequence of RSET followed immediately by
-EHLO is redundant, but not harmful other than in the performance cost
-of executing unnecessary commands.
-
-If the EHLO command is not acceptable to the SMTP server, 501, 500,
-or 502 failure replies MUST be returned as appropriate. The SMTP
-server must stay in the same state after transmitting these replies
-that it was in before the EHLO was received.
-
-The SMTP client MUST ensure that the domain parameter to the EHLO
-command is a valid principal host name (not a CNAME or MX name) for
-its host. If this is not possible (e.g., when the client's address
-is dynamically assigned and the client does not have an obvious
-name), an address literal SHOULD be substituted for the domain name
-and supplemental information provided that will assist in identifying
-the client.
-
-An SMTP server MAY verify that the domain name parameter in the EHLO
-command actually corresponds to the IP address of the client.
-However, the server MUST NOT refuse to accept a message if the
-verification fails -- the information about verification failure is
-for logging and tracing only.
-
-The NOOP, HELP, EXPN, VRFY, and RSET commands can be used at any time
-during a session, or without previously initializing a session. SMTP
-servers SHOULD process these normally (i.e., not return a 503 code)
-even if no EHLO command has yet been received; clients SHOULD open a
-session with EHLO before sending these commands.
-
-If these rules are followed, the example in RFC 821 that shows "550
-access denied to you" in response to an EXPN command is incorrect
-unless an EHLO command precedes the EXPN or the denial of access is
-based on the client's IP address.
-
-The MAIL command (or the obsolete SEND, SOML, or SAML commands)
-begins a mail transaction. Once started, a mail transaction consists
-of a transaction beginning commands, one or more RCPT commands, and a
-DATA command, in that order. A mail transaction may be aborted by
-the RSET (or a new EHLO) command. There may be zero or more
-transactions in a session.
-
-If the transaction beginning command argument is not acceptable, a
-501 failure reply MUST be returned and the SMTP server must stay in
-the same state. If the commands in a transaction are out of order to
-the degree that they cannot be processed by the server, a 503 failure
-reply MUST be returned and the SMTP server must stay in the same
-state.
-
-The last command in a session must be the QUIT command. The QUIT
-command cannot be used at any other time in a session, but SHOULD be
-used by the client SMTP to request connection closure, even when no
-session opening command was sent and accepted.
-
-
-
-4.1.5 Private-use commands
-
-As specified in section 2.2.2, commands starting in "X" may be used
-by bilateral agreement between the client (sending) and server
-(receiving) SMTPs. An SMTP server that does not recognize such a
-command is expected to reply with "500 Command not recognized". An
-extended SMTP server MAY list the feature names associated with these
-private commands in the response to the EHLO command.
-
-Commands sent or accepted by SMTP systems that do not start with "X"
-MUST conform to the requirements of section ##2.2.2, above.
-
-
-
-4.2. SMTP REPLIES
-
-Replies to SMTP commands serve to ensure the synchronization of
-requests and actions in the process of mail transfer and to guarantee
-that the SMTP client always knows the state of the SMTP server.
-Every command must generate exactly one reply.
-
-The details of the command-reply sequence are described in Section
-##4.3 on Sequencing.
-
-An SMTP reply consists of a three digit number (transmitted as three
-alphanumeric characters) followed by some text. The number is for
-use by automata to determine what state to enter next; the text is
-for the human user. The three digits contain enough encoded
-information that the SMTP client need not examine the text and may
-either discard it or pass it on to the user, as appropriate.
-Exceptions are as noted elsewhere in this document. In particular,
-the 220, 221, 251, 421, and 551 reply codes are associated with
-message text that must be parsed and interpreted by machines. In the
-general case, the text may be receiver dependent and context
-dependent, so there are likely to be varying texts for each reply
-code. A discussion of the theory of reply codes is given insection
-##4.2.1. Formally, a reply is defined to be the sequence: a
-three-digit code, SP, one line of text, and CRLF, or a multiline
-reply (as defined insection ##4.2.1). Only the EXPN and HELP
-commands are expected to result in multiline replies in normal
-circumstances, however, multiline replies are allowed for any command.
-
-An SMTP server SHOULD send only the reply codes listed in this
-document. An SMTP server SHOULD use the text shown in the examples
-whenever appropriate.
-
-A client SMTP MUST determine its actions only by the reply code, not
-by the text (except for 251 and 551 and, if necessary, 220, 221, and
-421 replies); in the general case, any text, including no text at all
-(although senders SHOULD NOT send bare codes), MUSTbe acceptable.
-The space (blank) following the reply code is considered part of the
-text. Whenever possible, a sender-SMTP SHOULD test the first digit
-(severity indication) of the reply code.
-
-The list of codes that appears below must not be construed as
-permanent. While the addition of new codes should be a rare and
-significant activity, with supplemental information in the textual
-part of the response being preferred, new codes may be added as the
-result of new Standards or Standards-track specifications.
-Consequently, a sender-SMTP MUST be prepared to handle codes not
-specified in this document and MUST do so by interpreting the first
-digit only.
-
-
-
-4.2.1. REPLY CODE SEVERITIES AND THEORY
-
-
-The three digits of the reply each have a special significance. The
-first digit denotes whether the response is good, bad or incomplete.
-An unsophisticated SMTP client, or one that receives an unexpected
-code, will be able to determine its next action (proceed as planned,
-redo, retrench, etc.) by examining this first digit. An SMTP client
-that wants to know approximately what kind of error occurred (e.g.,
-mail system error, command syntax error) may examine the second
-digit. The third digit and any supplemental information that may be
-present is reserved for the finest gradation of information.
-
-There are five values for the first digit of the reply code:
-
- 1yz Positive Preliminary reply
-
- The command has been accepted, but the requested action
- is being held in abeyance, pending confirmation of the
- information in this reply. The SMTP client should send
- another command specifying whether to continue or abort
- the action.
-
- [Note: unextended SMTP does not have any commands that allow
- this type of reply, and so does not have continue or abort
- commands.]
-
- 2yz Positive Completion reply
-
- The requested action has been successfully completed. A new
- request may be initiated.
-
- 3yz Positive Intermediate reply
-
- The command has been accepted, but the requested action is being
- held in abeyance, pending receipt of further information. The
- SMTP client should send another command specifying this
- information. This reply is used in command sequence groups
- (i.e., in DATA).
-
- 4yz Transient Negative Completion reply
-
- The command was not accepted, and the requested action did not
- occur. However, the error condition is temporary and the action
- may be requested again. The sender should return to the
- beginning of the command sequence (if any). It is difficult to
- assign a meaning to "transient" when two different sites
- (receiver- and sender- SMTPs) must agree on the interpretation.
- Each reply in this category might have a different time value,
- but the SMTP client is encouraged to try again. A rule of thumb
- to determine whether a reply fits into the 4yz or the 5yz
- category (see below) is that replies are 4yz if they can be
- repeated without any change in command form or in properties of
- the sender or receiver. (E.g., the command is repeated
- identically and the receiver does not put up a new
- implementation.)
-
- 5yz Permanent Negative Completion reply
-
- The command was not accepted and the requested action did not
- occur. The SMTP client is discouraged from repeating the exact
- request (in the same sequence). Even some "permanent" error
- conditions can be corrected, so the human user may want to
- direct the SMTP client to reinitiate the command sequence by
- direct action at some point in the future (e.g., after the
- spelling has been changed, or the user has altered the account
- status).
-
-The second digit encodes responses in specific categories:
-
- x0z Syntax -- These replies refer to syntax errors,
- syntactically correct commands that don't fit any
- functional category, and unimplemented or superfluous
- commands.
-
- x1z Information -- These are replies to requests for
- information, such as status or help.
-
- x2z Connections -- These are replies referring to the
- transmission channel.
-
- x3z Unspecified as yet.
-
- x4z Unspecified as yet.
-
- x5z Mail system -- These replies indicate the status of
- the receiver mail system vis-a-vis the requested
- transfer or other mail system action.
-
-The third digit gives a finer gradation of meaning in each category
-specified by the second digit. The list of replies illustrates this.
-Each reply text is recommended rather than mandatory, and may even
-change according to the command with which it is associated. On the
-other hand, the reply codes must strictly follow the specifications
-in this section. Receiver implementations should not invent new
-codes for slightly different situations from the ones described here,
-but rather adapt codes already defined.
-
-For example, a command such as NOOP, whose successful execution does
-not offer the SMTP client any new information, will return a 250
-reply. The reply is 502 when the command requests an unimplemented
-non-site-specific action. A refinement of that is the 504 reply for
-a command that is implemented, but that requests an unimplemented
-parameter.
-
-The reply text may be longer than a single line; in these cases the
-complete text must be marked so the SMTP client knows when it can
-stop reading the reply. This requires a special format to indicate a
-multiple line reply.
-
-The format for multiline replies requires that every line, except the
-last, begin with the reply code, followed immediately by a hyphen,
-"-" (also known as minus), followed by text. The last line will
-begin with the reply code, followed immediately by <SP>, optionally
-some text, and <CRLF>. As noted above, clients SHOULD send the <SP>
-if subsequent text is not sent, but servers MUST be prepared for it
-to be omitted.
-
- For example:
- 123-First line
- 123-Second line
- 123-234 text beginning with numbers
- 123 The last line
-
-In many cases the SMTP client then simply needs to search for the
-reply code followed by <SP> at the beginning of a line, and ignore
-all preceding lines. In a few cases, there is important data for the
-sender in the reply "text". The sender will be able to identify
-these cases from the current context.
-
-
-4.2.2. REPLY CODES BY FUNCTION GROUPS
-
- 500 Syntax error, command unrecognized
- [This may include errors such as command line too long]
- 501 Syntax error in parameters or arguments
- 502 Command not implemented (see section ##4.2.3)
- 503 Bad sequence of commands
- 504 Command parameter not implemented
-
- 211 System status, or system help reply
- 214 Help message
- [Information on how to use the receiver or the meaning of a
- particular non-standard command; this reply is useful only
- to the human user]
-
- 220 <domain> Service ready
- 221 <domain> Service closing transmission channel
- 421 <domain> Service not available,
- closing transmission channel
- [This may be a reply to any command if the service knows it
- must shut down]
-
- 250 Requested mail action okay, completed
- 251 User not local; will forward to <forward-path>
- [See section ##3.4]
- 252 Cannot VRFY user, but will accept message and attempt
- delivery
- [See section ##3.5.3]
- 450 Requested mail action not taken: mailbox unavailable
- [E.g., mailbox busy]
- 550 Requested action not taken: mailbox unavailable
- [E.g., mailbox not found, no access, or command rejected
- for policy reasons]
- 451 Requested action aborted: error in processing
- 551 User not local; please try <forward-path>
- [See section ##3.4]
- 452 Requested action not taken: insufficient system storage
- 552 Requested mail action aborted: exceeded storage allocation
- 553 Requested action not taken: mailbox name not allowed
- [E.g., mailbox syntax incorrect]
- 354 Start mail input; end with <CRLF>.<CRLF>
- 554 Transaction failed [Or, in the case of a connection-opening
- response, "No SMTP service here"]
-
-
-4.2.3. NUMERIC ORDER LIST OF REPLY CODES
-
- 211 System status, or system help reply
- 214 Help message
- [Information on how to use the receiver or the meaning of a
- particular non-standard command; this reply is useful only
- to the human user]
- 220 <domain> Service ready
- 221 <domain> Service closing transmission channel
- 250 Requested mail action okay, completed
- 251 User not local; will forward to <forward-path>
- [See section ##3.4]
- 252 Cannot VRFY user, but will accept message and attempt
- delivery
- [See section ##3.5.3]
-
- 354 Start mail input; end with <CRLF>.<CRLF>
-
- 421 <domain> Service not available,
- closing transmission channel
- [This may be a reply to any command if the service knows it
- must shut down]
- 450 Requested mail action not taken: mailbox unavailable
- [E.g., mailbox busy]
- 451 Requested action aborted: local error in processing
- 452 Requested action not taken: insufficient system storage
-
- 500 Syntax error, command unrecognized
- [This may include errors such as command line too long]
- 501 Syntax error in parameters or arguments
- 502 Command not implemented
- 503 Bad sequence of commands
- 504 Command parameter not implemented
- 550 Requested action not taken: mailbox unavailable
- [E.g., mailbox not found, no access, or command rejected
- for policy reasons]
- 551 User not local; please try <forward-path>
- [See section ##3.4]
- 552 Requested mail action aborted: exceeded storage allocation
- 553 Requested action not taken: mailbox name not allowed
- [E.g., mailbox syntax incorrect]
- 554 Transaction failed [Or, in the case of a connection-opening
- response, "No SMTP service here"]
-
-
-4.2.4. Reply code 502
-
-Questions have been raised as to when reply code 502 (Command not
-implemented) should be returned in preference to other codes. 502
-SHOULD be used when the command is actually recognized by the SMTP
-server, but not implemented. If the command is not recognized, code
-500 SHOULD be returned. Extended SMTP systems MUST NOT list
-capabilities in response to EHLO for which they will return 502 (or
-500) replies.
-
-
-4.2.5 Reply codes after DATA and the subsequent <CRLF>.<CRLF>.
-
-When an SMTP server returns a positive completion status (2yz code)
-after the DATA command is completed with <CRLF>.<CRLF>, it accepts
-responsibility for:
-
- o delivering the message (if the recipient mailbox exists), or
-
- o if attempts to deliver the message fail due to transient
- conditions, retrying delivery some reasonable number of times
- at intervals as specified in section ##4.2.6.
-
- o if attempts to deliver the message fail due to permanent
- conditions, or if repeated attempts to deliver the message fail
- due to transient conditions, returning appropriate notification to
- the sender of the original message (using the address in the SMTP
- MAIL FROM command).
-
-
-When an SMTP server returns a transient error completion status (4yz)
-code after the DATA command is completed with <CRLF>.<CRLF>, it MUST
-NOT make any further attempt to deliver that message. The SMTP
-client retains responsibility for delivery of that message and may
-either return it to the user or requeue it for a subsequent attempt
-(see section ##4.5.4.1). The sending user should be able to
-interpret the return of a transient or permanent failure status as a
-non-delivery indication.
-
-
-
-4.3. SEQUENCING OF COMMANDS AND REPLIES
-
-4.3.1 Sequencing overview
-
-The communication between the sender and receiver is an alternating
-dialogue, controlled by the sender. As such, the sender issues a
-command and the receiver responds with a reply. Unless other
-arrangements are negotiated through service extensions, the sender
-must wait for this response before sending further commands.
-
-One important reply is the connection greeting. Normally, a receiver
-will send a 220 "Service ready" reply when the connection is
-completed. The sender should wait for this greeting message before
-sending any commands.
-
-Note: all the greeting-type replies have the official name (i.e., the
-fully-qualified primary domain name) of the server host as the first
-word following the reply code. Sometimes the host will have no
-meaningful name. See ##4.1.3 for a discussion of alternatives in
-these situations.
-
- For example,
-
- 220 ISIF.USC.EDU Service ready
- or
-
- 220 LOSER.BOGUS.COM Trashmail v 6.1.2 Service ready
-
-The table below lists alternative success and failure replies for
-each command. These SHOULD be strictly adhered to; a receiver may
-substitute text in the replies, but the meaning and action implied by
-the code numbers and by the specific command reply sequence cannot be
-altered.
-
-4.3.2 Command-Reply Sequences
-
-Each command is listed with its usual possible replies. The prefixes
-used before the possible replies are "P" for preliminary (not used in
-SMTP), "I" for intermediate, "S" for success, "F" for failure, and
-"E" for error. The 421 reply (service not available, closing
-transmission channel) may be given to any command if the SMTP
-receiver knows it must shut down. Since some servers may generate
-other replies under special circumstances, and to allow for future
-extension, SMTP clients SHOULD, when possible, interpret only the
-first digit of the reply and MUST be prepared to deal with
-unrecognized reply codes by interpreting the first digit only. SMTP
-servers MUST NOT transmit reply codes to an SMTP client that are
-other than three digits or that do not start in a digit between 2 and
-5 inclusive.
-
- CONNECTION ESTABLISHMENT
- S: 220
- F: 421, 554
- EHLO (or HELO)
- S: 250
- E: 500*, 501, 504, 421, 550
- MAIL
- S: 250
- F: 552, 451, 452
- E: 500*, 501, 421, 550, 553
- RCPT
- S: 250, 251 (but see section ##3.4 for discussion of 251)
- F: 550, 551, 552, 553, 450, 451, 452
- E: 500*, 501, 503, 421, 550
- DATA
- I: 354 -> data -> S: 250
- F: 552, 554, 451, 452
- F: 451, 554
- E: 500*, 501, 503, 421
- RSET
- S: 250
- E: 500*, 501, 504, 421
- SEND
- S: 250
- F: 552, 451, 452
- E: 500, 501, 502, 421
- SOML
- S: 250
- F: 552, 451, 452
- E: 500, 501, 502, 421
- SAML
- S: 250
- F: 552, 451, 452
- E: 500, 501, 502, 421
- VRFY
- S: 250, 251, 252
- F: 550, 551, 553
- E: 500*, 501, 502, 504, 421
- EXPN
- S: 250, 252
- F: 550
- E: 500, 501, 502, 504, 421
- HELP
- S: 211, 214
- E: 500, 501, 502, 504, 421
- NOOP
- S: 250
- E: 500*, 421
- QUIT
- S: 221
- E: 500*
- TURN
- S: 250
- F: 502
- E: 500, 503
-
- * Since support of this command is required, returning
- this reply code as part of an "unrecognized command"
- status places an implementation out of conformance with
- this specification.
-
-
-
-4.4 Trace information
-
-When an SMTP server receives a message for delivery or further
-processing, it MUST insert trace ("time stamp" or "Received")
-information at the beginning of the message content, as discussed
-under the DATA command in section ##4.1.1.4.
-
-This line must be structured as follows:
-
- * The FROM field SHOULD contain both (1) the name of the
- source host as presented in the EHLO command and (2) an
- address literal containing the IP address of the source,
- determined from the TCP connection.
-
- * The ID field MAY contain an "@" as suggested in RFC-822,
- but this is not required.
-
- * The FOR field MAY contain a list of <path> entries when
- multiple RCPT commands have been given.
-
-An Internet mail program MUST NOT change a Received: line that was
-previously added to the message header. SMTP servers MUST prepend
-Received lines to messages; they MUST NOT change the order of
-existing lines or insert Received lines in any other location.
-
-As the Internet grows, comparability of Received fields is important
-for detecting problems, especially slow relays. SMTP servers that
-create Received fields SHOULD use explicit offsets in the dates
-(e.g., -0800), rather than time zone names of any type. Local time
-(with an offset) is preferred to UT when feasible. If a time zone
-name is used, it should be included in a comment.
-
-When the delivery SMTP server makes the "final delivery" of a
-message, it inserts a return-path line at the beginning of the mail
-data. This use of return-path is required; mail systems MUST support
-it. The return-path line preserves the information in the
-<reverse-path> from the MAIL command. Here, final delivery means the
-message has left the SMTP world. Normally, this would mean it had
-been delivered to the destination user or an associated mail drop,
-but in some cases it may be further processed and transmitted by
-another mail system.
-
-It is possible for the mailbox in the return path to be different
-from the actual sender's mailbox, for example, if error responses are
-to be delivered a special error handling mailbox rather than to the
-message sender. When mailing lists are involved, this arrangement is
-common and useful as a means of directing errors to the list
-maintainer rather than the message originator.
-
-The text above implies that the final mail data will begin with a
-return path line, followed by one or more time stamp lines. These
-lines will be followed by the mail data headers and body [RFC822].
-
-It is sometimes difficult for an SMTP server to determine whether or
-not it is making final delivery since forwarding or other operations
-may occur after the message is accepted for delivery. Consequently,
-any further (forwarding, gateway, or relay) systems MAY remove the
-return path and rebuild the MAIL FROM command as needed to ensure
-that exactly one such line appears in a delivered message.
-
-A message-originating SMTP system SHOULD NOT send a message that
-already contains a Return-path header. SMTP servers performing a
-relay function MUST NOT inspect the message data, and especially not
-to the extent needed to determine if Return-path headers are present.
-SMTP servers making final delivery MAY remove Return-path headers
-before adding their own.
-
-The primary purpose of the Return-path is to designate the address to
-which messages indicating non-delivery or other mail system failures
-are to be sent. For this to be unambigious, exactly one return path
-should be present when the message is delivered. Systems using RFC
-822 syntax with non-SMTP transports SHOULD designate an unambiguous
-address, associated with the transport envelope, to which error
-reports (e.g., non-delivery messages) should be sent.
-
- Historical note: Text in RFC 822 that appears to contradict the
- use of Return-path (or the envelope MAIL FROM address) as the
- destination for error messages is not applicable on the Internet.
- The MAIL FROM address (as copied into the Return-path) MUST be
- used as the target of any mail containing delivery error messages.
- << Probably should take this out if [MSGFMT] adequately
- clarifies that point --Ed.>>
-
-In particular,
-
-(i) a gateway from SMTP->elsewhere SHOULD insert a return-path
-header, unless it is known that the "elsewhere" transport also uses
-Internet domain addresses and maintains the envelope sender address
-separately.
-
-(ii) a gateway from elsewhere->SMTP SHOULD delete any
-return-path header present in the message, and either copy
-that information to the SMTP envelope or combine it with
-information present in the envelope of the other transport
-system to construct the MAIL FROM part of the SMTP envelope.
-
-
-
-The server must give special treatment to cases in which the
-processing following the end of mail data indication is only
-partially successful. This could happen if, after accepting several
-recipients and the mail data, the SMTP server finds that the mail
-data could be successfully delivered to some, but not all, of the
-recipients. In such cases, the response to the DATA command must be
-an OK reply. However, the SMTP server must compose and send an
-"undeliverable mail" notification message to the originator of the
-message. A single notification listing all of the failed recipients
-or separate notification messages must be sent for each failed
-recipient. For economy of processing by the sender, the former is
-preferred when possible. All undeliverable mail notification
-messages are sent using the MAIL command (even if they result from
-processing the obsolete SEND, SOML, or SAML commands) and use a null
-return path as discussed in section ##3.7.
-
- <<The following section is incomplete in this draft >>>
-
-The time stamp line and the return path line are formally defined as
-follows:
-
-<return-path-line> ::= "Return-Path:" <SP><reverse-path><CRLF>
-
-<time-stamp-line> ::= "Received:" <SP> <stamp> <CRLF>
-
-<stamp> ::= <from-domain> <by-domain> <opt-info> ";"
- <daytime>
-
-<from-domain> ::= "FROM" <SP> <domain> <SP>
-
-<by-domain> ::= "BY" <SP> <domain> <SP>
-
-<opt-info> ::= [<via>] [<with>] [<id>] [<for>]
-
-<via> ::= "VIA" <SP> <link> <SP>
-
-<with> ::= "WITH" <SP> <protocol> <SP>
-
-<id> ::= "ID" <SP> <string> <SP>
-
-<for> ::= "FOR" <SP> <path> <SP>
-
-<< FOR and <link> need to be nailed down.>>
-
- <link> ::= The standard names for links are registered with
- the Internet Assigned Numbers Authority (IANA).
-
- <protocol> ::= The standard names for protocols are
- registered with the Internet Assigned Numbers Authority
- (IANA).
-
- <daytime> ::= <SP> <date> <SP> <time>
-
- Date ::= Dd SP Mon SP YYYY
-
- Note that the earlier form, which permits two-digit years, has
- been deprecated. SMTP systems MUST use four-digit years.
-
- <time> ::= <hh> ":" <mm> ":" <ss> <SP> <zone>
-
- Dd ::= the one or two decimal integer day of the month in
- the range 1 to 31.
-
- Mon ::= "JAN" | "FEB" | "MAR" | "APR" | "MAY" | "JUN" |
- "JUL" | "AUG" | "SEP" | "OCT" | "NOV" | "DEC"
-
- YYYY ::= the four decimal integer year in the range 0000 to
- 9999.
-
- <hh> ::= the two decimal integer hour of the day in the
- range 00 to 24.
-
- <mm> ::= the two decimal integer minute of the hour in the
- range 00 to 59.
-
- <ss> ::= the two decimal integer second of the minute in the
- range 00 to 59.
-
- <zone> ::= A four digit, signed time zone offset, such as -0600 for
- US Eastern Standard Time. This may be supplemented by a
- time zone name in parentheses, e.g., "-0800 (PDT)". See
- ##___ for additional discussion.
-
- Note that there is no default; time zone information
- is required and MUST be supplied.
-
-
-
-
--------------------------------------------------------------
-|
-| Example of Return Path and Received Time Stamps
-|
-| Return-Path: <@GHI.ARPA,@DEF.ARPA,@ABC.ARPA:JOE@ABC.ARPA>
-| Received: from GHI.ARPA by JKL.ARPA ; 27 Oct 81 15:27:39 -0800
-| Received: from DEF.ARPA by GHI.ARPA ; 27 Oct 81 15:15:13 -0800
-| Received: from ABC.ARPA by DEF.ARPA ; 27 Oct 81 15:01:59 -0800
-| Date: 27 Oct 81 15:01:01 -0800 (PST)
-| From: JOE@ABC.ARPA
-| Subject: Improved Mailing System Installed
-| To: SAM@JKL.ARPA
-|
-| This is to inform you that ...
-|
-| Example 8
-|
--------------------------------------------------------------
-
-
-
-
-
-4.5. DETAILS
-
-4.5.1. MINIMUM IMPLEMENTATION
-
-In order to make SMTP workable, the following minimum
-implementation is required for all receivers:
-
- COMMANDS -- HELO
- VRFY
- MAIL
- RCPT
- DATA
- RSET
- NOOP
- QUIT
-
-Any system that includes an SMTP server supporting mail relaying
-or delivery, i.e., the RCPT command, MUST support the reserved
-mailbox "postmaster" as a case-insensitive local name. This
-postmaster address is not strictly necessary if the server always
-returns 554 on connection opening (as described in section ##3.1). The
-requirement to accept mail for postmaster implies that RCPT TO
-commands which specify a mailbox for postmaster at any of the domains
-for which the SMTP server provides mail service, as well as the
-special case of "RCPT TO:<Postmaster>" (with no domain specification),
-MUST be supported.
-
-EHLO SHOULD be supported if possible.
-
-
-
-4.5.2. TRANSPARENCY
-
-Without some provision for data transparency, the character
-sequence "<CRLF>.<CRLF>" ends the mail text and cannot be sent
-by the user. In general, users are not aware of such
-"forbidden" sequences. To allow all user composed text to be
-transmitted transparently, the following procedures are used.
-
- 1. Before sending a line of mail text, the SMTP client checks
- the first character of the line. If it is a period, one
- additional period is inserted at the beginning of the line.
-
- 2. When a line of mail text is received by the SMTP server,
- it checks the line. If the line is composed of a single period,
- it is treated as the end of mail indicator. If the first
- character is a period and there are other characters on the line,
- the first character is deleted.
-
-The mail data may contain any of the 128 ASCII characters. All
-characters are to be delivered to the recipient's mailbox, including
-format effectors and other control characters. If the transmission
-channel provides an 8-bit byte (octets) data stream, the 7-bit ASCII
-codes are transmitted right justified in the octets, with the high
-order bits cleared to zero. See ##3.7 for special treatment of these
-conditions in SMTP systems serving a relay function.
-
-In some systems it may be necessary to transform the data as it is
-received and stored. This may be necessary for hosts that use a
-different character set than ASCII as their local character set or
-store data in records rather than strings. If such transformationss
-are necessary, they must be reversible -- especially if such
-transformationss are applied to mail being relayed.
-
-
-4.5.3. SIZES AND TIMEOUTS
-
-There are several objects that have required minimum/maximum sizes.
-Every implementation must be able to receive objects of at least
-these sizes. Objects larger than these sizes SHOULD be avoided when
-possible. However, some Internet mail constructs, e.g., encoded
-X.400 addresses [RFC-X400] will often require larger objects: clients
-MAY attempt to transmit these, but MUST be prepared for a server to
-reject them if they cannot be handled by it.
-
-
-****************************************************
-* *
-* TO THE MAXIMUM EXTENT POSSIBLE, IMPLEMENTATION *
-* TECHNIQUES WHICH IMPOSE NO LIMITS ON THE LENGTH *
-* OF THESE OBJECTS SHOULD BE USED. *
-* *
-****************************************************
-
-local-part
-
- The maximum total length of a user name or other local-part
-
-is 64 characters.
-
-domain
-
- The maximum total length of a domain name or number is 255
- characters.
-
-path
-
- The maximum total length of a reverse-path or
- forward-path is 256 characters (including the punctuation
- and element separators).
-
-command line
-
- The maximum total length of a command line including the
- command word and the <CRLF> is 512 characters.
-
-reply line
-
- The maximum total length of a reply line including the reply code
- and the <CRLF> is 512 characters. More information may be
- conveyed through multiple-line replies.
-
-
-text line
-
- The maximum total length of a text line including the <CRLF> is
- 1000 characters (not counting the leading dot duplicated for
- transparency). This number may be increased by the use of SMTP
- Service Extensions.
-
-message content
-
- The maximum total length of a message content (including any
- message headers as well as the message body) MUST BE at least 64K
- octets. Since the introduction of multimedia mail [RFC-MIME],
- message lengths on the Internet have grown dramatically, and
- message size restrictions should be avoided if at all possible.
- SMTP server systems that must impose restrictions SHOULD implement
- the "SIZE" service extension ([RFC-SIZE]), and SMTP client systems
- that will send large messages SHOULD utilize it when possible.
-
-recipients buffer
-
- The minimum total number of recipients that must be buffered is
- 100 recipients. Rejection of messages (for excessive recipients)
- with fewer than 100 RCPT TO commands is a violation of this
- specification. The general principle that relaying SMTP servers
- MUST NOT, and delivery SMTP servers SHOULD NOT, perform validation
- tests on message headers suggests that rejecting a message based
- on the total number of recipients shown in header fields is to be
- discouraged. A server which imposes a limit on the number of
- recipients MUST behave in an orderly fashion, e.g., reject
- additional addresses over its limit rather than silently
- discarding addresses previously accepted. A client that needs to
- deliver a message containing over 100 RCPT TO commands SHOULD be
- prepared to transmit in 100-recipient "chunks" if the server
- declines to accept more than 100 recipients in a single message.
-
-
-****************************************************
-* *
-* TO THE MAXIMUM EXTENT POSSIBLE, IMPLEMENTATION *
-* TECHNIQUES WHICH IMPOSE NO LIMITS ON THE LENGTH *
-* OF THESE OBJECTS SHOULD BE USED. *
-* *
-****************************************************
-
-Errors due to exceeding these limits may be reported by using the
-reply codes, for example:
-
-500 Line too long.
-
-501 Path too long
-
-552 Too many recipients.
-
-<< Note in draft: Should this be 452?>>
-
-552 Too much mail data.
-
-
-An SMTP client MUST provide a timeout mechanism. It MUST use
-per-command timeouts rather than somehow trying to time the entire
-mail transaction. Timeouts SHOULD be easily reconfigurable,
-preferably without recompiling the SMTP code. To implement this, a
-timer is set for each SMTP command and for each buffer of the data
-transfer. The latter means that the overall timeout is inherently
-proportional to the size of the message.
-
-Based on extensive experience with busy mail-relay hosts, the minimum
-per-command timeout values SHOULD be as follows:
-
-o Initial 220 Message: 5 minutes
-
- An SMTP client process needs to distinguish between a failed TCP
- connection and a delay in receiving the initial 220 greeting
- message. Many SMTP servers accept a TCP connection but delay
- delivery of the 220 message until their system load permits more
- mail to be processed.
-
-o MAIL Command: 5 minutes
-
-
-o RCPT Command: 5 minutes
-
- A longer timeout is required if processing of mailing lists and
- aliases is not deferred until after the message was accepted.
-
-o DATA Initiation: 2 minutes
-
- This is while awaiting the "354 Start Input" reply to a
- DATA command.
-
-o Data Block: 3 minutes
-
- This is while awaiting the completion of each TCP SEND call
- transmitting a chunk of data.
-
-o DATA Termination: 10 minutes.
-
- This is while awaiting the "250 OK" reply. When the receiver
- gets the final period terminating the message data, it typically
- performs processing to deliver the message to a user mailbox. A
- spurious timeout at this point would be very wasteful and would
- typically result in delivery of multiple copies of the message,
- since it has been successfully sent and the server has accepted
- responsibility for delivery. See section ##6.1 for additional
- discussion.
-
-An SMTP server SHOULD have a timeout of at least 5 minutes while it
-is awaiting the next command from the sender.
-
-
-4.5.4 Queuing Strategies
-
-The common structure of a host SMTP implementation includes user
-mailboxes, one or more areas for queueing messages in transit, and
-one or more daemon processes for sending and receiving mail. The
-exact structure will vary depending on the needs of the users on the
-host and the number and size of mailing lists supported by the host.
-We describe several optimizations that have proved helpful,
-particularly for mailers supporting high traffic levels.
-
-Any queueing strategy MUST include:
-
-o Timeouts on all activities on a per-command basis.
-
-o Never sending error messages in response to error messages.
-
-
-4.5.4.1 Sending Strategy
-
-The general model for an SMTP client is one or more processes that
-periodically attempt to transmit outgoing mail. In a typical system,
-the program that composes a message has some method for requesting
-immediate attention for a new piece of outgoing mail, while mail that
-cannot be transmitted immediately MUST be queued and periodically
-retried by the sender. A mail queue entry will include not only the
-message itself but also the envelope information.
-
-The sender MUST delay retrying a particular destination after one
-attempt has failed. In general, the retry interval SHOULD be at
-least 30 minutes; however, more sophisticated and variable strategies
-will be beneficial when the SMTP client can determine the reason for
-non- delivery.
-
-Retries continue until the message is transmitted or the sender gives
-up; the give-up time generally needs to be at least 4-5 days. The
-parameters to the retry algorithm MUST be configurable.
-
-A client SHOULD keep a list of hosts it cannot reach and
-corresponding connection timeouts, rather than just retrying queued
-mail items.
-
-
-Experience suggests that failures are typically transient (the target
-system or its connection has crashed), favoring a policy of two
-connection attempts in the first hour the message is in the queue,
-and then backing off to one every two or three hours.
-
-The SMTP client can shorten the queuing delay in cooperation with the
-SMTP server. For example, if mail is received from a particular
-address, it is likely that mail queued for that host can now be sent.
-Application of this principle may, in many cases, eliminate the
-requirement for an explicit "send queues now" function such as that
-discussed in [RFC-ETRN].
-
-The strategy may be further modified as a result of multiple
-addresses per host (see below) to optimize delivery time vs.
-resource usage.
-
-An SMTP client may have a large queue of messages for each
-unavailable destination host. If all of these messages were retried
-in every retry cycle, there would be excessive Internet overhead and
-the sending system would be blocked for a long period. Note that an
-SMTP client can generally determine that a delivery attempt has
-failed only after a timeout of several minutes and even a one-minute
-timeout per connection will result in a very large delay if retries
-are repeated for dozens, or even hundreds, of queued messages to the
-same host.
-
-At the same time, SMTP clients should use great care in caching
-negative responses from servers. In an extreme case, if EHLO is
-issued multiple times during the same SMTP connection, different
-answers may be returned by the server. More significantly, 5yz
-responses to MAIL FROM MUST NOT be cached.
-
-When the same message will be delivered to several users on the same
-host, only one copy of the message SHOULD be transmitted. That is,
-the SMTP client SHOULD use the command sequence: RCPT, RCPT,... RCPT,
-DATA instead of the sequence: RCPT, DATA, ..., RCPT, DATA, ... RCPT,
-DATA. Implementation of this efficiency feature is strongly
-encouraged.
-
-Similarly, to achieve timely delivery, the SMTP client MAY support
-multiple concurrent outgoing mail transactions. However, some limit
-may be appropriate to protect the host from devoting all its
-resources to mail.
-
-4.5.4.2 Receiving strategy
-
-The SMTP server SHOULD attempt to keep a pending listen on the SMTP
-port at all times. This requires the support of multiple incoming
-TCP connections for SMTP. Some limit MAY be imposed.
-
-As discussed above, when the SMTP server receives mail from a
-particular host address, it could notify the SMTP client to retry any
-mail pending for that host address.
-
-
-
-5. Address resolution and mail handling
-
-Once an SMTP client lexically identifies a domain to which mail will
-be delivered for processing (as described in sections ##3.6 and
-##3.7), a DNS lookup is performed to resolve the domain name (see
-[RFC-DNS]). The lookup first attempts to locate an MX record
-associated with the name. If a CNAME record is found instead, the
-resulting name is processed as if it were the initial name. If no MX
-records are found, but an A RR is found, the A RR is treated as if it
-was associated with an implicit MX RR, with a preference of 0,
-pointing to that host. If one or more MX RRs are found for a given
-name, SMTP systems MUST NOT utilize an A RRs associated with that
-name unless they are located using the MX RRs; i.e., the "implicit
-MX" rule above applies only if there are no MX records present. If
-MX records are present, but none of them are usable, this situation
-MUST be reported as an error.
-
-When the lookup succeeds, the mapping can result in a list of
-alternative delivery addresses rather than a single address, because
-of (a) multiple MX records, (b) multihoming, or both. To provide
-reliable mail transmission, the SMTP client MUST be able to try (and
-retry) each of the relevant addresses in this list in order, until a
-delivery attempt succeeds. However, there MAY also be a configurable
-limit on the number of alternate addresses that can be tried. In any
-case, a host SHOULD try at least two addresses.
-
-The following information is used to rank the host addresses:
-
- (1) Multiple MX Records -- these contain a preference indication
- that should be used in sorting (see below). Lower numbers are
- more preferred than higher ones. If there are multiple
- destinations with the same preference and there is no clear
- reason to favor one (e.g., by recognition of an easily-reached
- address), then the sender-SMTP SHOULD pick one at random to
- spread the load across multiple mail exchangers for a specific
- organization.
-
- (2) Multihomed host -- The destination host (perhaps taken from the
- preferred MX record) may be multihomed, in which case the domain
- name resolver will return a list of alternative IP addresses. It
- is the responsibility of the domain name resolver interface to
- have ordered this list by decreasing preference if necessary, and
- SMTP MUST try them in the order presented.
-
- Although the capability to try multiple alternative addresses is
- required, specific installations may want to limit or disable the
- use of alternative addresses. The question of whether a sender
- should attempt retries using the different addresses of a
- multihomed host has been controversial. The main argument for
- using the multiple addresses is that it maximizes the probability
- of timely delivery, and indeed sometimes the probability of any
- delivery; the counterargument is that it may result in
- unnecessary resource use.
-
- Note that resource use is also strongly determined by the sending
- strategy discussed in Section #4.5.4.1.
-
-If a host receives a message with a destination for which it is a
-designated Mail eXchanger, it MAY relay the message (potentially
-after having rewritten the addresses), make final delivery of the
-message, or hand it off using some mechanism outside the
-SMTP-provided transport environment.
-
-If it determines that it should relay the message without rewriting
-the address, it must sort the MX records to determine candidates for
-delivery. The records are first ordered by preference, with the
-lowest-numbered records being most preferred. The relay host must
-then inspect the list for any of the names or addresses by which it
-might be known in mail transactions. If a matching record is found,
-all records at that preference level and higher-numbered ones MUST BE
-discarded from consideration. If there are no records left at that
-point, it is an error condition, and the message must be returned as
-undeliverable. If records do remain, they should be tried, best
-preference first, as described above.
-
-
-6. Problem detection and handling
-
-6.1 Reliable delivery and replies by email
-
-When the receiver-SMTP accepts a piece of mail (by sending a "250 OK"
-message in response to DATA), it is accepting responsibility for
-delivering or relaying the message. It must take this responsibility
-seriously, i.e., it MUST NOT lose the message for frivolous reasons,
-e.g., because the host later crashes or because of a predictable
-resource shortage.
-
-If there is a delivery failure after acceptance of a message, the
-receiver-SMTP MUST formulate and mail a notification message. This
-notification MUST be sent using a null ("<>") reverse path in the
-envelope. The recipient of this notification SHOULD be the address
-from the envelope return path (or the Return-Path: line). However,
-if this address is null ("<>"), the receiver-SMTP MUST NOT send a
-notification. If the address is an explicit source route, it MUST be
-stripped down to its final hop.
-
-DISCUSSION:
- For example, suppose that an error notification must be
- sent for a message that arrived with:
- MAIL FROM:<@a,@b:user@d>
- The notification message should be sent using:
- RCPT TO:<user@d>
-
-Some delivery failures after the message is accepted by SMTP will be
-unavoidable. For example, it may be impossible for the receiving
-SMTP server to validate all the delivery addresses in RCPT command(s)
-due to a "soft" domain system error, because the target is a mailing
-list (see earlier discussion of RCPT), or because the server is
-acting as a relay and has no immediate access to the delivering
-system.
-
-To avoid receiving duplicate messages as the result of timeouts, a
-receiver-SMTP MUST seek to minimize the time required to respond to
-the final <CRLF>.<CRLF> end of data indicator. See RFC-1047
-[RFC1047] for a discussion of this problem.
-
-
-6.2 Loop detection
-
-Simple counting of the number of Received lines in a message has
-proven to be an effective, although rarely optimal, method of
-detecting loops in mail systems. SMTP servers using this technique
-should use a large rejection threshold, normally at least 100
-Received entries. Whatever mechanisms are used, servers MUST contain
-provisions for detecting and stopping trivial loops.
-
-
-6.3 Compensating for irregularities
-
-Unfortunately, variations, creative interpretations, and outright
-violations of Internet mail protocols do occur; some would suggest
-that they occur quite frequently. The debate as to whether a
-well-behaved SMTP receiver or relay should reject a malformed
-message, attempt to pass it on unchanged, or attempt to repair it to
-increase the odds of successful delivery (or subsequent reply) began
-almost with the dawn of structured network mail and shows no signs of
-abating. Advocates of rejection claim that attempted repairs are
-rarely completely adequate and that rejection of bad messages is the
-only way to get the offending software repaired. Advocates of
-"repair" or "deliver no matter what" argue that users prefer that
-mail go through it if at all possible and that there are significant
-market pressures in that direction. In practice, these market
-pressures may be more important to particular vendors than strict
-conformance to the standards, regardless of the preference of the
-actual developers.
-
-The problems associated with ill-formed messages were exacerbated by
-the introduction of the split-UA mail reading protocols [RFC-POP2,
-RFC-POP3, RFC-IMAP2, RFC-PCMAIL These protocols have encouraged the
-use of SMTP as a posting protocol, and SMTP servers as relay systems
-for these client hosts (which are often only intermittently connected
-to the Internet). Historically, many of those client machines lacked
-some of the mechanisms and information assumed by SMTP (and indeed,
-by the mail format protocol [RFC-822]). Some could not keep adequate
-track of time; others had no concept of time zones; still others
-could not identify their own names or addresses; and, of course, none
-could satisfy the assumptions that underlay RFC-822's conception of
-authenticated addresses.
-
-In response to these weak SMTP clients, many SMTP systems now
-complete messages that are delivered to them in incomplete or
-incorrect form. This strategy is generally considered appropriate
-when the server can identify or authenticate the client, and there
-are prior agreements between them. By contrast, there is at best
-great concern about fixes applied by a relay or delivery SMTP server
-that has little or no knowledge of the user or client machine.
-
-The following changes to a message being processed MAY be applied by
-an originating SMTP server, or one used as the target of SMTP as an
-initial posting protocol, when necessary. The less information the
-server has about the client, the less likely these changes are to be
-correct and the more caution and conservatism should be applied when
-considering whether or not to perform fixes and how. These changes
-MUST NOT be applied by an SMTP server that provides an intermediate
-relay function.
-
- - Addition of a message-id field when none appears
-
- - Addition of a date, time or time zone when none appears
-
- - Correction of addresses to proper FQDN format
-
-In all cases, properly-operating clients supplying correct
-information are preferred to corrections by the SMTP server. In all
-cases, documentation of actions performed by the servers (in trace
-fields and/or header comments) is strongly encouraged.
-
-
-7. Security Considerations
-
-7.1 Mail security and spoofing
-
-SMTP mail is inherently insecure in that it is feasible for even
-fairly casual users to negotiate directly with receiving and relaying
-SMTP servers and create messages that will trick a naive recipient
-into believing that they came from somewhere else. Constructing such
-a message so that the "spoofed" behavior cannot be detected by an
-expert is somewhat more difficult, but not sufficiently so as to be a
-deterrent to someone who is determined and knowledgeable.
-Consequently, as knowledge of Internet mail increases, so does the
-knowledge that SMTP mail inherently cannot be authenticated, or
-integrity checks provided, at the transport level.
-
-Real mail security lies only in end-to-end methods involving the
-message bodies, e.g., those that can be provided in the MOSS
-framework [RFC-MOSS].
-
-Efforts to make it more difficult for users to set envelope MAIL FROM
-and header "From" fields to point to valid addresses other than their
-own are largely misguided: they frustrate legitimate applications in
-which mail is sent by one user on behalf of another or in which error
-(or normal) replies should be directed to a special address. (Systems
-that provide convenient ways for users to alter these fields on a
-per-message basis should attempt to establish a primary and permanent
-mailbox address for the user so that Sender fields within the message
-data can be generated sensibly.)
-
-
-This specification does not further address the authentication issues
-associated with SMTP other than to advocate that useful functionality
-not be disabled in the hope of providing some small margin of
-protection against an ignorant user who is trying to fake mail.
-
-
-
-7.2 "Blind" copies.
-
-Addresses that do not appear in the message headers may appear in the
-RCPT TO commands to an SMTP server for a number of reasons. The two
-most common involve the use of a mailing address as a "list exploder"
--- a single address that resolves into multiple addresses -- and the
-appearance of "blind copies". In order to avoid defeating some of
-the purpose of these mechanisms, SMTP clients and servers SHOULD NOT
-copy the full set of RCPT TO command arguments into the headers, even
-as informational or private-extension headers. Since this rule is
-often violated in practice, and cannot be enforced, sending SMTP
-systems that are aware of "bcc" use MAY find it helpful to send each
-blind copy as a separate message transaction containing only a single
-RCPT TO command.
-
-There is no inherent relationship between either "reverse" (MAIL
-FROM, SAML FROM, etc.) or "forward" (RCPT TO) addresses in the SMTP
-transaction ("envelope") and the addresses in the headers. Receiving
-systems SHOULD NOT attempt to deduce such relationships and use them
-to alter the headers of the message for delivery. The popular
-"Apparently-to" header is a violation of this principle and SHOULD
-NOT be used.
-
-
-7.3 VRFY, EXPN, and security.
-
-As discussed in section ##3.5, individual sites may want to disable
-one or both VRFY or EXPN for security reasons. As a corollary to the
-above, implementations that permit this MUST NOT appear to have
-verified addresses that are not, in fact, verified. If a site
-disables these commands for security reasons, the SMTP server MUST
-return a 252 response, rather than a code that could be confused with
-successful or unsuccessful verification.
-
-Returning a 250 reply code with the address listed in the VRFY
-command after having checked it only for syntax violates this rule.
-Of course, an implementation that "supports" VRFY by always returning
-550 whether or not the address is valid is equally not in conformance.
-
-Within the last four years, the contents of mailing lists have become
-popular as an address information source for so-called "spammers."
-The use of EXPN to "harvest" addresses has increased as list
-administrators have installed protections against inappropriate uses
-of the lists themselves. Implementations SHOULD still provide
-support for EXPN, but sites should carefully evaluate the tradeoffs..
-As authentication mechanisms are introduced into SMTP, some sites may
-choose to make EXPN available only to authenticated requestors.
-
-
-7.4. Information Disclosure
-
-There has been an ongoing debate about the tradeoffs between the
-debugging advantages of announcing server type and version (and,
-sometimes, even server domain name) in the greeting response or in
-response to the HELP command and the disadvantages of exposing useful
-information to potential hostile attack. The utility of the
-debugging information is beyond doubt. Those who argue for making it
-available point out that it is far better to actually secure an SMTP
-server rather than hope that trying to conceal known vunerabilities
-by hiding the server's precise identity will provide more protection.
-Sites are encouraged to evaluate the tradeoff with that issue in
-mind; implementations are strongly encouraged to minimally provide
-for making type and version information available in some way to
-other network hosts.
-
-
-7.5. Scope of operation of SMTP servers
-
-It is a well-established principle that an SMTP server may refuse to
-accept mail for any operational or technical reason that makes sense
-to the site providing the server. However, cooperation among sites
-and installations makes the Internet possible.. If sites take
-excessive advantage of the right to reject traffic, the ubiquity of
-email availability (one of the strengths of the Internet) will be
-threatened; considerable care should be taken and balance maintained
-if a site decides to be selective about the traffic it will accept
-and process.
-
-In recent years, use of the relay function through arbitrary sites
-has been used as part of hostile efforts to hide the actual origins
-of mail. Some sites have decided to limit the use of the relay
-function to known or identifiable sources, and implementations SHOULD
-provide the capability to perform this type of filtering. When mail
-is rejected for these or other policy reasons, a 550 code should be
-used in response to EHLO, MAIL FROM, or RCPT TO as appropriate.
-
-
-8. IANA Considerations
-
-IANA is [[requested]] to set up two registries. The first consists
-of SMTP service extensions with the associated keywords, and, as
-needed, parameters and verbs. As specified in section ##2.2.2, no
-entry may be made in this registry that starts in an "X". Entries
-may be made only for service extensions (and associated keywords,
-parameters, or verbs) that are defined in standards-track or
-experimental RFCs specifically approved by IESG for this purpose.
-
-The second registry consists of "tags" that identify forms of domain
-literals other than those for IPv4 addresses (specified in RFC 821
-and in this document) and IPv6 addresses (specified in this
-document). Additional literal types require standardization before
-being used; none are anticipated at this time.
-
-
-9. REFERENCES
-
-[1] ASCII
-
- ASCII, "USA Code for Information Interchange", United States of
- America Standards Institute (now American National Standards
- Institute), X3.4, 1968. ANSI X3.4-1968 has been replaced by
- newer versions with slight modifications, but the 1968
- version remains definitive for the Internet.
-
-[RFC822]
- Crocker, D., "Standard for the Format of ARPA Internet Text
- Messages", RFC 822, Department of Electrical Engineering,
- University of Delaware, August 1982.
-
-[3] TCP
- Postel, J., ed., "Transmission Control Protocol - DARPA Internet
- Program Protocol Specification", RFC 793, USC/Information Sciences
- Institute, NTIS AD Number A111091, September 1981.
-
-[HEADER-PEOPLE]
-
-[RFC-DNS] P. Mockapetris, "Domain names - implementation and
- specification", RFC 1035 and P. Mockapetris, "Domain names -
- concepts and facilities", RFC 1034. (STD 13)
-
-[RFC974] C. Partridge, "Mail routing and the domain system", RFC
- 974, 01/01/1986
-
-[RFC1047] C. Partridge, "Duplicate messages and SMTP", RFC 1047,
- 02/01/1988.
-
-[RFC-SIZE] J. Klensin, N. Freed, K. Moore, "SMTP Service Extension
- for Message Size Declaration", RFC 1870, 11/06/1995. (STD 10)
-
-[RFC-MIME] N. Freed, N. Borenstein, "Multipurpose Internet Mail
- Extensions (MIME) Part One: Format of Internet Message
- Bodies", RFC 2045, 12/02/1996.
-
-[RFC-INTLHDR] K. Moore, "MIME (Multipurpose Internet Mail Extensions)
- Part Three: Message Header Extensions for Non-ASCII Text",
- RFC 2047, 12/02/1996.
-
-[8BITMIME] J. Klensin, N. Freed, M. Rose, E. Stefferud, D. Crocker,
- "SMTP Service Extension for 8bit-MIMEtransport", RFC 1652,
- 07/18/1994.
-
-[SMTPEX] J. Klensin, N. Freed, M. Rose, E. Stefferud, D.
- Crocker, "SMTP Service Extensions", RFC-1869, 11/06/1995.
-
-[RFC-1123] R. Braden, "Requirements for Internet hosts -
- application and support", 10/01/1989
-
-[RFC-MOSS] S. Crocker, N. Freed, J. Galvin, S. Murphy, "MIME Object
- Security Services", RFC 1848, 10/03/1995.
-
-[RFC-POP2] M. Butler, D. Chase, J. Goldberger, J. Postel, J.
- Reynolds, "Post Office Protocol - version 2", RFC 937,
- 02/01/1985
-
-[RFC-IMAP2] M. Crispin, "Interactive Mail Access Protocol - Version
- 2", RFC 1176, 08/20/1990.
-
-[RFC-PCMAIL] M. Lambert, "PCMAIL: A distributed mail system for
- personal computers", RFC 1056, 06/01/1988.
-
-[RFC-POP3] J. Myers, M. Rose, "Post Office Protocol - Version 3",
- RFC 1930, 5/14/96 (Std 53).
-
-[RFC-IMAP4] M. Crispin, "Internet Message Access Protocol
- - Version 4", RFC 2060, 12/04/1996.
-
-[RFC-X400] S. Hardcastle-Kille, "Mapping between X.400(1988) /
- ISO 10021 and RFC 822", RFC 1327, 05/18/1992.
-
-[RFC-ETRN] J. De Winter, "SMTP Service Extension for Remote
- Message Queue Starting", RFC 1985, 08/14/1996.
-
-[RFC-BDAT] G. Vaudreuil, "SMTP Service Extensions for
- Transmission of Large and Binary MIME Messages", RFC 1830,
- 08/16/1995.
-
-[RFC-PIPELINE] N. Freed, A. Cargille, "SMTP Service Extension
- for Command Pipelining", RFC 1854, 10/04/1995.
-
-[RFC-NOTARY1] K. Moore, "SMTP Service Extension for Delivery
- Status Notifications", RFC 1891, 01/15/1996.
-
-[RFC-NOTARY2] K. Moore, G. Vaudreuil, "An Extensible Message
- Format for Delivery Status Notifications", RFC 1894,
- 01/15/1996.
-
-[RFC-REPLY] G. Vaudreuil, "Enhanced Mail System Status Codes",
- RFC 1893, 01/15/1996.
-
-[ABNF] Crocker, D., "Augmented BNF for Syntax Specifications: ABNF",
- (in progress -- draft-ietf-drums-abnf-03.txt)
-
-[MSGFMT] P. Resnick, Work in progress,
- draft-ietf-drums-msg-fmt-02.txt, June 1997.
-
-
-9. Editor's Addresses
-
- John C. Klensin
- MCI Communications
- 800 Boylston St., 7th floor
- Boston, MA 02199
- USA
- Email: Klensin@mci.net
- Phone: +1 617 960 1011
- Fax: +1 617 960 1009
-
-Dawn P. Mann
-Microsoft Corporation
-1 Microsoft Way
-Redmond, WA 98052-6399
-USA
- Email: dawnm@microsoft.com
- Tel: +1 425 936 5475
-
-
-
-10. Acknowledgments
-
-<<>>to be supplied>>
-
-
-
-APPENDIX A
-
-TCP Transport service
-
-The Transmission Control Protocol [3] is used in the Internet, and in
-any network following the Internet standards for internetwork protocols.
-
-Connection Establishment
-
- The SMTP transmission channel is a TCP connection established
- between the sender process port U and the receiver process port
- L. This single full duplex connection is used as the
- transmission channel. This protocol is assigned the service
- port 25 (31 octal), that is L=25.
-
-Data Transfer
-
- The TCP connection supports the transmission of 8-bit bytes.
- The SMTP data is 7-bit ASCII characters. Each character is
- transmitted as an 8-bit byte with the high-order bit cleared to
- zero. Service extensions may modify this rule to permit
- transmission of full 8-bit data bytes as part of the message
- body, but not in SMTP commands or responses.
-
-
-
-APPENDIX B
-
-Generating SMTP commands from RFC 822 headers
-
-Some systems use RFC 822 headers (only) in a mail submission
-protocol, or otherwise generate SMTP commands from RFC 822 headers
-when such a message is handed to an MTA from a UA. While the MTA-UA
-protocol is a private matter, not covered by any Internet Standard,
-there are problems with this approach. For example, there have been
-repeated problems with proper handling of "bcc" copies and
-redistribution lists when information that conceptually belongs to a
-mail envelopes is not separated early in processing from header
-information (and kept separate).
-
-It is recommended that the UA provide its initial MTA with an
-envelope separate from the message itself. However, if the envelope
-is not supplied, SMTP commands should be generated as follows:
-
-(i) each recipient address from a TO, CC, or BCC header field
-should be copied to a RCPT command (generating multiple message
-copies if that is required for queuing or delivery). This includes
-any addresses listed in a RFC 822 "group". Any BCC fields should
-then be removed from the headers. Once this process is completed,
-the remaining headers should be checked to verify that at least one
-To:, Cc:, or Bcc: header remains. If none do, then a bcc: header
-with no additional information SHOULD be inserted as specified in
-[MSGFMT].
-
-(ii) the return address in the MAIL command should, if possible, be
-derived from the system's identity for the submitting (local) user.
-And the From header field otherwise. If there is a system identity
-available, it should also be copied to the Sender header field if it
-is different from the address in the From header field. (Any Sender
-field that was already there should be removed.) Systems may provide
-a way for submitters to override the envelope return address, but may
-want to restrict its use to privileged users. (This will not prevent
-mail forgery, but may lessen its incidence -- see section 7.1.)
-
-When an MTA is being used in this way, it bears responsibility for
-ensuring that the message being transmitted is valid. The mechanisms
-for checking that validity, and for handling (or returning) messages
-that are not valid at the time of arrival, are part of the MUA-MTA
-interface and not covered by this specification.
-
-A submission protocol based on Standard RFC 822 information alone
-MUST NOT be used to gateway a message from a foreign (non-SMTP) mail
-system into an SMTP environment. Additional information to construct
-an envelope must come from some source in the other environment,
-whether supplemental headers or the foreign system's envelope.
-
-Attempts to gateway messages using only their header "to" and "cc"
-fields, have repeatedly caused mail loops and other behavior adverse
-to the proper functioning of the Internet mail environment. These
-problems have been especially common when the message originates from
-an Internet mailing list and is distributed into the foreign
-environment using envelope information. When these messages are then
-processed by a header-only remailer, loops back to the Internet
-environment (and the mailing list) are almost inevitable.
-
-
-APPENDIX C
-
-Source routes.
-
-The <reverse-path> is a reverse source routing list of hosts and a
-source mailbox. The first host in the <reverse-path> should be the
-host sending the MAIL FROM command. Similarly, the <forward-path>
-may be a source routing lists of hosts and a destination mailbox.
-However, in general, the <forward-path> should contain only a mailbox
-and domain name, relying on the domain name system to supply routing
-information if required. The use of source routes is deprecated;
-while servers MUST be prepared to receive and handle them as
-discussed in section ##3.3 and below, clients SHOULD NOT transmit
-them.
-
-For relay purposes, the forward-path may be a source route of the
-form "@ONE,@TWO:JOE@THREE", where ONE, TWO, and THREE MUST BE
-fully-qualified domain names. This form is used to emphasize the
-distinction between an address and a route. The mailbox is an
-absolute address, and the route is information about how to get
-there. The two concepts should not be confused.
-
-If source routes are used, RFC 821 and the text below should be
-consulted for the mechanisms for constructing and updating the
-forward- and reverse-paths.
-
-The SMTP server transforms the command arguments by moving its own
-identifier (its domain name or that of any domain for which it is
-acting as a mail exchanger), if it appears, from the forward-path to
-the beginning of the reverse-path.
-
-Notice that the forward-path and reverse-path appear in the SMTP
-commands and replies, but not necessarily in the message. That is,
-there is no need for these paths and especially this syntax to appear
-in the "To:" , "From:", "CC:", etc. fields of the message header.
-Conversely, SMTP servers MUST NOT derive final message delivery
-information from message header fields.
-
- When the list of hosts is present, it is a "reverse" source route
-and indicates that the mail was relayed through each host on the list
-(the first host in the list was the most recent relay). This list is
-used as a source route to return non-delivery notices to the sender.
-As each relay host adds itself to the beginning of the list, it must
-use its name as known in the transport environment to which it is
-relaying the mail rather than that of the transport environment from
-which the mail came (if they are different).
-
-
-
-
-APPENDIX F
-
-Scenarios
-
-This section presents complete scenarios of several types of SMTP
-sessions.
-
-A Typical SMTP Transaction Scenario
-
-This SMTP example shows mail sent by Smith at host USC-ISIF, to
-Jones, Green, and Brown at host BBN-UNIX. Here we assume that host
-USC-ISIF contacts host BBN-UNIX directly. The mail is accepted for
-Jones and Brown. Green does not have a mailbox at host BBN-UNIX.
-
--------------------------------------------------------------
-
- R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready
- S: HELO USC-ISIF.ARPA
- R: 250 BBN-UNIX.ARPA
-
- S: MAIL FROM:<Smith@USC-ISIF.ARPA>
- R: 250 OK
-
- S: RCPT TO:<Jones@BBN-UNIX.ARPA>
- R: 250 OK
-
- S: RCPT TO:<Green@BBN-UNIX.ARPA>
- R: 550 No such user here
-
- S: RCPT TO:<Brown@BBN-UNIX.ARPA>
- R: 250 OK
-
- S: DATA
- R: 354 Start mail input; end with <CRLF>.<CRLF>
- S: Blah blah blah...
- S: ...etc. etc. etc.
- S: .
- R: 250 OK
-
- S: QUIT
- R: 221 BBN-UNIX.ARPA Service closing transmission channel
-
- Scenario 1
-
--------------------------------------------------------------
-
-
-
-
-
-Aborted SMTP Transaction Scenario
-
--------------------------------------------------------------
-
- R: 220 MIT-Multics.ARPA Simple Mail Transfer Service Ready
- S: HELO ISI-VAXA.ARPA
- R: 250 MIT-Multics.ARPA
-
- S: MAIL FROM:<Smith@ISI-VAXA.ARPA>
- R: 250 OK
-
- S: RCPT TO:<Jones@MIT-Multics.ARPA>
- R: 250 OK
-
- S: RCPT TO:<Green@MIT-Multics.ARPA>
- R: 550 No such user here
-
- S: RSET
- R: 250 OK
-
- S: QUIT
- R: 221 MIT-Multics.ARPA Service closing transmission channel
-
- Scenario 2
-
--------------------------------------------------------------
-
-
-
-Relayed Mail Scenario
-
--------------------------------------------------------------
-
- Step 1 -- Source Host to Relay Host
-
- R: 220 USC-ISIE.ARPA Simple Mail Transfer Service Ready
- S: HELO MIT-AI.ARPA
- R: 250 USC-ISIE.ARPA
-
- S: MAIL FROM:<JQP@MIT-AI.ARPA>
- R: 250 OK
-
- S: RCPT TO:<@USC-ISIE.ARPA:Jones@BBN-VAX.ARPA>
- R: 250 OK
-
- S: DATA
- R: 354 Start mail input; end with <CRLF>.<CRLF>
- S: Date: 2 Nov 81 22:33:44
- S: From: John Q. Public <JQP@MIT-AI.ARPA>
- S: Subject: The Next Meeting of the Board
- S: To: Jones@BBN-Vax.ARPA
- S:
- S: Bill:
- S: The next meeting of the board of directors will be
- S: on Tuesday.
- S: John.
- S: .
- R: 250 OK
-
- S: QUIT
- R: 221 USC-ISIE.ARPA Service closing transmission channel
-
-
- Step 2 -- Relay Host to Destination Host
-
- R: 220 BBN-VAX.ARPA Simple Mail Transfer Service Ready
- S: HELO USC-ISIE.ARPA
- R: 250 BBN-VAX.ARPA
-
- S: MAIL FROM:<@USC-ISIE.ARPA:JQP@MIT-AI.ARPA>
- R: 250 OK
-
- S: RCPT TO:<Jones@BBN-VAX.ARPA>
- R: 250 OK
-
- S: DATA
- R: 354 Start mail input; end with <CRLF>.<CRLF>
- S: Received: from MIT-AI.ARPA by USC-ISIE.ARPA ;
- 2 Nov 81 22:40:10 UT
- S: Date: 2 Nov 81 22:33:44
- S: From: John Q. Public <JQP@MIT-AI.ARPA>
- S: Subject: The Next Meeting of the Board
- S: To: Jones@BBN-Vax.ARPA
- S:
- S: Bill:
- S: The next meeting of the board of directors will be
- S: on Tuesday.
- S: John.
- S: .
- R: 250 OK
-
- S: QUIT
- R: 221 USC-ISIE.ARPA Service closing transmission channel
-
- Scenario 3
-
--------------------------------------------------------------
-
-
-
-
-Verifying and Sending Scenario
-
--------------------------------------------------------------
-
- R: 220 SU-SCORE.ARPA Simple Mail Transfer Service Ready
- S: HELO MIT-MC.ARPA
- R: 250 SU-SCORE.ARPA
-
- S: VRFY Crispin
- R: 250 Mark Crispin <Admin.MRC@SU-SCORE.ARPA>
-
- S: SEND FROM:<EAK@MIT-MC.ARPA>
- R: 250 OK
-
- S: RCPT TO:<Admin.MRC@SU-SCORE.ARPA>
- R: 250 OK
-
- S: DATA
- R: 354 Start mail input; end with <CRLF>.<CRLF>
- S: Blah blah blah...
- S: ...etc. etc. etc.
- S: .
- R: 250 OK
-
- S: QUIT
- R: 221 SU-SCORE.ARPA Service closing transmission channel
-
- Scenario 4
-
--------------------------------------------------------------
-
-
-
-
-Mailing List Scenario
-
-First each of two mailing lists are expanded in separate sessions
-with different hosts. Then the message is sent to everyone that
-appeared on either list (but no duplicates) via a relay host.
-
--------------------------------------------------------------
-
- Step 1 -- Expanding the First List
-
- R: 220 MIT-AI.ARPA Simple Mail Transfer Service Ready
- S: HELO SU-SCORE.ARPA
- R: 250 MIT-AI.ARPA
-
- S: EXPN Example-People
- R: 250-<ABC@MIT-MC.ARPA>
- R: 250-Fred Fonebone <Fonebone@USC-ISIQ.ARPA>
- R: 250-Xenon Y. Zither <XYZ@MIT-AI.ARPA>
- R: 250-Quincy Smith <@USC-ISIF.ARPA:Q-Smith@ISI-VAXA.ARPA>
- R: 250-<joe@foo-unix.ARPA>
- R: 250 <xyz@bar-unix.ARPA>
-
- S: QUIT
- R: 221 MIT-AI.ARPA Service closing transmission channel
-
-
- Step 2 -- Expanding the Second List
-
- R: 220 MIT-MC.ARPA Simple Mail Transfer Service Ready
- S: HELO SU-SCORE.ARPA
- R: 250 MIT-MC.ARPA
-
- S: EXPN Interested-Parties
- R: 250-Al Calico <ABC@MIT-MC.ARPA>
- R: 250-<XYZ@MIT-AI.ARPA>
- R: 250-Quincy Smith <@USC-ISIF.ARPA:Q-Smith@ISI-VAXA.ARPA>
- R: 250-<fred@BBN-UNIX.ARPA>
- R: 250 <xyz@bar-unix.ARPA>
-
- S: QUIT
- R: 221 MIT-MC.ARPA Service closing transmission channel
-
-
- Step 3 -- Mailing to All via a Relay Host
-
- R: 220 USC-ISIE.ARPA Simple Mail Transfer Service Ready
- S: HELO SU-SCORE.ARPA
- R: 250 USC-ISIE.ARPA
-
- S: MAIL FROM:<Account.Person@SU-SCORE.ARPA>
- R: 250 OK
- S: RCPT TO:<@USC-ISIE.ARPA:ABC@MIT-MC.ARPA>
- R: 250 OK
- S: RCPT TO:<@USC-ISIE.ARPA:Fonebone@USC-ISIQA.ARPA>
- R: 250 OK
- S: RCPT TO:<@USC-ISIE.ARPA:XYZ@MIT-AI.ARPA>
- R: 250 OK
- S: RCPT
- TO:<@USC-ISIE.ARPA,@USC-ISIF.ARPA:Q-Smith@ISI-VAXA.ARPA>
- R: 250 OK
- S: RCPT TO:<@USC-ISIE.ARPA:joe@FOO-UNIX.ARPA>
- R: 250 OK
- S: RCPT TO:<@USC-ISIE.ARPA:xyz@BAR-UNIX.ARPA>
- R: 250 OK
- S: RCPT TO:<@USC-ISIE.ARPA:fred@BBN-UNIX.ARPA>
- R: 250 OK
-
- S: DATA
- R: 354 Start mail input; end with <CRLF>.<CRLF>
- S: Blah blah blah...
- S: ...etc. etc. etc.
- S: .
- R: 250 OK
-
- S: QUIT
- R: 221 USC-ISIE.ARPA Service closing transmission channel
-
- Scenario 7
-
--------------------------------------------------------------
-
-
-
-Too Many Recipients Scenario
-
--------------------------------------------------------------
-
- R: 220 BERKELEY.ARPA Simple Mail Transfer Service Ready
- S: HELO USC-ISIF.ARPA
- R: 250 BERKELEY.ARPA
-
- S: MAIL FROM:<Postel@USC-ISIF.ARPA>
- R: 250 OK
-
- S: RCPT TO:<fabry@BERKELEY.ARPA>
- R: 250 OK
-
- S: RCPT TO:<eric@BERKELEY.ARPA>
- R: 552 Recipient storage full, try again in another transaction
-
- S: DATA
- R: 354 Start mail input; end with <CRLF>.<CRLF>
- S: Blah blah blah...
- S: ...etc. etc. etc.
- S: .
- R: 250 OK
-
- S: MAIL FROM:<Postel@USC-ISIF.ARPA>
- R: 250 OK
-
- S: RCPT TO:<eric@BERKELEY.ARPA>
- R: 250 OK
-
- S: DATA
- R: 354 Start mail input; end with <CRLF>.<CRLF>
- S: Blah blah blah...
- S: ...etc. etc. etc.
- S: .
- R: 250 OK
-
- S: QUIT
- R: 221 BERKELEY.ARPA Service closing transmission channel
-
- Scenario 10
-
--------------------------------------------------------------
-
-Note that a real implementation must handle many recipients as
-specified in Section ##4.5.3.
-
-
-
-APPENDIX G Other gateway issues.
-
-In general, gateways between the Internet and other mail systems
-SHOULD attempt to preserve any layering semantics across the
-boundaries between the two mail systems involved. Gateway-
-translation approaches that attempt to take shortcuts by mapping,
-e.g., envelope information from one system to the message headers or
-body of another have generally proven to be inadequate in important
-ways. Systems translating between environments that do not support
-both envelopes and headers and Internet mail must be written with the
-understanding that some information loss is almost inevitable.
-
-
-
-APPENDIX I: Deprecated features of RFC 821
-
-A few features of RFC 821 have proven to be problematic and should
-not be used in Internet mail. These are:
-
-(1) TURN
-
-This command, described in RFC 821, raises important security issues
-(described in RFC 1123). Its use is deprecated; SMTP systems SHOULD
-NOT use it unless the server can authenticate the client.
-
-(2) Source routing
-
-RFC 821 utilized the concept of explicit source routing to get mail
-from one host to another via a series of relays. The requirement to
-utilize source routes in regular mail traffic was eliminated by the
-introduction of the domain name system "MX" record and the last
-significant justification for them was eliminated by the
-introduction, in RFC 1123, of a clear requirement that addresses
-following an "@" must all be fully-qualified domain names.
-Consequently, the only remaining justifications for the use of source
-routes are support for very old SMTP clients or MUAs and in mail
-system debugging. They can, however, still be useful in the latter
-circumstance and for routing mail around serious, but temporary,
-problems such as problems with the relevant DNS records.
-
-SMTP servers MUST continue to accept source route syntax as specified
-in the main body of this document and in RFC 1123. They MAY, if
-necessary, ignore the routes and utilize only the target domain in
-the address. If they do utilize the source route, the message MUST
-be sent to the first domain shown in the address. In particular, a
-server MUST NOT guess at shortcuts within the source route.
-
-Clients SHOULD NOT utilize explicit source routing except under
-unusual circumstances, such as debugging or potentially relaying
-around firewall or mail system configuration errors.
-
-(3) HELO
-
-As discussed in sections ##3.1 and ##4.1.1, EHLO is strongly
-preferred to HELO when the server will accept the former. Servers
-must continue to accept and process HELO in order to support older
-clients.
-
-
-(4) #-literals
-
-RFC 821 provided for specifying an Internet address as a decimal
-integer host number prefixed by a pound sign, "#". In practice, that
-form has been obsolete since the introduction of TCP/IP. It is
-deprecated and MUST NOT be used.
-
-(5) Dates and years
-
-When dates are inserted into messages by SMTP clients or servers
-(e.g., in trace fields), four-digit years MUST BE used. Two-digit
-years are deprecated; three-digit years were never permitted in the
-Internet mail system.
-
-(6) Sending versus mailing
-
-In addition to specifying a mechanism for delivering messages to
-user's mailboxes, RFC 821 provided additional, optional, commands to
-deliver messages directly to the user's terminal screen. These
-commands (SEND, SAML, SOML) were rarely implemented, and changes in
-workstation technology and the introduction of other protocols may
-have rendered them obsolete even where they are implemented.
-
-Clients SHOULD NOT provide SEND, SAML, or SOML as services. Servers
-MAY implement them. If they are implemented by servers, the
-implementation model specified in RFC 821 MUST be used and the
-command names MUST be published in the response to the EHLO command.
-
-
-
-APPENDIX X: Change summary and Loose ends (temporary)
-
-X.1 Change summary
-
-X.1.1 Substantive changes between draft-ietf-drums-smtpupd-00.txt and
-draft-ietf-drums-smtpupd-01.txt
-
-(i) Slightly clarified the discussions of rejection and failure of
-VRFY requests and the associated response codes.
-
-(ii) Slightly clarified the discussion of deferred address
-validation.
-
-(iii) Removed the IPCE terminology and modified the text in section
-##4.1.1.2 to explicitly introduce the "mail gateway" terminology and
-to begin to distinguish a mail gateway from a conventional relay.
-
-(iv) Explicitly noted that SMTP clients for things like POP and IMAP
-may send everything to a single relay for further processing, rather
-than resolving final domain names.
-
-(v) Tightened the RSET discussion.
-
-(vi) Deprecation of 251 only for RCPT (still ok for VRFY)
-
-
-
-X.1.2. Substantive changes between draft-ietf-drums-smtpupd-01.txt
-and draft-ietf-drums-smtpupd-02.txt.
-
-Incorporated additional RFC 1123 material; reorganized several
-sections for clarity. Added definitions and other previous "loose
-end" material.
-
-
-X.1.3. Substantive changes between draft-ietf-drums-smtpupd-02.txt
-and draft-ietf-drums-smtpupd-03.txt.
-
-(i) Eliminated a number of placeholders and tightened some of the
-definitions in section 2. Added a few new placeholders for
-consistency checking against other documents.
-
-(ii) Removed the state diagrams, per direction at IETF Montreal.
-
-(iii) Added new section 6.3, an attempt to summarize WG discussions
-on the "posting" versus "delivery" versus "relay" functions of SMTP
-and on whether "fixups" are appropriate in different cases.
-
-(iv) Inserted section 6.1, a minor rewrite of section 5.3.3 of
-RFC1123.
-
-(v) Added new text to 3.5.5 to discuss the spammer - EXPN
-relationship.
-
-(vi) The "ASCII requirement" in 4.1.1.4 has been tightened somewhat.
-
-(v) The remaining miscellaneous changes agreed to in Montreal have
-been incorporated except as noted below.
-
-
-X.1.4. Substantive changes between draft-ietf-drums-smtpupd-03.txt
-and draft-ietf-drums-smtpupd-04.txt.
-
-Many small changes have been made between these two versions; the
-list that follows is not exhaustive.
-
-(i) To clarify some of the text, definitions have been introduced to
-distinguish among originating, delivery, relay, and gateway SMTP
-systems.
-
-(ii) The role of LF-terminated lines has been clarified.
-
-(iii) Several changes have been made to clarify the principle
-that, no matter what originating and final delivery systems
-might do, relay systems are not permitted to tamper with message
-content, even to "fix" headers that are determined to be
-invalid. If they deem message content to be seriously
-unacceptable, they are encouraged to reject the messages in
-preference to trying to fix them up, but, in general, the theme
-is "don't look/ don't tell".
-
-(iv) A few more definitions have been added to the terminology
-section, and the separate glossary has been eliminated.
-
-(v) I have taken a shot at text to address some of the controversies
-that have raged on the WG mailing list (e.g., sections 7.4 and 7.5).
-Since there was no consensus on most of those topics, I expect that
-the inserted text will satisfy no one except, perhaps, for agreement
-that saying nothing would have been worse. As a mechanism for moving
-forward, the text in these controversial areas that now appears will
-be considered "base"; alterations will be made only if clear
-consensus emerges.
-
-(vi) Per discussion in Los Angeles, source routes have been further
-deprecated.
-
-(vii) Some of the VRFY/EXPN materials have been moved to "security
-considerations", where they appear to belong, some text has been
-added, and the conformance statements adjusted to reflect what I
-perceive to be WG consensus.
-
-(viii) New MX resolution material has been added to section 5. While
-most of this material is from RFC974, the rules have been further
-tightened to reflect current practice and experience (974 is written
-in a somewhat speculative fashion for a standard). In particular,
-the behavior of trying the target host's A RR when MXs existed but
-all of them were eliminated is now prohibited, which seems necessary
-if another of other ideas being recommended or considered are to be
-feasible.
-
-
-X.1.5. Substantive changes between draft-ietf-drums-smtpupd-04.txt
-and draft-ietf-drums-smtpupd-05.txt.
-
-(i) All normative references to RFC 1123 have been removed from the
-main body of the text (some still appear in the appendices where they
-will remain).
-
-(ii) Section 3.5 has been renamed slightly to distinguish between
-"debuging of SMTP implementations" and "debugging of addresses".
-Better terminology would be welcome.
-
-(iii) Error conditions resulting from the DATA command have been
-clarified.
-
-(iv) Section 4.2 (SMTP replies) has been revised and tightened to
-reflect reality and recent discussion on the list.
-
-(v) Appendix E has been revised a bit and moved into section 4.2.1.
-Given the importance of the "check only first digit" rule, it has to
-be there.
-
-(vi) Added new text for "no SMTP service supported" to sections
-3.1, 4.2.2, 4.2.3, and 4.3.2. As noted in 3.1, I'd rather add 521
-(which would work perfectly with the model) rather than overloading
-554.
-
-(vii) The Return-path language in section 4.4 has been cleaned up a
-bit.
-
-(viii) Tightened the "postmaster" language in 4.5.1, requiring a
-small change to 4.1.1.3.
-
-(ix) I have unilaterally (with a little help from my friends),
-increased some of the size limits. 64 was much too short for a
-domain name, and the DNS limit of 255 (?) has now been inserted.
-That leaves the return path much too short, but I haven't fixed it
-(maybe that will cause us to get rid of them). We still have a 64
-character limit on the local-part, which is also *much* too short.
-Votes for 128 or longer limits accepted. See X.1.6(I)
-
-(x) The text on the "recipients buffer" has been rewritten so that (I
-hope) it makes sense and gives some explicit guidance for how clients
-and servers should proceed if limits are imposed.
-
-
-X.1.6. Substantive changes between draft-ietf-drums-smtpupd-05.txt
-and draft-ietf-drums-smtpupd-06.txt.
-
-Most of the changes in this revision have been editorial rather than
-substantive. Major substantive changes include:
-
-(i) The language about maximum sizes of SMTP command lines has been
-reworked, per WG mailing list discussion.
-
-(ii) Several instances of "Should" have been promoted to "Must" when the
-reasons for the weaker rule seemed to have disappeared. In
-particular, the requirement that an SMTP implementation support
-timeouts has become a MUST. Also, conformance to this specification
-requires support of EHLO. Older systems should claim conformance to
-the [to-be-historical] 821, not this specification.
-
-
-
-X.2 Loose ends
-
-(i) The 822 BNF -> ABNF transition is not yet complete, and most of
-what has been done needs checking.
-
-(ii) Most examples are not yet revised, overview and grammar are
-still to be merged.
-
-(iii) We have agreed that all of the definition of trace ("Received:")
-fields should be moved to this document from the message format one.
-That work is not yet complete, partially because I’m still waiting on
-ABNF. There are also several unanswered questions about exactly what
-should be said.
-
-(iv) The Appendices have not yet been numbered consecutively. Note
-that Appendix X is temporary and is not expected to appear in any
-final publication.
-
-(v) See X.1.5(ix), above.
-
-See also Chris Newman's "Drums open issues" list.
diff --git a/Documentation/en/I-D/draft-ietf-drums-smtpupd-07.txt b/Documentation/en/I-D/draft-ietf-drums-smtpupd-07.txt
deleted file mode 100644
index c3363caa..00000000
--- a/Documentation/en/I-D/draft-ietf-drums-smtpupd-07.txt
+++ /dev/null
@@ -1,4053 +0,0 @@
-
-
-INTERNET-DRAFT John C. Klensin, Editor
-Expires in six months Dawn P. Mann, Co-Editor
- May 20, 1998
-
-
- Simple Mail Transfer Protocol
-
- draft-ietf-drums-smtpupd-07.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 view the entire list of current Internet-Drafts, please check
-the "1id-abstracts.txt" listing contained in the Internet-Drafts
-Shadow Directories on ftp.is.co.za (Africa), ftp.nordu.net
-(Northern Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au
-(Pacific Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu
-(US West Coast).
-
-If consensus is reached on this document, it will be forwarded to the
-IESG with the recommendation that it be processed onto the Standards
-track.
-
-[[Sections marked with doubled brackets (e.g., "<<") are explicit
-placeholders or known major loose ends. The marking ## is a note in
-the draft to recheck a section number and should be ignored.]]
-
-[[As discussed in the WG, most of the syntax and examples have not
-been changed from 821 -- those changes are a last- step item, after
-the ABNF document completely stabilizes and differences with 822bis
-have been resolved. Similarly, the numbers of appendices will be
-rationalized (and Appendix X removed) before the document is
-submitted to the IESG. Please check appendix X.2 for additional
-problems of which the editor is already painfully aware before
-complaining about things that are missing.]]
-
-
- TABLE OF CONTENTS
- 0. ABSTRACT
-
- 1. INTRODUCTION
-
- 2. THE SMTP MODEL
-
- 2.1 Basic structure
- 2.2 The extension model
- 2.3 Other terminology
- 2.4 Syntax Principles
-
-
- 3. THE SMTP PROCEDURES: AN OVERVIEW
-
- 3.1 Session initiation
- 3.2 Client initiation
- 3.3 Mail transactions
- 3.4 Forwarding for Address Correction or Updating
- 3.5 Commands for Debugging Addresses
- 3.6 Domains
- 3.7 Relaying
- 3.8 Mail Gatewaying
- 3.9 Terminating sessions and connections
- 3.10 Mailing lists and Aliases
-
-
- 4. THE SMTP SPECIFICATIONS
-
- 4.1. SMTP Commands
- 4.1.1. Command Semantics and Syntax
- 4.1.2. Lower-level Syntax
- 4.1.3. Address literals
- 4.1.4. Order of commands
- 4.1.5. Private-use commands
- 4.2. SMTP Replies
- 4.2.1. Reply Code Severities and Theory
- 4.2.2. Reply Codes by Function Group
- 4.2.3. Reply Codes in Numeric Order
- 4.2.4. Reply code 502
- 4.2.5 Reply codes after DATA and the subsequent CRLF.CRLF.
- 4.3. Sequencing of Commands and Replies
- 4.4 Trace information
- 4.5. Details
- 4.5.1. Minimum Implementation
- 4.5.2. Transparency
- 4.5.3. Sizes and Timeouts
- 4.5.4 SMTP Queuing Strategies
-
- 5. Address resolution and mail handling
-
- 6. Problem detection and handling
- 6.1 Reliable delivery and replies by email
- 6.2 Loop detection
- 6.3 Compensating for irregularities
-
- 7. Security Considerations
- 7.1 Mail security and spoofing
- 7.2 "Blind" copies
- 7.3 VRFY, EXPN, and security
- 7.4 Information disclosure
- 7.5 Scope of operation of SMTP servers
-
- 8. IANA Considerations
-
- 9. References
-
- 10. Editor's addresses
-
- 11. Acknowledgments
-
- APPENDIX A: TCP
- APPENDIX B: Generating SMTP commands from RFC 822 headers
- APPENDIX C: Source routes
- APPENDIX F: Scenarios
- APPENDIX G: Other gateway issues.
- APPENDIX I: Deprecated features of RFC 821
- APPENDIX X: Change summary and Loose ends (temporary)
-
-
-
-
-
-0. Abstract
-
-This document is a self-contained specification of the basic protocol
-for the Internet electronic mail transport, consolidating and
-updating
-
- * the original SMTP specification of RFC 821 [RFC-821],
- * Domain name system requirements and implications for mail
- transport from RFC 1035 [RFC-DNS] and RFC 974 [RFC974],
- * the clarifications and applicability statements in
- RFC 1123 [RFC-1123], and
- * material drawn from the SMTP Extension mechanisms [SMTPEXT].
-
-It replaces RFC 821, RFC 974, and the mail transport materials of RFC
-1123. However, RFC 821 specifies some features that are not in
-significant use in the Internet of the mid-1990s and (in appendices)
-some additional transport models. Those sections are omitted here in
-the interest of clarity and brevity; readers needing them should
-refer to RFC 821.
-
-It also includes some additional material from RFC 1123 that required
-amplification. This material has been identified in multiple ways,
-mostly by tracking flaming on the header-people list [HEADER-PEOPLE]
-and problems of unusual readings or interpretations that have turned
-up as the SMTP extensions have been deployed. Where this
-specification moves beyond consolidation and actually differs from
-earlier documents, it supersedes them technically as well as
-textually.
-
-Although SMTP was designed as a mail transport and delivery protocol,
-this specification also contains information that is important to its
-use as a "mail posting" protocol, as recommended for POP [RFC-POP2,
-RFC-POP3] and IMAP [RFC-IMAP4].
-
-Section ##2.3 provides definitions of terms specific to this
-document. Except when the historical terminology is necessary for
-clarity, this document uses the current "client" and "server"
-terminology to identify the sending and receiving SMTP processes,
-respectively.
-
-A companion document discusses message bodies and formats RFC 822,
-MIME, and their relationship - [MSGFMT].
-
-1. INTRODUCTION
-
-The objective of the Simple Mail Transfer Protocol (SMTP) is to
-transfer mail reliably and efficiently.
-
-SMTP is independent of the particular transmission subsystem and
-requires only a reliable ordered data stream channel. While this
-document specifically discusses transport over TCP, other transports
-are possible. Appendices to RFC 821 describe some of them.
-
-An important feature of SMTP is its capability to transport mail
-across transport service environments, usually referred to as "mail
-gatewaying" (see section 3.8). A transport service environment might
-consist of the mutually-TCP-accessible hosts on the public Internet,
-a firewall-isolated private TCP/IP LAN, or a LAN or WAN environment
-utilizing an entirely different transport-level protocol. It is
-important to realize that "transport systems" are one-to-one with
-usual definitions of "networks". A process can communicate directly
-with another process, and transport mail using this protocol, through
-any mutually known transport layer. Conversely, mail can be relayed
-(actually gatewayed) between hosts on different transport systems by
-a host on both transport systems. The Mail eXchanger mechanisms of
-the domain name system [RFC-DNS, and section ##5 of this document]
-usually permit relaying and gatewaying to occur invisibly to the user.
-
-
-2. THE SMTP MODEL
-
-2.1 Basic structure
-
-The SMTP design is based on the following model of communication: as
-the result of a user mail request (or transfer from a mail user agent
-(see section ##2.3)), the SMTP client establishes a two-way
-transmission channel to an SMTP server. A fully-capable SMTP client
-determines the address of an appropriate host running an SMTP server
-by resolving the domain name given in the SMTP request to either an
-intermediate mail exchanger host or a final target host. In other
-cases, common with clients associated with implementations of the POP
-[RFC-POP2, RFC-POP3] or IMAP [RFC-IMAP4] protocols, or when the
-client is inside an isolated transport service environment, the SMTP
-client may send all of its traffic to a single SMTP server which, in
-turn, relays the mail to final (or other intermediate) destinations.
-The relay and those destinations are expected to support all of the
-queuing, retrying, and alternate address functions discussed in this
-specification.
-
-The SMTP server may be either the ultimate destination or an
-intermediate "relay" (i.e., may assume the role of an SMTP client
-after receiving the message). SMTP commands are generated by the
-SMTP client and sent to the SMTP server. SMTP replies are sent from
-the SMTP server to the SMTP client in response to the commands.
-
-Once the transmission channel is established and initial handshaking
-completed, the SMTP client normally initiates a mail transaction.
-Such a transaction consists of a series of commands to specify the
-originator and destination of the mail and transmission of the
-message content (including any headers or other structure) itself.
-When the same message is sent to multiple recipients, this protocol
-encourages the transmission of only one copy of the data for all
-recipients at the same destination (or intermediate relay) host.
-
-The server responds to each command with a reply; replies may
-indicate that the command was accepted, that additional commands are
-expected, or that a temporary or permanent error condition exists.
-Commands specifying the sender or recipients may include
-server-permitted SMTP service extension requests as discussed in
-section ##2.2. The dialog is purposely lock-step, one-at-a-time,
-although this can be modified by mutually-agreed extension requests
-(e.g., [RFC-Pipeline]).
-
-Once a given mail message has been transmitted, the client may either
-request that the connection be shut down or may initiate other mail
-transactions.
-
- -------------------------------------------------------------
-
-
- +----------+ +----------+
- +------+ | | | |
- | User |<-->| | SMTP | |
- +------+ | Sender- |Commands/Replies| Receiver-|
- +------+ | SMTP |<-------------->| SMTP | +------+
- | File |<-->| | and Mail | |<-->| File |
- |System| | | | | |System|
- +------+ +----------+ +----------+ +------+
-
-
- SMTP client SMTP server
-
- Model for SMTP Use
-
- Figure 1
-
- -------------------------------------------------------------
-
-In addition, an SMTP client may use a connection to an SMTP server
-for ancillary services such as verification of email addresses or
-retrieval of mailing list subscriber addresses.
-
-As suggested above, this protocol provides mechanisms for the
-transmission of mail. This transmission normally occurs directly
-from the sending user's host to the receiving user's host when the
-two hosts are connected to the same transport service. When they are
-not connected to the same transport service, transmission occurs via
-one or more relay SMTP servers. An intermediate host that acts
-as either an SMTP relay or as a gateway into some other transmission
-environment may also be selected through the use of the domain name
-service (DNS) Mail eXchanger mechanism.
-
-To provide relay capability, the SMTP server is supplied with the
-name of the ultimate destination host as well as the destination
-mailbox name. Usually, intermediate hosts are determined via the DNS
-MX record, not by explicit "source" routing (see Appendices ##C and
-##I).
-
-
-
-2.2 The Extension Model
-
-2.2.1 Background
-
-In an effort that started in 1990, approximately a decade after RFC
-821 was completed, the protocol was modified with a "service
-extensions" model permitting the client and server to agree to
-utilize shared functionality beyond the original SMTP requirements.
-Contemporary SMTP implementations MUST support the basic extension
-mechanisms (see below for details), i.e., servers MUST support the
-EHLO command even if they do not implement any specific extensions
-and clients MUST preferentially utilize EHLO rather than HELO.
-(However, for compatibility with older conforming implementations,
-SMTP clients and servers MUST support the original HELO mechanisms as
-a fallback.) Unless the different characteristics of HELO must be
-identified for interoperability purposes, this document discusses
-only EHLO.
-
-SMTP is widely and deployed and high-quality implementations have
-proven to be very robust., However, the Internet community now
-considers some services to be important that were not anticipated
-when the protocol was first designed. If support for those services
-is to be added, it must be done in a way that permits older
-implementations to continue working acceptably.
-
-In an effort that started in 1990, approximately a decade after RFC
-821 was completed, the protocol was modified with a "service
-extensions" model permitting the client and server to agree to
-utilize shared functionality beyond the original SMTP requirements.
-The SMTP extension mechanism defines a means whereby an extended SMTP
-client and server may recognize each other, and the server can inform
-the client as to the service extensions that it supports.
-
-The extension framework consists of:
-
- (1) The SMTP command EHLO, superseding the earlier HELO,
-
- (2) a registry of SMTP service extensions,
-
- (3) additional parameters to the SMTP MAIL FROM and RCPT TO
- commands, and
-
- (4) optional replacements for verbs defined in this protocol,
- such as for DATA (e.g., see [RFC-BDAT]).
-
-SMTP's strength comes primarily from its simplicity. Experience with
-many protocols has shown that:
-
- -- protocols with few options tend towards ubiquity, whereas
- -- protocols with many options tend towards obscurity.
-
-Each and every extension, regardless of its benefits, must be
-carefully scrutinized with respect to its implementation, deployment,
-and interoperability costs. In many cases, the cost of extending the
-SMTP service will likely outweigh the benefit.
-
-Contemporary SMTP implementations MUST support the basic extension
-mechanism (see below for details), i.e., servers MUST support the
-EHLO command even if they do not implement any specific extensions
-and clients MUST preferentially utilize EHLO rather than HELO.
-
-
-
-
-
-2.2.2 Definition and Registration of Extensions
-
-The IANA maintains a registry of SMTP service extensions. A
-corresponding EHLO keyword value is associated with each extension .
-Each service extension registered with the IANA must be defined in
-aformal standards-track or IESG-approved experimental protocol
-document. The definition must include:
-
- (1) the textual name of the SMTP service extension;
-
- (2) the EHLO keyword value associated with the extension;
-
- (3) the syntax and possible values of parameters associated with
- the EHLO keyword value;
-
- (4) any additional SMTP verbs associated with the extension
- (additional verbs will usually be, but are not required
- to be, the same as the EHLO keyword value);
-
- (5) any new parameters the extension associates with the
- MAIL FROM or RCPT TO verbs;
-
- (6) a description of how support for the extension affects the
- behavior of a server and client SMTP; and,
-
- (7) the increment by which the extension is increasing the
- maximum length of the commands MAIL FROM and/or RCPT TO, over
- that specified in RFC 821.
-
-In addition, any EHLO keyword value starting with an upper or lower
-case "X" refers to a local SMTP service extension used exclusively
-through bilateral agreement. Keywords beginning with "X" may not be
-used in a registered service extension. Conversely, keyword values
-presented in the EHLO response that do not begin with "X" must
-correspond to a standard, standards-track, or IESG-approved
-experimental SMTP service extension registered with IANA. A
-conforming server MUST NOT offer non-"X"-prefixed keyword values that
-are not described in a registered extension.
-
-Additional verbs and parameter names are bound by the same rules as
-EHLO keywords; specifically, verbs beginning with "X" are local
-extensions that may not be registered or standardized. Conversely,
-verbs not beginning with "X" must always be registered.
-
-
-2.3 Terminology
-
-Most of the terminology in this document is common in the Internet at
-the time of its writing. However, the following terms and concepts
-are used in special ways here, or represent differences in
-terminology between RFC 821 and this document, and should be
-understood before reading further. These definitions are normative,
-i.e., they contain specifications to which SMTP implementations are
-required to conform.
-
-2.3.1 Mail objects
-
-SMTP transports a mail object containing an envelope and content.
-
- (1) The SMTP envelope is straightforward, and is sent as a
- series of SMTP protocol units (described in section ##3): it
- consists of an originator address (to which error reports
- should be directed); a delivery mode (e.g., deliver to
- recipient mailboxes); one or more recipient addresses; and
- optional protocol extension material.
-
- (2) The SMTP content is sent in the SMTP DATA protocol unit and
- has two parts: the headers and the body. The headers form a
- collection of field/value pairs structured as described in
- [MSGFMT]; the body, if structured, is defined according to
- MIME [RFC-MIME]. The content is textual in nature, expressed
- using the US ASCII repertoire[1]. Although extensions (such as
- MIME) may relax this restriction for the content body, the
- content headers are always encoded using the US ASCII
- repertoire. The algorithm defined in [RFC-INTLHDR] is used to
- represent header values outside the US ASCII repertoire, while
- still encoding them using the US ASCII repertoire.
-
-2.3.2. Senders and receivers
-
-In RFC 821, the two hosts participating in an SMTP transaction were
-described as the "SMTP-sender" and "SMTP-receiver". This document
-has been changed to reflect current industry terminology and hence
-refers to them as the "SMTP client" (or sometimes just "the client")
-and "SMTP server" (or just "the server"), respectively. Since a
-given host may act both as server and client in a relay situation,
-"receiver" and "sender" terminology is still used where needed for
-clarity.
-
-2.3.3. Mail agents
-
-Additional mail system terminology became common after RFC 821 was
-published and, where convenient, is used in this specification. In
-particular, SMTP servers and clients provide a mail transport service
-and therefore act as Mail Transfer Agents (MTAs). Mail User Agents
-(MUAs or UAs) are normally thought of as the sources and targets of
-mail. At the source, an MUA might collect mail to be transmitted
-from a user and hand it off to an MTA; the final ("delivery") MTA
-would be thought of as handing the mail off to an MUA (or at least
-transferring responsibility to it). However, while these terms are
-used with at least the appearance of great precision in other
-environments, the implied boundaries between MUAs and MTAs often do
-not accurately match common, and conforming, practices with Internet
-mail. Hence, the reader should be cautious about inferring the
-strong relationships and responsibilities that might be implied if
-these terms were used elsewhere.
-
-2.3.4 host
-
-For the purposes of this specification, a host is a computer system
-attached to the Internet (or, in some cases, to a private TCP/IP
-network) and supporting the SMTP protocol. Hosts are known by names
-(see "domain"); identifying them by numerical address is discouraged.
-
-2.3.5 domain
-
-The name of a host (often referred to as a "fully-qualified domain
-name" or "FQDN"), or some entry in the domain name hierarchy, usually
-referred to as a "subdomain", that may contain many hosts. A domain,
-or domain name, may also refer to an alias (label of a CNAME RR) or
-name the label of Mail eXchanger records to be used to deliver mail.
-See [RFC-DNS] and section ##5.
-
-The domain name, as described in this document and in [RFC-DNS], is
-the entire, fully-qualified name, and an apparent host name that is
-not in FQDN form is no more than a local alias. Local aliases MUST
-NOT appear in any SMTP transaction.
-
-
-In other works, if ab.cd.ef is the fully-qualified name of a host (or
-label for an MX record), then it is obviously a "domain". However,
-"cd.ef" may be only a domain name; it is possible for it to not refer
-to any host.
-
-2.3.6 buffer and state table
-
-SMTP sessions are stateful, with both parties carefully maintaining a
-common view of the current state. In this document we model this
-state by a virtual "buffer" and a "state table" on the server which
-may be used by the client to, for example, "clear the buffer" or
-"reset the state table," causing the information in the buffer to be
-discarded and the state to be returned to some previous state
-
-2.3.7 lines
-
-SMTP commands and, unless altered by a service extension, message
-data, are transmitted in "lines". Lines consist of zero or more data
-characters terminated by the ASCII sequence "CR" followed immediately
-by "LF". Conforming implementations MUST NOT recognize or generate
-any other character or character sequence as a line terminator.
-
-2.3.8 Gateway, relay, originator, and delivery system
-
-This specification makes a distinction among four types of SMTP
-systems, based on the role those systems play in transmitting
-electronic mail. An "originating" system (sometimes called an SMTP
-originator) introduces mail into the Internet or, more generally,
-into a transport service environment. A "delivery" SMTP system is one
-that receives mail from a transport service environment and hands it
-to a mail user agent or deposits it in a maildrop which a mail user
-agent is expected to subsequently access. A "relay" SMTP system
-(usually referred to just as a "relay") receives mail from an SMTP
-client and transmits it, without modification to the message data
-other than adding trace information, to another SMTP server for
-further relaying or for delivery.
-
-A "gateway" SMTP system (usually referred to just as a "gateway")
-receives mail from a client system in one transport environment and
-transmits it to a server system in another transport environment.
-Differences in protocols or message semantics between the transport
-environments on either side of a gateway may require that the gateway
-system perform transformations to the message that are not permitted
-to SMTP relay systems.
-
-
-2.3.9 Message content and message body
-
-The terms "message content" and "mail data" are used interchangably
-in this document to describe the material transmitted after the DATA
-command is accepted and before the end of data indication is
-transmitted. Message content includes message headers and the
-possibly-structured message body. The MIME specification [RFC-MIME]
-provides the Standard mechanisms for structured message bodies See
-##2.3.1.
-
-2.3.10 mailbox and address
-
-As used in this specification, an "address" is a character string
-that identifies a user to whom mail will be sent or a location into
-which mail will be deposited. The term "mailbox" refers to that
-depository. The two terms are typically used interchangeably unless
-the distinction between the location in which mail is placed (the
-mailbox) and a reference to it (the address) is important. An
-address normally consists of user and domain specifications. The
-standard mailbox naming convention is defined to be
-"local-part@domain": contemporary usage permits a much broader set of
-applications than simple "user names" and, consequently, the
-local-part is interpreted and assigned semantics only by the host
-specified in the domain part of the address.
-
-
-2.3.11. reply
-
-An SMTP reply is an acknowledgment (positive or negative) sent from
-receiver to sender via the transmission channel in response to a
-command. The general form of a reply is a numeric completion code
-(indicating failure or success) followed by a text string. The codes
-are for use by programs and the text is usually intended for human
-users.
-
-
-
-2.4 Syntax Principles
-
-
-2.4.1 General syntax and transaction model
-
-The mail commands and replies have a rigid syntax. Replies also have
-a numeric code. Complete lists of commands and replies appear in
-Section ##4 "The SMTP Specification".
-
-Commands and replies are not case sensitive. That is, a command or
-reply word MAY be upper case, lower case, or any mixture of upper and
-lower case. Note that this is NOT true of mailbox user names. For
-some hosts the user name is case sensitive (this practice impedes
-interoperability and is discouraged), therefore, SMTP implementations
-MUST take care to preserve the case of user names as they appear in
-mailbox arguments. Domain names are not case sensitive.
-
-Commands and replies are composed of characters from the ASCII
-character set [1]. When the transport service provides an 8-bit byte
-(octet) transmission channel, each 7-bit character is transmitted
-right justified in an octet with the high order bit cleared to zero.
-More specifically, the unextended SMTP service provides seven bit
-transport only. Originating SMTP clients MUST NOT transmit messages
-with information in the high-order bit of octets. If such messages
-are transmitted in violation of this rule, receiving SMTP servers MAY
-clear the high-order bit or reject the message as invalid. In
-general, a relay SMTP SHOULD assume that the message content it has
-received is valid and, assuming that the envelope permits doing so,
-relay it without inspecting that content. Of course, if the content
-is mislabelled and the data path cannot accept the actual content,
-this may result in ultimate delivery of a severely garbled message to
-the recipient. Delivery SMTP systems MAY reject ("bounce") such
-messages rather than deliver them. No sending SMTP system is
-permitted to send envelope commands in any character set other than
-US-ASCII; receiving systems SHOULD reject such commands, normally
-using "500 syntax error - invalid character" replies.
-
-Eight-bit message content transmission MAY be requested of the server
-by a client using extended SMTP facilities, notably the "8BITMIME"
-extension [8BITMIME]. 8BITMIME SHOULD be supported by SMTP servers.
-However, it MUST not be construed as authorization to transmit
-unrestricted eight bit material. 8BITMIME MUST NOT be requested by
-senders for material with the high bit on that is not in MIME format
-with an appropriate content-transfer encoding and servers MAY reject
-such messages.
-
-The metalinguistic notation used in this document corresponds to the
-"Augmented BNF" used in other Internet mail system documents. The
-reader who is not familiar with that syntax should consult [ABNF].
-Metalanguage terms used in running text are surrounded by pointed
-brackets (e.g., <CRLF>) for clarity.
-
-
-2.4.2 Command and reply syntax
-
-The commands consist of a command code followed by an argument field.
-Command codes are four alphabetic characters and are case insensitive.
-
-This also applies to any symbols representing parameter values, such
-as "TO" or "to" for the forward-path. Command codes and the argument
-fields are separated by one or more spaces. However, case is
-important in the local-part within the reverse-path and forward-path
-arguments. In particular, in some hosts the user "smith" is
-different from the user "Smith".
-
-A few SMTP receiver systems, in violation of this specification (and
-RFC 821) require that a particular case be transmitted by clients.
-Implementations MAY wish to make provision to accommodate those
-systems.
-
-The argument field consists of a variable length character string
-ending with the character sequence <CRLF>. The receiver will take no
-action until this sequence is received.
-
-The syntax for each command is shown with the discussion of that
-command. Common elements and parameters are shown in section ##4.1.2.
-
-
-
-3. THE SMTP PROCEDURES: AN OVERVIEW
-
-This section contains descriptions of the procedures used in SMTP:
-session initiation, the mail transaction, forwarding mail, verifying
-mailbox names and expanding mailing lists, and the opening and
-closing exchanges. Comments on relaying, a note on mail domains, and
-a discussion of changing roles are included at the end of this
-section. Several complete scenarios are presented in Appendix ##F.
-
-
-3.1 Session initiation
-
-An SMTP session is initiated when a client opens a connection to
-a server and the server responds with an opening message.
-
-SMTP server implementations MAY include identification of their
-software and version information in the connection greeting reply
-after the 220 code (see section ##7.4), a practice that permits more
-efficient isolation and repair of any problems. Implementations MAY
-make provision for SMTP servers to disable the software and version
-announcement where it causes security concerns. While some systems
-also identify their contact point for mail problems, this is not a
-substitute for maintaining the required "postmaster" address (see
-[MSGFMT]).
-
-The SMTP protocol allows a server to formally reject a transaction
-while still allowing the initial connection as follows: a 554
-response MAY be given in the initial connection opening message
-instead of the 220. A server taking this approach MUST still wait
-for the client to send a QUIT (see section ##4.1.1.10) before closing
-the connection and SHOULD respond to any intervening commands with
-"503 bad sequence of commands". Since an attempt to make an SMTP
-connection to such a system is probably in error, a server returning a
-554 response on connection opening SHOULD provide enough information
-in the reply text to facilitate debugging of the sending system.
-
-Once the server has sent the welcoming message and the client has
-received it, the client then sends the EHLO command to the server,
-indicating the client’s identity. In addition to opening the
-session, use of EHLO indicates that the client is able to process
-service extensions and requests that the server provide a list of the
-extensions it supports. Older SMTP systems, unable to support
-service extensions, MAY use HELO instead of EHLO. Servers MUST NOT
-return the extended EHLO-style response to a HELO command.
-
-In the EHLO command the host sending the command identifies itself;
-the command may be interpreted as saying "Hello, I am <domain>" (and,
-in the case of EHLO, "and I support service extension requests").
-
-
-3.3. Mail Transactions
-
-There are three steps to SMTP mail transactions. The transaction
-starts with a MAIL command which gives the sender identification. A
-series of one or more RCPT commands follows giving the receiver
-information. Then a DATA command initiates transfer of the mail data
-and is terminated by the "end of mail" data indicator, which also
-confirms the transaction.
-
- The first step in the procedure is the MAIL command.
-
- MAIL <SP> FROM:<reverse-path> [<SP> <mail-parameters>] <CRLF>
-
- This command tells the SMTP-receiver that a new mail transaction
- is starting and to reset all its state tables and buffers,
- including any recipients or mail data. The <reverse-path> contains
- the source mailbox, which can be used to report errors (see
- section ##4.2 for a discussion of error reporting). If accepted,
- the SMTP server returns a 250 OK reply. If the mailbox
- specification is not acceptable for some reason, the server MUST
- return a reply indicating whether the failure is permanent (i.e.,
- will occur again if the client tries to send the same address
- again) or temporary (i.e., the address might be accepted if the
- client tries again later). See section ##4.2.1. Normally,
- failures produce 550 or 553 replies.
-
- Historically, the <reverse-path> can contain more than just a
- mailbox, however, contemporary systems SHOULD NOT use source
- routing (see Appendix ##C).
-
- The optional <mail-parameters> are associated with negotiated SMTP
- service extensions (see section ##2.2).
-
- The second step in the procedure is the RCPT command.
-
- RCPT <SP> TO:<forward-path> [<SP> <rcpt-parameters>] <CRLF>
-
- This command gives a forward-path (normally a mailbox and domain)
- identifying one recipient. If accepted, the SMTP server returns a
- 250 OK reply and stores the forward-path. If the recipient is
- known not to be a deliverable address, the SMTP server returns a
- 550 reply, typically with a string such as "no such user - " and
- the mailbox name (other circumstances and reply codes are
- possible). This step of the procedure can be repeated any number
- of times. The <forward-path> can contain more than just a
- mailbox. Historically, the <forward-path> can be a source routing
- list of hosts and the destination mailbox, however, contemporary
- SMTP clients SHOULD NOT utilize source routes (see Appendix ##C).
- Servers MUST be prepared to encounter a list of source routes in
- the forward path, but SHOULD ignore the routes or MAY decline to
- support the relaying they imply. Similarly, servers MAY decline
- to accept mail that is destined for other hosts or systems. These
- restrictions make a server useless as a relay for clients that do
- not support full SMTP functionality. Consequently,
- restricted-capability clients MUST NOT assume that any SMTP server
- on the Internet can be used as their mail processing (relaying)
- site. If RCPT TO appears without a previous MAIL FROM, the server
- MUST return a 503 "Bad sequence of commands" response. The
- optional <mail-parameters> are associated with negotiated SMTP
- service extensions (see section ##2.2).
-
- The third step in the procedure is the DATA command (or some
- alternative specified in a service extension).
-
- DATA <CRLF>
-
- If accepted, the SMTP server returns a 354 Intermediate reply and
- considers all succeeding lines up to but not including the end of
- mail data indicator to be the message text. When the end of text
- is received and stored the SMTP-receiver sends a 250 OK reply.
-
- Since the mail data is sent on the transmission channel, the end
- of mail data indicator must be indicated so that the command and
- reply dialog can be resumed. SMTP indicates the end of the mail
- data by sending a line containing only a "." (period or full
- stop). A transparency procedure is used to prevent this from
- interfering with the user's text (see Section ##4.5.2).
-
- The end of mail data indicator also confirms the mail transaction
- and tells the SMTP server to now process the stored recipients and
- mail data. If accepted, the SMTP server returns a 250 OK reply.
- The DATA command can fail in only two ways:
-
- o If there was no MAIL FROM, or no RCPT TO, command, or all
- such commands were rejected, the server MAY return a "command
- out of sequence" (503) reply. If that reply is received,
- the client MUST NOT send the message data; more generally,
- message data MUST NOT be sent unless a 354 reply is received.
-
- o If the verb is initially accepted and the 354 reply issued,
- the DATA command should fail only if the mail transaction was
- incomplete (for example, no recipients), or if resources were
- unavailable. However, in practice, some servers do not
- perform recipient verification until after the message text
- is received. These servers SHOULD treat a failure for one or
- more recipients as a "subsequent failure" and return a mail
- message as discussed in section ##6. Using a "550 mailbox
- not found" (or equivalent) reply code after the data are
- accepted makes it difficult or impossible for the client to
- determine which recipients failed.
-
-When RFC 822 format is being used, the mail data include the memo
-header items such as Date, Subject, To, Cc, From [MSGFMT]. Server
-SMTP systems SHOULD NOT reject messages based on perceived defects in
-the RFC 822 or MIME [RFC-MIME] message header or message body. In
-particular, they MUST NOT reject messages in which the numbers of
-Resent- fields do not match or Resent-to appears without Resent-from
-and/or Resent-date.
-
-
-Mail transaction commands MUST be used in the order discussed above.
-
-
-
-
-3.4. Forwarding for Address Correction or Updating
-
-Forwarding support is most often required to consolidate and simplify
-addresses within, or relative to, some enterprise and less frequently
-to establish addresses to link a person’s prior address with a
-current one.. Silent forwarding of messages (without server
-notification to the sender), for security or non-disclosure purposes,
-is common in the contemporary Internet.
-
-In both the enterprise and the "new address" cases, information
-hiding (and sometimes security) considerations argue against exposure
-of the "final" address through the SMTP protocol as a side-effectof
-the forwarding activity. This may be especially important when the
-final address may not even be reachable by the sender. Consequently,
-the "forwarding" mechanisms described in section 3.2 of RFC 821, and
-especially the 251 (corrected destination) reply code from RCPT TO
-are deprecated: Servers SHOULD NOT provide that service or return
-that code.
-
-
-
-3.5. Commands for Debugging Addresses
-
-3.5.1 Overview
-
-SMTP provides commands to verify a user name or obtain the content of
-a mailing list. This is done with the VRFY and EXPN commands, which
-have character string arguments. Implementations MUST support VRFY
-and SHOULD support EXPN (however, see section ##3.5.2 and ##7.3).
-
-For the VRFY command, the string is a user name or a user name and
-domain (see below). The response MAY include the full name of the user
-and MUST include the mailbox of the user, e.g., it MUST be in either
- User Name <mailbox@domain>
-or
- mailbox@domain
-form.
-
-
-When a name that is the argument to VRFY could identify more than one
-mailbox, the server MAY either note the ambiguity or identify the
-alternatives. In other words, either of the following are legitimate
-response to VRFY:
-
- 553 User ambiguous
- or
- 553- Ambiguous; Possibilities are
- 553-Joe Smith <jsmith@somedomain>
- 553-Harry Smith <hsmith@somedomain>
- 553 Melvin Smith <dweep@somedomain>
- or
- 553-Ambiguous; Possibilities
- 553- <jsmith@somedomain>
- 553- <hsmith@somedomain>
- 553 <dweep@somedomain>
-
-Under normal circumstances, a client receiving a 553 reply would be
-expected to expose the result to the user. Use of exactly the forms
-given, and the "user ambiguous" or "ambiguous" keywords, possibly
-supplemented by extended reply codes as described in [RFC-REPLY],
-will facilitate automated translation into other languages as needed.
-Of course, a client that was highly automated or that was operating
-in another language than English, might choose to try to translate
-the response, to return some other indication to the user than the
-literal text of the reply, or to take some automated action such as
-consulting a directory service for additional information before
-reporting to the user.
-
-For the EXPN command, the string identifies a mailing list, and the
-multiline response MAY include the full name of the users and MUST
-give the mailboxes on the mailing list.
-
-In some hosts the distinction between a mailing list and an alias for
-a single mailbox is a bit fuzzy, since a common data structure may
-hold both types of entries, and it is possible to have mailing lists
-of one mailbox. If a request is made to verify a mailing list, a
-positive response can be given if a message so addressed would be
-delivered to everyone on the list, otherwise an error should be
-reported (e.g., "550 That is a mailing list, not a user"). If a
-request is made to expand a user name, the server MAY return a
-positive response consisting of a list containing one name, or an
-error MAY be reported (e.g., "550 That is a user name, not a mailing
-list").
-
-In the case of a multiline reply (normal for EXPN) exactly one
-mailbox is to be specified on each line of the reply. The case of an
-ambiguous request is discussed above.
-
-"User name" is a fuzzy term and has been used deliberately. An
-implementation of the VRFY or EXPN commands MUST include at least
-recognition of local mailboxes as "user names". However, since
-current Internet practice often results in a single host handling
-mail for multiple domains, hosts, especially hosts that provide this
-functionality, SHOULD accept the "user@domain" form as a "user name";
-hosts MAY also choose to recognize other strings as "user names".
-
-
-
-The case of verifying a user name is straightforward as shown in
-example ##4.
-
-
- -----------------------------------------------------------------
- |
- | Example of Verifying a User Name
- |
- | Either
- |
- | C: VRFY Smith
- | S: 250 Fred Smith <Smith@F.ISI.EDU>
- |
- | Or
- |
- | C: VRFY Jones
- | S: 550 String does not match anything.
- |
- | Or
- |
- | C: VRFY Jones
- | S: 551 User not local; please try <Jones@ ISIQ.ISI.EDU>
- |
- | Or
- |
- | C: VRFY Gourzenkyinplatz
- | S: 553 User ambiguous.
- |
- | Or
- |
- | C: VRFY fizzle
- | S: 252-Cannot VRFY fizzle, but will accept message and
- | S: 252 attempt delivery
- |
- | Example 4
- |
- -----------------------------------------------------------------
-
- The case of expanding a mailbox list requires a multiline reply
- as shown in example ##5.
-
- -------------------------------------------------------------
- |
- | Example of Expanding a Mailing List
- |
- | Either
- |
- | C: EXPN Example-People
- | S: 250-Jon Postel <Postel@isi.edu>
- | S: 250-Fred Fonebone <Fonebone@physics.foo-u.edu>
- | S: 250-Sam Q. Smith <SQSmith@specific.generic.com>>
- | S: 250-Quincy Smith <Q-Smith@VAXA.EDU>
- | S: 250-<joe@totalitarian.org>
- | S: 250 <xyz@dominance.universal.int>
- |
- | Or
- |
- | C EXPN Executive-Washroom-List
- | S: 550 Access Denied to You.
- |
- | Example 5
- |
- -------------------------------------------------------------
-
- The character string arguments of the VRFY and EXPN commands
- cannot be further restricted due to the variety of
- implementations of the user name and mailbox list concepts. On
- some systems it may be appropriate for the argument of the EXPN
- command to be a file name for a file containing a mailing list,
- but again there are a variety of file naming conventions in the
- Internet.
-
-
-3.5.2 VRFY normal response.
-
-When normal (2yz or 551) responses are returned from a VRFY or EXPN
-request, the reply SHOULD normally include the mailbox name, e.g.,
-"<foo@bar>" (where "bar" is a fully qualified domain name) must
-appear in the syntax. In exceptional circumstances, free-form text
-MAY be returned. In order to facilitate parsing by both computers
-and people, addresses SHOULD appear in pointed brackets. When
-addresses, rather than free-form debugging information, are returned,
-EXPN and VRFY MUST return only valid domain addresses that are usable
-in SMTP RCPT commands. Consequently, if an address implies delivery
-to a program or other system, the mailbox name used to reach that
-target MUST be given. Paths (explicit source routes) MUST NOT be
-returned by VRFY or EXPN.
-
-
-Server implementations MUST support VRFY and SHOULD support EXPN.
-For security reasons, implementations MAY provide local installations
-a way to disable either or both of these commands through
-configuration options or the equivalent. When these commands are
-supported, they are not required to work across relays when relaying
-is supported. Since they were both optional in RFC 821, they MUST,
-if supported, be listed in the response to EHLO if service extensions
-are supported.
-
-
-3.5.3 Meaning of VRFY or EXPN success response.
-
-A server MUST NOT return a 220 code in response to a VRFY or EXPN
-command unless it has actually verified the address. In particular,
-a server MUST NOT return 220 if all it has done is to verify that the
-syntax given is valid. In that case, 502 (Command not implemented)
-or 500 (Syntax error, command unrecognized) SHOULD be returned. As
-stated elsewhere, implementation of VRFY is required and EXPN is
-strongly recommended. Hence, except as provided in section ##7.3,
-implementations that return 500 or 502 for VRFY are not in compliance
-with this specification.
-
-There may be circumstances where an address appears to be valid but
-cannot reasonably be verified in real time, particularly when a
-server is acting as a mail exchanger for another server or domain.
-"Apparent validity" in this case would normally involve at least
-syntax checking and might involve verification that any domains
-specified were ones to which the host expected to be able to relay
-mail. In these situations, reply code 252 SHOULD BE returned. These
-cases parallel the discussion of RCPT verification discussed in
-section ##2.1 Implementations generally SHOULD be more aggressive
-about address verification in the case of VRFY than in the case of
-RCPT, even if it takes a little longer to do so.
-
-
-3.5.4. Semantics and applications of EXPN.
-
-EXPN is often very useful in debugging and understanding problems
-with mailing lists and multiple-target-address aliases. Some systems
-have attempted to use source expansion of mailing lists as a means of
-eliminating duplicates. The propagation of aliasing systems with
-mail on the Internet--both for hosts (typically with MX and CNAME DNS
-records) and for mailboxes (various types of local host aliases)--has
-made it nearly impossible for these strategies to work, and mail
-systems SHOULD NOT attempt them.
-
-
-
-3.6. Domains
-
-
-Only resolvable, fully-qualified, domain names (FQDNs) are permitted
-when domain names are used in SMTP. In other words, names that can
-be resolved to MX RRs or A RRs (as discussed in section ##5) are
-permitted, as are CNAME RRs whose targets can be resolved, in turn,
-to MX or A RRs. Local nicknames or unqualified names MUST NOT be
-used. There are two exceptions to this rule: (i) The domain name
-given in the EHLO command MUST BE either a primary host name (a
-domain name that resolves to an A RR) or, if the host has no name, an
-address literal as described in section ##4.1.1.1 and (ii) The
-reserved mailbox name "postmaster" may be used in a RCPT TO command
-without domain qualification (see section ##4.1.1.3).
-
-
-
-3.7. RELAYING
-
-In general, the availability of Mail eXchanger records in the domain
-name system [RFC-DNS] makes the use of explicit source routes in the
-Internet mail system unnecessary. Many historical problems with
-their interpretation have made their use undesirable. SMTP clients
-SHOULD NOT generate explicit source routes except under unusual
-circumstances. SMTP servers MAY decline to act as mail relays or to
-accept addresses that specify source routes. They are also permitted
-to ignore the route information and simply send to the final
-destination specified as the last element in the route . There has
-been an invalid practice of using names that do not appear in the DNS
-as destination names, with the senders counting on the intermediate
-hosts specified in source routing to resolve any problems. If source
-routes are stripped, this practice will cause failures -- one of
-several reasons why SMTP clients MUST NOT generate invalid source
-routes or depend on serial resolution of names.
-
-When source routes are not used, the process described in RFC 821 for
-constructing a reverse-path from the forward-path is not applicable
-and the reverse-path at the time of delivery will simply be the
-address that appeared in the MAIL command.
-
-A relay SMTP server is usually the target of a DNS MX record that
-designates it, rather than the final delivery system. The relay
-server may accept or reject the task of relaying the mail in the same
-way it accepts or rejects mail for a local user. If it accepts the
-task, it then becomes an SMTP client, establishes a transmission
-channel to the next SMTP server specified in the DNS (according to
-the rules in section ##5), and sends it the mail.
-
-If an SMTP server has accepted the task of relaying the mail and
-later finds that the destination is incorrect or that the mail cannot
-be delivered for some other reason, then it MUST construct an
-"undeliverable mail" notification message and send it to the
-originator of the undeliverable mail (as indicated by the
-reverse-path). Formats specified for non-delivery reports by other
-standards SHOULD be used if possible.
-
-This notification message must be from the SMTP server at the relay
-host or the host that first determines that delivery cannot be
-accomplished. Of course, SMTP servers MUST NOT send notification
-messages about problems transporting notification messages. One way
-to prevent loops in error reporting is to specify a null reverse-path
-in the MAIL command of a notification message. When such a message
-is transmitted the reverse-path MUST be set to null. A MAIL command
-with a null reverse-path appears as follows:
-
- MAIL FROM:<>
-
-An undeliverable mail notification message is shown in example 6.
-This notification is in response to a message originated by JOE at
-xyz.somecollege.edu and sent to a user on HOSTY.org
-
- -------------------------------------------------------------
- |
- | Example Undeliverable Mail Notification Message
- |
- | C: MAIL FROM:<>
- | S: 250 ok
- | C: RCPT TO:< JOE@xyz.somecollege.edu>
- | S: 250 ok
- | C: DATA
- | S: 354 send the mail data, end with .
- | C: Date: 23 Oct 81 11:22:33
- | C: From: SMTP@HOSTY.org
- | C: To: JOE@xyz.somecollege.edu
- | C: Subject: Mail System Problem
- | C:
-<<replace with NOTARY format >>
- | C: .
- | S: 250 ok
- |
- | Example 6
- |
-
-As discussed in section ##2.4.1, a relay SMTP has no need to inspect
-or act upon the headers or body of the message data and MUST NOT do
-so.
-
-
-
-
-3.8 Mail Gatewaying
-
-While the relay function discussed above operates within the Internet
-SMTP transport service environment, MX records or various forms of
-explicit routing may require that an intermediate SMTP server perform
-a translation function between one transport service and another. As
-discussed in section ##2.3.8, when such a system is at the boundary
-between two transport service environments, we refer to it as a
-"gateway" or "gateway SMTP".
-
-Gatewaying mail between different mail environments, i.e., different
-mail formats and protocols, is complex and does not easily yield to
-standardization. However, some general requirements may be given for
-a gateway between the Internet and another mail environment.
-
-
-3.8.1 Header fields MAY be rewritten when necessary as messages are
-gatewayed across mail environment boundaries.
-
-This may involve inspecting the message body or interpreting the
-local-part of the destination address in spite of the prohibitions in
-section ##2.4.1
-
-Other mail systems gatewayed to the Internet often use a subset of
-RFC-822 headers or provide similar functionality with a different
-syntax, but some of these mail systems do not have an equivalent to
-the SMTP envelope. Therefore, when a message leaves the Internet
-environment, it may be necessary to fold the SMTP envelope
-information into the message header. A possible solution would be to
-create new header fields to carry the envelope information (e.g.,
-"X-SMTP-MAIL:" and "X-SMTP-RCPT:"); however, this would require
-changes in mail programs in foreign environments.
-
-
-3.8.2 When forwarding a message into or out of the Internet
-environment, a gateway MUST prepend a Received: line, but it MUST NOT
-alter in any way a Received: line that is already in the header.
-
-Received: fields of messages originating from other environments may
-not conform exactly to this specification. However, the most
-important use of Received: lines is for debugging mail faults, and
-this debugging can be severely hampered by well-meaning gateways that
-try to "fix" a Received: line. As another consequence of trace
-fields arising in non-SMTP environments, receiving systems MUST NOT
-reject mail based on the format of a trace field and SHOULD be
-extremely robust in the light of unexpected information or formats in
-those fields.
-
-The gateway SHOULD indicate the environment and protocol in the "via"
-clauses of Received field(s) that it supplies.
-
-
-3.8.3 From the Internet side, the gateway SHOULD accept all valid
-address formats in SMTP commands and in RFC-822 headers, and all
-valid RFC-822 messages. Gateways are, of course, subject to the same
-rules for handling source routes as those described for other SMTP
-systems in section ##3.3.
-
-
-3.8.4 The gateway MUST ensure that all header fields of a message
-that it forwards into the Internet meet the requirements for Internet
-mail. In particular, all addresses in "From:", "To:", "Cc:", etc.,
-fields MUSTbe transformed (if necessary) to satisfy RFC-822 syntax,
-MUST reference only fully-qualified domain names, and MUSTbe
-effective and useful for sending replies. 3.8.5 The translation
-algorithm used to convert mail from the Internet protocols to another
-environment's protocol SHOULD ensure that error messages from the
-foreign mail environment are delivered to the return path from the
-SMTP envelope, not to the sender listed in the "From:" field (or
-other fields) of the RFC-822 message.
-
-3.8.6 Similarly, when forwarding a message from another environment
-into the Internet, the gateway SHOULD set the envelope return path in
-accordance with an error message return address, if supplied by the
-foreign environment. If the foreign environment has no equivalent
-concept, the gateway must select and use a best approximation, with
-the message originator’s address as the default of last resort.
-
-
-
-3.9. Terminating Sessions and Connections
-
-An SMTP connection is terminated when the client sends a QUIT
-command. The server responds with a positive reply code, after which
-it closes the connection.
-
-An SMTP server MUST NOT intentionally close the connection except:
-
- o After receiving a QUIT command and responding with a 221 reply.
-
- o After detecting the need to shutdown the SMTP service and
- returning a message with a 451 response code. This response
- code can be issued after the server receives any command or, if
- necessary, asynchronously from command receipt (on the
- assumption that the client will receive it after the next
- command is issued).
-
-In particular, a server that closes connections in response to
-commands that are not understood is in violation of this
-specification. Servers are expected to be tolerant of unknown
-commands, issuing a 500 reply and awaiting further instructions from
-the client.
-
-An SMTP server which is forcibly shut down via external means SHOULD
-attempt to send a line containing 451 response code to the SMTP
-client before exiting. The SMTP client will normally read the 451
-response code after sending its next command.
-
-SMTP clients that experience a connection close, reset, or other
-communications failure due to circumstances not under their control
-(in violation of the intent of this specification but sometimes
-unavoidable) should, to maintain the robustness of the mail system,
-treat the mail transaction as if a 451 response had been received and
-act accordingly.
-
-
-
-
-
-
-
-3.10 Mailing Lists and Aliases
-
-An SMTP-capable host SHOULD support both the alias and the list form
-of address expansion for multiple delivery. When a message is
-delivered or forwarded to each address of an expanded list form, the
-return address in the envelope ("MAIL FROM:") MUST be changed to be
-the address of a person or other entity who administers the list but
-the message header MUST be left unchanged; in particular, the "From"
-field of the message is unaffected.
-
-An important mail facility is a mechanism for multi-destination
-delivery of a single message, by transforming or "expanding" a
-pseudo-mailbox address into a list of destination mailbox addresses.
-When a message is sent to such a pseudo-mailbox (sometimes called an
-"exploder"), copies are forwarded or redistributed to each mailbox in
-the expanded list. We classify such a pseudo-mailbox as an "alias"
-or a "list", depending upon the expansion rules.
-
-
-3.10.1 Alias
-
-To expand an alias, the recipient mailer simply replaces the
-pseudo-mailbox address in the envelope with each of the expanded
-addresses in turn; the rest of the envelope and the message body are
-left unchanged. The message is then delivered or forwarded to each
-expanded address.
-
-
-3.10.11 List
-
-A mailing list may be said to operate by "redistribution" rather than
-by "forwarding". To expand a list, the recipient mailer replaces the
-pseudo-mailbox address in the envelope with each of the expanded
-addresses in turn. The return address in the envelope is changed so
-that all error messages generated by the final deliveries will be
-returned to a list administrator, not to the message originator, who
-generally has no control over the contents of the list and will
-typically find error messages annoying.
-
-
-
-
-4. THE SMTP SPECIFICATIONS
-
-4.1. SMTP COMMANDS
-
-4.1.1. COMMAND SEMANTICS AND SYNTAX
-
-The SMTP commands define the mail transfer or the mail system
-function requested by the user. SMTP commands are character strings
-terminated by <CRLF>. The command codes themselves are alphabetic
-characters terminated by <SP> if parameters follow and <CRLF>
-otherwise. (In the interest of improved interoperability, SMTP
-receivers are encouraged to tolerate trailing white space before the
-terminating <CRLF>.) The syntax of the local part of a mailbox must
-conform to receiver site conventions and the syntax specified in
-section ##4.1.2. The SMTP commands are discussed below. The SMTP
-replies are discussed in Section ##4.2.
-
-A mail transaction involves several data objects which are
-communicated as arguments to different commands. The reverse-path is
-the argument of the MAIL command, the forward-path is the argument of
-the RCPT command, and the mail data is the argument of the DATA
-command. These arguments or data objects must be transmitted and
-held pending the confirmation communicated by the end of mail data
-indication which finalizes the transaction. The model for this is
-that distinct buffers are provided to hold the types of data objects,
-that is, there is a reverse-path buffer, a forward-path buffer, and a
-mail data buffer. Specific commands cause information to be appended
-to a specific buffer, or cause one or more buffers to be cleared.
-
-
-4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)
-
-These commands are used to identify the SMTP client to the SMTP
-server. The argument field contains the fully-qualified domain name
-of the SMTP client if one is available. In situations in which the
-SMTP client system does not have a meaningful domain name (e.g., when
-its address is dynamically allocated and no reverse mapping record is
-available), the client should send an address literal (see section
-##4.1.3), optionally followed by information that will help to
-identify the client system.
-
-The SMTP server identifies itself to the SMTP client in the
-connection greeting reply and in the response to this command.
-
-A client SMTP SHOULD start an SMTP session by issuing the EHLO
-command. If the SMTP server supports the SMTP service extensions it
-will give a successful response, a failure response, or an error
-response. If the SMTP server, in violation of this specification,
-does not support any SMTP service extensions it will generate an
-error response. Older client SMTP systems MAY, as discussed above,
-use HELO (as specified in RFC 821) instead of EHLO, and servers MUST
-support the HELO command and reply properly to it. In any event, a
-client MUST issue HELO or EHLO before starting a mail transaction.
-
-These commands, and a "250 OK" reply to one of them, confirm that
-both the SMTP client and the SMTP server are in the initial state,
-that is, there is no transaction in progress and all state tables and
-buffers are cleared.
-
-Normally, the response to EHLO will be a multiline reply. Each line
-of the response contains a keyword and, optionally, one or more
-parameters. The syntax for a positive response, using the ABNF
-notation and low-level terminals of [ABNF], is:
-
- ehlo-ok-rsp ::= "250" domain [ SP greeting ] CRLF
- / ( "250-" domain [ SP greeting ] CRLF
- *( "250-" ehlo-line CRLF )
- "250" SP ehlo-line CRLF )
-
- greeting ::= 1*<any character other than CR or LF>
-
- ehlo-line ::= ehlo-keyword *( SP ehlo-param )
-
- ehlo-keyword ::= (ALPHA / DIGIT) *(ALPHA / DIGIT / "-")
-
- ; syntax and values depend on ehlo-keyword
- ehlo-param ::= 1*<any CHAR excluding SP and all
- control characters (US ASCII 0-31
- inclusive)>
-
-[[xxx ALPHA ::= <any one of the 52 alphabetic characters
- (A through Z in upper case, and,
- a through z in lower case)>
-
-
-Although EHLO keywords may be specified in upper, lower, or mixed
-case, they must always be recognized and processed in a
-case-insensitive manner. This is simply an extension of practices
-specified in RFC 821 and section ##2.4.1.
-
-
-4.1.1.2 MAIL (MAIL)
-
-This command is used to initiate a mail transaction in which the mail
-data is delivered to one or more mailboxes. The argument field
-contains a reverse-path.
-
-The reverse-path consists of the sender mailbox or a list of hosts as
-described in Appendix C. In some types of reporting messages for
-which a reply is likely to cause a mail loop (for example, mail
-delivery and nondelivery notifications), the reverse-path may be null
-(see section ##3.7).
-
-This command clears the reverse-path buffer, the forward-path buffer,
-and the mail data buffer; and inserts the reverse-path information
-from this command into the reverse-path buffer.
-
-If service extensions were negotiated, the MAIL command may also
-carry parameters associated with a particular service extension.
-
-Syntax: "MAIL FROM:" Reverse-path [ SP Mail-parameters ]
- or
- "MAIL FROM:<>" [ SP Mail-parameters ]
-
-
-4.1.1.3 RECIPIENT (RCPT)
-
-This command is used to identify an individual recipient of the mail
-data; multiple recipients are specified by multiple use of this
-command.
-
-The forward-path normally consists of the required destination
-mailbox(es). Sending systems SHOULD not generate the optimal list of
-hosts known as a source route. Receiving systems MUST recognize
-source route syntax but SHOULD strip off the source route
-specification and utilize the domain name associated with the mailbox
-as if the source route had not been provided.
-
-Similarly, relay hosts SHOULD strip or ignore source routes, and
-names MUST NOT be copied into the reverse-path. When mail reaches its
-ultimate destination (the forward-path contains only a destination
-mailbox), the SMTP server inserts it into the destination mailbox in
-accordance with its host mail conventions.
-
-
-For example, mail received at relay host A with envelope commands
-
- MAIL FROM:<USERX@Y.foo.org>
- RCPT TO:<@HOSTA.INT,@HOSTB.INT:USERC@D.bar.org>
-
-will normally be sent directly on to host D.bar.org with envelope
-commands
-
- MAIL FROM:<USERX@Y.foo.org>
- RCPT TO:<USERC@D.bar.org>
-
-as provided in Appendix C, HostA MAY also choose to relay the message
-to HostB, using the envelope commands
-
- MAIL FROM:<USERX@HOSTY.ARPA>
- RCPT TO:<@HOSTB.int:USERC@D. BAR.ORG>
-
-Of course, since hosts are not required to relay mail at all, HostA
-may also reject the message entirely when the RCPT TO command is
-received, using a 550 code (since this is a "policy reason").
-
-If service extensions were negotiated, the RCPT TO command may also
-carry parameters associated with a particular service extension
-offered by the server. The client MUST NOT transmit parameters other
-than those associated with a service extension offered by the server
-in its EHLO response.
-
-Syntax: "RCPT TO:" Forward-path [ SP Rcpt-parameters ]
- or
- "RCPT TO:<Postmaster>" [ SP Rcpt-parameters ]
-
-
-4.1.1.4 DATA (DATA)
-
-The receiver treats the lines (strings ending in CRLF sequences, see
-section ##2.3.7) following the command as mail data from the sender.
-This command causes the mail data to be appended to the mail data
-buffer. The mail data may contain any of the 128 ASCII character
-codes, although experience has indicated that use of control
-characters other than SP, HT, CR, and LF may cause problems and
-should be avoided when possible.
-
-The mail data is terminated by a line containing only a period, that
-is, the character sequence "<CRLF>.<CRLF>" (see Section ##4.5.2 on
-Transparency). This is the end of mail data indication. Note that
-the first <CRLF> of this terminating sequence is also the <CRLF> that
-ends the final line of the data (message text) or, if there was no
-data, ends the DATA command itself. An extra <CRLF> MUST NOT be
-added, as that would cause an empty line to be added to the message.
-The only exception to this rule would arise if the message body were
-passed to the originating SMTP-sender with a final "line" that did
-not end in <CRLF>; in that case, the originating SMTP system MUST
-either reject the message as invalid or add <CRLF> in order to have
-the receiving SMTP server recognize the "end of data" condition.
-
-The custom of accepting lines ending only in <LF>, as a concession to
-non-conforming behavior on the part of some UNIX systems, has proven
-to cause more interoperability problems than it solves, and SMTP
-server systems MUST NOT do this, even in the name of improved
-robustness. In particular, the sequence "<LF>.<LF>" (bare line
-feeds, without carriage returns) MUST NOT be treated as equivalent to
-<CRLF>.<CRLF> as the end of mail data indication.
-
-Receipt of the end of mail data indication requires the server to
-process the stored mail transaction information. This processing
-consumes the information in the reverse-path buffer, the forward-path
-buffer, and the mail data buffer, and on the completion of this
-command these buffers are cleared. If the processing is successful
-the receiver must send an OK reply. If the processing fails the
-receiver must send a failure reply. The SMTP model does not allow for
-partial failures at this point: either the message is accepted by the
-server for delivery and a positive response is returned or it is not
-accepted and a failure reply is returned. Errors that are diagnosed
-subsequently MUST be reported in a mail message, as discussed in
-section ##4.4 In sending a positive completion reply to the end of
-data indication, the receiver takes full responsibility for the
-message (see section ##6.1).
-
-When the SMTP server accepts a message either for relaying or for
-final delivery, it inserts a trace record (also referred to
-interchangeably as a "time stamp line" or "Received" line) at the top
-of the mail data. This trace record indicates the identity of the
-host that sent the message, the identity of the host that received
-the message (and is inserting this time stamp), and the date and time
-the message was received. Relayed messages will have multiple time
-stamp lines. Details for formation of these lines, including their
-syntax, is specified in section ##4.4.
-
-
-4.1.1.5 RESET (RSET)
-
-This command specifies that the current mail transaction will be
-aborted. Any stored sender, recipients, and mail data MUST be
-discarded, and all buffers and state tables cleared. The receiver
-MUST send a "250 OK" reply to a RSET command with no arguments. A
-reset command may be issued by the client at any time. It is
-effectively equivalent to a NOOP if issued immediately after EHLO,
-before EHLO is issued in the session, or immediately before a QUIT.
-In other situations, it restores the state to that immediately after
-the most recent EHLO. An SMTP server MUST NOT close the connection
-as the result of receiving a RSET; that action is reserved for QUIT
-(see section ##4.1.1.10, below).
-
-Since EHLO implies some additional processing and response by the
-server, RSET will normally be more efficient than reissuing that
-command, even though the formal semantics are the same.
-
-There are circumstances, contrary to the intent of this
-specification, in which an SMTP server may receive an indication that
-the underlying TCP connection has been closed or reset. To preserve
-the robustness of the mail system, SMTP servers should be prepared
-for this condition and should treat it as if a QUIT had been received
-before the connection disappeared.
-
-Syntax: RSET
-
-
-4.1.1.6 VERIFY (VRFY)
-
-This command asks the receiver to confirm that the argument
-identifies a user or mailbox. If it is a user name, information is
-returned as specified in section ##3.5.
-
-This command has no effect on the reverse-path buffer, the
-forward-path buffer, or the mail data buffer.
-
-Syntax: "VRFY" SP String
-
-4.1.1.7 EXPAND (EXPN)
-
-This command asks the receiver to confirm that the argument
-identifies a mailing list, and if so, to return the membership of
-that list. If the command is successful, a multiline reply is
-returned containing information as described in section ##3.5.
-
-This command has no effect on the reverse-path buffer, the
-forward-path buffer, or the mail data buffer.
-
-Syntax: "EXPN" SP String
-
-4.1.1.8 HELP (HELP)
-
-This command causes the server to send helpful information to the
-client. The command MAY take an argument (e.g., any command name)
-and return more specific information as a response.
-
-This command has no effect on the reverse-path buffer, the
-forward-path buffer, or the mail data buffer.
-
-SMTP servers SHOULD support HELP without arguments and MAY support it
-with arguments.
-
-Syntax: "HELP" [ SP String ]
-
-
-4.1.1.9 NOOP (NOOP)
-
-This command does not affect any parameters or previously entered
-commands. It specifies no action other than that the receiver send
-an OK reply.
-
-This command has no effect on the reverse-path buffer, the
-forward-path buffer, or the mail data buffer.
-
-Syntax: "NOOP" [SP String]
-
-4.1.1.10 QUIT (QUIT)
-
-This command specifies that the receiver must send an OK reply, and
-then close the transmission channel.
-
-The receiver MUST NOT intentionally close the transmission channel
-until it receives and replies to a QUIT command (even if there was an
-error). The sender MUST NOT intentionally close the transmission
-channel until it sends a QUIT command and receives the reply (even if
-there was an error response to a previous command). If the
-connection is closed prematurely due to violations of the above or
-system or network failure, the server MUST cancel any pending
-transaction, but not undo any previously completed transaction, and
-generally MUST act as if the command or transaction in progress had
-received a temporary error (i.e., a 4yz response).
-
-Syntax: "QUIT"
-
-
-4.1.2. LOWER-LEVEL SYNTAX
-
-The syntax of the argument fields of the above commands (using the
-syntax specified in [ABNF] where applicable) is given below. Some of
-the productions given below are used only in conjunction with source
-routes as described in Appendix C. Terminals not defined in this
-document, i.e., ALPHA, DIGIT, SP, CR, LF, CRLF, are as defined in the
-"core" syntax (section 6) of [ABNF].
-
-<<Note in draft: it appears stupid, contrary to the reason RFC 2234
-<<was created, and risk-prone to reproduce the definitions of
-<<Quoted-string and Atom here. But, if I leave them out, the reader of
-<<this document will need a lap or virtual desktop large enough to
-<<simultaneously accomodate this spec, [msgfmt], and RFC 2234
-<<([ABNF]). Similarly, it would be nice to use the same definition of
-<< <special> and <FWS> here as in 822bis, but the traditional 821
-<< definition of <special> excludes *all* control characters.
-<<Please advise >>
-
- Reverse-path = Path
-
- Forward-path = Path
-
- Path = "<" [ A-d-l ":" ] Mailbox ">"
-
- A-d-l = At-domain *( "," A-d-l ) ; Note that this form, the
- so-called "source route", MUST BE
- accepted, SHOULD NOT be generated,
- and SHOULD be ignored.
-
- At-domain = "@" Domain
-
- Mail-parameters = *( SP Keyword "=" Argument )
-
- Rcpt-parameters = *( SP Keyword "=" Argument )
-
- Keyword = Ldh-str
- Argument = Atom
-
- Domain = sub-domain 1*("." sub-domain) / address-literal
-
- sub-domain = let-dig *(ldh-str)
- address-literal = "[" IPv4-address-literal /
- IPv6-address-literal / General-address-literal "]"
- IPv4-address-literal = snum 3*3("." snum)
- IPv6-address-literal = "IPv6" SP IPv6-addr-string
- IPv6-addr-string = String ; IPv6 address in standard form
- [IPv6AddrSpec]. Since this
- form uses colon characters,
- the String will actually need
- to be quoted in all cases.
- General-address-literal = Standardized-tag SP String
- Standardized-tag = Ldh-str ; Specified in a
- standards-track RFC
- and registered with IANA
- snum = 1*3Digit ; representing a decimal integer
- value in the range 0 through 255
- let-dig = Alpha / Digit
- ldh-str = *( Alpha / Digit / "-" ) let-dig
-
- Mailbox = Local-part "@" Domain
-
- Local-part = Dot-string / Quoted-string
-
-While the above definition for Local-part is relatively permissive,
-for maximum interoperability, a host that expects to receive mail
-SHOULD avoid defining mailboxes where the Local-part requires (or
-uses) the Quoted-string form or where the Local-part is
-case-sensitive. For any purposes that require generating or
-comparing Local-parts (e.g., to specific mailbox names), all quoted
-forms MUST be treated as equivalent and the sending system SHOULD
-transmit the form that uses the minimum quoting possible.
-
-Systems MUST NOT define mailboxes in such a way as to require the use
-of non-ASCII characters (octets with the high order bit set to one)
-or ASCII "control characters" (decimal value 0-31 and 127). These
-characters MUST NOT be used in MAIL FROM or RCPT TO commands or other
-commands that require mailbox names.
-
-
- String = Atom / Quoted-string
-
- special = <<Msg-fmt-special>> / [[placeholder, see above]]
- the control characters (ASCII codes 0 through 31
- inclusive and 127)
-
-Note that the backslash, "\", is a quote character, which is used to
-indicate that the next character is to be used literally (instead of
-its normal interpretation). For example, "Joe\,Smith" indicates a
-single nine character user field with the comma being the fourth
-character of the field.
-
-Characters outside the set of alphas, digits, and hyphen MUST NOT
-appear in domain names. In particular, the underscore character is
-not permitted.
-
-
-
-4.1.3. Address literals
-
-Sometimes a host is not known to the domain name system and
-communication (and, in particular, communication to report and repair
-the error) is blocked. To bypass this barrier a special literal form
-of the address is allowed as an alternative to a domain name. For
-IPv4 addresses, this form uses four or more small decimal integers
-separated by dots and enclosed by brackets, e.g., [123.255.37.2],
-which indicates an (IPv4) Internet Address in sequence-of-octets
-form. For IPv6 and other forms of addressing that might eventually
-be standardized, the form consists of a standardized "tag" that
-identifies the address syntax, a space, and the address itself, in a
-format specified as part of the IPv6 standards [IPv6AddrString].
-
-
-
-4.1.4. Order of commands
-
-There are restrictions on the order in which these commands may be
-used.
-
-A session that will contain mail transactions MUST first be
-initialized by the use of the EHLO command. An SMTP server SHOULD
-accept commands for non-mail transactions (e.g., VRFY or EXPN)
-without this initialization.
-
-An EHLO command MAY be issued by a client later in the session. If
-it is issued after the session begins, the SMTP server MUST clear all
-buffers and reset the state exactly as if a RSET command had been
-issued. In other words, the sequence of RSET followed immediately by
-EHLO is redundant, but not harmful other than in the performance cost
-of executing unnecessary commands.
-
-If the EHLO command is not acceptable to the SMTP server, 501, 500,
-or 502 failure replies MUST be returned as appropriate. The SMTP
-server must stay in the same state after transmitting these replies
-that it was in before the EHLO was received.
-
-The SMTP client MUST ensure that the domain parameter to the EHLO
-command is a valid principal host name (not a CNAME or MX name) for
-its host. If this is not possible (e.g., when the client's address
-is dynamically assigned and the client does not have an obvious
-name), an address literal SHOULD be substituted for the domain name
-and supplemental information provided that will assist in identifying
-the client.
-
-An SMTP server MAY verify that the domain name parameter in the EHLO
-command actually corresponds to the IP address of the client.
-However, the server MUST NOT refuse to accept a message if the
-verification fails -- the information about verification failure is
-for logging and tracing only.
-
-The NOOP, HELP, EXPN, VRFY, and RSET commands can be used at any time
-during a session, or without previously initializing a session. SMTP
-servers SHOULD process these normally (i.e., not return a 503 code)
-even if no EHLO command has yet been received; clients SHOULD open a
-session with EHLO before sending these commands.
-
-If these rules are followed, the example in RFC 821 that shows "550
-access denied to you" in response to an EXPN command is incorrect
-unless an EHLO command precedes the EXPN or the denial of access is
-based on the client's IP address.
-
-The MAIL command (or the obsolete SEND, SOML, or SAML commands)
-begins a mail transaction. Once started, a mail transaction consists
-of a transaction beginning commands, one or more RCPT commands, and a
-DATA command, in that order. A mail transaction may be aborted by
-the RSET (or a new EHLO) command. There may be zero or more
-transactions in a session.
-
-If the transaction beginning command argument is not acceptable, a
-501 failure reply MUST be returned and the SMTP server must stay in
-the same state. If the commands in a transaction are out of order to
-the degree that they cannot be processed by the server, a 503 failure
-reply MUST be returned and the SMTP server must stay in the same
-state.
-
-The last command in a session must be the QUIT command. The QUIT
-command cannot be used at any other time in a session, but SHOULD be
-used by the client SMTP to request connection closure, even when no
-session opening command was sent and accepted.
-
-
-
-4.1.5 Private-use commands
-
-As specified in section 2.2.2, commands starting in "X" may be used
-by bilateral agreement between the client (sending) and server
-(receiving) SMTPs. An SMTP server that does not recognize such a
-command is expected to reply with "500 Command not recognized". An
-extended SMTP server MAY list the feature names associated with these
-private commands in the response to the EHLO command.
-
-Commands sent or accepted by SMTP systems that do not start with "X"
-MUST conform to the requirements of section ##2.2.2, above.
-
-
-
-4.2. SMTP REPLIES
-
-Replies to SMTP commands serve to ensure the synchronization of
-requests and actions in the process of mail transfer and to guarantee
-that the SMTP client always knows the state of the SMTP server.
-Every command must generate exactly one reply.
-
-The details of the command-reply sequence are described in Section
-##4.3 on Sequencing.
-
-An SMTP reply consists of a three digit number (transmitted as three
-alphanumeric characters) followed by some text. The number is for
-use by automata to determine what state to enter next; the text is
-for the human user. The three digits contain enough encoded
-information that the SMTP client need not examine the text and may
-either discard it or pass it on to the user, as appropriate.
-Exceptions are as noted elsewhere in this document. In particular,
-the 220, 221, 251, 421, and 551 reply codes are associated with
-message text that must be parsed and interpreted by machines. In the
-general case, the text may be receiver dependent and context
-dependent, so there are likely to be varying texts for each reply
-code. A discussion of the theory of reply codes is given insection
-##4.2.1. Formally, a reply is defined to be the sequence: a
-three-digit code, SP, one line of text, and CRLF, or a multiline
-reply (as defined insection ##4.2.1). Only the EXPN and HELP
-commands are expected to result in multiline replies in normal
-circumstances, however, multiline replies are allowed for any command.
-
-An SMTP server SHOULD send only the reply codes listed in this
-document. An SMTP server SHOULD use the text shown in the examples
-whenever appropriate.
-
-A client SMTP MUST determine its actions only by the reply code, not
-by the text (except for 251 and 551 and, if necessary, 220, 221, and
-421 replies); in the general case, any text, including no text at all
-(although senders SHOULD NOT send bare codes), MUSTbe acceptable.
-The space (blank) following the reply code is considered part of the
-text. Whenever possible, a sender-SMTP SHOULD test the first digit
-(severity indication) of the reply code.
-
-The list of codes that appears below must not be construed as
-permanent. While the addition of new codes should be a rare and
-significant activity, with supplemental information in the textual
-part of the response being preferred, new codes may be added as the
-result of new Standards or Standards-track specifications.
-Consequently, a sender-SMTP MUST be prepared to handle codes not
-specified in this document and MUST do so by interpreting the first
-digit only.
-
-
-
-4.2.1. REPLY CODE SEVERITIES AND THEORY
-
-
-The three digits of the reply each have a special significance. The
-first digit denotes whether the response is good, bad or incomplete.
-An unsophisticated SMTP client, or one that receives an unexpected
-code, will be able to determine its next action (proceed as planned,
-redo, retrench, etc.) by examining this first digit. An SMTP client
-that wants to know approximately what kind of error occurred (e.g.,
-mail system error, command syntax error) may examine the second
-digit. The third digit and any supplemental information that may be
-present is reserved for the finest gradation of information.
-
-There are five values for the first digit of the reply code:
-
- 1yz Positive Preliminary reply
-
- The command has been accepted, but the requested action
- is being held in abeyance, pending confirmation of the
- information in this reply. The SMTP client should send
- another command specifying whether to continue or abort
- the action.
-
- [Note: unextended SMTP does not have any commands that allow
- this type of reply, and so does not have continue or abort
- commands.]
-
- 2yz Positive Completion reply
-
- The requested action has been successfully completed. A new
- request may be initiated.
-
- 3yz Positive Intermediate reply
-
- The command has been accepted, but the requested action is being
- held in abeyance, pending receipt of further information. The
- SMTP client should send another command specifying this
- information. This reply is used in command sequence groups
- (i.e., in DATA).
-
- 4yz Transient Negative Completion reply
-
- The command was not accepted, and the requested action did not
- occur. However, the error condition is temporary and the action
- may be requested again. The sender should return to the
- beginning of the command sequence (if any). It is difficult to
- assign a meaning to "transient" when two different sites
- (receiver- and sender- SMTPs) must agree on the interpretation.
- Each reply in this category might have a different time value,
- but the SMTP client is encouraged to try again. A rule of thumb
- to determine whether a reply fits into the 4yz or the 5yz
- category (see below) is that replies are 4yz if they can be
- repeated without any change in command form or in properties of
- the sender or receiver. (E.g., the command is repeated
- identically and the receiver does not put up a new
- implementation.)
-
- 5yz Permanent Negative Completion reply
-
- The command was not accepted and the requested action did not
- occur. The SMTP client is discouraged from repeating the exact
- request (in the same sequence). Even some "permanent" error
- conditions can be corrected, so the human user may want to
- direct the SMTP client to reinitiate the command sequence by
- direct action at some point in the future (e.g., after the
- spelling has been changed, or the user has altered the account
- status).
-
-The second digit encodes responses in specific categories:
-
- x0z Syntax -- These replies refer to syntax errors,
- syntactically correct commands that don't fit any
- functional category, and unimplemented or superfluous
- commands.
-
- x1z Information -- These are replies to requests for
- information, such as status or help.
-
- x2z Connections -- These are replies referring to the
- transmission channel.
-
- x3z Unspecified as yet.
-
- x4z Unspecified as yet.
-
- x5z Mail system -- These replies indicate the status of
- the receiver mail system vis-a-vis the requested
- transfer or other mail system action.
-
-The third digit gives a finer gradation of meaning in each category
-specified by the second digit. The list of replies illustrates this.
-Each reply text is recommended rather than mandatory, and may even
-change according to the command with which it is associated. On the
-other hand, the reply codes must strictly follow the specifications
-in this section. Receiver implementations should not invent new
-codes for slightly different situations from the ones described here,
-but rather adapt codes already defined.
-
-For example, a command such as NOOP, whose successful execution does
-not offer the SMTP client any new information, will return a 250
-reply. The reply is 502 when the command requests an unimplemented
-non-site-specific action. A refinement of that is the 504 reply for
-a command that is implemented, but that requests an unimplemented
-parameter.
-
-The reply text may be longer than a single line; in these cases the
-complete text must be marked so the SMTP client knows when it can
-stop reading the reply. This requires a special format to indicate a
-multiple line reply.
-
-The format for multiline replies requires that every line, except the
-last, begin with the reply code, followed immediately by a hyphen,
-"-" (also known as minus), followed by text. The last line will
-begin with the reply code, followed immediately by <SP>, optionally
-some text, and <CRLF>. As noted above, servers SHOULD send the <SP>
-if subsequent text is not sent, but clients MUST be prepared for it
-to be omitted.
-
- For example:
- 123-First line
- 123-Second line
- 123-234 text beginning with numbers
- 123 The last line
-
-In many cases the SMTP client then simply needs to search for the
-reply code followed by <SP> at the beginning of a line, and ignore
-all preceding lines. In a few cases, there is important data for the
-sender in the reply "text". The sender will be able to identify
-these cases from the current context.
-
-
-4.2.2. REPLY CODES BY FUNCTION GROUPS
-
- 500 Syntax error, command unrecognized
- [This may include errors such as command line too long]
- 501 Syntax error in parameters or arguments
- 502 Command not implemented (see section ##4.2.3)
- 503 Bad sequence of commands
- 504 Command parameter not implemented
-
- 211 System status, or system help reply
- 214 Help message
- [Information on how to use the receiver or the meaning of a
- particular non-standard command; this reply is useful only
- to the human user]
-
- 220 <domain> Service ready
- 221 <domain> Service closing transmission channel
- 421 <domain> Service not available,
- closing transmission channel
- [This may be a reply to any command if the service knows it
- must shut down]
-
- 250 Requested mail action okay, completed
- 251 User not local; will forward to <forward-path>
- [See section ##3.4]
- 252 Cannot VRFY user, but will accept message and attempt
- delivery
- [See section ##3.5.3]
- 450 Requested mail action not taken: mailbox unavailable
- [E.g., mailbox busy]
- 550 Requested action not taken: mailbox unavailable
- [E.g., mailbox not found, no access, or command rejected
- for policy reasons]
- 451 Requested action aborted: error in processing
- 551 User not local; please try <forward-path>
- [See section ##3.4]
- 452 Requested action not taken: insufficient system storage
- 552 Requested mail action aborted: exceeded storage allocation
- 553 Requested action not taken: mailbox name not allowed
- [E.g., mailbox syntax incorrect]
- 354 Start mail input; end with <CRLF>.<CRLF>
- 554 Transaction failed [Or, in the case of a connection-opening
- response, "No SMTP service here"]
-
-
-4.2.3. NUMERIC ORDER LIST OF REPLY CODES
-
- 211 System status, or system help reply
- 214 Help message
- [Information on how to use the receiver or the meaning of a
- particular non-standard command; this reply is useful only
- to the human user]
- 220 <domain> Service ready
- 221 <domain> Service closing transmission channel
- 250 Requested mail action okay, completed
- 251 User not local; will forward to <forward-path>
- [See section ##3.4]
- 252 Cannot VRFY user, but will accept message and attempt
- delivery
- [See section ##3.5.3]
-
- 354 Start mail input; end with <CRLF>.<CRLF>
-
- 421 <domain> Service not available,
- closing transmission channel
- [This may be a reply to any command if the service knows it
- must shut down]
- 450 Requested mail action not taken: mailbox unavailable
- [E.g., mailbox busy]
- 451 Requested action aborted: local error in processing
- 452 Requested action not taken: insufficient system storage
-
- 500 Syntax error, command unrecognized
- [This may include errors such as command line too long]
- 501 Syntax error in parameters or arguments
- 502 Command not implemented
- 503 Bad sequence of commands
- 504 Command parameter not implemented
- 550 Requested action not taken: mailbox unavailable
- [E.g., mailbox not found, no access, or command rejected
- for policy reasons]
- 551 User not local; please try <forward-path>
- [See section ##3.4]
- 552 Requested mail action aborted: exceeded storage allocation
- 553 Requested action not taken: mailbox name not allowed
- [E.g., mailbox syntax incorrect]
- 554 Transaction failed [Or, in the case of a connection-opening
- response, "No SMTP service here"]
-
-
-4.2.4. Reply code 502
-
-Questions have been raised as to when reply code 502 (Command not
-implemented) should be returned in preference to other codes. 502
-SHOULD be used when the command is actually recognized by the SMTP
-server, but not implemented. If the command is not recognized, code
-500 SHOULD be returned. Extended SMTP systems MUST NOT list
-capabilities in response to EHLO for which they will return 502 (or
-500) replies.
-
-
-4.2.5 Reply codes after DATA and the subsequent <CRLF>.<CRLF>.
-
-When an SMTP server returns a positive completion status (2yz code)
-after the DATA command is completed with <CRLF>.<CRLF>, it accepts
-responsibility for:
-
- o delivering the message (if the recipient mailbox exists), or
-
- o if attempts to deliver the message fail due to transient
- conditions, retrying delivery some reasonable number of times
- at intervals as specified in section ##4.2.6.
-
- o if attempts to deliver the message fail due to permanent
- conditions, or if repeated attempts to deliver the message fail
- due to transient conditions, returning appropriate notification to
- the sender of the original message (using the address in the SMTP
- MAIL FROM command).
-
-
-When an SMTP server returns a transient error completion status (4yz)
-code after the DATA command is completed with <CRLF>.<CRLF>, it MUST
-NOT make any further attempt to deliver that message. The SMTP
-client retains responsibility for delivery of that message and may
-either return it to the user or requeue it for a subsequent attempt
-(see section ##4.5.4.1). The sending user should be able to
-interpret the return of a transient or permanent failure status as a
-non-delivery indication.
-
-
-
-4.3. SEQUENCING OF COMMANDS AND REPLIES
-
-4.3.1 Sequencing overview
-
-The communication between the sender and receiver is an alternating
-dialogue, controlled by the sender. As such, the sender issues a
-command and the receiver responds with a reply. Unless other
-arrangements are negotiated through service extensions, the sender
-must wait for this response before sending further commands.
-
-One important reply is the connection greeting. Normally, a receiver
-will send a 220 "Service ready" reply when the connection is
-completed. The sender should wait for this greeting message before
-sending any commands.
-
-Note: all the greeting-type replies have the official name (i.e., the
-fully-qualified primary domain name) of the server host as the first
-word following the reply code. Sometimes the host will have no
-meaningful name. See ##4.1.3 for a discussion of alternatives in
-these situations.
-
- For example,
-
- 220 ISIF.USC.EDU Service ready
- or
- 220 LOSER.BOGUS.COM Trashmail v 6.1.2 Service ready
- or
- 220 [10.0.0.1] Clueless host service ready
-
-
-The table below lists alternative success and failure replies for
-each command. These SHOULD be strictly adhered to: a receiver may
-substitute text in the replies, but the meaning and action implied by
-the code numbers and by the specific command reply sequence cannot be
-altered.
-
-4.3.2 Command-Reply Sequences
-
-Each command is listed with its usual possible replies. The prefixes
-used before the possible replies are "I" for intermediate, "S" for
-success, and "E" for error. Since some servers may generate other
-replies under special circumstances, and to allow for future
-extension, SMTP clients SHOULD, when possible, interpret only the
-first digit of the reply and MUST be prepared to deal with
-unrecognized reply codes by interpreting the first digit only. SMTP
-servers MUST NOT transmit reply codes to an SMTP client that are
-other than three digits or that do not start in a digit between 2 and
-5 inclusive.
-
-These sequencing rules and, in principle, the codes themselves, can
-be extended or modified by SMTP extensions offered by the server and
-accepted (requested) by the client.
-
-In addition to the codes listed below, any SMTP command can return
-any of the following codes if the corresponding unusual circumstances
-are encountered:
-
- 500 For the "command line too long" case or if the command name
- was not recognized. Note that producing a "commmand not
- recognized" error in response to the required subset of
- these commands is a violation of this specification.
- 501 Syntax error in command or arguments. In order to provide
- for future extensions, commands that are specified in this
- document as not accepting arguments (DATA, NOOP, RSET)
- SHOULD return a 501 message if arguments are supplied in the
- absence of EHLO-advertised extensions.
- 421 Service shutting down and closing transmission channel
-
-
-Specific sequences are:
-
- CONNECTION ESTABLISHMENT
- S: 220
- E: 554
- EHLO (or HELO)
- S: 250
- E: 504, 550
- MAIL
- S: 250
- E: 552, 451, 452, 550, 553
- RCPT
- S: 250, 251 (but see section ##3.4 for discussion of 251)
- E: 550, 551, 552, 553, 450, 451, 452, 503, 550
- DATA
- I: 354 -> data -> S: 250
- E: 552, 554, 451, 452
- E: 451, 554, 503
- RSET
- S: 250
- VRFY
- S: 250, 251, 252
- E: 550, 551, 553, 502, 504
- EXPN
- S: 250, 252
- E: 550, 500, 502, 504
- HELP
- S: 211, 214
- E: 502, 504
- NOOP
- S: 250
- QUIT
- S: 221
-
-
-
-4.4 Trace information
-
-When an SMTP server receives a message for delivery or further
-processing, it MUST insert trace ("time stamp" or "Received")
-information at the beginning of the message content, as discussed
-under the DATA command in section ##4.1.1.4.
-
-This line must be structured as follows:
-
- * The FROM field, which MUST be supplied in an SMTP
- environment, SHOULD contain both (1) the name of the source
- host as presented in the EHLO command and (2) an address
- literal containing the IP address of the source, determined
- from the TCP connection.
-
- * The ID field MAY contain an "@" as suggested in RFC-822,
- but this is not required.
-
- * The FOR field MAY contain a list of <path> entries when
- multiple RCPT commands have been given. This may raise
- some security issues and is usually not desirable; see
- section ##7.2.
-
-An Internet mail program MUST NOT change a Received: line that was
-previously added to the message header. SMTP servers MUST prepend
-Received lines to messages; they MUST NOT change the order of
-existing lines or insert Received lines in any other location.
-
-As the Internet grows, comparability of Received fields is important
-for detecting problems, especially slow relays. SMTP servers that
-create Received fields SHOULD use explicit offsets in the dates
-(e.g., -0800), rather than time zone names of any type. Local time
-(with an offset) is preferred to UT when feasible. If a time zone
-name is used, it should be included in a comment.
-
-When the delivery SMTP server makes the "final delivery" of a
-message, it inserts a return-path line at the beginning of the mail
-data. This use of return-path is required; mail systems MUST support
-it. The return-path line preserves the information in the
-<reverse-path> from the MAIL command. Here, final delivery means the
-message has left the SMTP world. Normally, this would mean it had
-been delivered to the destination user or an associated mail drop,
-but in some cases it may be further processed and transmitted by
-another mail system.
-
-It is possible for the mailbox in the return path to be different
-from the actual sender's mailbox, for example, if error responses are
-to be delivered a special error handling mailbox rather than to the
-message sender. When mailing lists are involved, this arrangement is
-common and useful as a means of directing errors to the list
-maintainer rather than the message originator.
-
-The text above implies that the final mail data will begin with a
-return path line, followed by one or more time stamp lines. These
-lines will be followed by the mail data headers and body [RFC822].
-
-It is sometimes difficult for an SMTP server to determine whether or
-not it is making final delivery since forwarding or other operations
-may occur after the message is accepted for delivery. Consequently,
-any further (forwarding, gateway, or relay) systems MAY remove the
-return path and rebuild the MAIL FROM command as needed to ensure
-that exactly one such line appears in a delivered message.
-
-A message-originating SMTP system SHOULD NOT send a message that
-already contains a Return-path header. SMTP servers performing a
-relay function MUST NOT inspect the message data, and especially not
-to the extent needed to determine if Return-path headers are present.
-SMTP servers making final delivery MAY remove Return-path headers
-before adding their own.
-
-The primary purpose of the Return-path is to designate the address to
-which messages indicating non-delivery or other mail system failures
-are to be sent. For this to be unambigious, exactly one return path
-should be present when the message is delivered. Systems using RFC
-822 syntax with non-SMTP transports SHOULD designate an unambiguous
-address, associated with the transport envelope, to which error
-reports (e.g., non-delivery messages) should be sent.
-
- Historical note: Text in RFC 822 that appears to contradict the
- use of Return-path (or the envelope MAIL FROM address) as the
- destination for error messages is not applicable on the Internet.
- The MAIL FROM address (as copied into the Return-path) MUST be
- used as the target of any mail containing delivery error messages.
-
-In particular,
-
-(i) a gateway from SMTP->elsewhere SHOULD insert a return-path
-header, unless it is known that the "elsewhere" transport also uses
-Internet domain addresses and maintains the envelope sender address
-separately.
-
-(ii) a gateway from elsewhere->SMTP SHOULD delete any
-return-path header present in the message, and either copy
-that information to the SMTP envelope or combine it with
-information present in the envelope of the other transport
-system to construct the MAIL FROM part of the SMTP envelope.
-
-
-
-The server must give special treatment to cases in which the
-processing following the end of mail data indication is only
-partially successful. This could happen if, after accepting several
-recipients and the mail data, the SMTP server finds that the mail
-data could be successfully delivered to some, but not all, of the
-recipients. In such cases, the response to the DATA command must be
-an OK reply. However, the SMTP server must compose and send an
-"undeliverable mail" notification message to the originator of the
-message. A single notification listing all of the failed recipients
-or separate notification messages must be sent for each failed
-recipient. For economy of processing by the sender, the former is
-preferred when possible. All undeliverable mail notification
-messages are sent using the MAIL command (even if they result from
-processing the obsolete SEND, SOML, or SAML commands) and use a null
-return path as discussed in section ##3.7.
-
-The time stamp line and the return path line are formally defined as
-follows:
-
-Return-path-line = "Return-Path:" FWS Reverse-path CRLF
-
-Time-stamp-line = "Received:" FWS Stamp CRLF
-
-Stamp = From-domain By-domain Opt-info ";"
- Daytime
-
-From-domain = "FROM" FWS Extended-Domain FWS
-
-By-domain = "BY" FWS Extended-Domain FWS
-
-Extended-Domain = Domain /
- ( Domain FWS "(" Address-literal ")" ) /
- Address-literal
-
-Opt-info = [Via] [With] [ID] [For]
-
-Via = "VIA" FWS Link FWS
-
-With = "WITH" FWS Protocol FWS
-
-ID = "ID" FWS String FWS
-
-For = "FOR" FWS Path FWS
-
-Link = <<>> / Addtl-Link
-Addtl-Link = Atom ; Additional standard names for links are
- registered with the Internet Assigned
- Numbers Authority (IANA).
- SMTP servers SHOULD NOT use unregistered
- names.
-Protocol = "ESMTP" / "SMTP" / Attdl-Protocol
-Attdl-Protocol = Atom ; Additional standard names for protocols
- are registered with the Internet Assigned
- Numbers Authority (IANA). SMTP servers
- SHOULD NOT use unregistered names.
-
-Daytime = FWS Date FWS Time
-
-Date = DD FWS Mon FWS YYYY
-
- Note that the earlier form, which permits two-digit years, has
- been deprecated. SMTP systems MUST use four-digit years.
-
-Time = HH ":" MM ":" SS FWS Zone
-
-DD = 1*2Digit ; the one or two decimal integer day of the
- month in the range 1 to 31.
-
-Mon = "JAN" | "FEB" | "MAR" | "APR" | "MAY" | "JUN" |
- "JUL" | "AUG" | "SEP" | "OCT" | "NOV" | "DEC"
-
-YYYY = 4*4Digit ; the four decimal integer year in the range
- 0000 to 9999.
-
-HH = 2*2Digit ; the two decimal integer hour of the day in
- the range 00 to 24.
-
-MM = 2*2Digit ; the two decimal integer minute of the hour
- in the range 00 to 59.
-
-SS = 2*2Digit ["." 1*Digit]
- ; the two decimal integer second of the
- minute in the range 00 to 59, with
- optional fractional seconds.
-
-Zone = ( "+" / "-" ) 4*4Digit [ SP "(" String ")" ]
- ; A four digit, signed time zone offset,
- such as -0600 for US Eastern Standard
- Time. This may be supplemented by a time
- zone name in parentheses, e.g., "-0800
- (PDT)". See ##___ for additional
- discussion.
-
- Note that there is no default; time zone information
- is required and MUST be supplied.
-
-
-
-
-
-4.5. DETAILS
-
-4.5.1. MINIMUM IMPLEMENTATION
-
-In order to make SMTP workable, the following minimum
-implementation is required for all receivers:
-
- COMMANDS -- HELO
- VRFY
- MAIL
- RCPT
- DATA
- RSET
- NOOP
- QUIT
-
-Any system that includes an SMTP server supporting mail relaying
-or delivery, i.e., the RCPT command, MUST support the reserved
-mailbox "postmaster" as a case-insensitive local name. This
-postmaster address is not strictly necessary if the server always
-returns 554 on connection opening (as described in section ##3.1). The
-requirement to accept mail for postmaster implies that RCPT TO
-commands which specify a mailbox for postmaster at any of the domains
-for which the SMTP server provides mail service, as well as the
-special case of "RCPT TO:<Postmaster>" (with no domain specification),
-MUST be supported.
-
-EHLO SHOULD be supported if possible.
-
-
-
-4.5.2. TRANSPARENCY
-
-Without some provision for data transparency, the character
-sequence "<CRLF>.<CRLF>" ends the mail text and cannot be sent
-by the user. In general, users are not aware of such
-"forbidden" sequences. To allow all user composed text to be
-transmitted transparently, the following procedures are used.
-
- 1. Before sending a line of mail text, the SMTP client checks
- the first character of the line. If it is a period, one
- additional period is inserted at the beginning of the line.
-
- 2. When a line of mail text is received by the SMTP server,
- it checks the line. If the line is composed of a single period,
- it is treated as the end of mail indicator. If the first
- character is a period and there are other characters on the line,
- the first character is deleted.
-
-The mail data may contain any of the 128 ASCII characters. All
-characters are to be delivered to the recipient's mailbox, including
-format effectors and other control characters. If the transmission
-channel provides an 8-bit byte (octets) data stream, the 7-bit ASCII
-codes are transmitted right justified in the octets, with the high
-order bits cleared to zero. See ##3.7 for special treatment of these
-conditions in SMTP systems serving a relay function.
-
-In some systems it may be necessary to transform the data as it is
-received and stored. This may be necessary for hosts that use a
-different character set than ASCII as their local character set or
-store data in records rather than strings. If such transformationss
-are necessary, they must be reversible -- especially if such
-transformationss are applied to mail being relayed.
-
-
-4.5.3. SIZES AND TIMEOUTS
-
-There are several objects that have required minimum/maximum sizes.
-Every implementation must be able to receive objects of at least
-these sizes. Objects larger than these sizes SHOULD be avoided when
-possible. However, some Internet mail constructs, e.g., encoded
-X.400 addresses [RFC-X400] will often require larger objects: clients
-MAY attempt to transmit these, but MUST be prepared for a server to
-reject them if they cannot be handled by it.
-
-
-****************************************************
-* *
-* TO THE MAXIMUM EXTENT POSSIBLE, IMPLEMENTATION *
-* TECHNIQUES WHICH IMPOSE NO LIMITS ON THE LENGTH *
-* OF THESE OBJECTS SHOULD BE USED. *
-* *
-****************************************************
-
-local-part
-
- The maximum total length of a user name or other local-part
-
-is 64 characters.
-
-domain
-
- The maximum total length of a domain name or number is 255
- characters.
-
-path
-
- The maximum total length of a reverse-path or
- forward-path is 256 characters (including the punctuation
- and element separators).
-
-command line
-
- The maximum total length of a command line including the
- command word and the <CRLF> is 512 characters. SMTP extensions
- may be used to increase this limit.
-
-reply line
-
- The maximum total length of a reply line including the reply code
- and the <CRLF> is 512 characters. More information may be
- conveyed through multiple-line replies.
-
-
-text line
-
- The maximum total length of a text line including the <CRLF> is
- 1000 characters (not counting the leading dot duplicated for
- transparency). This number may be increased by the use of SMTP
- Service Extensions.
-
-message content
-
- The maximum total length of a message content (including any
- message headers as well as the message body) MUST BE at least 64K
- octets. Since the introduction of multimedia mail [RFC-MIME],
- message lengths on the Internet have grown dramatically, and
- message size restrictions should be avoided if at all possible.
- SMTP server systems that must impose restrictions SHOULD implement
- the "SIZE" service extension ([RFC-SIZE]), and SMTP client systems
- that will send large messages SHOULD utilize it when possible.
-
-recipients buffer
-
- The minimum total number of recipients that must be buffered is
- 100 recipients. Rejection of messages (for excessive recipients)
- with fewer than 100 RCPT TO commands is a violation of this
- specification. The general principle that relaying SMTP servers
- MUST NOT, and delivery SMTP servers SHOULD NOT, perform validation
- tests on message headers suggests that rejecting a message based
- on the total number of recipients shown in header fields is to be
- discouraged. A server which imposes a limit on the number of
- recipients MUST behave in an orderly fashion, e.g., reject
- additional addresses over its limit rather than silently
- discarding addresses previously accepted. A client that needs to
- deliver a message containing over 100 RCPT TO commands SHOULD be
- prepared to transmit in 100-recipient "chunks" if the server
- declines to accept more than 100 recipients in a single message.
-
-
-****************************************************
-* *
-* TO THE MAXIMUM EXTENT POSSIBLE, IMPLEMENTATION *
-* TECHNIQUES WHICH IMPOSE NO LIMITS ON THE LENGTH *
-* OF THESE OBJECTS SHOULD BE USED. *
-* *
-****************************************************
-
-Errors due to exceeding these limits may be reported by using the
-reply codes, for example:
-
-500 Line too long.
-
-501 Path too long
-
-452 Too many recipients (see below)
-
-552 Too much mail data.
-
-[RFC-821] incorrectly listed the error where an SMTP server exhausts
-its implementation limit on the number of RCPT TO commands ("too many
-recipients") as having reply code 552. The correct reply code for
-this condition is 452.
-
-When a conforming SMTP server encounters this condition, it has at
-least 100 successful RCPT commands in its recipients buffer. If the
-server is able to accept the messsage, then at least these 100
-addresses will be removed from the SMTP client's queue. When the
-client attempts retransmission of those addresses which recieved 452
-responses, at least 100 of these will be able to fit in the SMTP
-server's recipients buffer. Each retransmission attempt which is
-able to deliver anything will be able to dispose of at least 100 of
-these recipients.
-
-If an SMTP server has an implementation limit on the number of RCPT
-TO commands and this limit is exhausted, it MUST use a response code
-of 452. If the server has an configured site-policy limitation on
-the number of RCPT TO commands, it MAY instead use a 5XX response
-code.
-
-In order to interoperate with SMTP servers implementing an older
-version of the protocol, SMTP clients MAY treat a 552 code obtained
-in response to an RCPT command as if it were a 452 response code.
-
-
-
-
-
-An SMTP client MUST provide a timeout mechanism. It MUST use
-per-command timeouts rather than somehow trying to time the entire
-mail transaction. Timeouts SHOULD be easily reconfigurable,
-preferably without recompiling the SMTP code. To implement this, a
-timer is set for each SMTP command and for each buffer of the data
-transfer. The latter means that the overall timeout is inherently
-proportional to the size of the message.
-
-Based on extensive experience with busy mail-relay hosts, the minimum
-per-command timeout values SHOULD be as follows:
-
-o Initial 220 Message: 5 minutes
-
- An SMTP client process needs to distinguish between a failed TCP
- connection and a delay in receiving the initial 220 greeting
- message. Many SMTP servers accept a TCP connection but delay
- delivery of the 220 message until their system load permits more
- mail to be processed.
-
-o MAIL Command: 5 minutes
-
-
-o RCPT Command: 5 minutes
-
- A longer timeout is required if processing of mailing lists and
- aliases is not deferred until after the message was accepted.
-
-o DATA Initiation: 2 minutes
-
- This is while awaiting the "354 Start Input" reply to a
- DATA command.
-
-o Data Block: 3 minutes
-
- This is while awaiting the completion of each TCP SEND call
- transmitting a chunk of data.
-
-o DATA Termination: 10 minutes.
-
- This is while awaiting the "250 OK" reply. When the receiver
- gets the final period terminating the message data, it typically
- performs processing to deliver the message to a user mailbox. A
- spurious timeout at this point would be very wasteful and would
- typically result in delivery of multiple copies of the message,
- since it has been successfully sent and the server has accepted
- responsibility for delivery. See section ##6.1 for additional
- discussion.
-
-An SMTP server SHOULD have a timeout of at least 5 minutes while it
-is awaiting the next command from the sender.
-
-
-4.5.4 Queuing Strategies
-
-The common structure of a host SMTP implementation includes user
-mailboxes, one or more areas for queueing messages in transit, and
-one or more daemon processes for sending and receiving mail. The
-exact structure will vary depending on the needs of the users on the
-host and the number and size of mailing lists supported by the host.
-We describe several optimizations that have proved helpful,
-particularly for mailers supporting high traffic levels.
-
-Any queueing strategy MUST include:
-
-o Timeouts on all activities on a per-command basis.
-
-o Never sending error messages in response to error messages.
-
-
-4.5.4.1 Sending Strategy
-
-The general model for an SMTP client is one or more processes that
-periodically attempt to transmit outgoing mail. In a typical system,
-the program that composes a message has some method for requesting
-immediate attention for a new piece of outgoing mail, while mail that
-cannot be transmitted immediately MUST be queued and periodically
-retried by the sender. A mail queue entry will include not only the
-message itself but also the envelope information.
-
-The sender MUST delay retrying a particular destination after one
-attempt has failed. In general, the retry interval SHOULD be at
-least 30 minutes; however, more sophisticated and variable strategies
-will be beneficial when the SMTP client can determine the reason for
-non- delivery.
-
-Retries continue until the message is transmitted or the sender gives
-up; the give-up time generally needs to be at least 4-5 days. The
-parameters to the retry algorithm MUST be configurable.
-
-A client SHOULD keep a list of hosts it cannot reach and
-corresponding connection timeouts, rather than just retrying queued
-mail items.
-
-
-Experience suggests that failures are typically transient (the target
-system or its connection has crashed), favoring a policy of two
-connection attempts in the first hour the message is in the queue,
-and then backing off to one every two or three hours.
-
-The SMTP client can shorten the queuing delay in cooperation with the
-SMTP server. For example, if mail is received from a particular
-address, it is likely that mail queued for that host can now be sent.
-Application of this principle may, in many cases, eliminate the
-requirement for an explicit "send queues now" function such as that
-discussed in [RFC-ETRN].
-
-The strategy may be further modified as a result of multiple
-addresses per host (see below) to optimize delivery time vs.
-resource usage.
-
-An SMTP client may have a large queue of messages for each
-unavailable destination host. If all of these messages were retried
-in every retry cycle, there would be excessive Internet overhead and
-the sending system would be blocked for a long period. Note that an
-SMTP client can generally determine that a delivery attempt has
-failed only after a timeout of several minutes and even a one-minute
-timeout per connection will result in a very large delay if retries
-are repeated for dozens, or even hundreds, of queued messages to the
-same host.
-
-At the same time, SMTP clients should use great care in caching
-negative responses from servers. In an extreme case, if EHLO is
-issued multiple times during the same SMTP connection, different
-answers may be returned by the server. More significantly, 5yz
-responses to MAIL FROM MUST NOT be cached.
-
-When the same message will be delivered to several users on the same
-host, only one copy of the message SHOULD be transmitted. That is,
-the SMTP client SHOULD use the command sequence: RCPT, RCPT,... RCPT,
-DATA instead of the sequence: RCPT, DATA, ..., RCPT, DATA, ... RCPT,
-DATA. Implementation of this efficiency feature is strongly
-encouraged.
-
-Similarly, to achieve timely delivery, the SMTP client MAY support
-multiple concurrent outgoing mail transactions. However, some limit
-may be appropriate to protect the host from devoting all its
-resources to mail.
-
-4.5.4.2 Receiving strategy
-
-The SMTP server SHOULD attempt to keep a pending listen on the SMTP
-port at all times. This requires the support of multiple incoming
-TCP connections for SMTP. Some limit MAY be imposed.
-
-As discussed above, when the SMTP server receives mail from a
-particular host address, it could notify the SMTP client to retry any
-mail pending for that host address.
-
-
-
-5. Address resolution and mail handling
-
-Once an SMTP client lexically identifies a domain to which mail will
-be delivered for processing (as described in sections ##3.6 and
-##3.7), a DNS lookup is performed to resolve the domain name (see
-[RFC-DNS]). The names are expected to be fully-qualified domain
-names (FQDNs): mechanisms for inferring FQDNs from partial names or
-local aliases are outside of this specification and, due to a history
-of problems, are generally discouraged. The lookup first attempts to locate an MX record
-associated with the name. If a CNAME record is found instead, the
-resulting name is processed as if it were the initial name. If no MX
-records are found, but an A RR is found, the A RR is treated as if it
-was associated with an implicit MX RR, with a preference of 0,
-pointing to that host. If one or more MX RRs are found for a given
-name, SMTP systems MUST NOT utilize an A RRs associated with that
-name unless they are located using the MX RRs; i.e., the "implicit
-MX" rule above applies only if there are no MX records present. If
-MX records are present, but none of them are usable, this situation
-MUST be reported as an error.
-
-When the lookup succeeds, the mapping can result in a list of
-alternative delivery addresses rather than a single address, because
-of (a) multiple MX records, (b) multihoming, or both. To provide
-reliable mail transmission, the SMTP client MUST be able to try (and
-retry) each of the relevant addresses in this list in order, until a
-delivery attempt succeeds. However, there MAY also be a configurable
-limit on the number of alternate addresses that can be tried. In any
-case, a host SHOULD try at least two addresses.
-
-The following information is used to rank the host addresses:
-
- (1) Multiple MX Records -- these contain a preference indication
- that should be used in sorting (see below). Lower numbers are
- more preferred than higher ones. If there are multiple
- destinations with the same preference and there is no clear
- reason to favor one (e.g., by recognition of an easily-reached
- address), then the sender-SMTP MUST randomize them to
- spread the load across multiple mail exchangers for a specific
- organization.
-
- (2) Multihomed host -- The destination host (perhaps taken from the
- preferred MX record) may be multihomed, in which case the domain
- name resolver will return a list of alternative IP addresses. It
- is the responsibility of the domain name resolver interface to
- have ordered this list by decreasing preference if necessary, and
- SMTP MUST try them in the order presented.
-
- Although the capability to try multiple alternative addresses is
- required, specific installations may want to limit or disable the
- use of alternative addresses. The question of whether a sender
- should attempt retries using the different addresses of a
- multihomed host has been controversial. The main argument for
- using the multiple addresses is that it maximizes the probability
- of timely delivery, and indeed sometimes the probability of any
- delivery; the counterargument is that it may result in
- unnecessary resource use.
-
- Note that resource use is also strongly determined by the sending
- strategy discussed in Section #4.5.4.1.
-
-If a host receives a message with a destination for which it is a
-designated Mail eXchanger, it MAY relay the message (potentially
-after having rewritten the addresses), make final delivery of the
-message, or hand it off using some mechanism outside the
-SMTP-provided transport environment.
-
-If it determines that it should relay the message without rewriting
-the address, it must sort the MX records to determine candidates for
-delivery. The records are first ordered by preference, with the
-lowest-numbered records being most preferred. The relay host must
-then inspect the list for any of the names or addresses by which it
-might be known in mail transactions. If a matching record is found,
-all records at that preference level and higher-numbered ones MUST BE
-discarded from consideration. If there are no records left at that
-point, it is an error condition, and the message must be returned as
-undeliverable. If records do remain, they should be tried, best
-preference first, as described above.
-
-
-6. Problem detection and handling
-
-6.1 Reliable delivery and replies by email
-
-When the receiver-SMTP accepts a piece of mail (by sending a "250 OK"
-message in response to DATA), it is accepting responsibility for
-delivering or relaying the message. It must take this responsibility
-seriously, i.e., it MUST NOT lose the message for frivolous reasons,
-e.g., because the host later crashes or because of a predictable
-resource shortage.
-
-If there is a delivery failure after acceptance of a message, the
-receiver-SMTP MUST formulate and mail a notification message. This
-notification MUST be sent using a null ("<>") reverse path in the
-envelope. The recipient of this notification SHOULD be the address
-from the envelope return path (or the Return-Path: line). However,
-if this address is null ("<>"), the receiver-SMTP MUST NOT send a
-notification. If the address is an explicit source route, it MUST be
-stripped down to its final hop.
-
-DISCUSSION:
- For example, suppose that an error notification must be
- sent for a message that arrived with:
- MAIL FROM:<@a,@b:user@d>
- The notification message should be sent using:
- RCPT TO:<user@d>
-
-Some delivery failures after the message is accepted by SMTP will be
-unavoidable. For example, it may be impossible for the receiving
-SMTP server to validate all the delivery addresses in RCPT command(s)
-due to a "soft" domain system error, because the target is a mailing
-list (see earlier discussion of RCPT), or because the server is
-acting as a relay and has no immediate access to the delivering
-system.
-
-To avoid receiving duplicate messages as the result of timeouts, a
-receiver-SMTP MUST seek to minimize the time required to respond to
-the final <CRLF>.<CRLF> end of data indicator. See RFC-1047
-[RFC1047] for a discussion of this problem.
-
-
-6.2 Loop detection
-
-Simple counting of the number of Received lines in a message has
-proven to be an effective, although rarely optimal, method of
-detecting loops in mail systems. SMTP servers using this technique
-should use a large rejection threshold, normally at least 100
-Received entries. Whatever mechanisms are used, servers MUST contain
-provisions for detecting and stopping trivial loops.
-
-
-6.3 Compensating for irregularities
-
-Unfortunately, variations, creative interpretations, and outright
-violations of Internet mail protocols do occur; some would suggest
-that they occur quite frequently. The debate as to whether a
-well-behaved SMTP receiver or relay should reject a malformed
-message, attempt to pass it on unchanged, or attempt to repair it to
-increase the odds of successful delivery (or subsequent reply) began
-almost with the dawn of structured network mail and shows no signs of
-abating. Advocates of rejection claim that attempted repairs are
-rarely completely adequate and that rejection of bad messages is the
-only way to get the offending software repaired. Advocates of
-"repair" or "deliver no matter what" argue that users prefer that
-mail go through it if at all possible and that there are significant
-market pressures in that direction. In practice, these market
-pressures may be more important to particular vendors than strict
-conformance to the standards, regardless of the preference of the
-actual developers.
-
-The problems associated with ill-formed messages were exacerbated by
-the introduction of the split-UA mail reading protocols [RFC-POP2,
-RFC-POP3, RFC-IMAP2, RFC-PCMAIL These protocols have encouraged the
-use of SMTP as a posting protocol, and SMTP servers as relay systems
-for these client hosts (which are often only intermittently connected
-to the Internet). Historically, many of those client machines lacked
-some of the mechanisms and information assumed by SMTP (and indeed,
-by the mail format protocol [RFC-822]). Some could not keep adequate
-track of time; others had no concept of time zones; still others
-could not identify their own names or addresses; and, of course, none
-could satisfy the assumptions that underlay RFC-822's conception of
-authenticated addresses.
-
-In response to these weak SMTP clients, many SMTP systems now
-complete messages that are delivered to them in incomplete or
-incorrect form. This strategy is generally considered appropriate
-when the server can identify or authenticate the client, and there
-are prior agreements between them. By contrast, there is at best
-great concern about fixes applied by a relay or delivery SMTP server
-that has little or no knowledge of the user or client machine.
-
-The following changes to a message being processed MAY be applied by
-an originating SMTP server, or one used as the target of SMTP as an
-initial posting protocol, when necessary. The less information the
-server has about the client, the less likely these changes are to be
-correct and the more caution and conservatism should be applied when
-considering whether or not to perform fixes and how. These changes
-MUST NOT be applied by an SMTP server that provides an intermediate
-relay function.
-
- - Addition of a message-id field when none appears
-
- - Addition of a date, time or time zone when none appears
-
- - Correction of addresses to proper FQDN format
-
-In all cases, properly-operating clients supplying correct
-information are preferred to corrections by the SMTP server. In all
-cases, documentation of actions performed by the servers (in trace
-fields and/or header comments) is strongly encouraged.
-
-
-7. Security Considerations
-
-7.1 Mail security and spoofing
-
-SMTP mail is inherently insecure in that it is feasible for even
-fairly casual users to negotiate directly with receiving and relaying
-SMTP servers and create messages that will trick a naive recipient
-into believing that they came from somewhere else. Constructing such
-a message so that the "spoofed" behavior cannot be detected by an
-expert is somewhat more difficult, but not sufficiently so as to be a
-deterrent to someone who is determined and knowledgeable.
-Consequently, as knowledge of Internet mail increases, so does the
-knowledge that SMTP mail inherently cannot be authenticated, or
-integrity checks provided, at the transport level.
-
-Real mail security lies only in end-to-end methods involving the
-message bodies, e.g., those that can be provided in the MOSS
-framework [RFC-MOSS].
-
-Efforts to make it more difficult for users to set envelope MAIL FROM
-and header "From" fields to point to valid addresses other than their
-own are largely misguided: they frustrate legitimate applications in
-which mail is sent by one user on behalf of another or in which error
-(or normal) replies should be directed to a special address. (Systems
-that provide convenient ways for users to alter these fields on a
-per-message basis should attempt to establish a primary and permanent
-mailbox address for the user so that Sender fields within the message
-data can be generated sensibly.)
-
-This specification does not further address the authentication issues
-associated with SMTP other than to advocate that useful functionality
-not be disabled in the hope of providing some small margin of
-protection against an ignorant user who is trying to fake mail.
-
-
-
-7.2 "Blind" copies.
-
-Addresses that do not appear in the message headers may appear in the
-RCPT TO commands to an SMTP server for a number of reasons. The two
-most common involve the use of a mailing address as a "list exploder"
--- a single address that resolves into multiple addresses -- and the
-appearance of "blind copies". In order to avoid defeating some of
-the purpose of these mechanisms, SMTP clients and servers SHOULD NOT
-copy the full set of RCPT TO command arguments into the headers,
-either as part of trace headers or as informational or
-private-extension headers. Since this rule is often violated in
-practice, and cannot be enforced, sending SMTP systems that are aware
-of "bcc" use MAY find it helpful to send each blind copy as a
-separate message transaction containing only a single RCPT TO command.
-
-There is no inherent relationship between either "reverse" (MAIL
-FROM, SAML FROM, etc.) or "forward" (RCPT TO) addresses in the SMTP
-transaction ("envelope") and the addresses in the headers. Receiving
-systems SHOULD NOT attempt to deduce such relationships and use them
-to alter the headers of the message for delivery. The popular
-"Apparently-to" header is a violation of this principle and SHOULD
-NOT be used.
-
-
-7.3 VRFY, EXPN, and security.
-
-As discussed in section ##3.5, individual sites may want to disable
-one or both VRFY or EXPN for security reasons. As a corollary to the
-above, implementations that permit this MUST NOT appear to have
-verified addresses that are not, in fact, verified. If a site
-disables these commands for security reasons, the SMTP server MUST
-return a 252 response, rather than a code that could be confused with
-successful or unsuccessful verification.
-
-Returning a 250 reply code with the address listed in the VRFY
-command after having checked it only for syntax violates this rule.
-Of course, an implementation that "supports" VRFY by always returning
-550 whether or not the address is valid is equally not in conformance.
-
-Within the last few years, the contents of mailing lists have become
-popular as an address information source for so-called "spammers."
-The use of EXPN to "harvest" addresses has increased as list
-administrators have installed protections against inappropriate uses
-of the lists themselves. Implementations SHOULD still provide
-support for EXPN, but sites should carefully evaluate the tradeoffs..
-As authentication mechanisms are introduced into SMTP, some sites may
-choose to make EXPN available only to authenticated requestors.
-
-
-7.4. Information Disclosure
-
-There has been an ongoing debate about the tradeoffs between the
-debugging advantages of announcing server type and version (and,
-sometimes, even server domain name) in the greeting response or in
-response to the HELP command and the disadvantages of exposing useful
-information to potential hostile attack. The utility of the
-debugging information is beyond doubt. Those who argue for making it
-available point out that it is far better to actually secure an SMTP
-server rather than hope that trying to conceal known vunerabilities
-by hiding the server's precise identity will provide more protection.
-Sites are encouraged to evaluate the tradeoff with that issue in
-mind; implementations are strongly encouraged to minimally provide
-for making type and version information available in some way to
-other network hosts.
-
-
-7.5. Scope of operation of SMTP servers
-
-It is a well-established principle that an SMTP server may refuse to
-accept mail for any operational or technical reason that makes sense
-to the site providing the server. However, cooperation among sites
-and installations makes the Internet possible. If sites take
-excessive advantage of the right to reject traffic, the ubiquity of
-email availability (one of the strengths of the Internet) will be
-threatened; considerable care should be taken and balance maintained
-if a site decides to be selective about the traffic it will accept
-and process.
-
-In recent years, use of the relay function through arbitrary sites
-has been used as part of hostile efforts to hide the actual origins
-of mail. Some sites have decided to limit the use of the relay
-function to known or identifiable sources, and implementations SHOULD
-provide the capability to perform this type of filtering. When mail
-is rejected for these or other policy reasons, a 550 code should be
-used in response to EHLO, MAIL FROM, or RCPT TO as appropriate.
-
-
-8. IANA Considerations
-
-IANA is [[requested]] to set up three registries. The first consists
-of SMTP service extensions with the associated keywords, and, as
-needed, parameters and verbs. As specified in section ##2.2.2, no
-entry may be made in this registry that starts in an "X". Entries
-may be made only for service extensions (and associated keywords,
-parameters, or verbs) that are defined in standards-track or
-experimental RFCs specifically approved by IESG for this purpose.
-
-The second registry consists of "tags" that identify forms of domain
-literals other than those for IPv4 addresses (specified in RFC 821
-and in this document) and IPv6 addresses (specified in this
-document). Additional literal types require standardization before
-being used; none are anticipated at this time.
-
-The third, established by RFC 821 and renewed by this specification,
-is a registry of link and protocol identifiers to be used with the
-"via" and "with" subclauses of the time stamp ("Received: header")
-described in section ##4.4. Link and protocol identifiers in
-addition to those specified in this document may be registered only
-by standardization or by way of an RFC-documented, IESG-approved,
-Experimental protocol extension.
-
-
-
-9. REFERENCES
-
-[1] ASCII
-
- ASCII, "USA Code for Information Interchange", United States of
- America Standards Institute (now American National Standards
- Institute), X3.4, 1968. ANSI X3.4-1968 has been replaced by
- newer versions with slight modifications, but the 1968
- version remains definitive for the Internet.
-
-[RFC822]
- Crocker, D., "Standard for the Format of ARPA Internet Text
- Messages", RFC 822, Department of Electrical Engineering,
- University of Delaware, August 1982.
-
-[3] TCP
- Postel, J., ed., "Transmission Control Protocol - DARPA Internet
- Program Protocol Specification", RFC 793, USC/Information Sciences
- Institute, NTIS AD Number A111091, September 1981.
-
-[HEADER-PEOPLE]
-
-[IPv6AddrString] Hinden,R and S. Deering, Eds. "IP Version 6
- Addressing Architecture", RFC 1884, December 1995.
-
-[RFC-DNS] P. Mockapetris, "Domain names - implementation and
- specification", RFC 1035 and P. Mockapetris, "Domain names -
- concepts and facilities", RFC 1034. (STD 13)
-
-[RFC974] C. Partridge, "Mail routing and the domain system", RFC
- 974, 01/01/1986
-
-[RFC1047] C. Partridge, "Duplicate messages and SMTP", RFC 1047,
- 02/01/1988.
-
-[RFC-SIZE] J. Klensin, N. Freed, K. Moore, "SMTP Service Extension
- for Message Size Declaration", RFC 1870, 11/06/1995. (STD 10)
-
-[RFC-MIME] N. Freed, N. Borenstein, "Multipurpose Internet Mail
- Extensions (MIME) Part One: Format of Internet Message
- Bodies", RFC 2045, 12/02/1996.
-
-[RFC-INTLHDR] K. Moore, "MIME (Multipurpose Internet Mail Extensions)
- Part Three: Message Header Extensions for Non-ASCII Text",
- RFC 2047, 12/02/1996.
-
-[8BITMIME] J. Klensin, N. Freed, M. Rose, E. Stefferud, D. Crocker,
- "SMTP Service Extension for 8bit-MIMEtransport", RFC 1652,
- 07/18/1994.
-
-[SMTPEX] J. Klensin, N. Freed, M. Rose, E. Stefferud, D.
- Crocker, "SMTP Service Extensions", RFC-1869, 11/06/1995. (STD
- 10)
-
-[RFC-1123] R. Braden, "Requirements for Internet hosts -
- application and support", 10/01/1989
-
-[RFC-MOSS] S. Crocker, N. Freed, J. Galvin, S. Murphy, "MIME Object
- Security Services", RFC 1848, 10/03/1995.
-
-[RFC-POP2] M. Butler, D. Chase, J. Goldberger, J. Postel, J.
- Reynolds, "Post Office Protocol - version 2", RFC 937,
- 02/01/1985
-
-[RFC-IMAP2] M. Crispin, "Interactive Mail Access Protocol - Version
- 2", RFC 1176, 08/20/1990.
-
-[RFC-PCMAIL] M. Lambert, "PCMAIL: A distributed mail system for
- personal computers", RFC 1056, 06/01/1988.
-
-[RFC-POP3] J. Myers, M. Rose, "Post Office Protocol - Version 3",
- RFC 1930, 5/14/96 (Std 53).
-
-[RFC-IMAP4] M. Crispin, "Internet Message Access Protocol
- - Version 4", RFC 2060, 12/04/1996.
-
-[RFC-X400] S. Hardcastle-Kille, "Mapping between X.400(1988) /
- ISO 10021 and RFC 822", RFC 1327, 05/18/1992.
-
-[RFC-ETRN] J. De Winter, "SMTP Service Extension for Remote
- Message Queue Starting", RFC 1985, 08/14/1996.
-
-[RFC-BDAT] G. Vaudreuil, "SMTP Service Extensions for
- Transmission of Large and Binary MIME Messages", RFC 1830,
- 08/16/1995.
-
-[RFC-PIPELINE] N. Freed, A. Cargille, "SMTP Service Extension
- for Command Pipelining", RFC 1854, 10/04/1995.
-
-[RFC-NOTARY1] K. Moore, "SMTP Service Extension for Delivery
- Status Notifications", RFC 1891, 01/15/1996.
-
-[RFC-NOTARY2] K. Moore, G. Vaudreuil, "An Extensible Message
- Format for Delivery Status Notifications", RFC 1894,
- 01/15/1996.
-
-[RFC-REPLY] G. Vaudreuil, "Enhanced Mail System Status Codes",
- RFC 1893, 01/15/1996.
-
-[ABNF] Crocker, D., P. Overell, Eds., "Augmented BNF for Syntax
- Specifications: ABNF", RFC 2234, November 1997.
-
-[MSGFMT] P. Resnick, Work in progress,
- draft-ietf-drums-msg-fmt-04.txt, March 13, 1998
-
-
-9. Editor's Addresses
-
- John C. Klensin
- MCI Communications
- 800 Boylston St., 7th floor
- Boston, MA 02199
- USA
- Email: Klensin@mci.net
- Phone: +1 617 960 1011
- Fax: +1 617 960 1009
-
-Dawn P. Mann
-Microsoft Corporation
-1 Microsoft Way
-Redmond, WA 98052-6399
-USA
- Email: dawnm@microsoft.com
- Tel: +1 425 936 5475
-
-
-
-10. Acknowledgments
-
-<<>>to be supplied>>
-
-
-
-APPENDIX A
-
-TCP Transport service
-
-The Transmission Control Protocol [3] is used in the Internet, and in
-any network following the Internet standards for internetwork protocols.
-
-Connection Establishment
-
- The SMTP transmission channel is a TCP connection established
- between the sender process port U and the receiver process port
- L. This single full duplex connection is used as the
- transmission channel. This protocol is assigned the service
- port 25 (31 octal), that is L=25.
-
-Data Transfer
-
- The TCP connection supports the transmission of 8-bit bytes.
- The SMTP data is 7-bit ASCII characters. Each character is
- transmitted as an 8-bit byte with the high-order bit cleared to
- zero. Service extensions may modify this rule to permit
- transmission of full 8-bit data bytes as part of the message
- body, but not in SMTP commands or responses.
-
-
-
-APPENDIX B
-
-Generating SMTP commands from RFC 822 headers
-
-Some systems use RFC 822 headers (only) in a mail submission
-protocol, or otherwise generate SMTP commands from RFC 822 headers
-when such a message is handed to an MTA from a UA. While the MTA-UA
-protocol is a private matter, not covered by any Internet Standard,
-there are problems with this approach. For example, there have been
-repeated problems with proper handling of "bcc" copies and
-redistribution lists when information that conceptually belongs to a
-mail envelopes is not separated early in processing from header
-information (and kept separate).
-
-It is recommended that the UA provide its initial MTA with an
-envelope separate from the message itself. However, if the envelope
-is not supplied, SMTP commands should be generated as follows:
-
-(i) each recipient address from a TO, CC, or BCC header field
-should be copied to a RCPT command (generating multiple message
-copies if that is required for queuing or delivery). This includes
-any addresses listed in a RFC 822 "group". Any BCC fields should
-then be removed from the headers. Once this process is completed,
-the remaining headers should be checked to verify that at least one
-To:, Cc:, or Bcc: header remains. If none do, then a bcc: header
-with no additional information SHOULD be inserted as specified in
-[MSGFMT].
-
-(ii) the return address in the MAIL command should, if possible, be
-derived from the system's identity for the submitting (local) user.
-And the From header field otherwise. If there is a system identity
-available, it should also be copied to the Sender header field if it
-is different from the address in the From header field. (Any Sender
-field that was already there should be removed.) Systems may provide
-a way for submitters to override the envelope return address, but may
-want to restrict its use to privileged users. (This will not prevent
-mail forgery, but may lessen its incidence -- see section 7.1.)
-
-When an MTA is being used in this way, it bears responsibility for
-ensuring that the message being transmitted is valid. The mechanisms
-for checking that validity, and for handling (or returning) messages
-that are not valid at the time of arrival, are part of the MUA-MTA
-interface and not covered by this specification.
-
-A submission protocol based on Standard RFC 822 information alone
-MUST NOT be used to gateway a message from a foreign (non-SMTP) mail
-system into an SMTP environment. Additional information to construct
-an envelope must come from some source in the other environment,
-whether supplemental headers or the foreign system's envelope.
-
-Attempts to gateway messages using only their header "to" and "cc"
-fields, have repeatedly caused mail loops and other behavior adverse
-to the proper functioning of the Internet mail environment. These
-problems have been especially common when the message originates from
-an Internet mailing list and is distributed into the foreign
-environment using envelope information. When these messages are then
-processed by a header-only remailer, loops back to the Internet
-environment (and the mailing list) are almost inevitable.
-
-
-APPENDIX C
-
-Source routes.
-
-The <reverse-path> is a reverse source routing list of hosts and a
-source mailbox. The first host in the <reverse-path> should be the
-host sending the MAIL FROM command. Similarly, the <forward-path>
-may be a source routing lists of hosts and a destination mailbox.
-However, in general, the <forward-path> should contain only a mailbox
-and domain name, relying on the domain name system to supply routing
-information if required. The use of source routes is deprecated;
-while servers MUST be prepared to receive and handle them as
-discussed in section ##3.3 and below, clients SHOULD NOT transmit
-them.
-
-For relay purposes, the forward-path may be a source route of the
-form "@ONE,@TWO:JOE@THREE", where ONE, TWO, and THREE MUST BE
-fully-qualified domain names. This form is used to emphasize the
-distinction between an address and a route. The mailbox is an
-absolute address, and the route is information about how to get
-there. The two concepts should not be confused.
-
-If source routes are used, RFC 821 and the text below should be
-consulted for the mechanisms for constructing and updating the
-forward- and reverse-paths.
-
-The SMTP server transforms the command arguments by moving its own
-identifier (its domain name or that of any domain for which it is
-acting as a mail exchanger), if it appears, from the forward-path to
-the beginning of the reverse-path.
-
-Notice that the forward-path and reverse-path appear in the SMTP
-commands and replies, but not necessarily in the message. That is,
-there is no need for these paths and especially this syntax to appear
-in the "To:" , "From:", "CC:", etc. fields of the message header.
-Conversely, SMTP servers MUST NOT derive final message delivery
-information from message header fields.
-
- When the list of hosts is present, it is a "reverse" source route
-and indicates that the mail was relayed through each host on the list
-(the first host in the list was the most recent relay). This list is
-used as a source route to return non-delivery notices to the sender.
-As each relay host adds itself to the beginning of the list, it must
-use its name as known in the transport environment to which it is
-relaying the mail rather than that of the transport environment from
-which the mail came (if they are different).
-
-
-
-
-APPENDIX F
-
-Scenarios
-
-This section presents complete scenarios of several types of SMTP
-sessions.
-
-A Typical SMTP Transaction Scenario
-
-This SMTP example shows mail sent by Smith at host USC-ISIF, to
-Jones, Green, and Brown at host BBN-UNIX. Here we assume that host
-USC-ISIF contacts host BBN-UNIX directly. The mail is accepted for
-Jones and Brown. Green does not have a mailbox at host BBN-UNIX.
-
--------------------------------------------------------------
-
- R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready
- S: HELO USC-ISIF.ARPA
- R: 250 BBN-UNIX.ARPA
-
- S: MAIL FROM:<Smith@USC-ISIF.ARPA>
- R: 250 OK
-
- S: RCPT TO:<Jones@BBN-UNIX.ARPA>
- R: 250 OK
-
- S: RCPT TO:<Green@BBN-UNIX.ARPA>
- R: 550 No such user here
-
- S: RCPT TO:<Brown@BBN-UNIX.ARPA>
- R: 250 OK
-
- S: DATA
- R: 354 Start mail input; end with <CRLF>.<CRLF>
- S: Blah blah blah...
- S: ...etc. etc. etc.
- S: .
- R: 250 OK
-
- S: QUIT
- R: 221 BBN-UNIX.ARPA Service closing transmission channel
-
- Scenario 1
-
--------------------------------------------------------------
-
-
-
-
-
-Aborted SMTP Transaction Scenario
-
--------------------------------------------------------------
-
- R: 220 MIT-Multics.ARPA Simple Mail Transfer Service Ready
- S: HELO ISI-VAXA.ARPA
- R: 250 MIT-Multics.ARPA
-
- S: MAIL FROM:<Smith@ISI-VAXA.ARPA>
- R: 250 OK
-
- S: RCPT TO:<Jones@MIT-Multics.ARPA>
- R: 250 OK
-
- S: RCPT TO:<Green@MIT-Multics.ARPA>
- R: 550 No such user here
-
- S: RSET
- R: 250 OK
-
- S: QUIT
- R: 221 MIT-Multics.ARPA Service closing transmission channel
-
- Scenario 2
-
--------------------------------------------------------------
-
-
-
-Relayed Mail Scenario
-
--------------------------------------------------------------
-
- Step 1 -- Source Host to Relay Host
-
- R: 220 USC-ISIE.ARPA Simple Mail Transfer Service Ready
- S: HELO MIT-AI.ARPA
- R: 250 USC-ISIE.ARPA
-
- S: MAIL FROM:<JQP@MIT-AI.ARPA>
- R: 250 OK
-
- S: RCPT TO:<@USC-ISIE.ARPA:Jones@BBN-VAX.ARPA>
- R: 250 OK
-
- S: DATA
- R: 354 Start mail input; end with <CRLF>.<CRLF>
- S: Date: 2 Nov 81 22:33:44
- S: From: John Q. Public <JQP@MIT-AI.ARPA>
- S: Subject: The Next Meeting of the Board
- S: To: Jones@BBN-Vax.ARPA
- S:
- S: Bill:
- S: The next meeting of the board of directors will be
- S: on Tuesday.
- S: John.
- S: .
- R: 250 OK
-
- S: QUIT
- R: 221 USC-ISIE.ARPA Service closing transmission channel
-
-
- Step 2 -- Relay Host to Destination Host
-
- R: 220 BBN-VAX.ARPA Simple Mail Transfer Service Ready
- S: HELO USC-ISIE.ARPA
- R: 250 BBN-VAX.ARPA
-
- S: MAIL FROM:<@USC-ISIE.ARPA:JQP@MIT-AI.ARPA>
- R: 250 OK
-
- S: RCPT TO:<Jones@BBN-VAX.ARPA>
- R: 250 OK
-
- S: DATA
- R: 354 Start mail input; end with <CRLF>.<CRLF>
- S: Received: from MIT-AI.ARPA by USC-ISIE.ARPA ;
- 2 Nov 81 22:40:10 UT
- S: Date: 2 Nov 81 22:33:44
- S: From: John Q. Public <JQP@MIT-AI.ARPA>
- S: Subject: The Next Meeting of the Board
- S: To: Jones@BBN-Vax.ARPA
- S:
- S: Bill:
- S: The next meeting of the board of directors will be
- S: on Tuesday.
- S: John.
- S: .
- R: 250 OK
-
- S: QUIT
- R: 221 USC-ISIE.ARPA Service closing transmission channel
-
- Scenario 3
-
--------------------------------------------------------------
-
-
-
-
-Verifying and Sending Scenario
-
--------------------------------------------------------------
-
- R: 220 SU-SCORE.ARPA Simple Mail Transfer Service Ready
- S: HELO MIT-MC.ARPA
- R: 250 SU-SCORE.ARPA
-
- S: VRFY Crispin
- R: 250 Mark Crispin <Admin.MRC@SU-SCORE.ARPA>
-
- S: SEND FROM:<EAK@MIT-MC.ARPA>
- R: 250 OK
-
- S: RCPT TO:<Admin.MRC@SU-SCORE.ARPA>
- R: 250 OK
-
- S: DATA
- R: 354 Start mail input; end with <CRLF>.<CRLF>
- S: Blah blah blah...
- S: ...etc. etc. etc.
- S: .
- R: 250 OK
-
- S: QUIT
- R: 221 SU-SCORE.ARPA Service closing transmission channel
-
- Scenario 4
-
--------------------------------------------------------------
-
-
-
-
-Mailing List Scenario
-
-First each of two mailing lists are expanded in separate sessions
-with different hosts. Then the message is sent to everyone that
-appeared on either list (but no duplicates) via a relay host.
-
--------------------------------------------------------------
-
- Step 1 -- Expanding the First List
-
- R: 220 MIT-AI.ARPA Simple Mail Transfer Service Ready
- S: HELO SU-SCORE.ARPA
- R: 250 MIT-AI.ARPA
-
- S: EXPN Example-People
- R: 250-<ABC@MIT-MC.ARPA>
- R: 250-Fred Fonebone <Fonebone@USC-ISIQ.ARPA>
- R: 250-Xenon Y. Zither <XYZ@MIT-AI.ARPA>
- R: 250-Quincy Smith <@USC-ISIF.ARPA:Q-Smith@ISI-VAXA.ARPA>
- R: 250-<joe@foo-unix.ARPA>
- R: 250 <xyz@bar-unix.ARPA>
-
- S: QUIT
- R: 221 MIT-AI.ARPA Service closing transmission channel
-
-
- Step 2 -- Expanding the Second List
-
- R: 220 MIT-MC.ARPA Simple Mail Transfer Service Ready
- S: HELO SU-SCORE.ARPA
- R: 250 MIT-MC.ARPA
-
- S: EXPN Interested-Parties
- R: 250-Al Calico <ABC@MIT-MC.ARPA>
- R: 250-<XYZ@MIT-AI.ARPA>
- R: 250-Quincy Smith <@USC-ISIF.ARPA:Q-Smith@ISI-VAXA.ARPA>
- R: 250-<fred@BBN-UNIX.ARPA>
- R: 250 <xyz@bar-unix.ARPA>
-
- S: QUIT
- R: 221 MIT-MC.ARPA Service closing transmission channel
-
-
- Step 3 -- Mailing to All via a Relay Host
-
- R: 220 USC-ISIE.ARPA Simple Mail Transfer Service Ready
- S: HELO SU-SCORE.ARPA
- R: 250 USC-ISIE.ARPA
-
- S: MAIL FROM:<Account.Person@SU-SCORE.ARPA>
- R: 250 OK
- S: RCPT TO:<@USC-ISIE.ARPA:ABC@MIT-MC.ARPA>
- R: 250 OK
- S: RCPT TO:<@USC-ISIE.ARPA:Fonebone@USC-ISIQA.ARPA>
- R: 250 OK
- S: RCPT TO:<@USC-ISIE.ARPA:XYZ@MIT-AI.ARPA>
- R: 250 OK
- S: RCPT
- TO:<@USC-ISIE.ARPA,@USC-ISIF.ARPA:Q-Smith@ISI-VAXA.ARPA>
- R: 250 OK
- S: RCPT TO:<@USC-ISIE.ARPA:joe@FOO-UNIX.ARPA>
- R: 250 OK
- S: RCPT TO:<@USC-ISIE.ARPA:xyz@BAR-UNIX.ARPA>
- R: 250 OK
- S: RCPT TO:<@USC-ISIE.ARPA:fred@BBN-UNIX.ARPA>
- R: 250 OK
-
- S: DATA
- R: 354 Start mail input; end with <CRLF>.<CRLF>
- S: Blah blah blah...
- S: ...etc. etc. etc.
- S: .
- R: 250 OK
-
- S: QUIT
- R: 221 USC-ISIE.ARPA Service closing transmission channel
-
- Scenario 7
-
--------------------------------------------------------------
-
-
-
-Too Many Recipients Scenario
-
--------------------------------------------------------------
-
- R: 220 BERKELEY.ARPA Simple Mail Transfer Service Ready
- S: HELO USC-ISIF.ARPA
- R: 250 BERKELEY.ARPA
-
- S: MAIL FROM:<Postel@USC-ISIF.ARPA>
- R: 250 OK
-
- S: RCPT TO:<fabry@BERKELEY.ARPA>
- R: 250 OK
-
- S: RCPT TO:<eric@BERKELEY.ARPA>
- R: 552 Recipient storage full, try again in another transaction
-
- S: DATA
- R: 354 Start mail input; end with <CRLF>.<CRLF>
- S: Blah blah blah...
- S: ...etc. etc. etc.
- S: .
- R: 250 OK
-
- S: MAIL FROM:<Postel@USC-ISIF.ARPA>
- R: 250 OK
-
- S: RCPT TO:<eric@BERKELEY.ARPA>
- R: 250 OK
-
- S: DATA
- R: 354 Start mail input; end with <CRLF>.<CRLF>
- S: Blah blah blah...
- S: ...etc. etc. etc.
- S: .
- R: 250 OK
-
- S: QUIT
- R: 221 BERKELEY.ARPA Service closing transmission channel
-
- Scenario 10
-
--------------------------------------------------------------
-
-Note that a real implementation must handle many recipients as
-specified in Section ##4.5.3.
-
-
-
-APPENDIX G Other gateway issues.
-
-In general, gateways between the Internet and other mail systems
-SHOULD attempt to preserve any layering semantics across the
-boundaries between the two mail systems involved. Gateway-
-translation approaches that attempt to take shortcuts by mapping,
-e.g., envelope information from one system to the message headers or
-body of another have generally proven to be inadequate in important
-ways. Systems translating between environments that do not support
-both envelopes and headers and Internet mail must be written with the
-understanding that some information loss is almost inevitable.
-
-
-
-APPENDIX I: Deprecated features of RFC 821
-
-A few features of RFC 821 have proven to be problematic and should
-not be used in Internet mail. These are:
-
-(1) TURN
-
-This command, described in RFC 821, raises important security issues
-since, in the absence of strong authentication of the host requesting
-that the client and server switch roles, it can easily be used to
-divert mail from its correct destination. Its use is deprecated;
-SMTP systems SHOULD NOT use it unless the server can authenticate the
-client.
-
-
-(2) Source routing
-
-RFC 821 utilized the concept of explicit source routing to get mail
-from one host to another via a series of relays. The requirement to
-utilize source routes in regular mail traffic was eliminated by the
-introduction of the domain name system "MX" record and the last
-significant justification for them was eliminated by the
-introduction, in RFC 1123, of a clear requirement that addresses
-following an "@" must all be fully-qualified domain names.
-Consequently, the only remaining justifications for the use of source
-routes are support for very old SMTP clients or MUAs and in mail
-system debugging. They can, however, still be useful in the latter
-circumstance and for routing mail around serious, but temporary,
-problems such as problems with the relevant DNS records.
-
-SMTP servers MUST continue to accept source route syntax as specified
-in the main body of this document and in RFC 1123. They MAY, if
-necessary, ignore the routes and utilize only the target domain in
-the address. If they do utilize the source route, the message MUST
-be sent to the first domain shown in the address. In particular, a
-server MUST NOT guess at shortcuts within the source route.
-
-Clients SHOULD NOT utilize explicit source routing except under
-unusual circumstances, such as debugging or potentially relaying
-around firewall or mail system configuration errors.
-
-(3) HELO
-
-As discussed in sections ##3.1 and ##4.1.1, EHLO is strongly
-preferred to HELO when the server will accept the former. Servers
-must continue to accept and process HELO in order to support older
-clients.
-
-
-(4) #-literals
-
-RFC 821 provided for specifying an Internet address as a decimal
-integer host number prefixed by a pound sign, "#". In practice, that
-form has been obsolete since the introduction of TCP/IP. It is
-deprecated and MUST NOT be used.
-
-(5) Dates and years
-
-When dates are inserted into messages by SMTP clients or servers
-(e.g., in trace fields), four-digit years MUST BE used. Two-digit
-years are deprecated; three-digit years were never permitted in the
-Internet mail system.
-
-(6) Sending versus mailing
-
-In addition to specifying a mechanism for delivering messages to
-user's mailboxes, RFC 821 provided additional, optional, commands to
-deliver messages directly to the user's terminal screen. These
-commands (SEND, SAML, SOML) were rarely implemented, and changes in
-workstation technology and the introduction of other protocols may
-have rendered them obsolete even where they are implemented.
-
-Clients SHOULD NOT provide SEND, SAML, or SOML as services. Servers
-MAY implement them. If they are implemented by servers, the
-implementation model specified in RFC 821 MUST be used and the
-command names MUST be published in the response to the EHLO command.
-
-
-
-APPENDIX X: Change summary and Loose ends (temporary)
-
-X.1 Change summary
-
-X.1.1 Substantive changes between draft-ietf-drums-smtpupd-00.txt and
-draft-ietf-drums-smtpupd-01.txt
-
-(i) Slightly clarified the discussions of rejection and failure of
-VRFY requests and the associated response codes.
-
-(ii) Slightly clarified the discussion of deferred address
-validation.
-
-(iii) Removed the IPCE terminology and modified the text in section
-##4.1.1.2 to explicitly introduce the "mail gateway" terminology and
-to begin to distinguish a mail gateway from a conventional relay.
-
-(iv) Explicitly noted that SMTP clients for things like POP and IMAP
-may send everything to a single relay for further processing, rather
-than resolving final domain names.
-
-(v) Tightened the RSET discussion.
-
-(vi) Deprecation of 251 only for RCPT (still ok for VRFY)
-
-
-
-X.1.2. Substantive changes between draft-ietf-drums-smtpupd-01.txt
-and draft-ietf-drums-smtpupd-02.txt.
-
-Incorporated additional RFC 1123 material; reorganized several
-sections for clarity. Added definitions and other previous "loose
-end" material.
-
-
-X.1.3. Substantive changes between draft-ietf-drums-smtpupd-02.txt
-and draft-ietf-drums-smtpupd-03.txt.
-
-(i) Eliminated a number of placeholders and tightened some of the
-definitions in section 2. Added a few new placeholders for
-consistency checking against other documents.
-
-(ii) Removed the state diagrams, per direction at IETF Montreal.
-
-(iii) Added new section 6.3, an attempt to summarize WG discussions
-on the "posting" versus "delivery" versus "relay" functions of SMTP
-and on whether "fixups" are appropriate in different cases.
-
-(iv) Inserted section 6.1, a minor rewrite of section 5.3.3 of
-RFC1123.
-
-(v) Added new text to 3.5.5 to discuss the spammer - EXPN
-relationship.
-
-(vi) The "ASCII requirement" in 4.1.1.4 has been tightened somewhat.
-
-(v) The remaining miscellaneous changes agreed to in Montreal have
-been incorporated except as noted below.
-
-
-X.1.4. Substantive changes between draft-ietf-drums-smtpupd-03.txt
-and draft-ietf-drums-smtpupd-04.txt.
-
-Many small changes have been made between these two versions; the
-list that follows is not exhaustive.
-
-(i) To clarify some of the text, definitions have been introduced to
-distinguish among originating, delivery, relay, and gateway SMTP
-systems.
-
-(ii) The role of LF-terminated lines has been clarified.
-
-(iii) Several changes have been made to clarify the principle
-that, no matter what originating and final delivery systems
-might do, relay systems are not permitted to tamper with message
-content, even to "fix" headers that are determined to be
-invalid. If they deem message content to be seriously
-unacceptable, they are encouraged to reject the messages in
-preference to trying to fix them up, but, in general, the theme
-is "don't look/ don't tell".
-
-(iv) A few more definitions have been added to the terminology
-section, and the separate glossary has been eliminated.
-
-(v) I have taken a shot at text to address some of the controversies
-that have raged on the WG mailing list (e.g., sections 7.4 and 7.5).
-Since there was no consensus on most of those topics, I expect that
-the inserted text will satisfy no one except, perhaps, for agreement
-that saying nothing would have been worse. As a mechanism for moving
-forward, the text in these controversial areas that now appears will
-be considered "base"; alterations will be made only if clear
-consensus emerges.
-
-(vi) Per discussion in Los Angeles, source routes have been further
-deprecated.
-
-(vii) Some of the VRFY/EXPN materials have been moved to "security
-considerations", where they appear to belong, some text has been
-added, and the conformance statements adjusted to reflect what I
-perceive to be WG consensus.
-
-(viii) New MX resolution material has been added to section 5. While
-most of this material is from RFC974, the rules have been further
-tightened to reflect current practice and experience (974 is written
-in a somewhat speculative fashion for a standard). In particular,
-the behavior of trying the target host's A RR when MXs existed but
-all of them were eliminated is now prohibited, which seems necessary
-if another of other ideas being recommended or considered are to be
-feasible.
-
-
-X.1.5. Substantive changes between draft-ietf-drums-smtpupd-04.txt
-and draft-ietf-drums-smtpupd-05.txt.
-
-(i) All normative references to RFC 1123 have been removed from the
-main body of the text (some still appear in the appendices where they
-will remain).
-
-(ii) Section 3.5 has been renamed slightly to distinguish between
-"debuging of SMTP implementations" and "debugging of addresses".
-Better terminology would be welcome.
-
-(iii) Error conditions resulting from the DATA command have been
-clarified.
-
-(iv) Section 4.2 (SMTP replies) has been revised and tightened to
-reflect reality and recent discussion on the list.
-
-(v) Appendix E has been revised a bit and moved into section 4.2.1.
-Given the importance of the "check only first digit" rule, it has to
-be there.
-
-(vi) Added new text for "no SMTP service supported" to sections
-3.1, 4.2.2, 4.2.3, and 4.3.2. As noted in 3.1, I'd rather add 521
-(which would work perfectly with the model) rather than overloading
-554.
-
-(vii) The Return-path language in section 4.4 has been cleaned up a
-bit.
-
-(viii) Tightened the "postmaster" language in 4.5.1, requiring a
-small change to 4.1.1.3.
-
-(ix) I have unilaterally (with a little help from my friends),
-increased some of the size limits. 64 was much too short for a
-domain name, and the DNS limit of 255 (?) has now been inserted.
-That leaves the return path much too short, but I haven't fixed it
-(maybe that will cause us to get rid of them). We still have a 64
-character limit on the local-part, which is also *much* too short.
-Votes for 128 or longer limits accepted. See X.1.6(I)
-
-(x) The text on the "recipients buffer" has been rewritten so that (I
-hope) it makes sense and gives some explicit guidance for how clients
-and servers should proceed if limits are imposed.
-
-
-X.1.6. Substantive changes between draft-ietf-drums-smtpupd-05.txt
-and draft-ietf-drums-smtpupd-06.txt.
-
-Most of the changes in this revision have been editorial rather than
-substantive. Major substantive changes include:
-
-(i) The language about maximum sizes of SMTP command lines has been
-reworked, per WG mailing list discussion.
-
-(ii) Several instances of "Should" have been promoted to "Must" when the
-reasons for the weaker rule seemed to have disappeared. In
-particular, the requirement that an SMTP implementation support
-timeouts has become a MUST. Also, conformance to this specification
-requires support of EHLO. Older systems should claim conformance to
-the [to-be-historical] 821, not this specification.
-
-
-X.1.7. Substantive changes between draft-ietf-drums-smtpupd-06.txt
-and draft-ietf-drums-smtpupd-07.txt.
-
-(i) Removed "implied RSET" text associated with QUIT, as specified
-at the December 1997 IETF
-
-(ii) Required that servers support EHLO, as specified at the December
-1997 IETF
-
-
-X.1.8. Substantive changes between draft-ietf-drums-smtpupd-07.txt
-and draft-ietf-drums-smtpupd-08.txt.
-
-This version involves mostly editorial work and cleanup of loose
-ends.
-
-(i) Error code presentation has been restructured.
-
-(ii) ABNF conversion done
-
-(iii) IPv6 address format inserted per RFC 1884, since we could not
-get clear agreement on an alternative.
-
-(iv) Trivial, silly, examples removed. Others not yet renumbered.
-
-(v) 3.5.2 and 4.1.1 altered slightly per Eric Allman's notes. Eric
-may not like the way I've done either of these change very much: the
-first now makes the distinction between returning an address and
-returning other stuff (which was permitted by -06, but the text
-wasn't as clear as it should have been): if it looks like an address,
-it needs to be an address. Similarly, with 4.1.1, Eric wanted to
-explicitly permit/legitimize "DATA <SP> <CRLF>". I see several
-disadvantages to doing that, so have inserted language that
-encourages receivers to tolerate trailing white space, which may have
-the same practical effect.
-
-
-
-
-
-X.2 Loose ends
-
-(i) The 821 BNF -> ABNF transition needs careful checking.
-
-(ii) Most remaining examples are not yet revised, overview and
-grammar are still to be merged. Examples need to be renumbered and
-cross references need to be checked.
-
-(iii) Trace field discussion should be checked carefully,
-particularly since the syntax given is slightly different from 821.
-Provision has been made, reflecting some current practice, for
-(optional) fractional seconds in time stamps.
-
-(iv) The Appendices have not yet been numbered consecutively. Note
-that Appendix X is temporary and is not expected to appear in any
-final publication.
-
-(v) See X.1.5(ix), above.
-
-(vi) Remaining syntax differences and redundancies wrt 822bis (see
-note on section 4.1.2). Note that the use of "Atom" for extension
-parameter keywords is slightly different from the specification in
-RFC 1869.
-
-(vii) We don't have a satisfactory definition for "link" as in
-"Received:.. via <link>" and, if there is a registry, I can't find
-it. Needs to be fixed somehow.
diff --git a/Documentation/en/I-D/draft-ietf-drums-smtpupd-08.txt b/Documentation/en/I-D/draft-ietf-drums-smtpupd-08.txt
deleted file mode 100644
index 8124c110..00000000
--- a/Documentation/en/I-D/draft-ietf-drums-smtpupd-08.txt
+++ /dev/null
@@ -1,3574 +0,0 @@
-INTERNET-DRAFT John C. Klensin, Editor
-Expires in six months
-August 4, 1998
-
-
- Simple Mail Transfer Protocol
-
- draft-ietf-drums-smtpupd-08.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 view the entire list of current Internet-Drafts, please check the
-"1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
-Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern Europe),
-ftp.nis.garr.it (Southern Europe), munnari.oz.au (Pacific Rim),
-ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast).
-
-[[Sections marked with doubled brackets (e.g., "<<") are explicit
-placeholders or known major loose ends. Please review these ASAP. The
-sections with these placeholders are 4.1.1.1, 4.1.2, 4.4, 8, and X.2.]]
-
-[[Appendix X will be removed before the document is submitted to the
-IESG.]]
-
-[[If consensus is reached on this document, it will be forwarded to the
-IESG with the recommendation that it be processed onto the Standards
-track.]]
-
-Copyright Notice
-
-Copyright (C) The Internet Society (1998). All Rights Reserved.
-
- Table of Contents
-
-0. Abstract
-
-1. Introduction
-
-2. The SMTP Model
-2.1 Basic Structure
-2.2 The Extension Model
-2.2.1 Background
-2.2.2 Definition and Registration of Extensions
-2.3 Terminology
-2.3.1 Mail Objects
-2.3.2 Senders and Receivers
-2.3.3 Mail Agents
-2.3.4 Host
-2.3.5 Domain
-2.3.6 Buffer and State Table
-2.3.7 Lines
-2.3.8 Originator, Delivery, Relay, and Gateway Systems
-2.3.9 Message Content and Mail Data
-2.3.10 Mailbox and Address
-2.3.11 Reply
-2.4 Syntax Principles
-2.4.1 General Syntax and Transaction Model
-2.4.2 Command and Reply Syntax
-
-3. The SMTP Procedures: An Overview
-3.1 Session Initiation
-3.2 Client Initiation
-3.3 Mail Transactions
-3.4 Forwarding for Address Correction or Updating
-3.5 Commands for Debugging Addresses
-3.5.1 Overview
-3.5.2 VRFY Normal Response
-3.5.3 Meaning of VRFY or EXPN Success Response
-3.5.4 Semantics and Applications of EXPN
-3.6 Domains
-3.7 Relaying
-3.8 Mail Gatewaying
-3.8.1 Header Fields in Gatewaying
-3.8.2 Received Lines in Gatewaying
-3.8.3 Addresses in Gatewaying
-3.8.4 Other Header Fields in Gatewaying
-3.8.5 Envelopes in Gatewaying
-3.9 Terminating Sessions and Connections
-3.10 Mailing Lists and Aliases
-3.10.1 Alias
-3.10.2 List
-
-4. The SMTP Specifications
-4.1 SMTP Commands
-4.1.1 Command Semantics and Syntax
-4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)
-4.1.1.2 MAIL (MAIL)
-4.1.1.3 RECIPIENT (RCPT)
-4.1.1.4 DATA (DATA)
-4.1.1.5 RESET (RSET)
-4.1.1.6 VERIFY (VRFY)
-4.1.1.7 EXPAND (EXPN)
-4.1.1.8 HELP (HELP)
-4.1.1.9 NOOP (NOOP)
-4.1.1.10 QUIT (QUIT)
-4.1.2 Lower-level Syntax
-4.1.3 Address Literals
-4.1.4 Order of Commands
-4.1.5 Private-use Commands
-4.2 SMTP Replies
-4.2.1 Reply Code Severities and Theory
-4.2.2 Reply Codes by Function Groups
-4.2.3 Reply Codes in Numeric Order
-4.2.4 Reply Code 502
-4.2.5 Reply Codes After DATA and the Subsequent <CRLF>.<CRLF>
-4.3 Sequencing of Commands and Replies
-4.3.1 Sequencing Overview
-4.3.2 Command-Reply Sequences
-4.4 Trace Information
-4.5 Additional Implementation Issues
-4.5.1 Minimum Implementation
-4.5.2 Transparency
-4.5.3 Sizes and Timeouts
-4.5.4 Queuing Strategies
-4.5.4.1 Sending Strategy
-4.5.4.2 Receiving Strategy
-
-5. Address Resolution and Mail Handling
-
-6. Problem Detection and Handling
-6.1 Reliable Delivery and Replies by Email
-6.2 Loop Detection
-6.3 Compensating for Irregularities
-
-7. Security Considerations
-7.1 Mail Security and Spoofing
-7.2 "Blind" Copies
-7.3 VRFY, EXPN, and Security
-7.4 Information Disclosure in Announcements
-7.5 Information Disclosure in Trace Fields
-7.6 Scope of Operation of SMTP Servers
-
-8. IANA Considerations
-
-9. References
-
-10. Editors' Addresses
-
-11. Acknowledgments
-
-A. TCP Transport Service
-B. Generating SMTP Commands from RFC 822 Headers
-C. Source Routes
-D. Scenarios
-E. Other Gateway Issues
-F. Deprecated Features of RFC 821
-X. Change Summary and Loose Ends (Temporary)
-
-
-0. Abstract
-
-This document is a self-contained specification of the basic protocol for
-the Internet electronic mail transport, consolidating and updating:
-
- - the original SMTP specification of RFC 821 [RFC-821],
-
- - domain name system requirements and implications for mail transport from
- RFC 1035 [RFC-DNS] and RFC 974 [RFC-974],
-
- - the clarifications and applicability statements in RFC 1123 [RFC-1123],
- and
-
- - material drawn from the SMTP Extension mechanisms [SMTPEXT].
-
-It replaces RFC 821, RFC 974, and the mail transport materials of RFC 1123.
-However, RFC 821 specifies some features that are not in significant use in
-the Internet of the mid-1990s and (in appendices) some additional transport
-models. Those sections are omitted here in the interest of clarity and
-brevity; readers needing them should refer to RFC 821.
-
-It also includes some additional material from RFC 1123 that required
-amplification. This material has been identified in multiple ways, mostly
-by tracking flaming on various lists and newsgroups and problems of unusual
-readings or interpretations that have turned up as the SMTP extensions have
-been deployed. Where this specification moves beyond consolidation and
-actually differs from earlier documents, it supersedes them technically as
-well as textually.
-
-Although SMTP was designed as a mail transport and delivery protocol, this
-specification also contains information that is important to its use as a
-"mail posting" protocol, as recommended for POP [RFC-POP2, RFC-POP3] and
-IMAP [RFC-IMAP4].
-
-Section 2.3 provides definitions of terms specific to this document. Except
-when the historical terminology is necessary for clarity, this document
-uses the current "client" and "server" terminology to identify the sending
-and receiving SMTP processes, respectively.
-
-A companion document discusses message headers, message bodies and formats
-and structures for them, and their relationship - [MSGFMT].
-
-
-1. Introduction
-
-The objective of the Simple Mail Transfer Protocol (SMTP) is to transfer
-mail reliably and efficiently.
-
-SMTP is independent of the particular transmission subsystem and requires
-only a reliable ordered data stream channel. While this document
-specifically discusses transport over TCP, other transports are possible.
-Appendices to RFC 821 describe some of them.
-
-An important feature of SMTP is its capability to transport mail across
-transport service environments, usually referred to as "SMTP mail relaying"
-(see section 3.8). A transport service environment might consist of the
-mutually-TCP-accessible hosts on the public Internet, the
-mutually-TCP-accessible hosts on a firewall-isolated private TCP/IP
-Intranet, or hosts in some other LAN or WAN environment utilizing a
-different transport-level protocol. It is important to realize that
-"transport service environments" are one-to-one with usual definitions of
-"networks". A process can communicate directly with another process, and
-transport mail using this protocol, through any mutually known and
-connected transport service. Conversely, mail can be relayed or gatewayed
-between processes in two different transport service environments by a
-process known and connected to each of the two transport service
-environments. The Mail eXchanger mechanisms of the domain name system
-[RFC-DNS, and section 5 of this document] allows the identity of hosts
-supporting SMTP relay and gateway processes to be specified.
-
-
-2. The SMTP Model
-
-2.1 Basic Structure
-
-The SMTP design can be pictured as:
-
- +----------+ +----------+
- +------+ | | | |
- | User |<-->| | SMTP | |
- +------+ | Sender- |Commands/Replies| Receiver-|
- +------+ | SMTP |<-------------->| SMTP | +------+
- | File |<-->| | and Mail | |<-->| File |
- |System| | | | | |System|
- +------+ +----------+ +----------+ +------+
- SMTP client SMTP server
-
-When an SMTP client has a message to transmit, it establishes a two-way
-transmission channel to an SMTP server. The role of an SMTP client is to
-transfer mail messages to one or more SMTP servers, or report its failure
-to do so.
-
-The means by which a mail message is transferred to an SMTP client, and how
-that client determines the domain name(s) to which mail messages are to be
-transferred is a local matter, and is not addressed by this document. In
-some cases, the domain name(s) transferred to, or determined by, an SMTP
-client will identify the final destination(s) of the mail message. In other
-cases, common with SMTP clients associated with implementations of the POP
-[RFC-POP2, RFC-POP3] or IMAP [RFC-IMAP4] protocols, or when the SMTP client
-is inside an isolated transport service environment, the domain name
-determined will identify an intermediate destination through which all mail
-messages are to be relayed. SMTP clients that transfer all traffic,
-regardless of the target domain names associated with the individual
-messages, or that do not maintain queues for retrying message transmissions
-that initially cannot be completed, may otherwise conform to this
-specification but are not considered fully-capable. Fully-capable SMTP
-implementations, including the relays used by these less capable ones, and
-their destinations, are expected to support all of the queuing, retrying,
-and alternate address functions discussed in this specification.
-
-The means by which an SMTP client, once it has determined a target domain
-name, determines the identity of an SMTP server to which a copy of a
-message is to be transferred, and then performs that transfer, is covered
-by this document. To effect a mail transfer to an SMTP server, an SMTP
-client establishes a two-way transmission channel to that SMTP server. An
-SMTP client determines the address of an appropriate host running an SMTP
-server by resolving a destination domain name to either an intermediate
-Mail eXchanger host or a final target host.
-
-An SMTP server may be either the ultimate destination or an intermediate
-"relay" (that is, it may assume the role of an SMTP client after receiving
-the message) or "gateway" (that is, it may transport the message further
-using some protocol other than SMTP). SMTP commands are generated by the
-SMTP client and sent to the SMTP server. SMTP replies are sent from the
-SMTP server to the SMTP client in response to the commands.
-
-Once the transmission channel is established and initial handshaking
-completed, the SMTP client normally initiates a mail transaction. Such a
-transaction consists of a series of commands to specify the originator and
-destination of the mail and transmission of the message content (including
-any headers or other structure) itself. When the same message is sent to
-multiple recipients, this protocol encourages the transmission of only one
-copy of the data for all recipients at the same destination (or
-intermediate relay) host.
-
-The server responds to each command with a reply; replies may indicate that
-the command was accepted, that additional commands are expected, or that a
-temporary or permanent error condition exists. Commands specifying the
-sender or recipients may include server-permitted SMTP service extension
-requests as discussed in section 2.2. The dialog is purposely lock-step,
-one-at-a-time, although this can be modified by mutually-agreed extension
-requests such as in [RFC-Pipeline].
-
-Once a given mail message has been transmitted, the client may either
-request that the connection be shut down or may initiate other mail
-transactions. In addition, an SMTP client may use a connection to an SMTP
-server for ancillary services such as verification of email addresses or
-retrieval of mailing list subscriber addresses.
-
-As suggested above, this protocol provides mechanisms for the transmission
-of mail. This transmission normally occurs directly from the sending
-user's host to the receiving user's host when the two hosts are connected
-to the same transport service. When they are not connected to the same
-transport service, transmission occurs via one or more relay SMTP servers.
-An intermediate host that acts as either an SMTP relay or as a gateway into
-some other transmission environment is usually selected through the use of
-the domain name service (DNS) Mail eXchanger mechanism.
-
-To provide relay capability, the SMTP server is supplied with the name of
-the ultimate destination host as well as the destination mailbox name.
-Usually, intermediate hosts are determined via the DNS MX record, not by
-explicit "source" routing (see appendices C and F.2).
-
-2.2 The Extension Model
-
-2.2.1 Background
-
-In an effort that started in 1990, approximately a decade after RFC 821 was
-completed, the protocol was modified with a "service extensions" model that
-permits the client and server to agree to utilize shared functionality
-beyond the original SMTP requirements. The SMTP extension mechanism defines
-a means whereby an extended SMTP client and server may recognize each
-other, and the server can inform the client as to the service extensions
-that it supports.
-
-Contemporary SMTP implementations MUST support the basic extension
-mechanisms. For instance, servers MUST support the EHLO command even if
-they do not implement any specific extensions and clients SHOULD
-preferentially utilize EHLO rather than HELO. (However, for compatibility
-with older conforming implementations, SMTP clients and servers MUST
-support the original HELO mechanisms as a fallback.) Unless the different
-characteristics of HELO must be identified for interoperability purposes,
-this document discusses only EHLO.
-
-SMTP is widely deployed and high-quality implementations have proven to be
-very robust. However, the Internet community now considers some services to
-be important that were not anticipated when the protocol was first
-designed. If support for those services is to be added, it must be done in
-a way that permits older implementations to continue working acceptably.
-The extension framework consists of:
-
- - The SMTP command EHLO, superseding the earlier HELO,
-
- - a registry of SMTP service extensions,
-
- - additional parameters to the SMTP MAIL FROM and RCPT TO commands, and
-
- - optional replacements for verbs defined in this protocol, such as for
- DATA (see [RFC-BDAT]).
-
-SMTP's strength comes primarily from its simplicity. Experience with many
-protocols has shown that protocols with few options tend towards ubiquity,
-whereas protocols with many options tend towards obscurity.
-
-Each and every extension, regardless of its benefits, must be carefully
-scrutinized with respect to its implementation, deployment, and
-interoperability costs. In many cases, the cost of extending the SMTP
-service will likely outweigh the benefit.
-
-2.2.2 Definition and Registration of Extensions
-
-The IANA maintains a registry of SMTP service extensions. A corresponding
-EHLO keyword value is associated with each extension. Each service
-extension registered with the IANA must be defined in a formal
-standards-track or IESG-approved experimental protocol document. The
-definition must include:
-
- - the textual name of the SMTP service extension;
-
- - the EHLO keyword value associated with the extension;
-
- - the syntax and possible values of parameters associated with the
- EHLO keyword value;
-
- - any additional SMTP verbs associated with the extension (additional
- verbs will usually be, but are not required to be, the same as the
- EHLO keyword value);
-
- - any new parameters the extension associates with the MAIL FROM or
- RCPT TO verbs;
-
- - a description of how support for the extension affects the behavior
- of a server and client SMTP; and,
-
- - the increment by which the extension is increasing the maximum
- length of the commands MAIL FROM and/or RCPT TO, over that specified
- in RFC 821.
-
-In addition, any EHLO keyword value starting with an upper or lower case
-"X" refers to a local SMTP service extension used exclusively through
-bilateral agreement. Keywords beginning with "X" MUST NOT be used in a
-registered service extension. Conversely, keyword values presented in the
-EHLO response that do not begin with "X" MUST correspond to a standard,
-standards-track, or IESG-approved experimental SMTP service extension
-registered with IANA. A conforming server MUST NOT offer non-"X"-prefixed
-keyword values that are not described in a registered extension.
-
-Additional verbs and parameter names are bound by the same rules as EHLO
-keywords; specifically, verbs beginning with "X" are local extensions that
-may not be registered or standardized. Conversely, verbs not beginning
-with "X" must always be registered.
-
-2.3 Terminology
-
-Most of the terminology in this document is common in the Internet at the
-time of its writing. However, the following terms and concepts are used in
-special ways here, or represent differences in terminology between RFC 821
-and this document, and should be understood before reading further. These
-definitions are normative, that is, they contain specifications to which
-SMTP implementations are required to conform.
-
-2.3.1 Mail Objects
-
-SMTP transports a mail object. A mail object contains an envelope and
-content.
-
-The SMTP envelope is sent as a series of SMTP protocol units (described in
-section 3). It consists of an originator address (to which error reports
-should be directed); a delivery mode (e.g., deliver to recipient
-mailboxes); one or more recipient addresses; and optional protocol
-extension material.
-
-The SMTP content is sent in the SMTP DATA protocol unit and has two parts:
-the headers and the body. If the content conforms to existing standards,
-the headers form a collection of field/value pairs structured as described
-in [MSGFMT]; the body, if structured, is defined according to MIME
-[RFC-MIME]. The content is textual in nature, expressed using the US-ASCII
-repertoire [US-ASCII]. Although SMTP extensions (such as [8BitMIME]) may
-relax this restriction for the content body, the content headers are always
-encoded using the US-ASCII repertoire. The algorithm defined in
-[RFC-INTLHDR] is used to represent header values outside the US-ASCII
-repertoire, while still encoding them using the US-ASCII repertoire.
-
-2.3.2 Senders and Receivers
-
-In RFC 821, the two hosts participating in an SMTP transaction were
-described as the "SMTP-sender" and "SMTP-receiver". This document has been
-changed to reflect current industry terminology and hence refers to them as
-the "SMTP client" (or sometimes just "the client") and "SMTP server" (or
-just "the server"), respectively. Since a given host may act both as
-server and client in a relay situation, "receiver" and "sender" terminology
-is still used where needed for clarity.
-
-2.3.3 Mail Agents
-
-Additional mail system terminology became common after RFC 821 was
-published and, where convenient, is used in this specification. In
-particular, SMTP servers and clients provide a mail transport service and
-therefore act as Mail Transfer Agents (MTAs). Mail User Agents (MUAs or
-UAs) are normally thought of as the sources and targets of mail. At the
-source, an MUA might collect mail to be transmitted from a user and hand it
-off to an MTA; the final ("delivery") MTA would be thought of as handing
-the mail off to an MUA (or at least transferring responsibility to it).
-However, while these terms are used with at least the appearance of great
-precision in other environments, the implied boundaries between MUAs and
-MTAs often do not accurately match common, and conforming, practices with
-Internet mail. Hence, the reader should be cautious about inferring the
-strong relationships and responsibilities that might be implied if these
-terms were used elsewhere.
-
-2.3.4 Host
-
-For the purposes of this specification, a host is a computer system
-attached to the Internet (or, in some cases, to a private TCP/IP network)
-and supporting the SMTP protocol. Hosts are known by names (see "domain");
-identifying them by numerical address is discouraged.
-
-2.3.5 Domain
-
-A domain (or domain name) consists of one or more dot-separated components,
-each consisting of a sequence of letters, digits, and hyphens. Domain
-names are used as names of hosts and of other entities in the domain name
-hierarchy. For example, a domain may refer to an alias (label of a CNAME
-RR) or the label of Mail eXchanger records to be used to deliver mail
-instead of representing a host name. See [RFC-DNS] and section 5.
-
-The domain name, as described in this document and in [RFC-DNS], is the
-entire, fully-qualified name (often referred to as an "FQDN"). A domain
-name that is not in FQDN form is no more than a local alias. Local aliases
-MUST NOT appear in any SMTP transaction.
-
-2.3.6 Buffer and State Table
-
-SMTP sessions are stateful, with both parties carefully maintaining a
-common view of the current state. In this document we model this state by
-a virtual "buffer" and a "state table" on the server which may be used by
-the client to, for example, "clear the buffer" or "reset the state table,"
-causing the information in the buffer to be discarded and the state to be
-returned to some previous state
-
-2.3.7 Lines
-
-SMTP commands and, unless altered by a service extension, message data, are
-transmitted in "lines". Lines consist of zero or more data characters
-terminated by the sequence ASCII character "CR" (hex value 0D) followed
-immediately by ASCII character "LF" (hex value 0A). This termination
-sequence is denoted as <CRLF> in this document. Conforming implementations
-MUST NOT recognize or generate any other character or character sequence as
-a line terminator.
-
-2.3.8 Originator, Delivery, Relay, and Gateway Systems
-
-This specification makes a distinction among four types of SMTP systems,
-based on the role those systems play in transmitting electronic mail. An
-"originating" system (sometimes called an SMTP originator) introduces mail
-into the Internet or, more generally, into a transport service environment.
-A "delivery" SMTP system is one that receives mail from a transport service
-environment and hands it to a mail user agent or deposits it in a message
-store which a mail user agent is expected to subsequently access. A
-"relay" SMTP system (usually referred to just as a "relay") receives mail
-from an SMTP client and transmits it, without modification to the message
-data other than adding trace information, to another SMTP server for
-further relaying or for delivery.
-
-A "gateway" SMTP system (usually referred to just as a "gateway") receives
-mail from a client system in one transport environment and transmits it to
-a server system in another transport environment. Differences in protocols
-or message semantics between the transport environments on either side of a
-gateway may require that the gateway system perform transformations to the
-message that are not permitted to SMTP relay systems.
-
-2.3.9 Message Content and Mail Data
-
-The terms "message content" and "mail data" are used interchangeably in
-this document to describe the material transmitted after the DATA command
-is accepted and before the end of data indication is transmitted. Message
-content includes message headers and the possibly-structured message body.
-The MIME specification [RFC-MIME] provides the Standard mechanisms for
-structured message bodies.
-
-2.3.10 Mailbox and Address
-
-As used in this specification, an "address" is a character string that
-identifies a user to whom mail will be sent or a location into which mail
-will be deposited. The term "mailbox" refers to that depository. The two
-terms are typically used interchangeably unless the distinction between the
-location in which mail is placed (the mailbox) and a reference to it (the
-address) is important. An address normally consists of user and domain
-specifications. The standard mailbox naming convention is defined to be
-"local-part@domain": contemporary usage permits a much broader set of
-applications than simple "user names" and, consequently, the local-part is
-interpreted and assigned semantics only by the host specified in the domain
-part of the address.
-
-2.3.11 Reply
-
-An SMTP reply is an acknowledgment (positive or negative) sent from
-receiver to sender via the transmission channel in response to a command.
-The general form of a reply is a numeric completion code (indicating
-failure or success) followed by a text string. The codes are for use by
-programs and the text is usually intended for human users.
-
-2.4 Syntax Principles
-
-2.4.1 General Syntax and Transaction Model
-
-SMTP commands and replies have a rigid syntax. All commands begin with a
-four letter command verb. All Replies begin with a three digit numeric
-code. In some commands and replies, arguments MUST follow the verb or reply
-code. Some commands do not accept arguments (after the verb), and some
-reply codes are followed, sometimes optionally, by free form text. In both
-cases, where text appears, it is separated from the verb or reply code by a
-<SP>. Complete definitions of commands and replies appear in section 4.
-
-Verbs and argument values are not case sensitive, with the sole exception
-of a mailbox local-part. That is, a command verb, an argument value other
-than a mailbox local-part, and free form text MAY be encoded in upper case,
-lower case, or any mixture of upper and lower case with no impact on its
-meaning. This is NOT true of a mailbox local-part. The local-part of a
-mailbox MUST BE treated as case sensitive. Therefore, SMTP implementations
-MUST take care to preserve the case of mailbox local-parts. Mailbox
-domains are not case sensitive. However, exploiting the case sensitivity
-of mailbox local-parts impedes interoperability and is discouraged.
-
-Commands and replies are composed of characters from the ASCII character
-set [US-ASCII]. When the transport service provides an 8-bit byte (octet)
-transmission channel, each 7-bit character is transmitted right justified
-in an octet with the high order bit cleared to zero. More specifically, the
-unextended SMTP service provides seven bit transport only. An originating
-SMTP client which has not successfully negotiated an appropriate extension
-with a particular server MUST NOT transmit messages with information in the
-high-order bit of octets. If such messages are transmitted in violation of
-this rule, receiving SMTP servers MAY clear the high-order bit or reject
-the message as invalid. In general, a relay SMTP SHOULD assume that the
-message content it has received is valid and, assuming that the envelope
-permits doing so, relay it without inspecting that content. Of course, if
-the content is mislabeled and the data path cannot accept the actual
-content, this may result in ultimate delivery of a severely garbled message
-to the recipient. Delivery SMTP systems MAY reject ("bounce") such
-messages rather than deliver them. No sending SMTP system is permitted to
-send envelope commands in any character set other than US-ASCII; receiving
-systems SHOULD reject such commands, normally using "500 syntax error -
-invalid character" replies.
-
-Eight-bit message content transmission MAY be requested of the server by a
-client using extended SMTP facilities, notably the "8BITMIME" extension
-[8BITMIME]. 8BITMIME SHOULD be supported by SMTP servers. However, it MUST
-not be construed as authorization to transmit unrestricted eight bit
-material. 8BITMIME MUST NOT be requested by senders for material with the
-high bit on that is not in MIME format with an appropriate content-transfer
-encoding; servers MAY reject such messages.
-
-The metalinguistic notation used in this document corresponds to the
-"Augmented BNF" used in other Internet mail system documents. The reader
-who is not familiar with that syntax should consult [ABNF]. Metalanguage
-terms used in running text are surrounded by pointed brackets (e.g.,
-<CRLF>) for clarity.
-
-2.4.2 Command and Reply Syntax
-
-The commands consist of a command verb followed by an argument field.
-Command verbs are four alphabetic characters and are case insensitive.
-
-This also applies to any symbols representing parameter values, such as
-"TO" or "to" for the forward-path. Command verbs and the argument fields
-are separated by one or more spaces. However, case is important in the
-local-part within the reverse-path and forward-path arguments. In
-particular, for some hosts the user "smith" is different from the user
-"Smith".
-
-A few SMTP servers, in violation of this specification (and RFC 821)
-require that command verbs and certain argument text (such as the
-forward-path and reverse-path in RCPT and MAIL commands) be encoded by
-clients in upper case. Implementations MAY wish to employ this encoding to
-accommodate those servers.
-
-The argument field consists of a variable length character string ending
-with the character sequence <CRLF>. The receiver will take no action until
-this sequence is received.
-
-The syntax for each command is shown with the discussion of that command.
-Common elements and parameters are shown in section 4.1.2.
-
-
-3. The SMTP Procedures: An Overview
-
-This section contains descriptions of the procedures used in SMTP: session
-initiation, the mail transaction, forwarding mail, verifying mailbox names
-and expanding mailing lists, and the opening and closing exchanges.
-Comments on relaying, a note on mail domains, and a discussion of changing
-roles are included at the end of this section. Several complete scenarios
-are presented in appendix D.
-
-3.1 Session Initiation
-
-An SMTP session is initiated when a client opens a connection to a server
-and the server responds with an opening message.
-
-SMTP server implementations MAY include identification of their software
-and version information in the connection greeting reply after the 220
-code, a practice that permits more efficient isolation and repair of any
-problems. Implementations MAY make provision for SMTP servers to disable
-the software and version announcement where it causes security concerns.
-While some systems also identify their contact point for mail problems,
-this is not a substitute for maintaining the required "postmaster" address
-(see [MSGFMT]).
-
-The SMTP protocol allows a server to formally reject a transaction while
-still allowing the initial connection as follows: a 554 response MAY be
-given in the initial connection opening message instead of the 220. A
-server taking this approach MUST still wait for the client to send a QUIT
-(see section 4.1.1.10) before closing the connection and SHOULD respond to
-any intervening commands with "503 bad sequence of commands". Since an
-attempt to make an SMTP connection to such a system is probably in error, a
-server returning a 554 response on connection opening SHOULD provide enough
-information in the reply text to facilitate debugging of the sending
-system.
-
-3.2 Client Initiation
-
-Once the server has sent the welcoming message and the client has received
-it, the client then sends the EHLO command to the server, indicating the
-client's identity. In addition to opening the session, use of EHLO
-indicates that the client is able to process service extensions and
-requests that the server provide a list of the extensions it supports.
-Older SMTP systems, unable to support service extensions, MAY use HELO
-instead of EHLO. Servers MUST NOT return the extended EHLO-style response
-to a HELO command.
-
-In the EHLO command the host sending the command identifies itself; the
-command may be interpreted as saying "Hello, I am <domain>" (and, in the
-case of EHLO, "and I support service extension requests").
-
-3.3 Mail Transactions
-
-There are three steps to SMTP mail transactions. The transaction starts
-with a MAIL command which gives the sender identification. A series of one
-or more RCPT commands follows giving the receiver information. Then a DATA
-command initiates transfer of the mail data and is terminated by the "end
-of mail" data indicator, which also confirms the transaction.
-
-The first step in the procedure is the MAIL command.
-
- MAIL <SP> FROM:<reverse-path> [ <SP> <mail-parameters> ] <CRLF>
-
-This command tells the SMTP-receiver that a new mail transaction is
-starting and to reset all its state tables and buffers, including any
-recipients or mail data. The <reverse-path> contains the source mailbox,
-which can be used to report errors (see section 4.2 for a discussion of
-error reporting). If accepted, the SMTP server returns a 250 OK reply. If
-the mailbox specification is not acceptable for some reason, the server
-MUST return a reply indicating whether the failure is permanent (i.e., will
-occur again if the client tries to send the same address again) or
-temporary (i.e., the address might be accepted if the client tries again
-later). Despite the apparent scope of this requirement, there are
-circumstances in which the acceptability of the reverse-path may not be
-determined until one or more forward-paths (in RCPT commands) can be
-examined. In those cases, the server MAY reasonably accept the
-reverse-path (with a 250 reply) and then report problems after the
-forward-paths are received and examined. Normally, failures produce 550 or
-553 replies.
-
-Historically, the <reverse-path> can contain more than just a mailbox,
-however, contemporary systems SHOULD NOT use source routing (see appendix
-C).
-
-The optional <mail-parameters> are associated with negotiated SMTP service
-extensions (see section 2.2).
-
-The second step in the procedure is the RCPT command.
-
- RCPT <SP> TO:<forward-path> [ <SP> <rcpt-parameters> ] <CRLF>
-
-This command gives a forward-path (normally a mailbox and domain)
-identifying one recipient. If accepted, the SMTP server returns a 250 OK
-reply and stores the forward-path. If the recipient is known not to be a
-deliverable address, the SMTP server returns a 550 reply, typically with a
-string such as "no such user - " and the mailbox name (other circumstances
-and reply codes are possible). This step of the procedure can be repeated
-any number of times.
-
-The <forward-path> can contain more than just a mailbox. Historically, the
-<forward-path> can be a source routing list of hosts and the destination
-mailbox, however, contemporary SMTP clients SHOULD NOT utilize source
-routes (see appendix C). Servers MUST be prepared to encounter a list of
-source routes in the forward path, but SHOULD ignore the routes or MAY
-decline to support the relaying they imply. Similarly, servers MAY decline
-to accept mail that is destined for other hosts or systems. These
-restrictions make a server useless as a relay for clients that do not
-support full SMTP functionality. Consequently, restricted-capability
-clients MUST NOT assume that any SMTP server on the Internet can be used as
-their mail processing (relaying) site. If RCPT TO appears without a
-previous MAIL FROM, the server MUST return a 503 "Bad sequence of commands"
-response. The optional <rcpt-parameters> are associated with negotiated
-SMTP service extensions (see section 2.2).
-
-The third step in the procedure is the DATA command (or some alternative
-specified in a service extension).
-
- DATA <CRLF>
-
-If accepted, the SMTP server returns a 354 Intermediate reply and considers
-all succeeding lines up to but not including the end of mail data indicator
-to be the message text. When the end of text is successfully received and
-stored the SMTP-receiver sends a 250 OK reply.
-
-Since the mail data is sent on the transmission channel, the end of mail
-data must be indicated so that the command and reply dialog can be resumed.
-SMTP indicates the end of the mail data by sending a line containing only a
-"." (period or full stop). A transparency procedure is used to prevent
-this from interfering with the user's text (see section 4.5.2).
-
-The end of mail data indicator also confirms the mail transaction and tells
-the SMTP server to now process the stored recipients and mail data. If
-accepted, the SMTP server returns a 250 OK reply. The DATA command can fail
-in only two ways:
-
- - If there was no MAIL FROM, or no RCPT TO, command, or all such commands
- were rejected, the server MAY return a "command out of sequence" (503)
- reply. If that reply is received, the client MUST NOT send the message
- data; more generally, message data MUST NOT be sent unless a 354 reply
- is received.
-
- - If the verb is initially accepted and the 354 reply issued, the DATA
- command should fail only if the mail transaction was incomplete (for
- example, no recipients), or if resources were unavailable.
-
-However, in practice, some servers do not perform recipient verification
-until after the message text is received. These servers SHOULD treat a
-failure for one or more recipients as a "subsequent failure" and return a
-mail message as discussed in section 6. Using a "550 mailbox not found"
-(or equivalent) reply code after the data are accepted makes it difficult
-or impossible for the client to determine which recipients failed.
-
-When RFC 822 format is being used, the mail data include the memo header
-items such as Date, Subject, To, Cc, From [MSGFMT]. Server SMTP systems
-SHOULD NOT reject messages based on perceived defects in the RFC 822 or
-MIME [RFC-MIME] message header or message body. In particular, they MUST
-NOT reject messages in which the numbers of Resent- fields do not match or
-Resent-to appears without Resent-from and/or Resent-date.
-
-Mail transaction commands MUST be used in the order discussed above.
-
-3.4 Forwarding for Address Correction or Updating
-
-Forwarding support is most often required to consolidate and simplify
-addresses within, or relative to, some enterprise and less frequently to
-establish addresses to link a person's prior address with current one.
-Silent forwarding of messages (without server notification to the sender),
-for security or non-disclosure purposes, is common in the contemporary
-Internet.
-
-In both the enterprise and the "new address" cases, information
-hiding (and sometimes security) considerations argue against exposure
-of the "final" address through the SMTP protocol as a side-effect of
-the forwarding activity. This may be especially important when the
-final address may not even be reachable by the sender. Consequently,
-the "forwarding" mechanisms described in section 3.2 of RFC 821, and
-especially the 251 (corrected destination) reply code from RCPT TO
-are deprecated: Servers SHOULD NOT provide that service or return
-that code.
-
-3.5 Commands for Debugging Addresses
-
-3.5.1 Overview
-
-SMTP provides commands to verify a user name or obtain the content of a
-mailing list. This is done with the VRFY and EXPN commands, which have
-character string arguments. Implementations MUST support VRFY and SHOULD
-support EXPN (however, see section 3.5.2 and 7.3).
-
-For the VRFY command, the string is a user name or a user name and domain
-(see below). If a normal (i.e., 250) response is returned, the response MAY
-include the full name of the user and MUST include the mailbox of the user.
-It MUST be in either of the following forms:
-
- User Name <local-part@domain>
- local-part@domain
-
-When a name that is the argument to VRFY could identify more than one
-mailbox, the server MAY either note the ambiguity or identify the
-alternatives. In other words, any of the following are legitimate
-response to VRFY:
-
- 553 User ambiguous
-
-or
-
- 553- Ambiguous; Possibilities are
- 553-Joe Smith <jsmith@foo.com>
- 553-Harry Smith <hsmith@foo.com>
- 553 Melvin Smith <dweep@foo.com>
-
-or
-
- 553-Ambiguous; Possibilities
- 553- <jsmith@foo.com>
- 553- <hsmith@foo.com>
- 553 <dweep@foo.com>
-
-Under normal circumstances, a client receiving a 553 reply would be
-expected to expose the result to the user. Use of exactly the forms given,
-and the "user ambiguous" or "ambiguous" keywords, possibly supplemented by
-extended reply codes as described in [RFC-REPLY], will facilitate automated
-translation into other languages as needed. Of course, a client that was
-highly automated or that was operating in another language than English,
-might choose to try to translate the response, to return some other
-indication to the user than the literal text of the reply, or to take some
-automated action such as consulting a directory service for additional
-information before reporting to the user.
-
-For the EXPN command, the string identifies a mailing list, and the
-successful (i.e., 250) multiline response MAY include the full name of the
-users and MUST give the mailboxes on the mailing list.
-
-In some hosts the distinction between a mailing list and an alias for a
-single mailbox is a bit fuzzy, since a common data structure may hold both
-types of entries, and it is possible to have mailing lists of one mailbox.
-If a request is made to verify a mailing list, a positive response MAY be
-given if a message so addressed would be delivered to everyone on the list,
-otherwise an error SHOULD be reported (e.g., "550 That is a mailing list,
-not a user" or "252 Unable to verify members of mailing list"). If a
-request is made to expand a user name, the server MAY return a positive
-response consisting of a list containing one name, or an error MAY be
-reported (e.g., "550 That is a user name, not a mailing list").
-
-In the case of a successful multiline reply (normal for EXPN) exactly one
-mailbox is to be specified on each line of the reply. The case of an
-ambiguous request is discussed above.
-
-"User name" is a fuzzy term and has been used deliberately. An
-implementation of the VRFY or EXPN commands MUST include at least
-recognition of local mailboxes as "user names". However, since current
-Internet practice often results in a single host handling mail for multiple
-domains, hosts, especially hosts that provide this functionality, SHOULD
-accept the "local-part@domain" form as a "user name"; hosts MAY also choose
-to recognize other strings as "user names".
-
-The case of expanding a mailbox list requires a multiline reply, such as:
-
- C: EXPN Example-People
- S: 250-Jon Postel <Postel@isi.edu>
- S: 250-Fred Fonebone <Fonebone@physics.foo-u.edu>
- S: 250 Sam Q. Smith <SQSmith@specific.generic.com>
-
-or
-
- C EXPN Executive-Washroom-List
- S: 550 Access Denied to You.
-
-The character string arguments of the VRFY and EXPN commands cannot be
-further restricted due to the variety of implementations of the user name
-and mailbox list concepts. On some systems it may be appropriate for the
-argument of the EXPN command to be a file name for a file containing a
-mailing list, but again there are a variety of file naming conventions in
-the Internet. Similarly, historical variations in what is returned by
-these commands are such that the response SHOULD be interpreted very
-carefully, if at all, and SHOULD generally only be used for diagnostic
-purposes.
-
-3.5.2 VRFY Normal Response
-
-When normal (2yz or 551) responses are returned from a VRFY or EXPN
-request, the reply MUST normally include the mailbox name.
-"<local-part@domain>", where "domain" is a fully qualified domain name,
-MUST appear in the syntax. In exceptional circumstances, free-form text
-MAY be returned. In order to facilitate parsing by both computers and
-people, addresses SHOULD appear in pointed brackets. When addresses,
-rather than free-form debugging information, are returned, EXPN and VRFY
-MUST return only valid domain addresses that are usable in SMTP RCPT
-commands. Consequently, if an address implies delivery to a program or
-other system, the mailbox name used to reach that target MUST be given.
-Paths (explicit source routes) MUST NOT be returned by VRFY or EXPN.
-
-Server implementations MUST support VRFY and SHOULD support EXPN. For
-security reasons, implementations MAY provide local installations a way to
-disable either or both of these commands through configuration options or
-the equivalent. When these commands are supported, they are not required
-to work across relays when relaying is supported. Since they were both
-optional in RFC 821, they MUST be listed as service extensions in an EHLO
-response, if they are supported.
-
-3.5.3 Meaning of VRFY or EXPN Success Response
-
-A server MUST NOT return a 220 code in response to a VRFY or EXPN command
-unless it has actually verified the address. In particular, a server MUST
-NOT return 220 if all it has done is to verify that the syntax given is
-valid. In that case, 502 (Command not implemented) or 500 (Syntax error,
-command unrecognized) SHOULD be returned. As stated elsewhere,
-implementation of VRFY is required and EXPN is strongly recommended.
-Hence, implementations that return 500 or 502 for VRFY are not in
-compliance with this specification.
-
-There may be circumstances where an address appears to be valid but cannot
-reasonably be verified in real time, particularly when a server is acting
-as a mail exchanger for another server or domain. "Apparent validity" in
-this case would normally involve at least syntax checking and might involve
-verification that any domains specified were ones to which the host
-expected to be able to relay mail. In these situations, reply code 252
-SHOULD BE returned. These cases parallel the discussion of RCPT
-verification discussed in section 2.1 Implementations generally SHOULD be
-more aggressive about address verification in the case of VRFY than in the
-case of RCPT, even if it takes a little longer to do so.
-
-3.5.4 Semantics and Applications of EXPN
-
-EXPN is often very useful in debugging and understanding problems with
-mailing lists and multiple-target-address aliases. Some systems have
-attempted to use source expansion of mailing lists as a means of
-eliminating duplicates. The propagation of aliasing systems with mail on
-the Internet, both for hosts (typically with MX and CNAME DNS records) and
-for mailboxes (various types of local host aliases), has made it nearly
-impossible for these strategies to work, and mail systems SHOULD NOT
-attempt them.
-
-3.6 Domains
-
-Only resolvable, fully-qualified, domain names (FQDNs) are permitted when
-domain names are used in SMTP. In other words, names that can be resolved
-to MX RRs or A RRs (as discussed in section 5) are permitted, as are CNAME
-RRs whose targets can be resolved, in turn, to MX or A RRs. Local
-nicknames or unqualified names MUST NOT be used. There are two exceptions
-to the rule requiring FQDNs:
-
- - The domain name given in the EHLO command MUST BE either a primary host
- name (a domain name that resolves to an A RR) or, if the host has no
- name, an address literal as described in section 4.1.1.1.
-
- - The reserved mailbox name "postmaster" may be used in a RCPT TO command
- without domain qualification (see section 4.1.1.3) and MUST be accepted
- if so used.
-
-3.7 Relaying
-
-In general, the availability of Mail eXchanger records in the domain name
-system [RFC-DNS] makes the use of explicit source routes in the Internet
-mail system unnecessary. Many historical problems with their
-interpretation have made their use undesirable. SMTP clients SHOULD NOT
-generate explicit source routes except under unusual circumstances. SMTP
-servers MAY decline to act as mail relays or to accept addresses that
-specify source routes. When route information is encountered, they are
-also permitted to ignore the route information and simply send to the final
-destination specified as the last element in the route and SHOULD do so.
-There has been an invalid practice of using names that do not appear in the
-DNS as destination names, with the senders counting on the intermediate
-hosts specified in source routing to resolve any problems. If source
-routes are stripped, this practice will cause failures. This is one of
-several reasons why SMTP clients MUST NOT generate invalid source routes or
-depend on serial resolution of names.
-
-When source routes are not used, the process described in RFC 821 for
-constructing a reverse-path from the forward-path is not applicable and the
-reverse-path at the time of delivery will simply be the address that
-appeared in the MAIL command.
-
-A relay SMTP server is usually the target of a DNS MX record that
-designates it, rather than the final delivery system. The relay server may
-accept or reject the task of relaying the mail in the same way it accepts
-or rejects mail for a local user. If it accepts the task, it then becomes
-an SMTP client, establishes a transmission channel to the next SMTP server
-specified in the DNS (according to the rules in section 5), and sends it
-the mail. If it declines to relay mail to a particular address for policy
-reasons, a 571 response MAY be returned.
-
-If an SMTP server has accepted the task of relaying the mail and later
-finds that the destination is incorrect or that the mail cannot be
-delivered for some other reason, then it MUST construct an "undeliverable
-mail" notification message and send it to the originator of the
-undeliverable mail (as indicated by the reverse-path). Formats specified
-for non-delivery reports by other standards (see, for example,
-[RFC-NOTARY1]) SHOULD be used if possible.
-
-This notification message must be from the SMTP server at the relay host or
-the host that first determines that delivery cannot be accomplished. Of
-course, SMTP servers MUST NOT send notification messages about problems
-transporting notification messages. One way to prevent loops in error
-reporting is to specify a null reverse-path in the MAIL command of a
-notification message. When such a message is transmitted the reverse-path
-MUST be set to null. A MAIL command with a null reverse-path appears as
-follows:
-
- MAIL FROM:<>
-
-As discussed in section 2.4.1, a relay SMTP has no need to inspect or act
-upon the headers or body of the message data and MUST NOT do so except
-to add its own "Received:" header (section 4.4) and to perform simple
-counting of the number of "Received:" headers in a message (section 6.2).
-
-3.8 Mail Gatewaying
-
-While the relay function discussed above operates within the Internet SMTP
-transport service environment, MX records or various forms of explicit
-routing may require that an intermediate SMTP server perform a translation
-function between one transport service and another. As discussed in
-section 2.3.8, when such a system is at the boundary between two transport
-service environments, we refer to it as a "gateway" or "gateway SMTP".
-
-Gatewaying mail between different mail environments, such as different mail
-formats and protocols, is complex and does not easily yield to
-standardization. However, some general requirements may be given for a
-gateway between the Internet and another mail environment.
-
-3.8.1 Header Fields in Gatewaying
-
-Header fields MAY be rewritten when necessary as messages are gatewayed
-across mail environment boundaries. This may involve inspecting the message
-body or interpreting the local-part of the destination address in spite of
-the prohibitions in section 2.4.1
-
-Other mail systems gatewayed to the Internet often use a subset of RFC-822
-headers or provide similar functionality with a different syntax, but some
-of these mail systems do not have an equivalent to the SMTP envelope.
-Therefore, when a message leaves the Internet environment, it may be
-necessary to fold the SMTP envelope information into the message header. A
-possible solution would be to create new header fields to carry the
-envelope information (e.g., "X-SMTP-MAIL:" and "X-SMTP-RCPT:"); however,
-this would require changes in mail programs in foreign environments and
-might risk disclosure of private information (see section 7.2).
-
-3.8.2 Received Lines in Gatewaying
-
-When forwarding a message into or out of the Internet environment, a
-gateway MUST prepend a Received: line, but it MUST NOT alter in any way a
-Received: line that is already in the header.
-
-Received: fields of messages originating from other environments may not
-conform exactly to this specification. However, the most important use of
-Received: lines is for debugging mail faults, and this debugging can be
-severely hampered by well-meaning gateways that try to "fix" a Received:
-line. As another consequence of trace fields arising in non-SMTP
-environments, receiving systems MUST NOT reject mail based on the format of
-a trace field and SHOULD be extremely robust in the light of unexpected
-information or formats in those fields.
-
-The gateway SHOULD indicate the environment and protocol in the "via"
-clauses of Received field(s) that it supplies.
-
-3.8.3 Addresses in Gatewaying
-
->From the Internet side, the gateway SHOULD accept all valid address formats
-in SMTP commands and in RFC-822 headers, and all valid RFC-822 messages.
-Gateways are, of course, subject to the same rules for handling source
-routes as those described for other SMTP systems in section 3.3.
-
-3.8.4 Other Header Fields in Gatewaying
-
-The gateway MUST ensure that all header fields of a message that it
-forwards into the Internet meet the requirements for Internet mail. In
-particular, all addresses in "From:", "To:", "Cc:", etc., fields MUST be
-transformed (if necessary) to satisfy RFC-822 syntax, MUST reference only
-fully-qualified domain names, and MUST be effective and useful for sending
-replies. 3.8.5 The translation algorithm used to convert mail from the
-Internet protocols to another environment's protocol SHOULD ensure that
-error messages from the foreign mail environment are delivered to the
-return path from the SMTP envelope, not to the sender listed in the "From:"
-field (or other fields) of the RFC-822 message.
-
-3.8.5 Envelopes in Gatewaying
-
-Similarly, when forwarding a message from another environment into the
-Internet, the gateway SHOULD set the envelope return path in accordance
-with an error message return address, if supplied by the foreign
-environment. If the foreign environment has no equivalent concept, the
-gateway must select and use a best approximation, with the message
-originator's address as the default of last resort.
-
-3.9 Terminating Sessions and Connections
-
-An SMTP connection is terminated when the client sends a QUIT command. The
-server responds with a positive reply code, after which it closes the
-connection.
-
-An SMTP server MUST NOT intentionally close the connection except:
-
- - After receiving a QUIT command and responding with a 221 reply.
-
- - After detecting the need to shutdown the SMTP service and returning a
- 421 response code. This response code can be issued after the server
- receives any command or, if necessary, asynchronously from command
- receipt (on the assumption that the client will receive it after the
- next command is issued).
-
-In particular, a server that closes connections in response to commands
-that are not understood is in violation of this specification. Servers are
-expected to be tolerant of unknown commands, issuing a 500 reply and
-awaiting further instructions from the client.
-
-An SMTP server which is forcibly shut down via external means SHOULD
-attempt to send a line containing a 421 response code to the SMTP client
-before exiting. The SMTP client will normally read the 421 response code
-after sending its next command.
-
-SMTP clients that experience a connection close, reset, or other
-communications failure due to circumstances not under their control (in
-violation of the intent of this specification but sometimes unavoidable)
-SHOULD, to maintain the robustness of the mail system, treat the mail
-transaction as if a 451 response had been received and act accordingly.
-
-3.10 Mailing Lists and Aliases
-
-An SMTP-capable host SHOULD support both the alias and the list form of
-address expansion for multiple delivery. When a message is delivered or
-forwarded to each address of an expanded list form, the return address in
-the envelope ("MAIL FROM:") MUST be changed to be the address of a person
-or other entity who administers the list. However, in this case, the
-message header (see [MSGFMT]) MUST be left unchanged; in particular, the
-"From" field of the message header is unaffected.
-
-An important mail facility is a mechanism for multi-destination delivery of
-a single message, by transforming or "expanding" a pseudo-mailbox address
-into a list of destination mailbox addresses. When a message is sent to
-such a pseudo-mailbox (sometimes called an "exploder"), copies are
-forwarded or redistributed to each mailbox in the expanded list. We
-classify such a pseudo-mailbox as an "alias" or a "list", depending upon
-the expansion rules.
-
-3.10.1 Alias
-
-To expand an alias, the recipient mailer simply replaces the pseudo-mailbox
-address in the envelope with each of the expanded addresses in turn; the
-rest of the envelope and the message body are left unchanged. The message
-is then delivered or forwarded to each expanded address.
-
-3.10.2 List
-
-A mailing list may be said to operate by "redistribution" rather than by
-"forwarding". To expand a list, the recipient mailer replaces the
-pseudo-mailbox address in the envelope with each of the expanded addresses
-in turn. The return address in the envelope is changed so that all error
-messages generated by the final deliveries will be returned to a list
-administrator, not to the message originator, who generally has no control
-over the contents of the list and will typically find error messages
-annoying.
-
-
-4. The SMTP Specifications
-
-4.1 SMTP Commands
-
-4.1.1 Command Semantics and Syntax
-
-The SMTP commands define the mail transfer or the mail system function
-requested by the user. SMTP commands are character strings terminated by
-<CRLF>. The commands themselves are alphabetic characters terminated by
-<SP> if parameters follow and <CRLF> otherwise. (In the interest of
-improved interoperability, SMTP receivers are encouraged to tolerate
-trailing white space before the terminating <CRLF>.) The syntax of the
-local part of a mailbox must conform to receiver site conventions and the
-syntax specified in section 4.1.2. The SMTP commands are discussed below.
-The SMTP replies are discussed in section 4.2.
-
-A mail transaction involves several data objects which are communicated as
-arguments to different commands. The reverse-path is the argument of the
-MAIL command, the forward-path is the argument of the RCPT command, and the
-mail data is the argument of the DATA command. These arguments or data
-objects must be transmitted and held pending the confirmation communicated
-by the end of mail data indication which finalizes the transaction. The
-model for this is that distinct buffers are provided to hold the types of
-data objects, that is, there is a reverse-path buffer, a forward-path
-buffer, and a mail data buffer. Specific commands cause information to be
-appended to a specific buffer, or cause one or more buffers to be cleared.
-
-4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)
-
-These commands are used to identify the SMTP client to the SMTP server.
-The argument field contains the fully-qualified domain name of the SMTP
-client if one is available. In situations in which the SMTP client system
-does not have a meaningful domain name (e.g., when its address is
-dynamically allocated and no reverse mapping record is available), the
-client SHOULD send an address literal (see section 4.1.3), optionally
-followed by information that will help to identify the client system.
-
-The SMTP server identifies itself to the SMTP client in the connection
-greeting reply and in the response to this command.
-
-A client SMTP SHOULD start an SMTP session by issuing the EHLO command. If
-the SMTP server supports the SMTP service extensions it will give a
-successful response, a failure response, or an error response. If the SMTP
-server, in violation of this specification, does not support any SMTP
-service extensions it will generate an error response. Older client SMTP
-systems MAY, as discussed above, use HELO (as specified in RFC 821) instead
-of EHLO, and servers MUST support the HELO command and reply properly to
-it. In any event, a client MUST issue HELO or EHLO before starting a mail
-transaction.
-
-These commands, and a "250 OK" reply to one of them, confirm that both the
-SMTP client and the SMTP server are in the initial state, that is, there is
-no transaction in progress and all state tables and buffers are cleared.
-
-Normally, the response to EHLO will be a multiline reply. Each line of the
-response contains a keyword and, optionally, one or more parameters. The
-syntax for a positive response, using the ABNF notation and low-level
-terminals of [ABNF], is:
-
- ehlo-ok-rsp ::= "250" domain [ <SP> greeting ] <CRLF>
- / ( "250-" domain [ <SP> greeting ] <CRLF>
- *( "250-" ehlo-line <CRLF> )
- "250" <SP> ehlo-line <CRLF> )
-
- greeting ::= 1*<any character other than CR or LF>
-
- ehlo-line ::= ehlo-keyword *( <SP> ehlo-param )
-
- ehlo-keyword ::= (ALPHA / DIGIT) *(ALPHA / DIGIT / "-")
- ; syntax and values depend on ehlo-keyword
-
- ehlo-param ::= 1*<any CHAR excluding <SP> and all
- control characters (US-ASCII 0-31
- inclusive)>
-
- <<xxx ALPHA ::= <any one of the 52 alphabetic characters >>
- << (A through Z in upper case, and, >>
- << a through z in lower case) >>
-
-Although EHLO keywords may be specified in upper, lower, or mixed case,
-they MUST always be recognized and processed in a case-insensitive manner.
-This is simply an extension of practices specified in RFC 821 and section
-2.4.1.
-
-4.1.1.2 MAIL (MAIL)
-
-This command is used to initiate a mail transaction in which the mail data
-is delivered to one or more mailboxes. The argument field contains a
-reverse-path.
-
-The reverse-path consists of the sender mailbox or a list of hosts. In
-some types of reporting messages for which a reply is likely to cause a
-mail loop (for example, mail delivery and nondelivery notifications), the
-reverse-path may be null (see section 3.7).
-
-This command clears the reverse-path buffer, the forward-path buffer, and
-the mail data buffer; and inserts the reverse-path information from this
-command into the reverse-path buffer.
-
-If service extensions were negotiated, the MAIL command may also carry
-parameters associated with a particular service extension.
-
-Syntax:
- "MAIL FROM:" Reverse-path [ <SP> Mail-parameters ]
-or
- "MAIL FROM:<>" [ <SP> Mail-parameters ]
-
-4.1.1.3 RECIPIENT (RCPT)
-
-This command is used to identify an individual recipient of the mail data;
-multiple recipients are specified by multiple use of this command.
-
-The forward-path normally consists of the required destination mailbox or
-mailboxes. Sending systems SHOULD not generate the optional list of hosts
-known as a source route. Receiving systems MUST recognize source route
-syntax but SHOULD strip off the source route specification and utilize the
-domain name associated with the mailbox as if the source route had not been
-provided.
-
-Similarly, relay hosts SHOULD strip or ignore source routes, and names MUST
-NOT be copied into the reverse-path. When mail reaches its ultimate
-destination (the forward-path contains only a destination mailbox), the
-SMTP server inserts it into the destination mailbox in accordance with its
-host mail conventions.
-
-For example, mail received at relay host xyz.com with envelope commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<@hosta.int,@jkl.org:userc@d.bar.org>
-
-will normally be sent directly on to host d.bar.org with envelope commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<USERC@D.bar.org>
-
-As provided in appendix C, xyz.com MAY also choose to relay the message to
-jkl.org, using the envelope commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<@jkl.org:userc@d.bar.org>
-
-Of course, since hosts are not required to relay mail at all, xyz.com may
-also reject the message entirely when the RCPT TO command is received,
-using a 550 code (since this is a "policy reason").
-
-If service extensions were negotiated, the RCPT TO command may also carry
-parameters associated with a particular service extension offered by the
-server. The client MUST NOT transmit parameters other than those
-associated with a service extension offered by the server in its EHLO
-response.
-
-Syntax:
- "RCPT TO:" Forward-path [ <SP> Rcpt-parameters ]
-or
- "RCPT TO:<Postmaster>" [ <SP> Rcpt-parameters ]
-
-4.1.1.4 DATA (DATA)
-
-The receiver treats the lines (strings ending in <CRLF> sequences, as
-described in section 2.3.7) following the command as mail data from the
-sender. This command causes the mail data to be appended to the mail data
-buffer. The mail data may contain any of the 128 ASCII character codes,
-although experience has indicated that use of control characters other than
-SP, HT, CR, and LF (especially the ASCII "Null" character) may cause
-problems and SHOULD be avoided when possible.
-
-The mail data is terminated by a line containing only a period, that is,
-the character sequence "<CRLF>.<CRLF>" (see section 4.5.2). This is the
-end of mail data indication. Note that the first <CRLF> of this
-terminating sequence is also the <CRLF> that ends the final line of the
-data (message text) or, if there was no data, ends the DATA command itself.
-An extra <CRLF> MUST NOT be added, as that would cause an empty line to be
-added to the message. The only exception to this rule would arise if the
-message body were passed to the originating SMTP-sender with a final "line"
-that did not end in <CRLF>; in that case, the originating SMTP system MUST
-either reject the message as invalid or add <CRLF> in order to have the
-receiving SMTP server recognize the "end of data" condition.
-
-The custom of accepting lines ending only in <LF>, as a concession to
-non-conforming behavior on the part of some UNIX systems, has proven to
-cause more interoperability problems than it solves, and SMTP server
-systems MUST NOT do this, even in the name of improved robustness. In
-particular, the sequence "<LF>.<LF>" (bare line feeds, without carriage
-returns) MUST NOT be treated as equivalent to <CRLF>.<CRLF> as the end of
-mail data indication.
-
-Receipt of the end of mail data indication requires the server to process
-the stored mail transaction information. This processing consumes the
-information in the reverse-path buffer, the forward-path buffer, and the
-mail data buffer, and on the completion of this command these buffers are
-cleared. If the processing is successful, the receiver MUST send an OK
-reply. If the processing fails the receiver MUST send a failure reply. The
-SMTP model does not allow for partial failures at this point: either the
-message is accepted by the server for delivery and a positive response is
-returned or it is not accepted and a failure reply is returned. Errors
-that are diagnosed subsequently MUST be reported in a mail message, as
-discussed in section 4.4 In sending a positive completion reply to the end
-of data indication, the receiver takes full responsibility for the message
-(see section 6.1).
-
-When the SMTP server accepts a message either for relaying or for final
-delivery, it inserts a trace record (also referred to interchangeably as a
-"time stamp line" or "Received" line) at the top of the mail data. This
-trace record indicates the identity of the host that sent the message, the
-identity of the host that received the message (and is inserting this time
-stamp), and the date and time the message was received. Relayed messages
-will have multiple time stamp lines. Details for formation of these lines,
-including their syntax, is specified in section 4.4.
-
-4.1.1.5 RESET (RSET)
-
-This command specifies that the current mail transaction will be aborted.
-Any stored sender, recipients, and mail data MUST be discarded, and all
-buffers and state tables cleared. The receiver MUST send a "250 OK" reply
-to a RSET command with no arguments. A reset command may be issued by the
-client at any time. It is effectively equivalent to a NOOP if issued
-immediately after EHLO, before EHLO is issued in the session, after an
-end-of-data indicator has been sent and acknowledged, or immediately before
-a QUIT. In other situations, it restores the state to that immediately
-after the most recent EHLO. An SMTP server MUST NOT close the connection
-as the result of receiving a RSET; that action is reserved for QUIT (see
-section 4.1.1.10).
-
-Since EHLO implies some additional processing and response by the server,
-RSET will normally be more efficient than reissuing that command, even
-though the formal semantics are the same.
-
-There are circumstances, contrary to the intent of this specification, in
-which an SMTP server may receive an indication that the underlying TCP
-connection has been closed or reset. To preserve the robustness of the
-mail system, SMTP servers SHOULD be prepared for this condition and SHOULD
-treat it as if a QUIT had been received before the connection disappeared.
-
-Syntax:
- "RSET"
-
-4.1.1.6 VERIFY (VRFY)
-
-This command asks the receiver to confirm that the argument identifies a
-user or mailbox. If it is a user name, information is returned as
-specified in section 3.5.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer.
-
-Syntax:
- "VRFY" <SP> String
-
-4.1.1.7 EXPAND (EXPN)
-
-This command asks the receiver to confirm that the argument identifies a
-mailing list, and if so, to return the membership of that list. If the
-command is successful, a reply is returned containing information as
-described in section 3.5. This reply will have multiple lines except in
-the trivial case of a one-member list.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer.
-
-Syntax:
- "EXPN" <SP> String
-
-4.1.1.8 HELP (HELP)
-
-This command causes the server to send helpful information to the client.
-The command MAY take an argument (e.g., any command name) and return more
-specific information as a response.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer.
-
-SMTP servers SHOULD support HELP without arguments and MAY support it with
-arguments.
-
-Syntax:
- "HELP" [ <SP> String ]
-
-4.1.1.9 NOOP (NOOP)
-
-This command does not affect any parameters or previously entered commands.
-It specifies no action other than that the receiver send an OK reply.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer.
-
-Syntax:
- "NOOP" [ <SP> String ]
-
-4.1.1.10 QUIT (QUIT)
-
-This command specifies that the receiver MUST send an OK reply, and then
-close the transmission channel.
-
-The receiver MUST NOT intentionally close the transmission channel until it
-receives and replies to a QUIT command (even if there was an error). The
-sender MUST NOT intentionally close the transmission channel until it sends
-a QUIT command and receives the reply (even if there was an error response
-to a previous command). If the connection is closed prematurely due to
-violations of the above or system or network failure, the server MUST
-cancel any pending transaction, but not undo any previously completed
-transaction, and generally MUST act as if the command or transaction in
-progress had received a temporary error (i.e., a 4yz response).
-
-Syntax:
- "QUIT"
-
-4.1.2 Lower-level Syntax
-
-The syntax of the argument fields of the above commands (using the syntax
-specified in [ABNF] where applicable) is given below. Some of the
-productions given below are used only in conjunction with source routes as
-described in appendix C. Terminals not defined in this document, such as
-ALPHA, DIGIT, SP, CR, LF, CRLF, are as defined in the "core" syntax
-(section 6) of [ABNF] or in the syntax of [MSGFMT].
-
- Reverse-path = Path
-
- Forward-path = Path
-
- Path = "<" [ A-d-l ":" ] Mailbox ">"
-
- A-d-l = At-domain *( "," A-d-l ) ; Note that this form, the
- so-called "source route", MUST BE
- accepted, SHOULD NOT be generated,
- and SHOULD be ignored.
-
- At-domain = "@" Domain
-
- Mail-parameters = *( <SP> Keyword "=" Argument )
-
- Rcpt-parameters = *( <SP> Keyword "=" Argument )
-
- Keyword = Ldh-str
- Argument = Atom
-
- Domain = sub-domain 1*("." sub-domain) / address-literal
-
- sub-domain = let-dig *(Ldh-str)
- address-literal = "[" IPv4-address-literal /
- IPv6-address-literal / General-address-literal "]"
- IPv4-address-literal = snum 3*3("." snum)
- IPv6-address-literal = "IPv6" <SP> IPv6-addr-string
- IPv6-addr-string = String ; IPv6 address in standard form
- [IPv6AddrSpec]. Since this
- form uses colon characters,
- the String will actually need
- to be quoted in all cases.
- General-address-literal = Standardized-tag <SP> String
- Standardized-tag = Ldh-str ; Specified in a
- standards-track RFC
- and registered with IANA
- snum = 1*3Digit ; representing a decimal integer
- value in the range 0 through 255
- let-dig = Alpha / Digit
- ldh-str = *( Alpha / Digit / "-" ) let-dig
-
- Mailbox = Local-part "@" Domain
-
- Local-part = Dot-string / Quoted-string
-
- Dot-string = Atom [ "." Atom ]
-
-While the above definition for Local-part is relatively permissive, for
-maximum interoperability, a host that expects to receive mail SHOULD avoid
-defining mailboxes where the Local-part requires (or uses) the
-Quoted-string form or where the Local-part is case-sensitive. For any
-purposes that require generating or comparing Local-parts (e.g., to
-specific mailbox names), all quoted forms MUST be treated as equivalent and
-the sending system SHOULD transmit the form that uses the minimum quoting
-possible.
-
-Systems MUST NOT define mailboxes in such a way as to require the use of
-non-ASCII characters (octets with the high order bit set to one) or ASCII
-"control characters" (decimal value 0-31 and 127). These characters MUST
-NOT be used in MAIL FROM or RCPT TO commands or other commands that require
-mailbox names.
-
- String = Atom / Quoted-string
-
- special = <<Msg-fmt-special>> / [[placeholder, see above]]
- the control characters (ASCII codes 0 through 31
- inclusive and 127)
-
-Note that the backslash, "\", is a quote character, which is used to
-indicate that the next character is to be used literally (instead of its
-normal interpretation). For example, "Joe\,Smith" indicates a single nine
-character user field with the comma being the fourth character of the
-field.
-
-Characters outside the set of alphas, digits, and hyphen MUST NOT appear in
-domain names. In particular, the underscore character is not permitted.
-SMTP servers that receive a command in which illegal character codes have
-been employed, and for which there are no other reasons for rejection, MUST
-reject that command with a 501 response.
-
-4.1.3 Address Literals
-
-Sometimes a host is not known to the domain name system and communication
-(and, in particular, communication to report and repair the error) is
-blocked. To bypass this barrier a special literal form of the address is
-allowed as an alternative to a domain name. For IPv4 addresses, this form
-uses four small decimal integers separated by dots and enclosed by brackets
-such as [123.255.37.2], which indicates an (IPv4) Internet Address in
-sequence-of-octets form. For IPv6 and other forms of addressing that might
-eventually be standardized, the form consists of a standardized "tag" that
-identifies the address syntax, a space, and the address itself, in a format
-specified as part of the IPv6 standards [IPv6AddrString].
-
-4.1.4 Order of Commands
-
-There are restrictions on the order in which these commands may be used.
-
-A session that will contain mail transactions MUST first be initialized by
-the use of the EHLO command. An SMTP server SHOULD accept commands for
-non-mail transactions (e.g., VRFY or EXPN) without this initialization.
-
-An EHLO command MAY be issued by a client later in the session. If it is
-issued after the session begins, the SMTP server MUST clear all buffers and
-reset the state exactly as if a RSET command had been issued. In other
-words, the sequence of RSET followed immediately by EHLO is redundant, but
-not harmful other than in the performance cost of executing unnecessary
-commands.
-
-If the EHLO command is not acceptable to the SMTP server, 501, 500, or 502
-failure replies MUST be returned as appropriate. The SMTP server MUST stay
-in the same state after transmitting these replies that it was in before
-the EHLO was received.
-
-The SMTP client MUST ensure that the domain parameter to the EHLO command
-is a valid principal host name (not a CNAME or MX name) for its host. If
-this is not possible (e.g., when the client's address is dynamically
-assigned and the client does not have an obvious name), an address literal
-SHOULD be substituted for the domain name and supplemental information
-provided that will assist in identifying the client.
-
-An SMTP server MAY verify that the domain name parameter in the EHLO
-command actually corresponds to the IP address of the client. However, the
-server MUST NOT refuse to accept a message if the verification fails: the
-information about verification failure is for logging and tracing only.
-
-The NOOP, HELP, EXPN, VRFY, and RSET commands can be used at any time
-during a session, or without previously initializing a session. SMTP
-servers SHOULD process these normally (that is, not return a 503 code) even
-if no EHLO command has yet been received; clients SHOULD open a session
-with EHLO before sending these commands.
-
-If these rules are followed, the example in RFC 821 that shows "550 access
-denied to you" in response to an EXPN command is incorrect unless an EHLO
-command precedes the EXPN or the denial of access is based on the client's
-IP address or other authentication or authorization-determining mechanisms.
-
-The MAIL command (or the obsolete SEND, SOML, or SAML commands) begins a
-mail transaction. Once started, a mail transaction consists of a
-transaction beginning command, one or more RCPT commands, and a DATA
-command, in that order. A mail transaction may be aborted by the RSET (or
-a new EHLO) command. There may be zero or more transactions in a session.
-
-If the transaction beginning command argument is not acceptable, a 501
-failure reply MUST be returned and the SMTP server MUST stay in the same
-state. If the commands in a transaction are out of order to the degree
-that they cannot be processed by the server, a 503 failure reply MUST be
-returned and the SMTP server MUST stay in the same state.
-
-The last command in a session MUST be the QUIT command. The QUIT command
-cannot be used at any other time in a session, but SHOULD be used by the
-client SMTP to request connection closure, even when no session opening
-command was sent and accepted.
-
-4.1.5 Private-use Commands
-
-As specified in section 2.2.2, commands starting in "X" may be used by
-bilateral agreement between the client (sending) and server (receiving)
-SMTP agents. An SMTP server that does not recognize such a command is
-expected to reply with "500 Command not recognized". An extended SMTP
-server MAY list the feature names associated with these private commands in
-the response to the EHLO command.
-
-Commands sent or accepted by SMTP systems that do not start with "X" MUST
-conform to the requirements of section 2.2.2.
-
-4.2 SMTP Replies
-
-Replies to SMTP commands serve to ensure the synchronization of requests
-and actions in the process of mail transfer and to guarantee that the SMTP
-client always knows the state of the SMTP server. Every command MUST
-generate exactly one reply.
-
-The details of the command-reply sequence are described in section 4.3.
-
-An SMTP reply consists of a three digit number (transmitted as three
-alphanumeric characters) followed by some text. The number is for use by
-automata to determine what state to enter next; the text is for the human
-user. The three digits contain enough encoded information that the SMTP
-client need not examine the text and may either discard it or pass it on to
-the user, as appropriate. Exceptions are as noted elsewhere in this
-document. In particular, the 220, 221, 251, 421, and 551 reply codes are
-associated with message text that must be parsed and interpreted by
-machines. In the general case, the text may be receiver dependent and
-context dependent, so there are likely to be varying texts for each reply
-code. A discussion of the theory of reply codes is given in section 4.2.1.
-Formally, a reply is defined to be the sequence: a three-digit code, <SP>,
-one line of text, and <CRLF>, or a multiline reply (as defined in section
-4.2.1). Only the EHLO, EXPN, and HELP commands are expected to result in
-multiline replies in normal circumstances, however, multiline replies are
-allowed for any command.
-
-In ABNF, server responses are:
-
- Greeting = "220 " Domain [ SP text ] CRLF
- Reply-line = Reply-code [ SP text ] CRLF
-
-where "Greeting" appears only in the 220 response that announces that the
-server is opening its part of the connection.
-
-An SMTP server SHOULD send only the reply codes listed in this document.
-An SMTP server SHOULD use the text shown in the examples whenever
-appropriate.
-
-An SMTP client MUST determine its actions only by the reply code, not by
-the text (except for 251 and 551 and, if necessary, 220, 221, and 421
-replies); in the general case, any text, including no text at all (although
-senders SHOULD NOT send bare codes), MUST be acceptable. The space (blank)
-following the reply code is considered part of the text. Whenever
-possible, a sender-SMTP SHOULD test the first digit (severity indication)
-of the reply code.
-
-The list of codes that appears below must not be construed as permanent.
-While the addition of new codes should be a rare and significant activity,
-with supplemental information in the textual part of the response being
-preferred, new codes may be added as the result of new Standards or
-Standards-track specifications. Consequently, a sender-SMTP MUST be
-prepared to handle codes not specified in this document and MUST do so by
-interpreting the first digit only.
-
-4.2.1 Reply Code Severities and Theory
-
-The three digits of the reply each have a special significance. The first
-digit denotes whether the response is good, bad or incomplete. An
-unsophisticated SMTP client, or one that receives an unexpected code, will
-be able to determine its next action (proceed as planned, redo, retrench,
-etc.) by examining this first digit. An SMTP client that wants to know
-approximately what kind of error occurred (e.g., mail system error, command
-syntax error) may examine the second digit. The third digit and any
-supplemental information that may be present is reserved for the finest
-gradation of information.
-
-There are five values for the first digit of the reply code:
-
-1yz Positive Preliminary reply
- The command has been accepted, but the requested action is being held in
- abeyance, pending confirmation of the information in this reply. The
- SMTP client should send another command specifying whether to continue
- or abort the action. Note: unextended SMTP does not have any commands
- that allow this type of reply, and so does not have continue or abort
- commands.
-
-2yz Positive Completion reply
- The requested action has been successfully completed. A new request may
- be initiated.
-
-3yz Positive Intermediate reply
- The command has been accepted, but the requested action is being held in
- abeyance, pending receipt of further information. The SMTP client
- should send another command specifying this information. This reply is
- used in command sequence groups (i.e., in DATA).
-
-4yz Transient Negative Completion reply
- The command was not accepted, and the requested action did not occur.
- However, the error condition is temporary and the action may be
- requested again. The sender should return to the beginning of the
- command sequence (if any). It is difficult to assign a meaning to
- "transient" when two different sites (receiver- and sender- SMTP agents)
- must agree on the interpretation. Each reply in this category might have
- a different time value, but the SMTP client is encouraged to try again.
- A rule of thumb to determine whether a reply fits into the 4yz or the
- 5yz category (see below) is that replies are 4yz if they can be
- successful if repeated without any change in command form or in
- properties of the sender or receiver. (that is, the command is repeated
- identically and the receiver does not put up a new implementation.)
-
-5yz Permanent Negative Completion reply
- The command was not accepted and the requested action did not occur.
- The SMTP client is discouraged from repeating the exact request (in the
- same sequence). Even some "permanent" error conditions can be
- corrected, so the human user may want to direct the SMTP client to
- reinitiate the command sequence by direct action at some point in the
- future (e.g., after the spelling has been changed, or the user has
- altered the account status).
-
-The second digit encodes responses in specific categories:
-
-x0z Syntax: These replies refer to syntax errors, syntactically correct
- commands that don't fit any functional category, and unimplemented or
- superfluous commands.
-
-x1z Information: These are replies to requests for information, such as
- status or help.
-
-x2z Connections: These are replies referring to the transmission channel.
-
-x3z Unspecified.
-
-x4z Unspecified.
-
-x5z Mail system: These replies indicate the status of the receiver mail
- system vis-a-vis the requested transfer or other mail system action.
-
-The third digit gives a finer gradation of meaning in each category
-specified by the second digit. The list of replies illustrates this. Each
-reply text is recommended rather than mandatory, and may even change
-according to the command with which it is associated. On the other hand,
-the reply codes must strictly follow the specifications in this section.
-Receiver implementations should not invent new codes for slightly different
-situations from the ones described here, but rather adapt codes already
-defined.
-
-For example, a command such as NOOP, whose successful execution does not
-offer the SMTP client any new information, will return a 250 reply. The
-reply is 502 when the command requests an unimplemented non-site-specific
-action. A refinement of that is the 504 reply for a command that is
-implemented, but that requests an unimplemented parameter.
-
-The reply text may be longer than a single line; in these cases the
-complete text must be marked so the SMTP client knows when it can stop
-reading the reply. This requires a special format to indicate a multiple
-line reply.
-
-The format for multiline replies requires that every line, except the last,
-begin with the reply code, followed immediately by a hyphen, "-" (also
-known as minus), followed by text. The last line will begin with the reply
-code, followed immediately by <SP>, optionally some text, and <CRLF>. As
-noted above, servers SHOULD send the <SP> if subsequent text is not sent,
-but clients MUST be prepared for it to be omitted.
-
-For example:
- 123-First line
- 123-Second line
- 123-234 text beginning with numbers
- 123 The last line
-
-In many cases the SMTP client then simply needs to search for the reply
-code followed by <SP> at the beginning of a line, and ignore all preceding
-lines. In a few cases, there is important data for the sender in the reply
-"text". The sender will be able to identify these cases from the current
-context.
-
-4.2.2 Reply Codes by Function Groups
-
- 500 Syntax error, command unrecognized
- (This may include errors such as command line too long)
- 501 Syntax error in parameters or arguments
- 502 Command not implemented (see section 4.2.4)
- 503 Bad sequence of commands
- 504 Command parameter not implemented
-
- 211 System status, or system help reply
- 214 Help message
- (Information on how to use the receiver or the meaning of a
- particular non-standard command; this reply is useful only
- to the human user)
-
- 220 <domain> Service ready
- 221 <domain> Service closing transmission channel
- 421 <domain> Service not available, closing transmission channel
- (This may be a reply to any command if the service knows it
- must shut down)
-
- 250 Requested mail action okay, completed
- 251 User not local; will forward to <forward-path>
- (See section 3.4)
- 252 Cannot VRFY user, but will accept message and attempt
- delivery
- (See section 3.5.3)
- 450 Requested mail action not taken: mailbox unavailable
- (e.g., mailbox busy)
- 550 Requested action not taken: mailbox unavailable
- (e.g., mailbox not found, no access, or command rejected
- for policy reasons)
- 451 Requested action aborted: error in processing
- 551 User not local; please try <forward-path>
- (See section 3.4)
- 452 Requested action not taken: insufficient system storage
- 552 Requested mail action aborted: exceeded storage allocation
- 553 Requested action not taken: mailbox name not allowed
- (e.g., mailbox syntax incorrect)
- 571 Address not accepted for policy reasons
- 354 Start mail input; end with <CRLF>.<CRLF>
- 554 Transaction failed (Or, in the case of a connection-opening
- response, "No SMTP service here")
-
-4.2.3 Reply Codes in Numeric Order
-
- 211 System status, or system help reply
- 214 Help message
- (Information on how to use the receiver or the meaning of a
- particular non-standard command; this reply is useful only
- to the human user)
- 220 <domain> Service ready
- 221 <domain> Service closing transmission channel
- 250 Requested mail action okay, completed
- 251 User not local; will forward to <forward-path>
- (See section 3.4)
- 252 Cannot VRFY user, but will accept message and attempt
- delivery
- (See section 3.5.3)
-
- 354 Start mail input; end with <CRLF>.<CRLF>
-
- 421 <domain> Service not available, closing transmission channel
- (This may be a reply to any command if the service knows it
- must shut down)
- 450 Requested mail action not taken: mailbox unavailable
- (e.g., mailbox busy)
- 451 Requested action aborted: local error in processing
- 452 Requested action not taken: insufficient system storage
-
- 500 Syntax error, command unrecognized
- (This may include errors such as command line too long)
- 501 Syntax error in parameters or arguments
- 502 Command not implemented (see section 4.2.4)
- 503 Bad sequence of commands
- 504 Command parameter not implemented
- 550 Requested action not taken: mailbox unavailable
- (e.g., mailbox not found, no access, or command rejected
- for policy reasons)
- 551 User not local; please try <forward-path>
- (See section 3.4)
- 552 Requested mail action aborted: exceeded storage allocation
- 553 Requested action not taken: mailbox name not allowed
- (e.g., mailbox syntax incorrect)
- 554 Transaction failed (Or, in the case of a connection-opening
- response, "No SMTP service here")
- 571 Address not accepted for policy reasons
-
-4.2.4 Reply Code 502
-
-Questions have been raised as to when reply code 502 (Command not
-implemented) SHOULD be returned in preference to other codes. 502 SHOULD
-be used when the command is actually recognized by the SMTP server, but not
-implemented. If the command is not recognized, code 500 SHOULD be
-returned. Extended SMTP systems MUST NOT list capabilities in response to
-EHLO for which they will return 502 (or 500) replies.
-
-4.2.5 Reply Codes After DATA and the Subsequent <CRLF>.<CRLF>
-
-When an SMTP server returns a positive completion status (2yz code) after
-the DATA command is completed with <CRLF>.<CRLF>, it accepts responsibility
-for:
-
- - delivering the message (if the recipient mailbox exists), or
-
- - if attempts to deliver the message fail due to transient conditions,
- retrying delivery some reasonable number of times at intervals as
- specified in section 4.5.4.
-
- - if attempts to deliver the message fail due to permanent conditions, or
- if repeated attempts to deliver the message fail due to transient
- conditions, returning appropriate notification to the sender of the
- original message (using the address in the SMTP MAIL FROM command).
-
-When an SMTP server returns a transient error completion status (4yz) code
-after the DATA command is completed with <CRLF>.<CRLF>, it MUST NOT make
-any further attempt to deliver that message. The SMTP client retains
-responsibility for delivery of that message and may either return it to the
-user or requeue it for a subsequent attempt (see section 4.5.4.1). The
-sending user SHOULD be able to interpret the return of a transient or
-permanent failure status as a non-delivery indication.
-
-4.3 Sequencing of Commands and Replies
-
-4.3.1 Sequencing Overview
-
-The communication between the sender and receiver is an alternating
-dialogue, controlled by the sender. As such, the sender issues a command
-and the receiver responds with a reply. Unless other arrangements are
-negotiated through service extensions, the sender MUST wait for this
-response before sending further commands.
-
-One important reply is the connection greeting. Normally, a receiver will
-send a 220 "Service ready" reply when the connection is completed. The
-sender SHOULD wait for this greeting message before sending any commands.
-
-Note: all the greeting-type replies have the official name (the
-fully-qualified primary domain name) of the server host as the first word
-following the reply code. Sometimes the host will have no meaningful name.
-See 4.1.3 for a discussion of alternatives in these situations.
-
-For example,
- 220 ISIF.USC.EDU Service ready
-or
- 220 mail.foo.com SuperSMTP v 6.1.2 Service ready
-or
- 220 [10.0.0.1] Clueless host service ready
-
-The table below lists alternative success and failure replies for each
-command. These SHOULD be strictly adhered to: a receiver may substitute
-text in the replies, but the meaning and action implied by the code numbers
-and by the specific command reply sequence cannot be altered.
-
-4.3.2 Command-Reply Sequences
-
-Each command is listed with its usual possible replies. The prefixes used
-before the possible replies are "I" for intermediate, "S" for success, and
-"E" for error. Since some servers may generate other replies under special
-circumstances, and to allow for future extension, SMTP clients SHOULD, when
-possible, interpret only the first digit of the reply and MUST be prepared
-to deal with unrecognized reply codes by interpreting the first digit only.
-Unless extended using the mechanisms described in section 2.2, SMTP servers
-MUST NOT transmit reply codes to an SMTP client that are other than three
-digits or that do not start in a digit between 2 and 5 inclusive.
-
-These sequencing rules and, in principle, the codes themselves, can be
-extended or modified by SMTP extensions offered by the server and accepted
-(requested) by the client.
-
-In addition to the codes listed below, any SMTP command can return any of
-the following codes if the corresponding unusual circumstances are
-encountered:
-
-500 For the "command line too long" case or if the command name was not
- recognized. Note that producing a "command not recognized" error in
- response to the required subset of these commands is a violation of this
- specification.
-
-501 Syntax error in command or arguments. In order to provide for future
- extensions, commands that are specified in this document as not
- accepting arguments (DATA, NOOP, RSET) SHOULD return a 501 message if
- arguments are supplied in the absence of EHLO-advertised extensions.
-
-421 Service shutting down and closing transmission channel
-
-Specific sequences are:
-
-CONNECTION ESTABLISHMENT
- S: 220
- E: 554
-EHLO or HELO
- S: 250
- E: 504, 550
-MAIL
- S: 250
- E: 552, 451, 452, 550, 553
-RCPT
- S: 250, 251 (but see section 3.4 for discussion of 251)
- E: 550, 551, 552, 553, 450, 451, 452, 503, 550
-DATA
- I: 354 -> data -> S: 250
- E: 552, 554, 451, 452
- E: 451, 554, 503
-RSET
- S: 250
-VRFY
- S: 250, 251, 252
- E: 550, 551, 553, 502, 504
-EXPN
- S: 250, 252
- E: 550, 500, 502, 504
-HELP
- S: 211, 214
- E: 502, 504
-NOOP
- S: 250
-QUIT
- S: 221
-
-4.4 Trace Information
-
-When an SMTP server receives a message for delivery or further processing,
-it MUST insert trace ("time stamp" or "Received") information at the
-beginning of the message content, as discussed in section 4.1.1.4.
-
-This line MUST be structured as follows:
-
- - The FROM field, which MUST be supplied in an SMTP environment, SHOULD
- contain both (1) the name of the source host as presented in the EHLO
- command and (2) an address literal containing the IP address of the
- source, determined from the TCP connection.
-
- - The ID field MAY contain an "@" as suggested in RFC-822, but this is not
- required.
-
- - The FOR field MAY contain a list of <path> entries when multiple RCPT
- commands have been given. This may raise some security issues and is
- usually not desirable; see section 7.2.
-
-An Internet mail program MUST NOT change a Received: line that was
-previously added to the message header. SMTP servers MUST prepend Received
-lines to messages; they MUST NOT change the order of existing lines or
-insert Received lines in any other location.
-
-As the Internet grows, comparability of Received fields is important for
-detecting problems, especially slow relays. SMTP servers that create
-Received fields SHOULD use explicit offsets in the dates (e.g., -0800),
-rather than time zone names of any type. Local time (with an offset) is
-preferred to UT when feasible. This formulation allows slightly more
-information about local circumstances to be specified. If UT is needed,
-the receiver need merely do some simple arithmetic to convert the values.
-Use of UT loses information about the time zone-location of the server. If
-a time zone name is used, it SHOULD be included in a comment.
-
-When the delivery SMTP server makes the "final delivery" of a message, it
-inserts a return-path line at the beginning of the mail data. This use of
-return-path is required; mail systems MUST support it. The return-path
-line preserves the information in the <reverse-path> from the MAIL command.
-Here, final delivery means the message has left the SMTP world. Normally,
-this would mean it had been delivered to the destination user or an
-associated mail drop, but in some cases it may be further processed and
-transmitted by another mail system.
-
-It is possible for the mailbox in the return path to be different from the
-actual sender's mailbox, for example, if error responses are to be
-delivered to a special error handling mailbox rather than to the message
-sender. When mailing lists are involved, this arrangement is common and
-useful as a means of directing errors to the list maintainer rather than
-the message originator.
-
-The text above implies that the final mail data will begin with a return
-path line, followed by one or more time stamp lines. These lines will be
-followed by the mail data headers and body [RFC-822].
-
-It is sometimes difficult for an SMTP server to determine whether or not it
-is making final delivery since forwarding or other operations may occur
-after the message is accepted for delivery. Consequently, any further
-(forwarding, gateway, or relay) systems MAY remove the return path and
-rebuild the MAIL FROM command as needed to ensure that exactly one such
-line appears in a delivered message.
-
-A message-originating SMTP system SHOULD NOT send a message that already
-contains a Return-path header. SMTP servers performing a relay function
-MUST NOT inspect the message data, and especially not to the extent needed
-to determine if Return-path headers are present. SMTP servers making final
-delivery MAY remove Return-path headers before adding their own.
-
-The primary purpose of the Return-path is to designate the address to which
-messages indicating non-delivery or other mail system failures are to be
-sent. For this to be unambiguous, exactly one return path SHOULD be
-present when the message is delivered. Systems using RFC 822 syntax with
-non-SMTP transports SHOULD designate an unambiguous address, associated
-with the transport envelope, to which error reports (e.g., non-delivery
-messages) should be sent.
-
-Historical note: Text in RFC 822 that appears to contradict the use of the
-Return-path header (or the envelope MAIL FROM address) as the destination
-for error messages is not applicable on the Internet. The MAIL FROM address
-(as copied into the Return-path) MUST be used as the target of any mail
-containing delivery error messages.
-
-In particular:
-
- - a gateway from SMTP->elsewhere SHOULD insert a return-path header,
- unless it is known that the "elsewhere" transport also uses Internet
- domain addresses and maintains the envelope sender address separately.
-
- - a gateway from elsewhere->SMTP SHOULD delete any return-path header
- present in the message, and either copy that information to the SMTP
- envelope or combine it with information present in the envelope of the
- other transport system to construct the MAIL FROM part of the SMTP
- envelope.
-
-The server must give special treatment to cases in which the processing
-following the end of mail data indication is only partially successful.
-This could happen if, after accepting several recipients and the mail data,
-the SMTP server finds that the mail data could be successfully delivered to
-some, but not all, of the recipients. In such cases, the response to the
-DATA command MUST be an OK reply. However, the SMTP server MUST compose
-and send an "undeliverable mail" notification message to the originator of
-the message.
-
-A single notification listing all of the failed recipients or separate
-notification messages MUST be sent for each failed recipient. For economy
-of processing by the sender, the former is preferred when possible. All
-undeliverable mail notification messages are sent using the MAIL command
-(even if they result from processing the obsolete SEND, SOML, or SAML
-commands) and use a null return path as discussed in section 3.7.
-
-The time stamp line and the return path line are formally defined as
-follows:
-
- Return-path-line = "Return-Path:" FWS Reverse-path <CRLF>
-
- Time-stamp-line = "Received:" FWS Stamp <CRLF>
-
- Stamp = From-domain By-domain Opt-info ";" FWS Daytime
-
- From-domain = "FROM" FWS Extended-Domain CFWS
-
- By-domain = "BY" FWS Extended-Domain CFWS
-
- Extended-Domain = Domain /
- ( Domain FWS "(" TCP-info ")" ) /
- ( Address-literal FWS "(" TCP-info ")"
- TCP-info = Address-literal / ( Domain FWS Address-literal )
- ; Information derived by server from TCP connection, not client EHLO.
-
- Opt-info = [Via] [With] [ID] [For]
-
- Via = "VIA" FWS Link CFWS
-
- With = "WITH" FWS Protocol CFWS
-
- ID = "ID" FWS String / msg-id CFWS
-
- For = "FOR" FWS 1*( Path / Mailbox ) CFWS
-
- Link = <<>> / Addtl-Link
- Addtl-Link = Atom ; Additional standard names for links are
- registered with the Internet Assigned
- Numbers Authority (IANA).
- SMTP servers SHOULD NOT use unregistered
- names.
- Protocol = "ESMTP" / "SMTP" / Attdl-Protocol
- Attdl-Protocol = Atom ; Additional standard names for protocols
- are registered with the Internet Assigned
- Numbers Authority (IANA). SMTP servers
- SHOULD NOT use unregistered names.
-
- Daytime = FWS [ day-of-week "," FWS ] Date FWS Time
-
- Date = DD FWS Mon FWS YYYY
- ; Note that the earlier form, which permits two-digit years, has
- been deprecated. SMTP systems MUST use four-digit years.
-
- Time = HH ":" MM ":" SS FWS Zone
-
- DD = 1*2Digit ; the one or two digit integer day of the
- month in the range 1 to 31.
-
- Mon = "JAN" | "FEB" | "MAR" | "APR" | "MAY" | "JUN" |
- "JUL" | "AUG" | "SEP" | "OCT" | "NOV" | "DEC"
-
- YYYY = 4*4Digit ; the four decimal integer year in the range
- 0000 to 9999.
-
- HH = 2*2Digit ; the two decimal digit hour of the day in
- the range 00 to 24.
-
- MM = 2*2Digit ; the two decimal digit integer minute of the hour
- in the range 00 to 59.
-
- SS = 2*2Digit [ "." 1*Digit ]
- ; the two decimal digit integer second of the
- minute in the range 00 to 59, with
- optional fractional seconds.
-
- Zone = ( "+" / "-" ) 4*4Digit [ <SP> "(" String ")" ]
- ; A four digit, signed time zone offset,
- such as -0500 for US Eastern Standard
- Time. This may be supplemented by a time
- zone name in parentheses, e.g., "-0800
- (PDT)". Note that there is no default;
- time zone information is required and
- MUST be supplied.
-
-4.5 Additional Implementation Issues
-
-4.5.1 Minimum Implementation
-
-In order to make SMTP workable, the following minimum implementation is
-required for all receivers. The following commands MUST be supported to
-conform to this specification:
- EHLO
- HELO
- VRFY
- MAIL
- RCPT
- DATA
- RSET
- NOOP
- QUIT
-
-Any system that includes an SMTP server supporting mail relaying or
-delivery MUST support the reserved mailbox "postmaster" as a
-case-insensitive local name. This postmaster address is not strictly
-necessary if the server always returns 554 on connection opening (as
-described in section 3.1). The requirement to accept mail for postmaster
-implies that RCPT TO commands which specify a mailbox for postmaster at any
-of the domains for which the SMTP server provides mail service, as well as
-the special case of "RCPT TO:<Postmaster>" (with no domain specification),
-MUST be supported. This requirement does not imply that SMTP systems must
-deliver Postmaster mail in particular cases (e.g., problematic origin
-addresses) in which they have substantive reasons for not doing so.
-
-4.5.2 Transparency
-
-Without some provision for data transparency, the character sequence
-"<CRLF>.<CRLF>" ends the mail text and cannot be sent by the user. In
-general, users are not aware of such "forbidden" sequences. To allow all
-user composed text to be transmitted transparently, the following
-procedures are used:
-
- - Before sending a line of mail text, the SMTP client checks the first
- character of the line. If it is a period, one additional period is
- inserted at the beginning of the line.
-
- - When a line of mail text is received by the SMTP server, it checks the
- line. If the line is composed of a single period, it is treated as the
- end of mail indicator. If the first character is a period and there are
- other characters on the line, the first character is deleted.
-
-The mail data may contain any of the 128 ASCII characters. All characters
-are to be delivered to the recipient's mailbox, including spaces, vertical
-and horizontal tabs, and other control characters. If the transmission
-channel provides an 8-bit byte (octets) data stream, the 7-bit ASCII codes
-are transmitted right justified in the octets, with the high order bits
-cleared to zero. See 3.7 for special treatment of these conditions in SMTP
-systems serving a relay function.
-
-In some systems it may be necessary to transform the data as it is received
-and stored. This may be necessary for hosts that use a different character
-set than ASCII as their local character set or store data in records rather
-than strings. If such transformations are necessary, they MUST be
-reversible, especially if such transformations are applied to mail being
-relayed.
-
-4.5.3 Sizes and Timeouts
-
-There are several objects that have required minimum/maximum sizes. Every
-implementation MUST be able to receive objects of at least these sizes.
-Objects larger than these sizes SHOULD be avoided when possible. However,
-some Internet mail constructs such as encoded X.400 addresses [RFC-X400]
-will often require larger objects: clients MAY attempt to transmit these,
-but MUST be prepared for a server to reject them if they cannot be handled
-by it. To the maximum extent possible, implementation techniques which
-impose no limits on the length of these objects should be used.
-
-local-part
- The maximum total length of a user name or other local-part is 64
- characters.
-
-domain
- The maximum total length of a domain name or number is 255 characters.
-
-path
- The maximum total length of a reverse-path or forward-path is 256
- characters (including the punctuation and element separators).
-
-command line
- The maximum total length of a command line including the command word
- and the <CRLF> is 512 characters. SMTP extensions may be used to
- increase this limit.
-
-reply line
- The maximum total length of a reply line including the reply code and
- the <CRLF> is 512 characters. More information may be conveyed through
- multiple-line replies.
-
-text line
- The maximum total length of a text line including the <CRLF> is 1000
- characters (not counting the leading dot duplicated for transparency).
- This number may be increased by the use of SMTP Service Extensions.
-
-message content
- The maximum total length of a message content (including any message
- headers as well as the message body) MUST BE at least 64K octets. Since
- the introduction of multimedia mail [RFC-MIME], message lengths on the
- Internet have grown dramatically, and message size restrictions should
- be avoided if at all possible. SMTP server systems that must impose
- restrictions SHOULD implement the "SIZE" service extension ([RFC-SIZE]),
- and SMTP client systems that will send large messages SHOULD utilize it
- when possible.
-
-recipients buffer
- The minimum total number of recipients that must be buffered is 100
- recipients. Rejection of messages (for excessive recipients) with fewer
- than 100 RCPT TO commands is a violation of this specification. The
- general principle that relaying SMTP servers MUST NOT, and delivery SMTP
- servers SHOULD NOT, perform validation tests on message headers suggests
- that rejecting a message based on the total number of recipients shown
- in header fields is to be discouraged. A server which imposes a limit
- on the number of recipients MUST behave in an orderly fashion, such as
- to reject additional addresses over its limit rather than silently
- discarding addresses previously accepted. A client that needs to
- deliver a message containing over 100 RCPT TO commands SHOULD be
- prepared to transmit in 100-recipient "chunks" if the server declines to
- accept more than 100 recipients in a single message.
-
-Errors due to exceeding these limits may be reported by using the reply
-codes. Some examples of reply codes are:
-
- 500 Line too long.
-or
- 501 Path too long
-or
- 452 Too many recipients (see below)
-or
- 552 Too much mail data.
-
-[RFC-821] incorrectly listed the error where an SMTP server exhausts its
-implementation limit on the number of RCPT TO commands ("too many
-recipients") as having reply code 552. The correct reply code for this
-condition is 452. Clients SHOULD treat a 552 code in this case as a
-temporary, rather than permanent failure so the logic below works.
-
-When a conforming SMTP server encounters this condition, it has at least
-100 successful RCPT commands in its recipients buffer. If the server is
-able to accept the message, then at least these 100 addresses will be
-removed from the SMTP client's queue. When the client attempts
-retransmission of those addresses which received 452 responses, at least
-100 of these will be able to fit in the SMTP server's recipients buffer.
-Each retransmission attempt which is able to deliver anything will be able
-to dispose of at least 100 of these recipients.
-
-If an SMTP server has an implementation limit on the number of RCPT TO
-commands and this limit is exhausted, it MUST use a response code of 452.
-If the server has a configured site-policy limitation on the number of RCPT
-TO commands, it MAY instead use a 5XX response code.
-
-In order to interoperate with SMTP servers implementing an older version of
-the protocol, SMTP clients MAY treat a 552 code obtained in response to an
-RCPT command as if it were a 452 response code, especially after some RCPT
-commands have already been accepted in the same mail transaction.
-
-An SMTP client MUST provide a timeout mechanism. It MUST use per-command
-timeouts rather than somehow trying to time the entire mail transaction.
-Timeouts SHOULD be easily reconfigurable, preferably without recompiling
-the SMTP code. To implement this, a timer is set for each SMTP command and
-for each buffer of the data transfer. The latter means that the overall
-timeout is inherently proportional to the size of the message.
-
-Based on extensive experience with busy mail-relay hosts, the minimum
-per-command timeout values SHOULD be as follows:
-
-Initial 220 Message: 5 minutes
- An SMTP client process needs to distinguish between a failed TCP
- connection and a delay in receiving the initial 220 greeting message.
- Many SMTP servers accept a TCP connection but delay delivery of the 220
- message until their system load permits more mail to be processed.
-
-MAIL Command: 5 minutes
-
-RCPT Command: 5 minutes
- A longer timeout is required if processing of mailing lists and aliases
- is not deferred until after the message was accepted.
-
-DATA Initiation: 2 minutes
- This is while awaiting the "354 Start Input" reply to a DATA command.
-
-Data Block: 3 minutes
- This is while awaiting the completion of each TCP SEND call transmitting
- a chunk of data.
-
-DATA Termination: 10 minutes.
- This is while awaiting the "250 OK" reply. When the receiver gets the
- final period terminating the message data, it typically performs
- processing to deliver the message to a user mailbox. A spurious timeout
- at this point would be very wasteful and would typically result in
- delivery of multiple copies of the message, since it has been
- successfully sent and the server has accepted responsibility for
- delivery. See section 6.1 for additional discussion.
-
-An SMTP server SHOULD have a timeout of at least 5 minutes while it is
-awaiting the next command from the sender.
-
-4.5.4 Queuing Strategies
-
-The common structure of a host SMTP implementation includes user mailboxes,
-one or more areas for queuing messages in transit, and one or more daemon
-processes for sending and receiving mail. The exact structure will vary
-depending on the needs of the users on the host and the number and size of
-mailing lists supported by the host. We describe several optimizations that
-have proved helpful, particularly for mailers supporting high traffic
-levels.
-
-Any queuing strategy MUST include timeouts on all activities on a
-per-command basis. A queuing strategy MUST never send error messages in
-response to error messages.
-
-4.5.4.1 Sending Strategy
-
-The general model for an SMTP client is one or more processes that
-periodically attempt to transmit outgoing mail. In a typical system, the
-program that composes a message has some method for requesting immediate
-attention for a new piece of outgoing mail, while mail that cannot be
-transmitted immediately MUST be queued and periodically retried by the
-sender. A mail queue entry will include not only the message itself but
-also the envelope information.
-
-The sender MUST delay retrying a particular destination after one attempt
-has failed. In general, the retry interval SHOULD be at least 30 minutes;
-however, more sophisticated and variable strategies will be beneficial when
-the SMTP client can determine the reason for non-delivery.
-
-Retries continue until the message is transmitted or the sender gives up;
-the give-up time generally needs to be at least 4-5 days. The parameters
-to the retry algorithm MUST be configurable.
-
-A client SHOULD keep a list of hosts it cannot reach and corresponding
-connection timeouts, rather than just retrying queued mail items.
-
-Experience suggests that failures are typically transient (the target
-system or its connection has crashed), favoring a policy of two connection
-attempts in the first hour the message is in the queue, and then backing
-off to one every two or three hours.
-
-The SMTP client can shorten the queuing delay in cooperation with the SMTP
-server. For example, if mail is received from a particular address, it is
-likely that mail queued for that host can now be sent. Application of this
-principle may, in many cases, eliminate the requirement for an explicit
-"send queues now" function such as that discussed in [RFC-ETRN].
-
-The strategy may be further modified as a result of multiple addresses per
-host (see below) to optimize delivery time vs. resource usage.
-
-An SMTP client may have a large queue of messages for each unavailable
-destination host. If all of these messages were retried in every retry
-cycle, there would be excessive Internet overhead and the sending system
-would be blocked for a long period. Note that an SMTP client can generally
-determine that a delivery attempt has failed only after a timeout of
-several minutes and even a one-minute timeout per connection will result in
-a very large delay if retries are repeated for dozens, or even hundreds, of
-queued messages to the same host.
-
-At the same time, SMTP clients SHOULD use great care in caching negative
-responses from servers. In an extreme case, if EHLO is issued multiple
-times during the same SMTP connection, different answers may be returned by
-the server. More significantly, 5yz responses to MAIL FROM MUST NOT be
-cached.
-
-When a mail message is to be delivered to multiple recipients, and the SMTP
-server to which a copy of the message is to be sent is the same for
-multiple recipients, then only one copy of the message SHOULD be
-transmitted. That is, the SMTP client SHOULD use the command sequence:
-MAIL, RCPT, RCPT,... RCPT, DATA instead of the sequence: MAIL, RCPT, DATA,
-..., MAIL, RCPT, DATA. However, if there are very many addresses, a limit
-on the number of RCPT commands per MAIL command MAY be imposed.
-Implementation of this efficiency feature is strongly encouraged.
-
-Similarly, to achieve timely delivery, the SMTP client MAY support multiple
-concurrent outgoing mail transactions. However, some limit may be
-appropriate to protect the host from devoting all its resources to mail.
-
-4.5.4.2 Receiving Strategy
-
-The SMTP server SHOULD attempt to keep a pending listen on the SMTP port at
-all times. This requires the support of multiple incoming TCP connections
-for SMTP. Some limit MAY be imposed.
-
-As discussed above, when the SMTP server receives mail from a particular
-host address, it could notify the SMTP client to retry any mail pending for
-that host address.
-
-
-5. Address Resolution and Mail Handling
-
-Once an SMTP client lexically identifies a domain to which mail will be
-delivered for processing (as described in sections 3.6 and 3.7), a DNS
-lookup is performed to resolve the domain name (see [RFC-DNS]). The names
-are expected to be fully-qualified domain names (FQDNs): mechanisms for
-inferring FQDNs from partial names or local aliases are outside of this
-specification and, due to a history of problems, are generally discouraged.
-The lookup first attempts to locate an MX record associated with the name.
-If a CNAME record is found instead, the resulting name is processed as if
-it were the initial name. If no MX records are found, but an A RR is
-found, the A RR is treated as if it was associated with an implicit MX RR,
-with a preference of 0, pointing to that host. If one or more MX RRs are
-found for a given name, SMTP systems MUST NOT utilize any A RRs associated
-with that name unless they are located using the MX RRs; the "implicit MX"
-rule above applies only if there are no MX records present. If MX records
-are present, but none of them are usable, this situation MUST be reported
-as an error.
-
-When the lookup succeeds, the mapping can result in a list of alternative
-delivery addresses rather than a single address, because of multiple MX
-records, multihoming, or both. To provide reliable mail transmission, the
-SMTP client MUST be able to try (and retry) each of the relevant addresses
-in this list in order, until a delivery attempt succeeds. However, there
-MAY also be a configurable limit on the number of alternate addresses that
-can be tried. In any case, a host SHOULD try at least two addresses.
-
-Two types of information is used to rank the host addresses: multiple MX
-records, and multihomed hosts.
-
-Multiple MX records contain a preference indication that SHOULD be used in
-sorting (see below). Lower numbers are more preferred than higher ones.
-If there are multiple destinations with the same preference and there is no
-clear reason to favor one (e.g., by recognition of an easily-reached
-address), then the sender-SMTP MUST randomize them to spread the load
-across multiple mail exchangers for a specific organization.
-
-The destination host (perhaps taken from the preferred MX record) may be
-multihomed, in which case the domain name resolver will return a list of
-alternative IP addresses. It is the responsibility of the domain name
-resolver interface to have ordered this list by decreasing preference if
-necessary, and SMTP MUST try them in the order presented.
-
-Although the capability to try multiple alternative addresses is required,
-specific installations may want to limit or disable the use of alternative
-addresses. The question of whether a sender should attempt retries using
-the different addresses of a multihomed host has been controversial. The
-main argument for using the multiple addresses is that it maximizes the
-probability of timely delivery, and indeed sometimes the probability of any
-delivery; the counter-argument is that it may result in unnecessary
-resource use. Note that resource use is also strongly determined by the
-sending strategy discussed in section 4.5.4.1.
-
-If a host receives a message with a destination for which it is a
-designated Mail eXchanger, it MAY relay the message (potentially after
-having rewritten the addresses), make final delivery of the message, or
-hand it off using some mechanism outside the SMTP-provided transport
-environment.
-
-If it determines that it should relay the message without rewriting the
-address, it MUST sort the MX records to determine candidates for delivery.
-The records are first ordered by preference, with the lowest-numbered
-records being most preferred. The relay host MUST then inspect the list
-for any of the names or addresses by which it might be known in mail
-transactions. If a matching record is found, all records at that
-preference level and higher-numbered ones MUST be discarded from
-consideration. If there are no records left at that point, it is an error
-condition, and the message MUST be returned as undeliverable. If records
-do remain, they SHOULD be tried, best preference first, as described above.
-
-
-6. Problem Detection and Handling
-
-6.1 Reliable Delivery and Replies by Email
-
-When the receiver-SMTP accepts a piece of mail (by sending a "250 OK"
-message in response to DATA), it is accepting responsibility for delivering
-or relaying the message. It must take this responsibility seriously. It
-MUST NOT lose the message for frivolous reasons, such as because the host
-later crashes or because of a predictable resource shortage.
-
-If there is a delivery failure after acceptance of a message, the
-receiver-SMTP MUST formulate and mail a notification message. This
-notification MUST be sent using a null ("<>") reverse path in the envelope.
-The recipient of this notification SHOULD be the address from the envelope
-return path (or the Return-Path: line). However, if this address is null
-("<>"), the receiver-SMTP MUST NOT send a notification. Obviously, nothing
-in this section can or should prohibit local decisions (i.e., as part of
-the same system environment as the receiver-SMTP) to log or otherwise
-transmit information about null address events locally if that is desired.
-If the address is an explicit source route, it MUST be stripped down to its
-final hop.
-
-For example, suppose that an error notification must be sent for a message
-that arrived with:
- MAIL FROM:<@a,@b:user@d>
-
-The notification message SHOULD be sent using:
- RCPT TO:<user@d>
-
-Some delivery failures after the message is accepted by SMTP will be
-unavoidable. For example, it may be impossible for the receiving SMTP
-server to validate all the delivery addresses in RCPT command(s) due to a
-"soft" domain system error, because the target is a mailing list (see
-earlier discussion of RCPT), or because the server is acting as a relay and
-has no immediate access to the delivering system.
-
-To avoid receiving duplicate messages as the result of timeouts, a
-receiver-SMTP MUST seek to minimize the time required to respond to the
-final <CRLF>.<CRLF> end of data indicator. See RFC-1047 [RFC-1047] for a
-discussion of this problem.
-
-6.2 Loop Detection
-
-Simple counting of the number of "Received:" headers in a message has
-proven to be an effective, although rarely optimal, method of detecting
-loops in mail systems. SMTP servers using this technique SHOULD use a
-large rejection threshold, normally at least 100 Received entries.
-Whatever mechanisms are used, servers MUST contain provisions for detecting
-and stopping trivial loops.
-
-6.3 Compensating for Irregularities
-
-Unfortunately, variations, creative interpretations, and outright
-violations of Internet mail protocols do occur; some would suggest that
-they occur quite frequently. The debate as to whether a well-behaved SMTP
-receiver or relay should reject a malformed message, attempt to pass it on
-unchanged, or attempt to repair it to increase the odds of successful
-delivery (or subsequent reply) began almost with the dawn of structured
-network mail and shows no signs of abating. Advocates of rejection claim
-that attempted repairs are rarely completely adequate and that rejection of
-bad messages is the only way to get the offending software repaired.
-Advocates of "repair" or "deliver no matter what" argue that users prefer
-that mail go through it if at all possible and that there are significant
-market pressures in that direction. In practice, these market pressures
-may be more important to particular vendors than strict conformance to the
-standards, regardless of the preference of the actual developers.
-
-The problems associated with ill-formed messages were exacerbated by the
-introduction of the split-UA mail reading protocols [RFC-POP2, RFC-POP3,
-RFC-IMAP2, RFC-PCMAIL]. These protocols have encouraged the use of SMTP as
-a posting protocol, and SMTP servers as relay systems for these client
-hosts (which are often only intermittently connected to the Internet).
-Historically, many of those client machines lacked some of the mechanisms
-and information assumed by SMTP (and indeed, by the mail format protocol
-[RFC-822]). Some could not keep adequate track of time; others had no
-concept of time zones; still others could not identify their own names or
-addresses; and, of course, none could satisfy the assumptions that underlay
-RFC-822's conception of authenticated addresses.
-
-In response to these weak SMTP clients, many SMTP systems now complete
-messages that are delivered to them in incomplete or incorrect form. This
-strategy is generally considered appropriate when the server can identify
-or authenticate the client, and there are prior agreements between them.
-By contrast, there is at best great concern about fixes applied by a relay
-or delivery SMTP server that has little or no knowledge of the user or
-client machine.
-
-The following changes to a message being processed MAY be applied when
-necessary by an originating SMTP server, or one used as the target of SMTP
-as an initial posting protocol:
-
- - Addition of a message-id field when none appears
-
- - Addition of a date, time or time zone when none appears
-
- - Correction of addresses to proper FQDN format
-
-The less information the server has about the client, the less likely these
-changes are to be correct and the more caution and conservatism should be
-applied when considering whether or not to perform fixes and how. These
-changes MUST NOT be applied by an SMTP server that provides an intermediate
-relay function.
-
-In all cases, properly-operating clients supplying correct information are
-preferred to corrections by the SMTP server. In all cases, documentation of
-actions performed by the servers (in trace fields and/or header comments)
-is strongly encouraged.
-
-
-7. Security Considerations
-
-7.1 Mail Security and Spoofing
-
-SMTP mail is inherently insecure in that it is feasible for even fairly
-casual users to negotiate directly with receiving and relaying SMTP servers
-and create messages that will trick a naive recipient into believing that
-they came from somewhere else. Constructing such a message so that the
-"spoofed" behavior cannot be detected by an expert is somewhat more
-difficult, but not sufficiently so as to be a deterrent to someone who is
-determined and knowledgeable. Consequently, as knowledge of Internet mail
-increases, so does the knowledge that SMTP mail inherently cannot be
-authenticated, or integrity checks provided, at the transport level. Real
-mail security lies only in end-to-end methods involving the message bodies,
-such as those that can be provided in the MOSS framework [RFC-MOSS].
-
-Various protocol extensions and configuration options that provide
-authentication at the transport level (e.g., from an SMTP client to an SMTP
-server) improve somewhat on the traditional situation described above.
-However, unless they are accompanied by careful handoffs of responsibility
-in a carefully-designed trust environment, they remain inherently weaker
-than end-to-end mechanisms which use digitally signed messages rather than
-depending on the integrity of the transport system.
-
-Efforts to make it more difficult for users to set envelope MAIL FROM and
-header "From" fields to point to valid addresses other than their own are
-largely misguided: they frustrate legitimate applications in which mail is
-sent by one user on behalf of another or in which error (or normal) replies
-should be directed to a special address. (Systems that provide convenient
-ways for users to alter these fields on a per-message basis should attempt
-to establish a primary and permanent mailbox address for the user so that
-Sender fields within the message data can be generated sensibly.)
-
-This specification does not further address the authentication issues
-associated with SMTP other than to advocate that useful functionality not
-be disabled in the hope of providing some small margin of protection
-against an ignorant user who is trying to fake mail.
-
-7.2 "Blind" Copies
-
-Addresses that do not appear in the message headers may appear in the RCPT
-TO commands to an SMTP server for a number of reasons. The two most common
-involve the use of a mailing address as a "list exploder" (a single address
-that resolves into multiple addresses) and the appearance of "blind
-copies". Especially when more than one RCPT command is present, and in
-order to avoid defeating some of the purpose of these mechanisms, SMTP
-clients and servers SHOULD NOT copy the full set of RCPT TO command
-arguments into the headers, either as part of trace headers or as
-informational or private-extension headers. Since this rule is often
-violated in practice, and cannot be enforced, sending SMTP systems that are
-aware of "bcc" use MAY find it helpful to send each blind copy as a
-separate message transaction containing only a single RCPT TO command.
-
-There is no inherent relationship between either "reverse" (MAIL FROM, SAML
-FROM, etc.) or "forward" (RCPT TO) addresses in the SMTP transaction
-("envelope") and the addresses in the headers. Receiving systems SHOULD
-NOT attempt to deduce such relationships and use them to alter the headers
-of the message for delivery. The popular "Apparently-to" header is a
-violation of this principle and SHOULD NOT be used.
-
-7.3 VRFY, EXPN, and Security
-
-As discussed in section 3.5, individual sites may want to disable one or
-both VRFY or EXPN for security reasons. As a corollary to the above,
-implementations that permit this MUST NOT appear to have verified addresses
-that are not, in fact, verified. If a site disables these commands for
-security reasons, the SMTP server MUST return a 252 response, rather than a
-code that could be confused with successful or unsuccessful verification.
-
-Returning a 250 reply code with the address listed in the VRFY command
-after having checked it only for syntax violates this rule. Of course, an
-implementation that "supports" VRFY by always returning 550 whether or not
-the address is valid is equally not in conformance.
-
-Within the last few years, the contents of mailing lists have become
-popular as an address information source for so-called "spammers." The use
-of EXPN to "harvest" addresses has increased as list administrators have
-installed protections against inappropriate uses of the lists themselves.
-Implementations SHOULD still provide support for EXPN, but sites SHOULD
-carefully evaluate the tradeoffs. As authentication mechanisms are
-introduced into SMTP, some sites may choose to make EXPN available only to
-authenticated requestors.
-
-7.4 Information Disclosure in Announcements
-
-There has been an ongoing debate about the tradeoffs between the debugging
-advantages of announcing server type and version (and, sometimes, even
-server domain name) in the greeting response or in response to the HELP
-command and the disadvantages of exposing useful information to potential
-hostile attack. The utility of the debugging information is beyond doubt.
-Those who argue for making it available point out that it is far better to
-actually secure an SMTP server rather than hope that trying to conceal
-known vulnerabilities by hiding the server's precise identity will provide
-more protection. Sites are encouraged to evaluate the tradeoff with that
-issue in mind; implementations are strongly encouraged to minimally provide
-for making type and version information available in some way to other
-network hosts.
-
-7.5 Information Disclosure in Trace Fields
-
-In some circumstances, such as when mail originates from within a LAN whose
-hosts are not directly from the public Internet, trace ("Received") fields
-produced in conformance with this specification may disclose host names and
-similar information that would not normally be available. This ordinarily
-does not pose a problem, but sites with special concerns about name
-disclosure should be aware of it. Also, the optional FOR clause should be
-supplied with caution or not at all when multiple recipients are involved
-lest it inadvertently disclose the identities of "blind copy" recipients to
-others.
-
-7.6 Scope of Operation of SMTP Servers
-
-It is a well-established principle that an SMTP server may refuse to accept
-mail for any operational or technical reason that makes sense to the site
-providing the server. However, cooperation among sites and installations
-makes the Internet possible. If sites take excessive advantage of the
-right to reject traffic, the ubiquity of email availability (one of the
-strengths of the Internet) will be threatened; considerable care should be
-taken and balance maintained if a site decides to be selective about the
-traffic it will accept and process.
-
-In recent years, use of the relay function through arbitrary sites has been
-used as part of hostile efforts to hide the actual origins of mail. Some
-sites have decided to limit the use of the relay function to known or
-identifiable sources, and implementations SHOULD provide the capability to
-perform this type of filtering. When mail is rejected for these or other
-policy reasons, a 550 code SHOULD be used in response to EHLO, MAIL FROM,
-or RCPT TO as appropriate.
-
-
-8. IANA Considerations
-
-IANA is <<requested>> to set up three registries. The first consists of
-SMTP service extensions with the associated keywords, and, as needed,
-parameters and verbs. As specified in section 2.2.2, no entry may be made
-in this registry that starts in an "X". Entries may be made only for
-service extensions (and associated keywords, parameters, or verbs) that are
-defined in standards-track or experimental RFCs specifically approved by
-the IESG for this purpose.
-
-The second registry consists of "tags" that identify forms of domain
-literals other than those for IPv4 addresses (specified in RFC 821 and in
-this document) and IPv6 addresses (specified in this document). Additional
-literal types require standardization before being used; none are
-anticipated at this time.
-
-The third, established by RFC 821 and renewed by this specification, is a
-registry of link and protocol identifiers to be used with the "via" and
-"with" subclauses of the time stamp ("Received: header") described in
-section 4.4. Link and protocol identifiers in addition to those specified
-in this document may be registered only by standardization or by way of an
-RFC-documented, IESG-approved, Experimental protocol extension.
-
-
-9. References
-
-[8BITMIME] J. Klensin, N. Freed, M. Rose, E. Stefferud, D. Crocker, "SMTP
-Service Extension for 8bit-MIMEtransport", RFC 1652, 07/18/1994.
-
-[ABNF] Crocker, D., P. Overell, Eds., "Augmented BNF for Syntax
-Specifications: ABNF", RFC 2234, November 1997.
-
-[IPv6AddrString] Hinden, R and S. Deering, Eds. "IP Version 6 Addressing
-Architecture", RFC 1884, December 1995.
-
-[MSGFMT] P. Resnick, Work in progress, draft-ietf-drums-msg-fmt-05.txt,
-August, 1998
-
-[RFC-822] Crocker, D., "Standard for the Format of ARPA Internet Text
-Messages", RFC 822, Department of Electrical Engineering, University of
-Delaware, August 1982.
-
-[RFC-974] C. Partridge, "Mail routing and the domain system", RFC 974,
-01/01/1986
-
-[RFC-1047] C. Partridge, "Duplicate messages and SMTP", RFC 1047,
-02/01/1988.
-
-[RFC-1123] R. Braden, "Requirements for Internet hosts - application and
-support", 10/01/1989
-
-[RFC-BDAT] G. Vaudreuil, "SMTP Service Extensions for Transmission of Large
-and Binary MIME Messages", RFC 1830, 08/16/1995.
-
-[RFC-DNS] P. Mockapetris, "Domain names - implementation and
-specification", RFC 1035 and P. Mockapetris, "Domain names - concepts and
-facilities", RFC 1034. (STD 13)
-
-[RFC-ETRN] J. De Winter, "SMTP Service Extension for Remote Message Queue
-Starting", RFC 1985, 08/14/1996.
-
-[RFC-IMAP2] M. Crispin, "Interactive Mail Access Protocol - Version 2", RFC
-1176, 08/20/1990.
-
-[RFC-IMAP4] M. Crispin, "Internet Message Access Protocol - Version 4", RFC
-2060, 12/04/1996.
-
-[RFC-INTLHDR] K. Moore, "MIME (Multipurpose Internet Mail Extensions) Part
-Three: Message Header Extensions for Non-ASCII Text", RFC 2047, 12/02/1996.
-
-[RFC-MIME] N. Freed, N. Borenstein, "Multipurpose Internet Mail Extensions
-(MIME) Part One: Format of Internet Message Bodies", RFC 2045, 12/02/1996.
-
-[RFC-MOSS] S. Crocker, N. Freed, J. Galvin, S. Murphy, "MIME Object
-Security Services", RFC 1848, 10/03/1995.
-
-[RFC-NOTARY1] K. Moore, "SMTP Service Extension for Delivery Status
-Notifications", RFC 1891, 01/15/1996.
-
-[RFC-NOTARY2] K. Moore, G. Vaudreuil, "An Extensible Message Format for
-Delivery Status Notifications", RFC 1894, 01/15/1996.
-
-[RFC-PCMAIL] M. Lambert, "PCMAIL: A distributed mail system for personal
-computers", RFC 1056, 06/01/1988.
-
-[RFC-PIPELINE] N. Freed, A. Cargille, "SMTP Service Extension for Command
-Pipelining", RFC 1854, 10/04/1995.
-
-[RFC-POP2] M. Butler, D. Chase, J. Goldberger, J. Postel, J. Reynolds,
-"Post Office Protocol - version 2", RFC 937, 02/01/1985
-
-[RFC-POP3] J. Myers, M. Rose, "Post Office Protocol - Version 3", RFC 1930,
-5/14/96 (Std 53).
-
-[RFC-REPLY] G. Vaudreuil, "Enhanced Mail System Status Codes", RFC 1893,
-01/15/1996.
-
-[RFC-SIZE] J. Klensin, N. Freed, K. Moore, "SMTP Service Extension for
-Message Size Declaration", RFC 1870, 11/06/1995. (STD 10)
-
-[RFC-X400] S. Hardcastle-Kille, "Mapping between X.400(1988) / ISO 10021
-and RFC 822", RFC 1327, 05/18/1992.
-
-[SMTPEX] J. Klensin, N. Freed, M. Rose, E. Stefferud, D. Crocker, "SMTP
-Service Extensions", RFC-1869, 11/06/1995. (STD 10)
-
-[TCP] Postel, J., ed., "Transmission Control Protocol - DARPA Internet
-Program Protocol Specification", RFC 793, USC/Information Sciences
-Institute, NTIS AD Number A111091, September 1981.
-
-[US-ASCII] United States of America Standards Institute (now American
-National Standards Institute), X3.4, 1968, "USA Code for Information
-Interchange". ANSI X3.4-1968 has been replaced by newer versions with
-slight modifications, but the 1968 version remains definitive for the
-Internet.
-
-
-10. Editor's Address
-
-John C. Klensin
-MCI Communications
-800 Boylston St., 7th floor
-Boston, MA 02199
-USA
-Email: Klensin@mci.net
-Phone: +1 617 960 1011
-Fax: +1 617 960 1009
-
-
-11. Acknowledgments
-
-Many people worked long and hard on the many iterations of this document.
-There was wide-ranging debate on the mailing list about many technical
-issues, and many contributors helped form the wording in this
-specification. The hundreds of participants in the many discussions since
-RFC 821 was produced are too numerous to mention, but they all helped this
-document become what it is.
-
-
-A. TCP Transport Service
-
-The TCP connection supports the transmission of 8-bit bytes. The SMTP data
-is 7-bit ASCII characters. Each character is transmitted as an 8-bit byte
-with the high-order bit cleared to zero. Service extensions may modify
-this rule to permit transmission of full 8-bit data bytes as part of the
-message body, but not in SMTP commands or responses.
-
-
-B. Generating SMTP Commands from RFC 822 Headers
-
-Some systems use RFC 822 headers (only) in a mail submission protocol, or
-otherwise generate SMTP commands from RFC 822 headers when such a message
-is handed to an MTA from a UA. While the MTA-UA protocol is a private
-matter, not covered by any Internet Standard, there are problems with this
-approach. For example, there have been repeated problems with proper
-handling of "bcc" copies and redistribution lists when information that
-conceptually belongs to a mail envelopes is not separated early in
-processing from header information (and kept separate).
-
-It is recommended that the UA provide its initial MTA with an envelope
-separate from the message itself. However, if the envelope is not
-supplied, SMTP commands SHOULD be generated as follows:
-
-1. Each recipient address from a TO, CC, or BCC header field SHOULD be
- copied to a RCPT command (generating multiple message copies if that is
- required for queuing or delivery). This includes any addresses listed
- in a RFC 822 "group". Any BCC fields SHOULD then be removed from the
- headers. Once this process is completed, the remaining headers SHOULD
- be checked to verify that at least one To:, Cc:, or Bcc: header remains.
- If none do, then a bcc: header with no additional information SHOULD be
- inserted as specified in [MSGFMT].
-
-2. The return address in the MAIL command SHOULD, if possible, be derived
- from the system's identity for the submitting (local) user. And the From
- header field otherwise. If there is a system identity available, it
- SHOULD also be copied to the Sender header field if it is different from
- the address in the From header field. (Any Sender field that was
- already there SHOULD be removed.) Systems may provide a way for
- submitters to override the envelope return address, but may want to
- restrict its use to privileged users. This will not prevent mail
- forgery, but may lessen its incidence; see section 7.1.
-
-When an MTA is being used in this way, it bears responsibility for ensuring
-that the message being transmitted is valid. The mechanisms for checking
-that validity, and for handling (or returning) messages that are not valid
-at the time of arrival, are part of the MUA-MTA interface and not covered
-by this specification.
-
-A submission protocol based on Standard RFC 822 information alone MUST NOT
-be used to gateway a message from a foreign (non-SMTP) mail system into an
-SMTP environment. Additional information to construct an envelope must
-come from some source in the other environment, whether supplemental
-headers or the foreign system's envelope.
-
-Attempts to gateway messages using only their header "to" and "cc" fields,
-have repeatedly caused mail loops and other behavior adverse to the proper
-functioning of the Internet mail environment. These problems have been
-especially common when the message originates from an Internet mailing list
-and is distributed into the foreign environment using envelope information.
-When these messages are then processed by a header-only remailer, loops
-back to the Internet environment (and the mailing list) are almost
-inevitable.
-
-
-C. Source Routes
-
-The <reverse-path> is a reverse source routing list of hosts and a source
-mailbox. The first host in the <reverse-path> SHOULD be the host sending
-the MAIL FROM command. Similarly, the <forward-path> may be a source
-routing lists of hosts and a destination mailbox. However, in general, the
-<forward-path> SHOULD contain only a mailbox and domain name, relying on
-the domain name system to supply routing information if required. The use
-of source routes is deprecated; while servers MUST be prepared to receive
-and handle them as discussed in section 3.3 and F.2, clients SHOULD NOT
-transmit them.
-
-For relay purposes, the forward-path may be a source route of the form
-"@ONE,@TWO:JOE@THREE", where ONE, TWO, and THREE MUST BE fully-qualified
-domain names. This form is used to emphasize the distinction between an
-address and a route. The mailbox is an absolute address, and the route is
-information about how to get there. The two concepts should not be
-confused.
-
-If source routes are used, RFC 821 and the text below should be consulted
-for the mechanisms for constructing and updating the forward- and
-reverse-paths.
-
-The SMTP server transforms the command arguments by moving its own
-identifier (its domain name or that of any domain for which it is acting as
-a mail exchanger), if it appears, from the forward-path to the beginning of
-the reverse-path.
-
-Notice that the forward-path and reverse-path appear in the SMTP commands
-and replies, but not necessarily in the message. That is, there is no need
-for these paths and especially this syntax to appear in the "To:" ,
-"From:", "CC:", etc. fields of the message header. Conversely, SMTP servers
-MUST NOT derive final message delivery information from message header
-fields.
-
-When the list of hosts is present, it is a "reverse" source route and
-indicates that the mail was relayed through each host on the list (the
-first host in the list was the most recent relay). This list is used as a
-source route to return non-delivery notices to the sender. As each relay
-host adds itself to the beginning of the list, it MUST use its name as
-known in the transport environment to which it is relaying the mail rather
-than that of the transport environment from which the mail came (if they
-are different).
-
-
-D. Scenarios
-
-This section presents complete scenarios of several types of SMTP sessions.
-In the examples, "C:" indicates what is said by the SMTP client, and "S:"
-indicates what is said by the SMTP server.
-
-D.1 A Typical SMTP Transaction Scenario
-
-This SMTP example shows mail sent by Smith at host bar.com, to Jones,
-Green, and Brown at host foo.com. Here we assume that host bar.com
-contacts host foo.com directly. The mail is accepted for Jones and Brown.
-Green does not have a mailbox at host foo.com.
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: MAIL FROM:<Smith@bar.com>
- S: 250 OK
- C: RCPT TO:<Jones@foo.com>
- S: 250 OK
- C: RCPT TO:<Green@foo.com>
- S: 550 No such user here
- C: RCPT TO:<Brown@foo.com>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Blah blah blah...
- C: ...etc. etc. etc.
- C: .
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-D.2 Aborted SMTP Transaction Scenario
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: MAIL FROM:<Smith@bar.com>
- S: 250 OK
- C: RCPT TO:<Jones@foo.com>
- S: 250 OK
- C: RCPT TO:<Green@foo.com>
- S: 550 No such user here
- C: RSET
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-D.3 Relayed Mail Scenario
-
-Step 1 -- Source Host to Relay Host
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: MAIL FROM:<JQP@bar.com>
- S: 250 OK
- C: RCPT TO:<@foo.com:Jones@XYZ.COM>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Date: Thu, 21 May 1998 05:33:29 -0700
- C: From: John Q. Public <JQP@bar.com>
- C: Subject: The Next Meeting of the Board
- C: To: Jones@xyz.com
- C:
- C: Bill:
- C: The next meeting of the board of directors will be
- C: on Tuesday.
- C: John.
- C: .
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-Step 2 -- Relay Host to Destination Host
-
- S: 220 xyz.com Simple Mail Transfer Service Ready
- C: EHLO foo.com
- S: 250 xyz.com is on the air
- C: MAIL FROM:<@foo.com:JQP@bar.com>
- S: 250 OK
- C: RCPT TO:<Jones@XYZ.COM>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Received: from bar.com by foo.com ; Thu, 21 May 1998 05:33:29 -0700
- C: Date: Thu, 21 May 1998 05:33:22 -0700
- C: From: John Q. Public <JQP@bar.com>
- C: Subject: The Next Meeting of the Board
- C: To: Jones@xyz.com
- C:
- C: Bill:
- C: The next meeting of the board of directors will be
- C: on Tuesday.
- C: John.
- C: .
- S: 250 OK
-
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-D.4 Verifying and Sending Scenario
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: VRFY Crispin
- S: 250 Mark Crispin <Admin.MRC@foo.com>
- C: SEND FROM:<EAK@bar.com>
- S: 250 OK
- C: RCPT TO:<Admin.MRC@foo.com>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Blah blah blah...
- C: ...etc. etc. etc.
- C: .
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-
-E. Other Gateway Issues
-
-In general, gateways between the Internet and other mail systems SHOULD
-attempt to preserve any layering semantics across the boundaries between
-the two mail systems involved. Gateway- translation approaches that
-attempt to take shortcuts by mapping, (such as envelope information from
-one system to the message headers or body of another) have generally proven
-to be inadequate in important ways. Systems translating between
-environments that do not support both envelopes and headers and Internet
-mail must be written with the understanding that some information loss is
-almost inevitable.
-
-
-F. Deprecated Features of RFC 821
-
-A few features of RFC 821 have proven to be problematic and SHOULD NOT be
-used in Internet mail.
-
-F.1 TURN
-
-This command, described in RFC 821, raises important security issues since,
-in the absence of strong authentication of the host requesting that the
-client and server switch roles, it can easily be used to divert mail from
-its correct destination. Its use is deprecated; SMTP systems SHOULD NOT
-use it unless the server can authenticate the client.
-
-F.2 Source Routing
-
-RFC 821 utilized the concept of explicit source routing to get mail from
-one host to another via a series of relays. The requirement to utilize
-source routes in regular mail traffic was eliminated by the introduction of
-the domain name system "MX" record and the last significant justification
-for them was eliminated by the introduction, in RFC 1123, of a clear
-requirement that addresses following an "@" must all be fully-qualified
-domain names. Consequently, the only remaining justifications for the use
-of source routes are support for very old SMTP clients or MUAs and in mail
-system debugging. They can, however, still be useful in the latter
-circumstance and for routing mail around serious, but temporary, problems
-such as problems with the relevant DNS records.
-
-SMTP servers MUST continue to accept source route syntax as specified in
-the main body of this document and in RFC 1123. They MAY, if necessary,
-ignore the routes and utilize only the target domain in the address. If
-they do utilize the source route, the message MUST be sent to the first
-domain shown in the address. In particular, a server MUST NOT guess at
-shortcuts within the source route.
-
-Clients SHOULD NOT utilize explicit source routing except under unusual
-circumstances, such as debugging or potentially relaying around firewall or
-mail system configuration errors.
-
-F.3 HELO
-
-As discussed in sections 3.1 and 4.1.1, EHLO is strongly preferred to HELO
-when the server will accept the former. Servers must continue to accept
-and process HELO in order to support older clients.
-
-F.4 #-literals
-
-RFC 821 provided for specifying an Internet address as a decimal integer
-host number prefixed by a pound sign, "#". In practice, that form has been
-obsolete since the introduction of TCP/IP. It is deprecated and MUST NOT
-be used.
-
-F.5 Dates and Years
-
-When dates are inserted into messages by SMTP clients or servers (e.g., in
-trace fields), four-digit years MUST BE used. Two-digit years are
-deprecated; three-digit years were never permitted in the Internet mail
-system.
-
-F.6 Sending versus Mailing
-
-In addition to specifying a mechanism for delivering messages to user's
-mailboxes, RFC 821 provided additional, optional, commands to deliver
-messages directly to the user's terminal screen. These commands (SEND,
-SAML, SOML) were rarely implemented, and changes in workstation technology
-and the introduction of other protocols may have rendered them obsolete
-even where they are implemented.
-
-Clients SHOULD NOT provide SEND, SAML, or SOML as services. Servers MAY
-implement them. If they are implemented by servers, the implementation
-model specified in RFC 821 MUST be used and the command names MUST be
-published in the response to the EHLO command.
-
-
-X. Change Summary and Loose Ends (Temporary)
-
-X.1 Change summary
-
-X.1.1 Substantive changes between draft-ietf-drums-smtpupd-00.txt and
-draft-ietf-drums-smtpupd-01.txt
-
-(i) Slightly clarified the discussions of rejection and failure of VRFY
-requests and the associated response codes.
-
-(ii) Slightly clarified the discussion of deferred address validation.
-
-(iii) Removed the IPCE terminology and modified the text in section 4.1.1.2
-to explicitly introduce the "mail gateway" terminology and to begin to
-distinguish a mail gateway from a conventional relay.
-
-(iv) Explicitly noted that SMTP clients for things like POP and IMAP may
-send everything to a single relay for further processing, rather than
-resolving final domain names.
-
-(v) Tightened the RSET discussion.
-
-(vi) Deprecation of 251 only for RCPT (still ok for VRFY)
-
-X.1.2. Substantive changes between draft-ietf-drums-smtpupd-01.txt and
-draft-ietf-drums-smtpupd-02.txt.
-
-Incorporated additional RFC 1123 material; reorganized several sections for
-clarity. Added definitions and other previous "loose end" material.
-
-X.1.3. Substantive changes between draft-ietf-drums-smtpupd-02.txt and
-draft-ietf-drums-smtpupd-03.txt.
-
-(i) Eliminated a number of placeholders and tightened some of the
-definitions in section 2. Added a few new placeholders for consistency
-checking against other documents.
-
-(ii) Removed the state diagrams, per direction at IETF Montreal.
-
-(iii) Added new section 6.3, an attempt to summarize WG discussions on the
-"posting" versus "delivery" versus "relay" functions of SMTP and on whether
-"fixups" are appropriate in different cases.
-
-(iv) Inserted section 6.1, a minor rewrite of section 5.3.3 of RFC1123.
-
-(v) Added new text to 3.5.5 to discuss the spammer - EXPN relationship.
-
-(vi) The "ASCII requirement" in 4.1.1.4 has been tightened somewhat.
-
-(v) The remaining miscellaneous changes agreed to in Montreal have been
-incorporated except as noted below.
-
-X.1.4. Substantive changes between draft-ietf-drums-smtpupd-03.txt and
-draft-ietf-drums-smtpupd-04.txt.
-
-Many small changes have been made between these two versions; the list that
-follows is not exhaustive.
-
-(i) To clarify some of the text, definitions have been introduced to
-distinguish among originating, delivery, relay, and gateway SMTP systems.
-
-(ii) The role of LF-terminated lines has been clarified.
-
-(iii) Several changes have been made to clarify the principle that, no
-matter what originating and final delivery systems might do, relay systems
-are not permitted to tamper with message content, even to "fix" headers
-that are determined to be invalid. If they deem message content to be
-seriously unacceptable, they are encouraged to reject the messages in
-preference to trying to fix them up, but, in general, the theme is "don't
-look/ don't tell".
-
-(iv) A few more definitions have been added to the terminology section, and
-the separate glossary has been eliminated.
-
-(v) I have taken a shot at text to address some of the controversies that
-have raged on the WG mailing list (e.g., sections 7.4 and 7.5). Since there
-was no consensus on most of those topics, I expect that the inserted text
-will satisfy no one except, perhaps, for agreement that saying nothing
-would have been worse. As a mechanism for moving forward, the text in
-these controversial areas that now appears will be considered "base";
-alterations will be made only if clear consensus emerges.
-
-(vi) Per discussion in Los Angeles, source routes have been further
-deprecated.
-
-(vii) Some of the VRFY/EXPN materials have been moved to "security
-considerations", where they appear to belong, some text has been added, and
-the conformance statements adjusted to reflect what I perceive to be WG
-consensus.
-
-(viii) New MX resolution material has been added to section 5. While most
-of this material is from RFC974, the rules have been further tightened to
-reflect current practice and experience (974 is written in a somewhat
-speculative fashion for a standard). In particular, the behavior of trying
-the target host's A RR when MXs existed but all of them were eliminated is
-now prohibited, which seems necessary if another of other ideas being
-recommended or considered are to be feasible.
-
-X.1.5. Substantive changes between draft-ietf-drums-smtpupd-04.txt and
-draft-ietf-drums-smtpupd-05.txt.
-
-(i) All normative references to RFC 1123 have been removed from the main
-body of the text (some still appear in the appendices where they will
-remain).
-
-(ii) Section 3.5 has been renamed slightly to distinguish between
-"debugging of SMTP implementations" and "debugging of addresses". Better
-terminology would be welcome.
-
-(iii) Error conditions resulting from the DATA command have been clarified.
-
-(iv) Section 4.2 (SMTP replies) has been revised and tightened to reflect
-reality and recent discussion on the list.
-
-(v) Appendix E has been revised a bit and moved into section 4.2.1. Given
-the importance of the "check only first digit" rule, it has to be there.
-
-(vi) Added new text for "no SMTP service supported" to sections 3.1, 4.2.2,
-4.2.3, and 4.3.2. As noted in 3.1, I'd rather add 521 (which would work
-perfectly with the model) rather than overloading 554.
-
-(vii) The Return-path language in section 4.4 has been cleaned up a bit.
-
-(viii) Tightened the "postmaster" language in 4.5.1, requiring a small
-change to 4.1.1.3.
-
-(ix) I have unilaterally (with a little help from my friends), increased
-some of the size limits. 64 was much too short for a domain name, and the
-DNS limit of 255 (?) has now been inserted. That leaves the return path
-much too short, but I haven't fixed it (maybe that will cause us to get rid
-of them). We still have a 64 character limit on the local-part, which is
-also *much* too short. Votes for 128 or longer limits accepted. See
-X.1.6(I)
-
-(x) The text on the "recipients buffer" has been rewritten so that (I hope)
-it makes sense and gives some explicit guidance for how clients and servers
-should proceed if limits are imposed.
-
-X.1.6. Substantive changes between draft-ietf-drums-smtpupd-05.txt and
-draft-ietf-drums-smtpupd-06.txt.
-
-Most of the changes in this revision have been editorial rather than
-substantive. Major substantive changes include:
-
-(i) The language about maximum sizes of SMTP command lines has been
-reworked, per WG mailing list discussion.
-
-(ii) Several instances of "Should" have been promoted to "Must" when the
-reasons for the weaker rule seemed to have disappeared. In particular, the
-requirement that an SMTP implementation support timeouts has become a MUST.
-Also, conformance to this specification requires support of EHLO. Older
-systems should claim conformance to the [to-be-historical] 821, not this
-specification.
-
-X.1.7. Substantive changes between draft-ietf-drums-smtpupd-06.txt and
-draft-ietf-drums-smtpupd-07.txt.
-
-(i) Removed "implied RSET" text associated with QUIT, as specified at the
-December 1997 IETF
-
-(ii) Required that servers support EHLO, as specified at the December 1997
-IETF
-
-X.1.8. Substantive changes between draft-ietf-drums-smtpupd-07.txt and
-draft-ietf-drums-smtpupd-08.txt.
-
-This version involves mostly editorial work and cleanup of loose ends.
-
-(iii) Error code presentation has been restructured.
-
-(iv) ABNF conversion done
-
-(v) IPv6 address format inserted per RFC 1884, since we could not get clear
-agreement on an alternative.
-
-(vi) Trivial, silly, examples removed. Others not yet renumbered.
-
-(vii) 3.5.2 and 4.1.1 altered slightly per Eric Allman's notes. Eric may
-not like the way I've done either of these change very much: the first now
-makes the distinction between returning an address and returning other
-stuff (which was permitted by -06, but the text wasn't as clear as it
-should have been): if it looks like an address, it needs to be an address.
-Similarly, with 4.1.1, Eric wanted to explicitly permit/legitimize "DATA
-<SP> <CRLF>". I see several disadvantages to doing that, so have inserted
-language that encourages receivers to tolerate trailing white space, which
-may have the same practical effect.
-
-X.1.8. Substantive changes between draft-ietf-drums-smtpupd-04.txt and
-draft-ietf-drums-smtpupd-05.txt.
-
-This version is substantially a cleanup, with several clarifications. In
-addition
-
-(i) New 7.5 added (old one renumbered) to discuss info disclosure through
-Received fields.
-
-(ii) Some character set and minor syntax issues clarified.
-
-(iii) Material on code 571 added (thought this had been done long ago;
-slipped through the cracks)
-
-(iv) Many clarifications added as the result of list discussions and
-suggestions. (v) First serious attempt at putting the syntax into ABNF
-form. Still not complete.
-
-X.2 Loose ends
-
-<< All issues in this section are still open.>>
-
-(i) The 821 BNF -> ABNF transition needs careful checking.
-
-(ii) Trace field discussion should be checked carefully, particularly since
-the syntax given is slightly different from 821. Provision has been made,
-reflecting some current practice, for (optional) fractional seconds in time
-stamps.
-
-(iii) Remaining syntax differences and redundancies with respect to 822bis
-(see note on section 4.1.2). Note that the use of "Atom" for extension
-parameter keywords is slightly different from the specification in RFC
-1869.
-
-(vi) We don't have a satisfactory definition for "link" as in "Received:..
-via <link>" and, if there is a registry, I can't find it. Needs to be
-fixed somehow.
-
-Z. Full Copyright Statement
-
-Copyright (C) The Internet Society (1998). All Rights Reserved.
-
-This document and translations of it may be copied and furnished to others,
-and derivative works that comment on or otherwise explain it or assist in
-its implementation may be prepared, copied, published and distributed, in
-whole or in part, without restriction of any kind, provided that the above
-copyright notice and this paragraph are included on all such copies and
-derivative works. However, this document itself may not be modified in any
-way, such as by removing the copyright notice or references to the Internet
-Society or other Internet organizations, except as needed for the purpose
-of developing Internet standards in which case the procedures for
-copyrights defined in the Internet Standards process must be followed, or
-as required to translate it into languages other than English.
-
-The limited permissions granted above are perpetual and will not be revoked
-by the Internet Society or its successors or assigns.
-
-This document and the information contained herein is provided on an "AS
-IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE
-DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY
-RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
-PARTICULAR PURPOSE.
-
-
-
diff --git a/Documentation/en/I-D/draft-ietf-drums-smtpupd-09.txt b/Documentation/en/I-D/draft-ietf-drums-smtpupd-09.txt
deleted file mode 100644
index 8f7aa50b..00000000
--- a/Documentation/en/I-D/draft-ietf-drums-smtpupd-09.txt
+++ /dev/null
@@ -1,3734 +0,0 @@
-INTERNET-DRAFT John C. Klensin, Editor
-Expires June 1999
-December 29, 1998
-
-
- Simple Mail Transfer Protocol
-
- draft-ietf-drums-smtpupd-09.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 view the entire list of current Internet-Drafts, please check the
-"1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
-Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern Europe),
-ftp.nis.garr.it (Southern Europe), munnari.oz.au (Pacific Rim),
-ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast).
-
-[[Sections marked with doubled brackets (e.g., "<<") are explicit
-placeholders or known major loose ends. Please review these ASAP. The
-sections with these placeholders are 4.1.2, 4.4, and X.2.]]
-
-[[Appendix X will be removed before the document is submitted to the
-IESG.]]
-
-[[If consensus is reached on this document, it will be forwarded to the
-IESG with the recommendation that it be processed onto the Standards
-track.]]
-
-Copyright Notice
-
-Copyright (C) The Internet Society (1998). All Rights Reserved.
-
- Table of Contents
-
-0. Abstract
-
-1. Introduction
-
-2. The SMTP Model
-2.1 Basic Structure
-2.2 The Extension Model
-2.2.1 Background
-2.2.2 Definition and Registration of Extensions
-2.3 Terminology
-2.3.1 Mail Objects
-2.3.2 Senders and Receivers
-2.3.3 Mail Agents
-2.3.4 Host
-2.3.5 Domain
-2.3.6 Buffer and State Table
-2.3.7 Lines
-2.3.8 Originator, Delivery, Relay, and Gateway Systems
-2.3.9 Message Content and Mail Data
-2.3.10 Mailbox and Address
-2.3.11 Reply
-2.4 Syntax Principles
-2.4.1 General Syntax and Transaction Model
-2.4.2 Command and Reply Syntax
-
-3. The SMTP Procedures: An Overview
-3.1 Session Initiation
-3.2 Client Initiation
-3.3 Mail Transactions
-3.4 Forwarding for Address Correction or Updating
-3.5 Commands for Debugging Addresses
-3.5.1 Overview
-3.5.2 VRFY Normal Response
-3.5.3 Meaning of VRFY or EXPN Success Response
-3.5.4 Semantics and Applications of EXPN
-3.6 Domains
-3.7 Relaying
-3.8 Mail Gatewaying
-3.8.1 Header Fields in Gatewaying
-3.8.2 Received Lines in Gatewaying
-3.8.3 Addresses in Gatewaying
-3.8.4 Other Header Fields in Gatewaying
-3.8.5 Envelopes in Gatewaying
-3.9 Terminating Sessions and Connections
-3.10 Mailing Lists and Aliases
-3.10.1 Alias
-3.10.2 List
-
-4. The SMTP Specifications
-4.1 SMTP Commands
-4.1.1 Command Semantics and Syntax
-4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)
-4.1.1.2 MAIL (MAIL)
-4.1.1.3 RECIPIENT (RCPT)
-4.1.1.4 DATA (DATA)
-4.1.1.5 RESET (RSET)
-4.1.1.6 VERIFY (VRFY)
-4.1.1.7 EXPAND (EXPN)
-4.1.1.8 HELP (HELP)
-4.1.1.9 NOOP (NOOP)
-4.1.1.10 QUIT (QUIT)
-4.1.2 Lower-level Syntax
-4.1.3 Address Literals
-4.1.4 Order of Commands
-4.1.5 Private-use Commands
-4.2 SMTP Replies
-4.2.1 Reply Code Severities and Theory
-4.2.2 Reply Codes by Function Groups
-4.2.3 Reply Codes in Numeric Order
-4.2.4 Reply Code 502
-4.2.5 Reply Codes After DATA and the Subsequent <CRLF>.<CRLF>
-4.3 Sequencing of Commands and Replies
-4.3.1 Sequencing Overview
-4.3.2 Command-Reply Sequences
-4.4 Trace Information
-4.5 Additional Implementation Issues
-4.5.1 Minimum Implementation
-4.5.2 Transparency
-4.5.3 Sizes and Timeouts
-4.5.4 Queuing Strategies
-4.5.4.1 Sending Strategy
-4.5.4.2 Receiving Strategy
-4.5.5 Messages with a null reverse-path
-
-5. Address Resolution and Mail Handling
-
-6. Problem Detection and Handling
-6.1 Reliable Delivery and Replies by Email
-6.2 Loop Detection
-6.3 Compensating for Irregularities
-
-7. Security Considerations
-7.1 Mail Security and Spoofing
-7.2 "Blind" Copies
-7.3 VRFY, EXPN, and Security
-7.4 Information Disclosure in Announcements
-7.5 Information Disclosure in Trace Fields
-7.6 Scope of Operation of SMTP Servers
-
-8. IANA Considerations
-
-9. References
-
-10. Editors' Addresses
-
-11. Acknowledgments
-
-A. TCP Transport Service
-B. Generating SMTP Commands from RFC 822 Headers
-C. Source Routes
-D. Scenarios
-E. Other Gateway Issues
-F. Deprecated Features of RFC 821
-X. Change Summary and Loose Ends (Temporary)
-
-
-0. Abstract
-
-This document is a self-contained specification of the basic protocol for
-the Internet electronic mail transport, consolidating and updating:
-
- - the original SMTP specification of RFC 821 [RFC-821],
-
- - domain name system requirements and implications for mail transport from
- RFC 1035 [RFC-DNS] and RFC 974 [RFC-974],
-
- - the clarifications and applicability statements in RFC 1123 [RFC-1123],
- and
-
- - material drawn from the SMTP Extension mechanisms [SMTPEXT].
-
-It replaces RFC 821, RFC 974, and the mail transport materials of RFC 1123.
-However, RFC 821 specifies some features that are not in significant use in
-the Internet of the mid-1990s and (in appendices) some additional transport
-models. Those sections are omitted here in the interest of clarity and
-brevity; readers needing them should refer to RFC 821.
-
-It also includes some additional material from RFC 1123 that required
-amplification. This material has been identified in multiple ways, mostly
-by tracking flaming on various lists and newsgroups and problems of unusual
-readings or interpretations that have turned up as the SMTP extensions have
-been deployed. Where this specification moves beyond consolidation and
-actually differs from earlier documents, it supersedes them technically as
-well as textually.
-
-Although SMTP was designed as a mail transport and delivery protocol, this
-specification also contains information that is important to its use as a
-'mail posting' protocol, as recommended for POP [RFC-POP2, RFC-POP3] and
-IMAP [RFC-IMAP4].
-
-Section 2.3 provides definitions of terms specific to this document. Except
-when the historical terminology is necessary for clarity, this document
-uses the current 'client' and 'server' terminology to identify the sending
-and receiving SMTP processes, respectively.
-
-A companion document discusses message headers, message bodies and formats
-and structures for them, and their relationship - [MSGFMT].
-
-
-1. Introduction
-
-The objective of the Simple Mail Transfer Protocol (SMTP) is to transfer
-mail reliably and efficiently.
-
-SMTP is independent of the particular transmission subsystem and requires
-only a reliable ordered data stream channel. While this document
-specifically discusses transport over TCP, other transports are possible.
-Appendices to RFC 821 describe some of them.
-
-An important feature of SMTP is its capability to transport mail across
-transport service environments, usually referred to as "SMTP mail relaying"
-(see section 3.8). A transport service environment might consist of the
-mutually-TCP-accessible hosts on the public Internet, the
-mutually-TCP-accessible hosts on a firewall-isolated private TCP/IP
-Intranet, or hosts in some other LAN or WAN environment utilizing a
-different transport-level protocol. It is important to realize that
-"transport service environments" are one-to-one with usual definitions of
-"networks". A process can communicate directly with another process, and
-transport mail using this protocol, through any mutually known and
-connected transport service. Conversely, mail can be relayed or gatewayed
-between processes in two different transport service environments by a
-process known and connected to each of the two transport service
-environments. The Mail eXchanger mechanisms of the domain name system
-[RFC-DNS, and section 5 of this document] allows the identity of hosts
-supporting SMTP relay and gateway processes to be specified.
-
-
-2. The SMTP Model
-
-2.1 Basic Structure
-
-The SMTP design can be pictured as:
-
- +----------+ +----------+
- +------+ | | | |
- | User |<-->| | SMTP | |
- +------+ | Sender- |Commands/Replies| Receiver-|
- +------+ | SMTP |<-------------->| SMTP | +------+
- | File |<-->| | and Mail | |<-->| File |
- |System| | | | | |System|
- +------+ +----------+ +----------+ +------+
- SMTP client SMTP server
-
-When an SMTP client has a message to transmit, it establishes a two-way
-transmission channel to an SMTP server. The role of an SMTP client is to
-transfer mail messages to one or more SMTP servers, or report its failure
-to do so.
-
-The means by which a mail message is transferred to an SMTP client, and how
-that client determines the domain name(s) to which mail messages are to be
-transferred is a local matter, and is not addressed by this document. In
-some cases, the domain name(s) transferred to, or determined by, an SMTP
-client will identify the final destination(s) of the mail message. In other
-cases, common with SMTP clients associated with implementations of the POP
-[RFC-POP2, RFC-POP3] or IMAP [RFC-IMAP4] protocols, or when the SMTP client
-is inside an isolated transport service environment, the domain name
-determined will identify an intermediate destination through which all mail
-messages are to be relayed. SMTP clients that transfer all traffic,
-regardless of the target domain names associated with the individual
-messages, or that do not maintain queues for retrying message transmissions
-that initially cannot be completed, may otherwise conform to this
-specification but are not considered fully-capable. Fully-capable SMTP
-implementations, including the relays used by these less capable ones, and
-their destinations, are expected to support all of the queuing, retrying,
-and alternate address functions discussed in this specification.
-
-The means by which an SMTP client, once it has determined a target domain
-name, determines the identity of an SMTP server to which a copy of a
-message is to be transferred, and then performs that transfer, is covered
-by this document. To effect a mail transfer to an SMTP server, an SMTP
-client establishes a two-way transmission channel to that SMTP server. An
-SMTP client determines the address of an appropriate host running an SMTP
-server by resolving a destination domain name to either an intermediate
-Mail eXchanger host or a final target host.
-
-An SMTP server may be either the ultimate destination or an intermediate
-"relay" (that is, it may assume the role of an SMTP client after receiving
-the message) or "gateway" (that is, it may transport the message further
-using some protocol other than SMTP). SMTP commands are generated by the
-SMTP client and sent to the SMTP server. SMTP replies are sent from the
-SMTP server to the SMTP client in response to the commands.
-
-Once the transmission channel is established and initial handshaking
-completed, the SMTP client normally initiates a mail transaction. Such a
-transaction consists of a series of commands to specify the originator and
-destination of the mail and transmission of the message content (including
-any headers or other structure) itself. When the same message is sent to
-multiple recipients, this protocol encourages the transmission of only one
-copy of the data for all recipients at the same destination (or
-intermediate relay) host.
-
-The server responds to each command with a reply; replies may indicate that
-the command was accepted, that additional commands are expected, or that a
-temporary or permanent error condition exists. Commands specifying the
-sender or recipients may include server-permitted SMTP service extension
-requests as discussed in section 2.2. The dialog is purposely lock-step,
-one-at-a-time, although this can be modified by mutually-agreed extension
-requests such as in [RFC-Pipeline].
-
-Once a given mail message has been transmitted, the client may either
-request that the connection be shut down or may initiate other mail
-transactions. In addition, an SMTP client may use a connection to an SMTP
-server for ancillary services such as verification of email addresses or
-retrieval of mailing list subscriber addresses.
-
-As suggested above, this protocol provides mechanisms for the transmission
-of mail. This transmission normally occurs directly from the sending
-user's host to the receiving user's host when the two hosts are connected
-to the same transport service. When they are not connected to the same
-transport service, transmission occurs via one or more relay SMTP servers.
-An intermediate host that acts as either an SMTP relay or as a gateway into
-some other transmission environment is usually selected through the use of
-the domain name service (DNS) Mail eXchanger mechanism.
-
-To provide relay capability, the SMTP server is supplied with the name of
-the ultimate destination host as well as the destination mailbox name.
-Usually, intermediate hosts are determined via the DNS MX record, not by
-explicit "source" routing (see appendices C and F.2).
-
-2.2 The Extension Model
-
-2.2.1 Background
-
-In an effort that started in 1990, approximately a decade after RFC 821 was
-completed, the protocol was modified with a "service extensions" model that
-permits the client and server to agree to utilize shared functionality
-beyond the original SMTP requirements. The SMTP extension mechanism defines
-a means whereby an extended SMTP client and server may recognize each
-other, and the server can inform the client as to the service extensions
-that it supports.
-
-Contemporary SMTP implementations MUST support the basic extension
-mechanisms. For instance, servers MUST support the EHLO command even if
-they do not implement any specific extensions and clients SHOULD
-preferentially utilize EHLO rather than HELO. (However, for compatibility
-with older conforming implementations, SMTP clients and servers MUST
-support the original HELO mechanisms as a fallback.) Unless the different
-characteristics of HELO must be identified for interoperability purposes,
-this document discusses only EHLO.
-
-SMTP is widely deployed and high-quality implementations have proven to be
-very robust. However, the Internet community now considers some services to
-be important that were not anticipated when the protocol was first
-designed. If support for those services is to be added, it must be done in
-a way that permits older implementations to continue working acceptably.
-The extension framework consists of:
-
- - The SMTP command EHLO, superseding the earlier HELO,
-
- - a registry of SMTP service extensions,
-
- - additional parameters to the SMTP MAIL FROM and RCPT TO commands, and
-
- - optional replacements for verbs defined in this protocol, such as for
- DATA (see [RFC-BDAT]).
-
-SMTP's strength comes primarily from its simplicity. Experience with many
-protocols has shown that protocols with few options tend towards ubiquity,
-whereas protocols with many options tend towards obscurity.
-
-Each and every extension, regardless of its benefits, must be carefully
-scrutinized with respect to its implementation, deployment, and
-interoperability costs. In many cases, the cost of extending the SMTP
-service will likely outweigh the benefit.
-
-2.2.2 Definition and Registration of Extensions
-
-The IANA maintains a registry of SMTP service extensions. A corresponding
-EHLO keyword value is associated with each extension. Each service
-extension registered with the IANA must be defined in a formal
-standards-track or IESG-approved experimental protocol document. The
-definition must include:
-
- - the textual name of the SMTP service extension;
-
- - the EHLO keyword value associated with the extension;
-
- - the syntax and possible values of parameters associated with the
- EHLO keyword value;
-
- - any additional SMTP verbs associated with the extension (additional
- verbs will usually be, but are not required to be, the same as the
- EHLO keyword value);
-
- - any new parameters the extension associates with the MAIL FROM or
- RCPT TO verbs;
-
- - a description of how support for the extension affects the behavior
- of a server and client SMTP; and,
-
- - the increment by which the extension is increasing the maximum
- length of the commands MAIL FROM and/or RCPT TO, over that specified
- in this standard.
-
-In addition, any EHLO keyword value starting with an upper or lower case
-"X" refers to a local SMTP service extension used exclusively through
-bilateral agreement. Keywords beginning with "X" MUST NOT be used in a
-registered service extension. Conversely, keyword values presented in the
-EHLO response that do not begin with "X" MUST correspond to a standard,
-standards-track, or IESG-approved experimental SMTP service extension
-registered with IANA. A conforming server MUST NOT offer non-"X"-prefixed
-keyword values that are not described in a registered extension.
-
-Additional verbs and parameter names are bound by the same rules as EHLO
-keywords; specifically, verbs beginning with "X" are local extensions that
-may not be registered or standardized. Conversely, verbs not beginning
-with "X" must always be registered.
-
-2.3 Terminology
-
-Most of the terminology in this document is common in the Internet at the
-time of its writing. However, the following terms and concepts are used
-in special ways here, or represent differences in terminology between RFC
-821 and this document, and should be understood before reading further.
-These definitions are normative, that is, they contain specifications to
-which SMTP implementations are required to conform.
-
-The terms "MUST" and "SHOULD" (and "MUST NOT" and "SHOULD NOT") are used
-in the same general sense here as in the Host Requirements Standards
-[RFC-1123]. Specifically, "MUST" or "MUST NOT" identify absolute
-requirements for conformance to this specification. Implementations that
-do not conform to them lie outside the scope of this specification and
-often will not interoperate properly with SMTP implementations that do
-conform. Implementations that are fully conforming also adhere to all
-"SHOULD" and "SHOULD NOT" requirements. Implementations that adhere to
-all "MUST" ("MUST NOT") but not to all of these are considered to be
-partially conforming. Such implementations may interoperate properly with
-fully conforming ones and with each other, but this will typically be the
-case only if great care is taken. Consequently, an implementation should
-violation "SHOULD" ("SHOULD NOT") requirements only under exceptional and
-well-understood circumstances. "SHOULD" (and sometimes "MUST")
-requirements are often imposed by this specification when experience has
-shown that following such requirements or restrictions leads, in practice,
-to better interoperation, or smoother operation of the Internet email
-infrastructure. As a consequence, some of these statements constitute
-recommended practices, rather than the statistically most common practice
-at the time of this writing. Statements using "MAY" describe features or
-styles of doing things that may be followed, or not, at the discretion of
-the implementation, normally without causing significant interoperability
-problems.
-
-2.3.1 Mail Objects
-
-SMTP transports a mail object. A mail object contains an envelope and
-content.
-
-The SMTP envelope is sent as a series of SMTP protocol units (described in
-section 3). It consists of an originator address (to which error reports
-should be directed); a delivery mode (e.g., deliver to recipient
-mailboxes); one or more recipient addresses; and optional protocol
-extension material.
-
-The SMTP content is sent in the SMTP DATA protocol unit and has two parts:
-the headers and the body. If the content conforms to existing standards,
-the headers form a collection of field/value pairs structured as described
-in [MSGFMT]; the body, if structured, is defined according to MIME
-[RFC-MIME]. The content is textual in nature, expressed using the US-ASCII
-repertoire [US-ASCII]. Although SMTP extensions (such as [8BitMIME]) may
-relax this restriction for the content body, the content headers are always
-encoded using the US-ASCII repertoire. The algorithm defined in
-[RFC-INTLHDR] is used to represent header values outside the US-ASCII
-repertoire, while still encoding them using the US-ASCII repertoire.
-
-2.3.2 Senders and Receivers
-
-In RFC 821, the two hosts participating in an SMTP transaction were
-described as the "SMTP-sender" and "SMTP-receiver". This document has been
-changed to reflect current industry terminology and hence refers to them as
-the "SMTP client" (or sometimes just "the client") and "SMTP server" (or
-just "the server"), respectively. Since a given host may act both as
-server and client in a relay situation, "receiver" and "sender" terminology
-is still used where needed for clarity.
-
-2.3.3 Mail Agents
-
-Additional mail system terminology became common after RFC 821 was
-published and, where convenient, is used in this specification. In
-particular, SMTP servers and clients provide a mail transport service and
-therefore act as Mail Transfer Agents (MTAs). Mail User Agents (MUAs or
-UAs) are normally thought of as the sources and targets of mail. At the
-source, an MUA might collect mail to be transmitted from a user and hand it
-off to an MTA; the final ("delivery") MTA would be thought of as handing
-the mail off to an MUA (or at least transferring responsibility to it).
-However, while these terms are used with at least the appearance of great
-precision in other environments, the implied boundaries between MUAs and
-MTAs often do not accurately match common, and conforming, practices with
-Internet mail. Hence, the reader should be cautious about inferring the
-strong relationships and responsibilities that might be implied if these
-terms were used elsewhere.
-
-2.3.4 Host
-
-For the purposes of this specification, a host is a computer system
-attached to the Internet (or, in some cases, to a private TCP/IP network)
-and supporting the SMTP protocol. Hosts are known by names (see "domain");
-identifying them by numerical address is discouraged.
-
-2.3.5 Domain
-
-A domain (or domain name) consists of one or more dot-separated components,
-each consisting of a sequence of letters, digits, and hyphens. Domain
-names are used as names of hosts and of other entities in the domain name
-hierarchy. For example, a domain may refer to an alias (label of a CNAME
-RR) or the label of Mail eXchanger records to be used to deliver mail
-instead of representing a host name. See [RFC-DNS] and section 5.
-
-The domain name, as described in this document and in [RFC-DNS], is the
-entire, fully-qualified name (often referred to as an "FQDN"). A domain
-name that is not in FQDN form is no more than a local alias. Local aliases
-MUST NOT appear in any SMTP transaction.
-
-2.3.6 Buffer and State Table
-
-SMTP sessions are stateful, with both parties carefully maintaining a
-common view of the current state. In this document we model this state by
-a virtual "buffer" and a "state table" on the server which may be used by
-the client to, for example, "clear the buffer" or "reset the state table,"
-causing the information in the buffer to be discarded and the state to be
-returned to some previous state
-
-2.3.7 Lines
-
-SMTP commands and, unless altered by a service extension, message data, are
-transmitted in "lines". Lines consist of zero or more data characters
-terminated by the sequence ASCII character "CR" (hex value 0D) followed
-immediately by ASCII character "LF" (hex value 0A). This termination
-sequence is denoted as <CRLF> in this document. Conforming implementations
-MUST NOT recognize or generate any other character or character sequence as
-a line terminator.
-
-2.3.8 Originator, Delivery, Relay, and Gateway Systems
-
-This specification makes a distinction among four types of SMTP systems,
-based on the role those systems play in transmitting electronic mail. An
-"originating" system (sometimes called an SMTP originator) introduces mail
-into the Internet or, more generally, into a transport service environment.
-A "delivery" SMTP system is one that receives mail from a transport service
-environment and hands it to a mail user agent or deposits it in a message
-store which a mail user agent is expected to subsequently access. A
-"relay" SMTP system (usually referred to just as a "relay") receives mail
-from an SMTP client and transmits it, without modification to the message
-data other than adding trace information, to another SMTP server for
-further relaying or for delivery.
-
-A "gateway" SMTP system (usually referred to just as a "gateway") receives
-mail from a client system in one transport environment and transmits it to
-a server system in another transport environment. Differences in protocols
-or message semantics between the transport environments on either side of a
-gateway may require that the gateway system perform transformations to the
-message that are not permitted to SMTP relay systems.
-
-2.3.9 Message Content and Mail Data
-
-The terms "message content" and "mail data" are used interchangeably in
-this document to describe the material transmitted after the DATA command
-is accepted and before the end of data indication is transmitted. Message
-content includes message headers and the possibly-structured message body.
-The MIME specification [RFC-MIME] provides the Standard mechanisms for
-structured message bodies.
-
-2.3.10 Mailbox and Address
-
-As used in this specification, an "address" is a character string that
-identifies a user to whom mail will be sent or a location into which mail
-will be deposited. The term "mailbox" refers to that depository. The two
-terms are typically used interchangeably unless the distinction between the
-location in which mail is placed (the mailbox) and a reference to it (the
-address) is important. An address normally consists of user and domain
-specifications. The standard mailbox naming convention is defined to be
-"local-part@domain": contemporary usage permits a much broader set of
-applications than simple "user names" and, consequently, the local-part is
-interpreted and assigned semantics only by the host specified in the domain
-part of the address.
-
-2.3.11 Reply
-
-An SMTP reply is an acknowledgment (positive or negative) sent from
-receiver to sender via the transmission channel in response to a command.
-The general form of a reply is a numeric completion code (indicating
-failure or success) usually followed by a text string. The codes are for
-use by programs and the text is usually intended for human users.
-
-2.4 Syntax Principles
-
-2.4.1 General Syntax and Transaction Model
-
-SMTP commands and replies have a rigid syntax. All commands begin with a
-four letter command verb. All Replies begin with a three digit numeric
-code. In some commands and replies, arguments MUST follow the verb or reply
-code. Some commands do not accept arguments (after the verb), and some
-reply codes are followed, sometimes optionally, by free form text. In both
-cases, where text appears, it is separated from the verb or reply code by a
-<SP>. Complete definitions of commands and replies appear in section 4.
-
-Verbs and argument values are not case sensitive, with the sole
-exception in this specification of a mailbox local-part (SMTP
-Extensions may explicitly specify case-sensitive elements). That is, a
-command verb, an argument value other than a mailbox local-part, and
-free form text MAY be encoded in upper case, lower case, or any mixture
-of upper and lower case with no impact on its meaning. This is NOT
-true of a mailbox local-part. The local-part of a mailbox MUST BE
-treated as case sensitive. Therefore, SMTP implementations MUST take
-care to preserve the case of mailbox local-parts. Mailbox domains are
-not case sensitive. However, exploiting the case sensitivity of
-mailbox local-parts impedes interoperability and is discouraged.
-
-Commands and replies are composed of characters from the ASCII character
-set [US-ASCII]. When the transport service provides an 8-bit byte (octet)
-transmission channel, each 7-bit character is transmitted right justified
-in an octet with the high order bit cleared to zero. More specifically, the
-unextended SMTP service provides seven bit transport only. An originating
-SMTP client which has not successfully negotiated an appropriate extension
-with a particular server MUST NOT transmit messages with information in the
-high-order bit of octets. If such messages are transmitted in violation of
-this rule, receiving SMTP servers MAY clear the high-order bit or reject
-the message as invalid. In general, a relay SMTP SHOULD assume that the
-message content it has received is valid and, assuming that the envelope
-permits doing so, relay it without inspecting that content. Of course, if
-the content is mislabeled and the data path cannot accept the actual
-content, this may result in ultimate delivery of a severely garbled message
-to the recipient. Delivery SMTP systems MAY reject ("bounce") such
-messages rather than deliver them. No sending SMTP system is permitted to
-send envelope commands in any character set other than US-ASCII; receiving
-systems SHOULD reject such commands, normally using "500 syntax error -
-invalid character" replies.
-
-Eight-bit message content transmission MAY be requested of the server by a
-client using extended SMTP facilities, notably the "8BITMIME" extension
-[8BITMIME]. 8BITMIME SHOULD be supported by SMTP servers. However, it MUST
-not be construed as authorization to transmit unrestricted eight bit
-material. 8BITMIME MUST NOT be requested by senders for material with the
-high bit on that is not in MIME format with an appropriate content-transfer
-encoding; servers MAY reject such messages.
-
-The metalinguistic notation used in this document corresponds to the
-"Augmented BNF" used in other Internet mail system documents. The reader
-who is not familiar with that syntax should consult [ABNF]. Metalanguage
-terms used in running text are surrounded by pointed brackets (e.g.,
-<CRLF>) for clarity.
-
-2.4.2 Command and Reply Syntax
-
-The commands consist of a command verb followed by an argument field.
-Command verbs are four alphabetic characters and are case insensitive.
-
-This also applies to any symbols representing parameter values, such as
-"TO" or "to" for the forward-path. Command verbs and the argument fields
-are separated by one or more spaces. However, case is important in the
-local-part within the reverse-path and forward-path arguments. In
-particular, for some hosts the user "smith" is different from the user
-"Smith".
-
-A few SMTP servers, in violation of this specification (and RFC 821)
-require that command verbs and certain argument text (such as the
-forward-path and reverse-path in RCPT and MAIL commands) be encoded by
-clients in upper case. Implementations MAY wish to employ this encoding to
-accommodate those servers.
-
-The argument field consists of a variable length character string ending
-with the character sequence <CRLF>. The receiver will take no action until
-this sequence is received.
-
-The syntax for each command is shown with the discussion of that command.
-Common elements and parameters are shown in section 4.1.2.
-
-
-3. The SMTP Procedures: An Overview
-
-This section contains descriptions of the procedures used in SMTP: session
-initiation, the mail transaction, forwarding mail, verifying mailbox names
-and expanding mailing lists, and the opening and closing exchanges.
-Comments on relaying, a note on mail domains, and a discussion of changing
-roles are included at the end of this section. Several complete scenarios
-are presented in appendix D.
-
-3.1 Session Initiation
-
-An SMTP session is initiated when a client opens a connection to a server
-and the server responds with an opening message.
-
-SMTP server implementations MAY include identification of their software
-and version information in the connection greeting reply after the 220
-code, a practice that permits more efficient isolation and repair of any
-problems. Implementations MAY make provision for SMTP servers to disable
-the software and version announcement where it causes security concerns.
-While some systems also identify their contact point for mail problems,
-this is not a substitute for maintaining the required "postmaster" address
-(see section 4.5.1).
-
-The SMTP protocol allows a server to formally reject a transaction while
-still allowing the initial connection as follows: a 554 response MAY be
-given in the initial connection opening message instead of the 220. A
-server taking this approach MUST still wait for the client to send a QUIT
-(see section 4.1.1.10) before closing the connection and SHOULD respond to
-any intervening commands with "503 bad sequence of commands". Since an
-attempt to make an SMTP connection to such a system is probably in error, a
-server returning a 554 response on connection opening SHOULD provide enough
-information in the reply text to facilitate debugging of the sending
-system.
-
-3.2 Client Initiation
-
-Once the server has sent the welcoming message and the client has received
-it, the client normally sends the EHLO command to the server, indicating
-the client's identity. In addition to opening the session, use of EHLO
-indicates that the client is able to process service extensions and
-requests that the server provide a list of the extensions it supports.
-Older SMTP systems which are unable to support service extensions and
-contemporary clients which do not require service extensions in the mail
-session being initiated, MAY use HELO instead of EHLO. Servers MUST NOT
-return the extended EHLO-style response to a HELO command.
-
-In the EHLO command the host sending the command identifies itself; the
-command may be interpreted as saying "Hello, I am <domain>" (and, in the
-case of EHLO, "and I support service extension requests").
-
-3.3 Mail Transactions
-
-There are three steps to SMTP mail transactions. The transaction starts
-with a MAIL command which gives the sender identification. A series of one
-or more RCPT commands follows giving the receiver information. Then a DATA
-command initiates transfer of the mail data and is terminated by the "end
-of mail" data indicator, which also confirms the transaction.
-
-The first step in the procedure is the MAIL command.
-
- MAIL FROM:<reverse-path> [ <mail-parameters> ] <CRLF>
-
-This command tells the SMTP-receiver that a new mail transaction is
-starting and to reset all its state tables and buffers, including any
-recipients or mail data. The <reverse-path> contains the source mailbox
-(between "<" and ">" brackets, which can be used to report errors (see
-section 4.2 for a discussion of error reporting). If accepted, the
-SMTP server returns a 250 OK reply. If the mailbox specification is
-not acceptable for some reason, the server MUST return a reply
-indicating whether the failure is permanent (i.e., will occur again if
-the client tries to send the same address again) or temporary (i.e.,
-the address might be accepted if the client tries again later). Despite
-the apparent scope of this requirement, there are circumstances in
-which the acceptability of the reverse-path may not be determined until
-one or more forward-paths (in RCPT commands) can be examined. In those
-cases, the server MAY reasonably accept the reverse-path (with a 250
-reply) and then report problems after the forward-paths are received
-and examined. Normally, failures produce 550 or 553 replies.
-
-Historically, the <reverse-path> can contain more than just a mailbox,
-however, contemporary systems SHOULD NOT use source routing (see appendix
-C).
-
-The optional <mail-parameters> are associated with negotiated SMTP service
-extensions (see section 2.2).
-
-The second step in the procedure is the RCPT command.
-
- RCPT TO:<forward-path> [ <SP> <rcpt-parameters> ] <CRLF>
-
-This command gives a forward-path (normally a mailbox and domain,
-always surrounded by "<" and ">" brackets) identifying one recipient.
-If accepted, the SMTP server returns a 250 OK reply and stores the
-forward-path. If the recipient is known not to be a deliverable
-address, the SMTP server returns a 550 reply, typically with a string
-such as "no such user - " and the mailbox name (other circumstances and
-reply codes are possible). This step of the procedure can be repeated
-any number of times.
-
-The <forward-path> can contain more than just a mailbox. Historically, the
-<forward-path> can be a source routing list of hosts and the destination
-mailbox, however, contemporary SMTP clients SHOULD NOT utilize source
-routes (see appendix C). Servers MUST be prepared to encounter a list of
-source routes in the forward path, but SHOULD ignore the routes or MAY
-decline to support the relaying they imply. Similarly, servers MAY decline
-to accept mail that is destined for other hosts or systems. These
-restrictions make a server useless as a relay for clients that do not
-support full SMTP functionality. Consequently, restricted-capability
-clients MUST NOT assume that any SMTP server on the Internet can be used as
-their mail processing (relaying) site. If RCPT TO appears without a
-previous MAIL FROM, the server MUST return a 503 "Bad sequence of commands"
-response. The optional <rcpt-parameters> are associated with negotiated
-SMTP service extensions (see section 2.2).
-
-The third step in the procedure is the DATA command (or some alternative
-specified in a service extension).
-
- DATA <CRLF>
-
-If accepted, the SMTP server returns a 354 Intermediate reply and considers
-all succeeding lines up to but not including the end of mail data indicator
-to be the message text. When the end of text is successfully received and
-stored the SMTP-receiver sends a 250 OK reply.
-
-Since the mail data is sent on the transmission channel, the end of mail
-data must be indicated so that the command and reply dialog can be resumed.
-SMTP indicates the end of the mail data by sending a line containing only a
-"." (period or full stop). A transparency procedure is used to prevent
-this from interfering with the user's text (see section 4.5.2).
-
-The end of mail data indicator also confirms the mail transaction and tells
-the SMTP server to now process the stored recipients and mail data. If
-accepted, the SMTP server returns a 250 OK reply. The DATA command can fail
-in only two ways:
-
- - If there was no MAIL FROM, or no RCPT TO, command, or all such commands
- were rejected, the server MAY return a "command out of sequence" (503)
- reply. If that reply is received, the client MUST NOT send the message
- data; more generally, message data MUST NOT be sent unless a 354 reply
- is received.
-
- - If the verb is initially accepted and the 354 reply issued, the DATA
- command should fail only if the mail transaction was incomplete (for
- example, no recipients), or if resources were unavailable, or if the
- server determines that the message should be rejected for policy or
- other reasons.
-
-However, in practice, some servers do not perform recipient verification
-until after the message text is received. These servers SHOULD treat a
-failure for one or more recipients as a "subsequent failure" and return a
-mail message as discussed in section 6. Using a "550 mailbox not found"
-(or equivalent) reply code after the data are accepted makes it difficult
-or impossible for the client to determine which recipients failed.
-
-When RFC 822 format is being used, the mail data include the memo header
-items such as Date, Subject, To, Cc, From [MSGFMT]. Server SMTP systems
-SHOULD NOT reject messages based on perceived defects in the RFC 822 or
-MIME [RFC-MIME] message header or message body. In particular, they MUST
-NOT reject messages in which the numbers of Resent- fields do not match or
-Resent-to appears without Resent-from and/or Resent-date.
-
-Mail transaction commands MUST be used in the order discussed above.
-
-
-3.4 Forwarding for Address Correction or Updating
-
-Forwarding support is most often required to consolidate and simplify
-addresses within, or relative to, some enterprise and less frequently to
-establish addresses to link a person's prior address with current one.
-Silent forwarding of messages (without server notification to the sender),
-for security or non-disclosure purposes, is common in the contemporary
-Internet.
-
-In both the enterprise and the "new address" cases, information hiding
-(and sometimes security) considerations argue against exposure of the
-"final" address through the SMTP protocol as a side-effect of the
-forwarding activity. This may be especially important when the final
-address may not even be reachable by the sender. Consequently, the
-"forwarding" mechanisms described in section 3.2 of RFC 821, and
-especially the 251 (corrected destination) reply code from RCPT TO are
-deprecated: Servers SHOULD NOT provide that service or return that code.
-
-
-3.5 Commands for Debugging Addresses
-
-3.5.1 Overview
-
-SMTP provides commands to verify a user name or obtain the content of a
-mailing list. This is done with the VRFY and EXPN commands, which have
-character string arguments. Implementations SHOULD support VRFY and EXPN
-(however, see section 3.5.2 and 7.3).
-
-For the VRFY command, the string is a user name or a user name and domain
-(see below). If a normal (i.e., 250) response is returned, the response MAY
-include the full name of the user and MUST include the mailbox of the user.
-It MUST be in either of the following forms:
-
- User Name <local-part@domain>
- local-part@domain
-
-When a name that is the argument to VRFY could identify more than one
-mailbox, the server MAY either note the ambiguity or identify the
-alternatives. In other words, any of the following are legitimate
-response to VRFY:
-
- 553 User ambiguous
-
-or
-
- 553- Ambiguous; Possibilities are
- 553-Joe Smith <jsmith@foo.com>
- 553-Harry Smith <hsmith@foo.com>
- 553 Melvin Smith <dweep@foo.com>
-
-or
-
- 553-Ambiguous; Possibilities
- 553- <jsmith@foo.com>
- 553- <hsmith@foo.com>
- 553 <dweep@foo.com>
-
-Under normal circumstances, a client receiving a 553 reply would be
-expected to expose the result to the user. Use of exactly the forms
-given, and the "user ambiguous" or "ambiguous" keywords, possibly
-supplemented by extended reply codes such as those described in
-[RFC-REPLY], will facilitate automated translation into other languages as
-needed. Of course, a client that was highly automated or that was
-operating in another language than English, might choose to try to
-translate the response, to return some other indication to the user than
-the literal text of the reply, or to take some automated action such as
-consulting a directory service for additional information before reporting
-to the user.
-
-For the EXPN command, the string identifies a mailing list, and the
-successful (i.e., 250) multiline response MAY include the full name of the
-users and MUST give the mailboxes on the mailing list.
-
-In some hosts the distinction between a mailing list and an alias for a
-single mailbox is a bit fuzzy, since a common data structure may hold both
-types of entries, and it is possible to have mailing lists of one mailbox.
-If a request is made to verify a mailing list, a positive response MAY be
-given if a message so addressed would be delivered to everyone on the list,
-otherwise an error SHOULD be reported (e.g., "550 That is a mailing list,
-not a user" or "252 Unable to verify members of mailing list"). If a
-request is made to expand a user name, the server MAY return a positive
-response consisting of a list containing one name, or an error MAY be
-reported (e.g., "550 That is a user name, not a mailing list").
-
-In the case of a successful multiline reply (normal for EXPN) exactly one
-mailbox is to be specified on each line of the reply. The case of an
-ambiguous request is discussed above.
-
-"User name" is a fuzzy term and has been used deliberately. An
-implementation of the VRFY or EXPN commands MUST include at least
-recognition of local mailboxes as "user names". However, since current
-Internet practice often results in a single host handling mail for
-multiple domains, hosts, especially hosts that provide this functionality,
-SHOULD accept the "local-part@domain" form as a "user name"; hosts MAY
-also choose to recognize other strings as "user names".
-
-The case of expanding a mailbox list requires a multiline reply, such as:
-
- C: EXPN Example-People
- S: 250-Jon Postel <Postel@isi.edu>
- S: 250-Fred Fonebone <Fonebone@physics.foo-u.edu>
- S: 250 Sam Q. Smith <SQSmith@specific.generic.com>
-
-or
-
- C EXPN Executive-Washroom-List
- S: 550 Access Denied to You.
-
-The character string arguments of the VRFY and EXPN commands cannot be
-further restricted due to the variety of implementations of the user name
-and mailbox list concepts. On some systems it may be appropriate for the
-argument of the EXPN command to be a file name for a file containing a
-mailing list, but again there are a variety of file naming conventions in
-the Internet. Similarly, historical variations in what is returned by
-these commands are such that the response SHOULD be interpreted very
-carefully, if at all, and SHOULD generally only be used for diagnostic
-purposes.
-
-3.5.2 VRFY Normal Response
-
-When normal (2yz or 551) responses are returned from a VRFY or EXPN
-request, the reply MUST normally include the mailbox name.
-"<local-part@domain>", where "domain" is a fully qualified domain name,
-MUST appear in the syntax. In exceptional circumstances, free-form text
-MAY be returned. In order to facilitate parsing by both computers and
-people, addresses SHOULD appear in pointed brackets. When addresses,
-rather than free-form debugging information, are returned, EXPN and VRFY
-MUST return only valid domain addresses that are usable in SMTP RCPT
-commands. Consequently, if an address implies delivery to a program or
-other system, the mailbox name used to reach that target MUST be given.
-Paths (explicit source routes) MUST NOT be returned by VRFY or EXPN.
-
-Server implementations SHOULD support both VRFY and EXPN. For security
-reasons, implementations MAY provide local installations a way to disable
-either or both of these commands through configuration options or the
-equivalent. When these commands are supported, they are not required to
-work across relays when relaying is supported. Since they were both
-optional in RFC 821, they MUST be listed as service extensions in an EHLO
-response, if they are supported.
-
-3.5.3 Meaning of VRFY or EXPN Success Response
-
-A server MUST NOT return a 220 code in response to a VRFY or EXPN command
-unless it has actually verified the address. In particular, a server MUST
-NOT return 220 if all it has done is to verify that the syntax given is
-valid. In that case, 502 (Command not implemented) or 500 (Syntax error,
-command unrecognized) SHOULD be returned. As stated elsewhere,
-implementation of VRFY and EXPN are strongly recommended.
-Hence, implementations that return 500 or 502 for VRFY are not in full
-compliance with this specification.
-
-There may be circumstances where an address appears to be valid but cannot
-reasonably be verified in real time, particularly when a server is acting
-as a mail exchanger for another server or domain. "Apparent validity" in
-this case would normally involve at least syntax checking and might
-involve verification that any domains specified were ones to which the
-host expected to be able to relay mail. In these situations, reply code
-252 SHOULD be returned. These cases parallel the discussion of RCPT
-verification discussed in section 2.1. Implementations generally SHOULD
-be more aggressive about address verification in the case of VRFY than in
-the case of RCPT, even if it takes a little longer to do so.
-
-3.5.4 Semantics and Applications of EXPN
-
-EXPN is often very useful in debugging and understanding problems with
-mailing lists and multiple-target-address aliases. Some systems have
-attempted to use source expansion of mailing lists as a means of
-eliminating duplicates. The propagation of aliasing systems with mail on
-the Internet, for hosts (typically with MX and CNAME DNS records), for
-mailboxes (various types of local host aliases), and in various proxying
-arrangements, has made it nearly impossible for these strategies to work,
-and mail systems SHOULD NOT attempt them.
-
-3.6 Domains
-
-Only resolvable, fully-qualified, domain names (FQDNs) are permitted when
-domain names are used in SMTP. In other words, names that can be resolved
-to MX RRs or A RRs (as discussed in section 5) are permitted, as are CNAME
-RRs whose targets can be resolved, in turn, to MX or A RRs. Local
-nicknames or unqualified names MUST NOT be used. There are two exceptions
-to the rule requiring FQDNs:
-
- - The domain name given in the EHLO command MUST BE either a primary host
- name (a domain name that resolves to an A RR) or, if the host has no
- name, an address literal as described in section 4.1.1.1.
-
- - The reserved mailbox name "postmaster" may be used in a RCPT TO command
- without domain qualification (see section 4.1.1.3) and MUST be accepted
- if so used.
-
-3.7 Relaying
-
-In general, the availability of Mail eXchanger records in the domain name
-system [RFC-DNS] makes the use of explicit source routes in the Internet
-mail system unnecessary. Many historical problems with their
-interpretation have made their use undesirable. SMTP clients SHOULD NOT
-generate explicit source routes except under unusual circumstances. SMTP
-servers MAY decline to act as mail relays or to accept addresses that
-specify source routes. When route information is encountered, they are
-also permitted to ignore the route information and simply send to the final
-destination specified as the last element in the route and SHOULD do so.
-There has been an invalid practice of using names that do not appear in the
-DNS as destination names, with the senders counting on the intermediate
-hosts specified in source routing to resolve any problems. If source
-routes are stripped, this practice will cause failures. This is one of
-several reasons why SMTP clients MUST NOT generate invalid source routes or
-depend on serial resolution of names.
-
-When source routes are not used, the process described in RFC 821 for
-constructing a reverse-path from the forward-path is not applicable and the
-reverse-path at the time of delivery will simply be the address that
-appeared in the MAIL command.
-
-A relay SMTP server is usually the target of a DNS MX record that
-designates it, rather than the final delivery system. The relay server may
-accept or reject the task of relaying the mail in the same way it accepts
-or rejects mail for a local user. If it accepts the task, it then becomes
-an SMTP client, establishes a transmission channel to the next SMTP server
-specified in the DNS (according to the rules in section 5), and sends it
-the mail. If it declines to relay mail to a particular address for policy
-reasons, a 550 response SHOULD be returned.
-
-If an SMTP server has accepted the task of relaying the mail and later
-finds that the destination is incorrect or that the mail cannot be
-delivered for some other reason, then it MUST construct an "undeliverable
-mail" notification message and send it to the originator of the
-undeliverable mail (as indicated by the reverse-path). Formats specified
-for non-delivery reports by other standards (see, for example,
-[RFC-NOTARY1]) SHOULD be used if possible.
-
-This notification message must be from the SMTP server at the relay host
-or the host that first determines that delivery cannot be accomplished.
-Of course, SMTP servers MUST NOT send notification messages about problems
-transporting notification messages. One way to prevent loops in error
-reporting is to specify a null reverse-path in the MAIL command of a
-notification message. When such a message is transmitted the reverse-path
-MUST be set to null (see section 4.5.5 for additional discussion). A MAIL
-command with a null reverse-path appears as follows:
-
- MAIL FROM:<>
-
-As discussed in section 2.4.1, a relay SMTP has no need to inspect or act
-upon the headers or body of the message data and MUST NOT do so except
-to add its own "Received:" header (section 4.4) and to perform simple
-counting of the number of "Received:" headers in a message (section 6.2).
-
-3.8 Mail Gatewaying
-
-While the relay function discussed above operates within the Internet SMTP
-transport service environment, MX records or various forms of explicit
-routing may require that an intermediate SMTP server perform a translation
-function between one transport service and another. As discussed in
-section 2.3.8, when such a system is at the boundary between two transport
-service environments, we refer to it as a "gateway" or "gateway SMTP".
-
-Gatewaying mail between different mail environments, such as different mail
-formats and protocols, is complex and does not easily yield to
-standardization. However, some general requirements may be given for a
-gateway between the Internet and another mail environment.
-
-3.8.1 Header Fields in Gatewaying
-
-Header fields MAY be rewritten when necessary as messages are gatewayed
-across mail environment boundaries. This may involve inspecting the message
-body or interpreting the local-part of the destination address in spite of
-the prohibitions in section 2.4.1
-
-Other mail systems gatewayed to the Internet often use a subset of RFC-822
-headers or provide similar functionality with a different syntax, but some
-of these mail systems do not have an equivalent to the SMTP envelope.
-Therefore, when a message leaves the Internet environment, it may be
-necessary to fold the SMTP envelope information into the message header. A
-possible solution would be to create new header fields to carry the
-envelope information (e.g., "X-SMTP-MAIL:" and "X-SMTP-RCPT:"); however,
-this would require changes in mail programs in foreign environments and
-might risk disclosure of private information (see section 7.2).
-
-3.8.2 Received Lines in Gatewaying
-
-When forwarding a message into or out of the Internet environment, a
-gateway MUST prepend a Received: line, but it MUST NOT alter in any way a
-Received: line that is already in the header.
-
-Received: fields of messages originating from other environments may not
-conform exactly to this specification. However, the most important use of
-Received: lines is for debugging mail faults, and this debugging can be
-severely hampered by well-meaning gateways that try to "fix" a Received:
-line. As another consequence of trace fields arising in non-SMTP
-environments, receiving systems MUST NOT reject mail based on the format of
-a trace field and SHOULD be extremely robust in the light of unexpected
-information or formats in those fields.
-
-The gateway SHOULD indicate the environment and protocol in the "via"
-clauses of Received field(s) that it supplies.
-
-3.8.3 Addresses in Gatewaying
-
->From the Internet side, the gateway SHOULD accept all valid address formats
-in SMTP commands and in RFC-822 headers, and all valid RFC-822 messages.
-Gateways are, of course, subject to the same rules for handling source
-routes as those described for other SMTP systems in section 3.3.
-
-3.8.4 Other Header Fields in Gatewaying
-
-The gateway MUST ensure that all header fields of a message that it
-forwards into the Internet meet the requirements for Internet mail. In
-particular, all addresses in "From:", "To:", "Cc:", etc., fields MUST be
-transformed (if necessary) to satisfy RFC-822 syntax, MUST reference only
-fully-qualified domain names, and MUST be effective and useful for sending
-replies. 3.8.5 The translation algorithm used to convert mail from the
-Internet protocols to another environment's protocol SHOULD ensure that
-error messages from the foreign mail environment are delivered to the
-return path from the SMTP envelope, not to the sender listed in the "From:"
-field (or other fields) of the RFC-822 message.
-
-3.8.5 Envelopes in Gatewaying
-
-Similarly, when forwarding a message from another environment into the
-Internet, the gateway SHOULD set the envelope return path in accordance
-with an error message return address, if supplied by the foreign
-environment. If the foreign environment has no equivalent concept, the
-gateway must select and use a best approximation, with the message
-originator's address as the default of last resort.
-
-3.9 Terminating Sessions and Connections
-
-An SMTP connection is terminated when the client sends a QUIT command. The
-server responds with a positive reply code, after which it closes the
-connection.
-
-An SMTP server MUST NOT intentionally close the connection except:
-
- - After receiving a QUIT command and responding with a 221 reply.
-
- - After detecting the need to shutdown the SMTP service and returning a
- 421 response code. This response code can be issued after the server
- receives any command or, if necessary, asynchronously from command
- receipt (on the assumption that the client will receive it after the
- next command is issued).
-
-In particular, a server that closes connections in response to commands
-that are not understood is in violation of this specification. Servers are
-expected to be tolerant of unknown commands, issuing a 500 reply and
-awaiting further instructions from the client.
-
-An SMTP server which is forcibly shut down via external means SHOULD
-attempt to send a line containing a 421 response code to the SMTP client
-before exiting. The SMTP client will normally read the 421 response code
-after sending its next command.
-
-SMTP clients that experience a connection close, reset, or other
-communications failure due to circumstances not under their control (in
-violation of the intent of this specification but sometimes unavoidable)
-SHOULD, to maintain the robustness of the mail system, treat the mail
-transaction as if a 451 response had been received and act accordingly.
-
-3.10 Mailing Lists and Aliases
-
-An SMTP-capable host SHOULD support both the alias and the list models of
-address expansion for multiple delivery. When a message is delivered or
-forwarded to each address of an expanded list form, the return address in
-the envelope ("MAIL FROM:") MUST be changed to be the address of a person
-or other entity who administers the list. However, in this case, the
-message header (see [MSGFMT]) MUST be left unchanged; in particular, the
-"From" field of the message header is unaffected.
-
-An important mail facility is a mechanism for multi-destination delivery
-of a single message, by transforming (or "expanding" or "exploding") a
-pseudo-mailbox address into a list of destination mailbox addresses. When
-a message is sent to such a pseudo-mailbox (sometimes called an
-"exploder"), copies are forwarded or redistributed to each mailbox in the
-expanded list. Servers SHOULD simply utilize the addresses on the list;
-application of heuristics or other matching rules to eliminate some
-addresses, such as that of the originator, is strongly discouraged. We
-classify such a pseudo-mailbox as an "alias" or a "list", depending upon
-the expansion rules.
-
-3.10.1 Alias
-
-To expand an alias, the recipient mailer simply replaces the pseudo-mailbox
-address in the envelope with each of the expanded addresses in turn; the
-rest of the envelope and the message body are left unchanged. The message
-is then delivered or forwarded to each expanded address.
-
-3.10.2 List
-
-A mailing list may be said to operate by "redistribution" rather than
-by "forwarding". To expand a list, the recipient mailer replaces the
-pseudo-mailbox address in the envelope with all of the expanded
-addresses. The return address in the envelope is changed so that all
-error messages generated by the final deliveries will be returned to a
-list administrator, not to the message originator, who generally has no
-control over the contents of the list and will typically find error
-messages annoying.
-
-
-4. The SMTP Specifications
-
-4.1 SMTP Commands
-
-4.1.1 Command Semantics and Syntax
-
-The SMTP commands define the mail transfer or the mail system function
-requested by the user. SMTP commands are character strings terminated by
-<CRLF>. The commands themselves are alphabetic characters terminated by
-<SP> if parameters follow and <CRLF> otherwise. (In the interest of
-improved interoperability, SMTP receivers are encouraged to tolerate
-trailing white space before the terminating <CRLF>.) The syntax of the
-local part of a mailbox must conform to receiver site conventions and the
-syntax specified in section 4.1.2. The SMTP commands are discussed below.
-The SMTP replies are discussed in section 4.2.
-
-A mail transaction involves several data objects which are communicated as
-arguments to different commands. The reverse-path is the argument of the
-MAIL command, the forward-path is the argument of the RCPT command, and the
-mail data is the argument of the DATA command. These arguments or data
-objects must be transmitted and held pending the confirmation communicated
-by the end of mail data indication which finalizes the transaction. The
-model for this is that distinct buffers are provided to hold the types of
-data objects, that is, there is a reverse-path buffer, a forward-path
-buffer, and a mail data buffer. Specific commands cause information to be
-appended to a specific buffer, or cause one or more buffers to be cleared.
-
-Several commands (RSET, DATA, QUIT) are specified as not permitting
-parameters. In the absence of specific extensions offered by the server
-and accepted by the client, clients MUST NOT send such parameters and
-servers SHOULD reject commands containing them as having invalid syntax.
-
-4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)
-
-These commands are used to identify the SMTP client to the SMTP server.
-The argument field contains the fully-qualified domain name of the SMTP
-client if one is available. In situations in which the SMTP client system
-does not have a meaningful domain name (e.g., when its address is
-dynamically allocated and no reverse mapping record is available), the
-client SHOULD send an address literal (see section 4.1.3), optionally
-followed by information that will help to identify the client system.
-
-The SMTP server identifies itself to the SMTP client in the connection
-greeting reply and in the response to this command.
-
-A client SMTP SHOULD start an SMTP session by issuing the EHLO command. If
-the SMTP server supports the SMTP service extensions it will give a
-successful response, a failure response, or an error response. If the SMTP
-server, in violation of this specification, does not support any SMTP
-service extensions it will generate an error response. Older client SMTP
-systems MAY, as discussed above, use HELO (as specified in RFC 821) instead
-of EHLO, and servers MUST support the HELO command and reply properly to
-it. In any event, a client MUST issue HELO or EHLO before starting a mail
-transaction.
-
-These commands, and a "250 OK" reply to one of them, confirm that both the
-SMTP client and the SMTP server are in the initial state, that is, there is
-no transaction in progress and all state tables and buffers are cleared.
-
-Normally, the response to EHLO will be a multiline reply. Each line of the
-response contains a keyword and, optionally, one or more parameters. The
-syntax for a positive response, using the ABNF notation and low-level
-terminals of [ABNF], is:
-
- ehlo-ok-rsp ::= "250" domain [ <SP> greeting ] <CRLF>
- / ( "250-" domain [ <SP> greeting ] <CRLF>
- *( "250-" ehlo-line <CRLF> )
- "250" <SP> ehlo-line <CRLF> )
-
- greeting ::= 1*<any character other than CR or LF>
-
- ehlo-line ::= ehlo-keyword *( <SP> ehlo-param )
-
- ehlo-keyword ::= (ALPHA / DIGIT) *(ALPHA / DIGIT / "-")
- ; syntax and values depend on ehlo-keyword
-
- ehlo-param ::= 1*<any CHAR excluding <SP> and all
- control characters (US-ASCII 0-31
- inclusive)>
-
- ALPHA ::= any one of the 52 alphabetic characters, i.e.,
- (A through Z in upper case, and, a through z in lower
- case)
-
-Although EHLO keywords may be specified in upper, lower, or mixed case,
-they MUST always be recognized and processed in a case-insensitive manner.
-This is simply an extension of practices specified in RFC 821 and section
-2.4.1.
-
-4.1.1.2 MAIL (MAIL)
-
-This command is used to initiate a mail transaction in which the mail data
-is delivered to one or more mailboxes. The argument field contains a
-reverse-path. In general, the MAIL command may be sent only when no mail
-transaction is in progress, see section 4.1.4.
-
-The reverse-path consists of the sender mailbox or a list of hosts. In
-some types of reporting messages for which a reply is likely to cause a
-mail loop (for example, mail delivery and nondelivery notifications), the
-reverse-path may be null (see section 3.7).
-
-This command clears the reverse-path buffer, the forward-path buffer, and
-the mail data buffer; and inserts the reverse-path information from this
-command into the reverse-path buffer.
-
-If service extensions were negotiated, the MAIL command may also carry
-parameters associated with a particular service extension.
-
-Syntax:
-
- "MAIL FROM:" Reverse-path [ <SP> Mail-parameters ]
-
-or
- "MAIL FROM:<>" [ <SP> Mail-parameters ]
-
-4.1.1.3 RECIPIENT (RCPT)
-
-This command is used to identify an individual recipient of the mail data;
-multiple recipients are specified by multiple use of this command.
-
-The forward-path normally consists of the required destination mailbox or
-mailboxes. Sending systems SHOULD not generate the optional list of hosts
-known as a source route. Receiving systems MUST recognize source route
-syntax but SHOULD strip off the source route specification and utilize the
-domain name associated with the mailbox as if the source route had not been
-provided.
-
-Similarly, relay hosts SHOULD strip or ignore source routes, and names MUST
-NOT be copied into the reverse-path. When mail reaches its ultimate
-destination (the forward-path contains only a destination mailbox), the
-SMTP server inserts it into the destination mailbox in accordance with its
-host mail conventions.
-
-For example, mail received at relay host xyz.com with envelope commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<@hosta.int,@jkl.org:userc@d.bar.org>
-
-will normally be sent directly on to host d.bar.org with envelope commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<USERC@D.bar.org>
-
-As provided in appendix C, xyz.com MAY also choose to relay the message to
-jkl.org, using the envelope commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<@jkl.org:userc@d.bar.org>
-
-Of course, since hosts are not required to relay mail at all, xyz.com may
-also reject the message entirely when the RCPT TO command is received,
-using a 550 code (since this is a "policy reason").
-
-If service extensions were negotiated, the RCPT TO command may also carry
-parameters associated with a particular service extension offered by the
-server. The client MUST NOT transmit parameters other than those
-associated with a service extension offered by the server in its EHLO
-response.
-
-Syntax:
- "RCPT TO:" Forward-path [ <SP> Rcpt-parameters ]
-or
- "RCPT TO:<Postmaster>" [ <SP> Rcpt-parameters ]
-
-4.1.1.4 DATA (DATA)
-
-The receiver treats the lines (strings ending in <CRLF> sequences, as
-described in section 2.3.7) following the command as mail data from the
-sender. This command causes the mail data to be appended to the mail data
-buffer. The mail data may contain any of the 128 ASCII character codes,
-although experience has indicated that use of control characters other than
-SP, HT, CR, and LF (especially the ASCII "Null" character) may cause
-problems and SHOULD be avoided when possible.
-
-The mail data is terminated by a line containing only a period, that is,
-the character sequence "<CRLF>.<CRLF>" (see section 4.5.2). This is the
-end of mail data indication. Note that the first <CRLF> of this
-terminating sequence is also the <CRLF> that ends the final line of the
-data (message text) or, if there was no data, ends the DATA command itself.
-An extra <CRLF> MUST NOT be added, as that would cause an empty line to be
-added to the message. The only exception to this rule would arise if the
-message body were passed to the originating SMTP-sender with a final "line"
-that did not end in <CRLF>; in that case, the originating SMTP system MUST
-either reject the message as invalid or add <CRLF> in order to have the
-receiving SMTP server recognize the "end of data" condition.
-
-The custom of accepting lines ending only in <LF>, as a concession to
-non-conforming behavior on the part of some UNIX systems, has proven to
-cause more interoperability problems than it solves, and SMTP server
-systems MUST NOT do this, even in the name of improved robustness. In
-particular, the sequence "<LF>.<LF>" (bare line feeds, without carriage
-returns) MUST NOT be treated as equivalent to <CRLF>.<CRLF> as the end of
-mail data indication.
-
-Receipt of the end of mail data indication requires the server to process
-the stored mail transaction information. This processing consumes the
-information in the reverse-path buffer, the forward-path buffer, and the
-mail data buffer, and on the completion of this command these buffers are
-cleared. If the processing is successful, the receiver MUST send an OK
-reply. If the processing fails the receiver MUST send a failure reply. The
-SMTP model does not allow for partial failures at this point: either the
-message is accepted by the server for delivery and a positive response is
-returned or it is not accepted and a failure reply is returned. Errors
-that are diagnosed subsequently MUST be reported in a mail message, as
-discussed in section 4.4 In sending a positive completion reply to the end
-of data indication, the receiver takes full responsibility for the message
-(see section 6.1).
-
-When the SMTP server accepts a message either for relaying or for final
-delivery, it inserts a trace record (also referred to interchangeably as a
-"time stamp line" or "Received" line) at the top of the mail data. This
-trace record indicates the identity of the host that sent the message, the
-identity of the host that received the message (and is inserting this time
-stamp), and the date and time the message was received. Relayed messages
-will have multiple time stamp lines. Details for formation of these lines,
-including their syntax, is specified in section 4.4.
-
-4.1.1.5 RESET (RSET)
-
-This command specifies that the current mail transaction will be aborted.
-Any stored sender, recipients, and mail data MUST be discarded, and all
-buffers and state tables cleared. The receiver MUST send a "250 OK" reply
-to a RSET command with no arguments. A reset command may be issued by the
-client at any time. It is effectively equivalent to a NOOP if issued
-immediately after EHLO, before EHLO is issued in the session, after an
-end-of-data indicator has been sent and acknowledged, or immediately before
-a QUIT. In other situations, it restores the state to that immediately
-after the most recent EHLO. An SMTP server MUST NOT close the connection
-as the result of receiving a RSET; that action is reserved for QUIT (see
-section 4.1.1.10).
-
-Since EHLO implies some additional processing and response by the server,
-RSET will normally be more efficient than reissuing that command, even
-though the formal semantics are the same.
-
-There are circumstances, contrary to the intent of this specification, in
-which an SMTP server may receive an indication that the underlying TCP
-connection has been closed or reset. To preserve the robustness of the
-mail system, SMTP servers SHOULD be prepared for this condition and SHOULD
-treat it as if a QUIT had been received before the connection disappeared.
-
-Syntax:
- "RSET"
-
-4.1.1.6 VERIFY (VRFY)
-
-This command asks the receiver to confirm that the argument identifies a
-user or mailbox. If it is a user name, information is returned as
-specified in section 3.5.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer.
-
-Syntax:
- "VRFY" <SP> String
-
-4.1.1.7 EXPAND (EXPN)
-
-This command asks the receiver to confirm that the argument identifies a
-mailing list, and if so, to return the membership of that list. If the
-command is successful, a reply is returned containing information as
-described in section 3.5. This reply will have multiple lines except in
-the trivial case of a one-member list.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer.
-
-Syntax:
- "EXPN" <SP> String
-
-4.1.1.8 HELP (HELP)
-
-This command causes the server to send helpful information to the client.
-The command MAY take an argument (e.g., any command name) and return more
-specific information as a response.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer.
-
-SMTP servers SHOULD support HELP without arguments and MAY support it with
-arguments.
-
-Syntax:
- "HELP" [ <SP> String ]
-
-4.1.1.9 NOOP (NOOP)
-
-This command does not affect any parameters or previously entered commands.
-It specifies no action other than that the receiver send an OK reply.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer. If a parameter string is specified,
-servers SHOULD ignore it.
-
-Syntax:
- "NOOP" [ <SP> String ]
-
-
-4.1.1.10 QUIT (QUIT)
-
-This command specifies that the receiver MUST send an OK reply, and then
-close the transmission channel.
-
-The receiver MUST NOT intentionally close the transmission channel until it
-receives and replies to a QUIT command (even if there was an error). The
-sender MUST NOT intentionally close the transmission channel until it sends
-a QUIT command and receives the reply (even if there was an error response
-to a previous command). If the connection is closed prematurely due to
-violations of the above or system or network failure, the server MUST
-cancel any pending transaction, but not undo any previously completed
-transaction, and generally MUST act as if the command or transaction in
-progress had received a temporary error (i.e., a 4yz response).
-
-Syntax:
- "QUIT"
-
-4.1.2 Lower-level Syntax
-
-The syntax of the argument fields of the above commands (using the syntax
-specified in [ABNF] where applicable) is given below. Some of the
-productions given below are used only in conjunction with source routes as
-described in appendix C. Terminals not defined in this document, such as
-ALPHA, DIGIT, SP, CR, LF, CRLF, are as defined in the "core" syntax
-(section 6) of [ABNF] or in the syntax of [MSGFMT].
-
- Reverse-path = Path
-
- Forward-path = Path
-
- Path = "<" [ A-d-l ":" ] Mailbox ">"
-
- A-d-l = At-domain *( "," A-d-l ) ; Note that this form, the
- so-called "source route", MUST BE
- accepted, SHOULD NOT be generated,
- and SHOULD be ignored.
-
- At-domain = "@" Domain
-
- Mail-parameters = *( <SP> Keyword "=" Argument )
-
- Rcpt-parameters = *( <SP> Keyword "=" Argument )
-
- Keyword = Ldh-str
- Argument = Atom
-
- Domain = sub-domain 1*("." sub-domain) / address-literal
-
- sub-domain = let-dig *(Ldh-str)
- address-literal = "[" IPv4-address-literal /
- IPv6-address-literal / General-address-literal "]"
- IPv4-address-literal = snum 3*3("." snum)
- IPv6-address-literal = "IPv6 " IPv6-addr-string
- IPv6-addr-string = String ; IPv6 address in standard form
- [IPv6AddrSpec]. Since this
- form uses colon characters,
- the String will actually need
- to be quoted in all cases.
- General-address-literal = Standardized-tag <SP> String
- Standardized-tag = Ldh-str ; Specified in a
- standards-track RFC
- and registered with IANA
- snum = 1*3Digit ; representing a decimal integer
- value in the range 0 through 255
- let-dig = Alpha / Digit
- ldh-str = *( Alpha / Digit / "-" ) let-dig
-
- Mailbox = Local-part "@" Domain
-
- Local-part = Dot-string / Quoted-string
-
- Dot-string = Atom [ "." Atom ]
-
-While the above definition for Local-part is relatively permissive, for
-maximum interoperability, a host that expects to receive mail SHOULD avoid
-defining mailboxes where the Local-part requires (or uses) the
-Quoted-string form or where the Local-part is case-sensitive. For any
-purposes that require generating or comparing Local-parts (e.g., to
-specific mailbox names), all quoted forms MUST be treated as equivalent and
-the sending system SHOULD transmit the form that uses the minimum quoting
-possible.
-
-Systems MUST NOT define mailboxes in such a way as to require the use of
-non-ASCII characters (octets with the high order bit set to one) or ASCII
-"control characters" (decimal value 0-31 and 127). These characters MUST
-NOT be used in MAIL FROM or RCPT TO commands or other commands that require
-mailbox names.
-
- String = Atom / Quoted-string
-
- special = <<Msg-fmt-special>> / [[placeholder, see above]]
- the control characters (ASCII codes 0 through 31
- inclusive and 127)
-
-Note that the backslash, "\", is a quote character, which is used to
-indicate that the next character is to be used literally (instead of its
-normal interpretation). For example, "Joe\,Smith" indicates a single nine
-character user field with the comma being the fourth character of the
-field.
-
-To promote interoperability and consistent with long-standing guidance
-about conservative use of the DNS in naming and applications (e.g., see
-section 2.3.1 of the base DNS document [RFC-1015]), characters outside the
-set of alphas, digits, and hyphen MUST NOT appear in domain name labels
-for SMTP clients or servers. In particular, the underscore character is
-not permitted. SMTP servers that receive a command in which illegal
-character codes have been employed, and for which there are no other
-reasons for rejection, MUST reject that command with a 501 response.
-
-4.1.3 Address Literals
-
-Sometimes a host is not known to the domain name system and communication
-(and, in particular, communication to report and repair the error) is
-blocked. To bypass this barrier a special literal form of the address is
-allowed as an alternative to a domain name. For IPv4 addresses, this form
-uses four small decimal integers separated by dots and enclosed by brackets
-such as [123.255.37.2], which indicates an (IPv4) Internet Address in
-sequence-of-octets form. For IPv6 and other forms of addressing that might
-eventually be standardized, the form consists of a standardized "tag" that
-identifies the address syntax, a space, and the address itself, in a format
-specified as part of the IPv6 standards [IPv6AddrString].
-
-4.1.4 Order of Commands
-
-There are restrictions on the order in which these commands may be used.
-
-A session that will contain mail transactions MUST first be initialized by
-the use of the EHLO command. An SMTP server SHOULD accept commands for
-non-mail transactions (e.g., VRFY or EXPN) without this initialization.
-
-An EHLO command MAY be issued by a client later in the session. If it is
-issued after the session begins, the SMTP server MUST clear all buffers and
-reset the state exactly as if a RSET command had been issued. In other
-words, the sequence of RSET followed immediately by EHLO is redundant, but
-not harmful other than in the performance cost of executing unnecessary
-commands.
-
-If the EHLO command is not acceptable to the SMTP server, 501, 500, or 502
-failure replies MUST be returned as appropriate. The SMTP server MUST stay
-in the same state after transmitting these replies that it was in before
-the EHLO was received.
-
-The SMTP client MUST ensure that the domain parameter to the EHLO command
-is a valid principal host name (not a CNAME or MX name) for its host. If
-this is not possible (e.g., when the client's address is dynamically
-assigned and the client does not have an obvious name), an address literal
-SHOULD be substituted for the domain name and supplemental information
-provided that will assist in identifying the client.
-
-An SMTP server MAY verify that the domain name parameter in the EHLO
-command actually corresponds to the IP address of the client. However, the
-server MUST NOT refuse to accept a message if the verification fails: the
-information about verification failure is for logging and tracing only.
-
-The NOOP, HELP, EXPN, VRFY, and RSET commands can be used at any time
-during a session, or without previously initializing a session. SMTP
-servers SHOULD process these normally (that is, not return a 503 code) even
-if no EHLO command has yet been received; clients SHOULD open a session
-with EHLO before sending these commands.
-
-If these rules are followed, the example in RFC 821 that shows "550 access
-denied to you" in response to an EXPN command is incorrect unless an EHLO
-command precedes the EXPN or the denial of access is based on the client's
-IP address or other authentication or authorization-determining mechanisms.
-
-The MAIL command (or the obsolete SEND, SOML, or SAML commands) begins a
-mail transaction. Once started, a mail transaction consists of a
-transaction beginning command, one or more RCPT commands, and a DATA
-command, in that order. A mail transaction may be aborted by the RSET (or
-a new EHLO) command. There may be zero or more transactions in a session.
-MAIL (or SEND, SOML, or SAML) MUST NOT be sent if a mail transaction is
-already open, i.e., it should be sent only if no mail transaction had been
-started in the session, or it the previous one successfully concluded with
-a successful DATA command, or if the previous one was aborted with a RSET.
-
-If the transaction beginning command argument is not acceptable, a 501
-failure reply MUST be returned and the SMTP server MUST stay in the same
-state. If the commands in a transaction are out of order to the degree
-that they cannot be processed by the server, a 503 failure reply MUST be
-returned and the SMTP server MUST stay in the same state.
-
-The last command in a session MUST be the QUIT command. The QUIT command
-cannot be used at any other time in a session, but SHOULD be used by the
-client SMTP to request connection closure, even when no session opening
-command was sent and accepted.
-
-4.1.5 Private-use Commands
-
-As specified in section 2.2.2, commands starting in "X" may be used by
-bilateral agreement between the client (sending) and server (receiving)
-SMTP agents. An SMTP server that does not recognize such a command is
-expected to reply with "500 Command not recognized". An extended SMTP
-server MAY list the feature names associated with these private commands in
-the response to the EHLO command.
-
-Commands sent or accepted by SMTP systems that do not start with "X" MUST
-conform to the requirements of section 2.2.2.
-
-4.2 SMTP Replies
-
-Replies to SMTP commands serve to ensure the synchronization of requests
-and actions in the process of mail transfer and to guarantee that the SMTP
-client always knows the state of the SMTP server. Every command MUST
-generate exactly one reply.
-
-The details of the command-reply sequence are described in section 4.3.
-
-An SMTP reply consists of a three digit number (transmitted as three
-alphanumeric characters) followed by some text unless specified otherwise
-in this document. The number is for use by automata to determine what
-state to enter next; the text is for the human user. The three digits
-contain enough encoded information that the SMTP client need not examine
-the text and may either discard it or pass it on to the user, as
-appropriate. Exceptions are as noted elsewhere in this document. In
-particular, the 220, 221, 251, 421, and 551 reply codes are associated
-with message text that must be parsed and interpreted by machines. In the
-general case, the text may be receiver dependent and context dependent, so
-there are likely to be varying texts for each reply code. A discussion of
-the theory of reply codes is given in section 4.2.1. Formally, a reply is
-defined to be the sequence: a three-digit code, <SP>, one line of text,
-and <CRLF>, or a multiline reply (as defined in section 4.2.1). Since, in
-violation of this specification, the text is sometimes not sent, clients
-which do not receive it SHOULD be prepared to process the code alone (with
-or without a trailing space character). Only the EHLO, EXPN, and HELP
-commands are expected to result in multiline replies in normal
-circumstances, however, multiline replies are allowed for any command.
-
-In ABNF, server responses are:
-
- Greeting = "220 " Domain [ SP text ] CRLF
- Reply-line = Reply-code [ SP text ] CRLF
-
-where "Greeting" appears only in the 220 response that announces that the
-server is opening its part of the connection.
-
-An SMTP server SHOULD send only the reply codes listed in this document.
-An SMTP server SHOULD use the text shown in the examples whenever
-appropriate.
-
-An SMTP client MUST determine its actions only by the reply code, not by
-the text (except for 251 and 551 and, if necessary, 220, 221, and 421
-replies); in the general case, any text, including no text at all (although
-senders SHOULD NOT send bare codes), MUST be acceptable. The space (blank)
-following the reply code is considered part of the text. Whenever
-possible, a receiver-SMTP SHOULD test the first digit (severity indication)
-of the reply code.
-
-The list of codes that appears below must not be construed as permanent.
-While the addition of new codes should be a rare and significant activity,
-with supplemental information in the textual part of the response being
-preferred, new codes may be added as the result of new Standards or
-Standards-track specifications. Consequently, a sender-SMTP MUST be
-prepared to handle codes not specified in this document and MUST do so by
-interpreting the first digit only.
-
-4.2.1 Reply Code Severities and Theory
-
-The three digits of the reply each have a special significance. The first
-digit denotes whether the response is good, bad or incomplete. An
-unsophisticated SMTP client, or one that receives an unexpected code, will
-be able to determine its next action (proceed as planned, redo, retrench,
-etc.) by examining this first digit. An SMTP client that wants to know
-approximately what kind of error occurred (e.g., mail system error, command
-syntax error) may examine the second digit. The third digit and any
-supplemental information that may be present is reserved for the finest
-gradation of information.
-
-There are five values for the first digit of the reply code:
-
-1yz Positive Preliminary reply
- The command has been accepted, but the requested action is being held in
- abeyance, pending confirmation of the information in this reply. The
- SMTP client should send another command specifying whether to continue
- or abort the action. Note: unextended SMTP does not have any commands
- that allow this type of reply, and so does not have continue or abort
- commands.
-
-2yz Positive Completion reply
- The requested action has been successfully completed. A new request may
- be initiated.
-
-3yz Positive Intermediate reply
- The command has been accepted, but the requested action is being held in
- abeyance, pending receipt of further information. The SMTP client
- should send another command specifying this information. This reply is
- used in command sequence groups (i.e., in DATA).
-
-4yz Transient Negative Completion reply
- The command was not accepted, and the requested action did not occur.
- However, the error condition is temporary and the action may be
- requested again. The sender should return to the beginning of the
- command sequence (if any). It is difficult to assign a meaning to
- "transient" when two different sites (receiver- and sender- SMTP agents)
- must agree on the interpretation. Each reply in this category might have
- a different time value, but the SMTP client is encouraged to try again.
- A rule of thumb to determine whether a reply fits into the 4yz or the
- 5yz category (see below) is that replies are 4yz if they can be
- successful if repeated without any change in command form or in
- properties of the sender or receiver. (that is, the command is repeated
- identically and the receiver does not put up a new implementation.)
-
-5yz Permanent Negative Completion reply
- The command was not accepted and the requested action did not occur.
- The SMTP client is discouraged from repeating the exact request (in the
- same sequence). Even some "permanent" error conditions can be
- corrected, so the human user may want to direct the SMTP client to
- reinitiate the command sequence by direct action at some point in the
- future (e.g., after the spelling has been changed, or the user has
- altered the account status).
-
-The second digit encodes responses in specific categories:
-
-x0z Syntax: These replies refer to syntax errors, syntactically correct
- commands that don't fit any functional category, and unimplemented or
- superfluous commands.
-
-x1z Information: These are replies to requests for information, such as
- status or help.
-
-x2z Connections: These are replies referring to the transmission channel.
-
-x3z Unspecified.
-
-x4z Unspecified.
-
-x5z Mail system: These replies indicate the status of the receiver mail
- system vis-a-vis the requested transfer or other mail system action.
-
-The third digit gives a finer gradation of meaning in each category
-specified by the second digit. The list of replies illustrates this. Each
-reply text is recommended rather than mandatory, and may even change
-according to the command with which it is associated. On the other hand,
-the reply codes must strictly follow the specifications in this section.
-Receiver implementations should not invent new codes for slightly different
-situations from the ones described here, but rather adapt codes already
-defined.
-
-For example, a command such as NOOP, whose successful execution does not
-offer the SMTP client any new information, will return a 250 reply. The
-reply is 502 when the command requests an unimplemented non-site-specific
-action. A refinement of that is the 504 reply for a command that is
-implemented, but that requests an unimplemented parameter.
-
-The reply text may be longer than a single line; in these cases the
-complete text must be marked so the SMTP client knows when it can stop
-reading the reply. This requires a special format to indicate a multiple
-line reply.
-
-The format for multiline replies requires that every line, except the last,
-begin with the reply code, followed immediately by a hyphen, "-" (also
-known as minus), followed by text. The last line will begin with the reply
-code, followed immediately by <SP>, optionally some text, and <CRLF>. As
-noted above, servers SHOULD send the <SP> if subsequent text is not sent,
-but clients MUST be prepared for it to be omitted.
-
-For example:
- 123-First line
- 123-Second line
- 123-234 text beginning with numbers
- 123 The last line
-
-In many cases the SMTP client then simply needs to search for the reply
-code followed by <SP> at the beginning of a line, and ignore all preceding
-lines. In a few cases, there is important data for the client in the
-reply "text". The client will be able to identify these cases from the
-current context.
-
-4.2.2 Reply Codes by Function Groups
-
- 500 Syntax error, command unrecognized
- (This may include errors such as command line too long)
- 501 Syntax error in parameters or arguments
- 502 Command not implemented (see section 4.2.4)
- 503 Bad sequence of commands
- 504 Command parameter not implemented
-
- 211 System status, or system help reply
- 214 Help message
- (Information on how to use the receiver or the meaning of a
- particular non-standard command; this reply is useful only
- to the human user)
-
- 220 <domain> Service ready
- 221 <domain> Service closing transmission channel
- 421 <domain> Service not available, closing transmission channel
- (This may be a reply to any command if the service knows it
- must shut down)
-
- 250 Requested mail action okay, completed
- 251 User not local; will forward to <forward-path>
- (See section 3.4)
- 252 Cannot VRFY user, but will accept message and attempt
- delivery
- (See section 3.5.3)
- 450 Requested mail action not taken: mailbox unavailable
- (e.g., mailbox busy)
- 550 Requested action not taken: mailbox unavailable
- (e.g., mailbox not found, no access, or command rejected
- for policy reasons)
- 451 Requested action aborted: error in processing
- 551 User not local; please try <forward-path>
- (See section 3.4)
- 452 Requested action not taken: insufficient system storage
- 552 Requested mail action aborted: exceeded storage allocation
- 553 Requested action not taken: mailbox name not allowed
- (e.g., mailbox syntax incorrect)
- 354 Start mail input; end with <CRLF>.<CRLF>
- 554 Transaction failed (Or, in the case of a connection-opening
- response, "No SMTP service here")
-
-4.2.3 Reply Codes in Numeric Order
-
- 211 System status, or system help reply
- 214 Help message
- (Information on how to use the receiver or the meaning of a
- particular non-standard command; this reply is useful only
- to the human user)
- 220 <domain> Service ready
- 221 <domain> Service closing transmission channel
- 250 Requested mail action okay, completed
- 251 User not local; will forward to <forward-path>
- (See section 3.4)
- 252 Cannot VRFY user, but will accept message and attempt
- delivery
- (See section 3.5.3)
-
- 354 Start mail input; end with <CRLF>.<CRLF>
-
- 421 <domain> Service not available, closing transmission channel
- (This may be a reply to any command if the service knows it
- must shut down)
- 450 Requested mail action not taken: mailbox unavailable
- (e.g., mailbox busy)
- 451 Requested action aborted: local error in processing
- 452 Requested action not taken: insufficient system storage
-
- 500 Syntax error, command unrecognized
- (This may include errors such as command line too long)
- 501 Syntax error in parameters or arguments
- 502 Command not implemented (see section 4.2.4)
- 503 Bad sequence of commands
- 504 Command parameter not implemented
- 550 Requested action not taken: mailbox unavailable
- (e.g., mailbox not found, no access, or command rejected
- for policy reasons)
- 551 User not local; please try <forward-path>
- (See section 3.4)
- 552 Requested mail action aborted: exceeded storage allocation
- 553 Requested action not taken: mailbox name not allowed
- (e.g., mailbox syntax incorrect)
- 554 Transaction failed (Or, in the case of a connection-opening
- response, "No SMTP service here")
-
-4.2.4 Reply Code 502
-
-Questions have been raised as to when reply code 502 (Command not
-implemented) SHOULD be returned in preference to other codes. 502 SHOULD
-be used when the command is actually recognized by the SMTP server, but not
-implemented. If the command is not recognized, code 500 SHOULD be
-returned. Extended SMTP systems MUST NOT list capabilities in response to
-EHLO for which they will return 502 (or 500) replies.
-
-4.2.5 Reply Codes After DATA and the Subsequent <CRLF>.<CRLF>
-
-When an SMTP server returns a positive completion status (2yz code) after
-the DATA command is completed with <CRLF>.<CRLF>, it accepts responsibility
-for:
-
- - delivering the message (if the recipient mailbox exists), or
-
- - if attempts to deliver the message fail due to transient conditions,
- retrying delivery some reasonable number of times at intervals as
- specified in section 4.5.4.
-
- - if attempts to deliver the message fail due to permanent conditions, or
- if repeated attempts to deliver the message fail due to transient
- conditions, returning appropriate notification to the sender of the
- original message (using the address in the SMTP MAIL FROM command).
-
-When an SMTP server returns a transient error completion status (4yz) code
-after the DATA command is completed with <CRLF>.<CRLF>, it MUST NOT make
-any further attempt to deliver that message. The SMTP client retains
-responsibility for delivery of that message and may either return it to the
-user or requeue it for a subsequent attempt (see section 4.5.4.1). The
-sending user SHOULD be able to interpret the return of a transient or
-permanent failure status as a non-delivery indication.
-
-4.3 Sequencing of Commands and Replies
-
-4.3.1 Sequencing Overview
-
-The communication between the sender and receiver is an alternating
-dialogue, controlled by the sender. As such, the sender issues a command
-and the receiver responds with a reply. Unless other arrangements are
-negotiated through service extensions, the sender MUST wait for this
-response before sending further commands.
-
-One important reply is the connection greeting. Normally, a receiver will
-send a 220 "Service ready" reply when the connection is completed. The
-sender SHOULD wait for this greeting message before sending any commands.
-
-Note: all the greeting-type replies have the official name (the
-fully-qualified primary domain name) of the server host as the first word
-following the reply code. Sometimes the host will have no meaningful name.
-See 4.1.3 for a discussion of alternatives in these situations.
-
-For example,
- 220 ISIF.USC.EDU Service ready
-or
- 220 mail.foo.com SuperSMTP v 6.1.2 Service ready
-or
- 220 [10.0.0.1] Clueless host service ready
-
-The table below lists alternative success and failure replies for each
-command. These SHOULD be strictly adhered to: a receiver may substitute
-text in the replies, but the meaning and action implied by the code numbers
-and by the specific command reply sequence cannot be altered.
-
-4.3.2 Command-Reply Sequences
-
-Each command is listed with its usual possible replies. The prefixes used
-before the possible replies are "I" for intermediate, "S" for success, and
-"E" for error. Since some servers may generate other replies under special
-circumstances, and to allow for future extension, SMTP clients SHOULD, when
-possible, interpret only the first digit of the reply and MUST be prepared
-to deal with unrecognized reply codes by interpreting the first digit only.
-Unless extended using the mechanisms described in section 2.2, SMTP servers
-MUST NOT transmit reply codes to an SMTP client that are other than three
-digits or that do not start in a digit between 2 and 5 inclusive.
-
-These sequencing rules and, in principle, the codes themselves, can be
-extended or modified by SMTP extensions offered by the server and accepted
-(requested) by the client.
-
-In addition to the codes listed below, any SMTP command can return any of
-the following codes if the corresponding unusual circumstances are
-encountered:
-
-500 For the "command line too long" case or if the command name was not
- recognized. Note that producing a "command not recognized" error in
- response to the required subset of these commands is a violation of this
- specification.
-
-501 Syntax error in command or arguments. In order to provide for future
- extensions, commands that are specified in this document as not
- accepting arguments (DATA, RSET, QUIT) SHOULD return a 501 message if
- arguments are supplied in the absence of EHLO-advertised extensions.
-
-421 Service shutting down and closing transmission channel
-
-Specific sequences are:
-
-CONNECTION ESTABLISHMENT
- S: 220
- E: 554
-EHLO or HELO
- S: 250
- E: 504, 550
-MAIL
- S: 250
- E: 552, 451, 452, 550, 553, 503
-RCPT
- S: 250, 251 (but see section 3.4 for discussion of 251)
- E: 550, 551, 552, 553, 450, 451, 452, 503, 550
-DATA
- I: 354 -> data -> S: 250
- E: 552, 554, 451, 452
- E: 451, 554, 503
-RSET
- S: 250
-VRFY
- S: 250, 251, 252
- E: 550, 551, 553, 502, 504
-EXPN
- S: 250, 252
- E: 550, 500, 502, 504
-HELP
- S: 211, 214
- E: 502, 504
-NOOP
- S: 250
-QUIT
- S: 221
-
-4.4 Trace Information
-
-When an SMTP server receives a message for delivery or further processing,
-it MUST insert trace ("time stamp" or "Received") information at the
-beginning of the message content, as discussed in section 4.1.1.4.
-
-This line MUST be structured as follows:
-
- - The FROM field, which MUST be supplied in an SMTP environment, SHOULD
- contain both (1) the name of the source host as presented in the EHLO
- command and (2) an address literal containing the IP address of the
- source, determined from the TCP connection.
-
- - The ID field MAY contain an "@" as suggested in RFC-822, but this is not
- required.
-
- - The FOR field MAY contain a list of <path> entries when multiple RCPT
- commands have been given. This may raise some security issues and is
- usually not desirable; see section 7.2.
-
-An Internet mail program MUST NOT change a Received: line that was
-previously added to the message header. SMTP servers MUST prepend Received
-lines to messages; they MUST NOT change the order of existing lines or
-insert Received lines in any other location.
-
-As the Internet grows, comparability of Received fields is important for
-detecting problems, especially slow relays. SMTP servers that create
-Received fields SHOULD use explicit offsets in the dates (e.g., -0800),
-rather than time zone names of any type. Local time (with an offset) is
-preferred to UT when feasible. This formulation allows slightly more
-information about local circumstances to be specified. If UT is needed,
-the receiver need merely do some simple arithmetic to convert the values.
-Use of UT loses information about the time zone-location of the server. If
-a time zone name is used, it SHOULD be included in a comment.
-
-When the delivery SMTP server makes the "final delivery" of a message, it
-inserts a return-path line at the beginning of the mail data. This use of
-return-path is required; mail systems MUST support it. The return-path
-line preserves the information in the <reverse-path> from the MAIL
-command. Here, final delivery means the message has left the SMTP
-enviroment. Normally, this would mean it had been delivered to the
-destination user or an associated mail drop, but in some cases it may be
-further processed and transmitted by another mail system.
-
-It is possible for the mailbox in the return path to be different from the
-actual sender's mailbox, for example, if error responses are to be
-delivered to a special error handling mailbox rather than to the message
-sender. When mailing lists are involved, this arrangement is common and
-useful as a means of directing errors to the list maintainer rather than
-the message originator.
-
-The text above implies that the final mail data will begin with a return
-path line, followed by one or more time stamp lines. These lines will be
-followed by the mail data headers and body [MSGFMT].
-
-It is sometimes difficult for an SMTP server to determine whether or not it
-is making final delivery since forwarding or other operations may occur
-after the message is accepted for delivery. Consequently, any further
-(forwarding, gateway, or relay) systems MAY remove the return path and
-rebuild the MAIL FROM command as needed to ensure that exactly one such
-line appears in a delivered message.
-
-A message-originating SMTP system SHOULD NOT send a message that already
-contains a Return-path header. SMTP servers performing a relay function
-MUST NOT inspect the message data, and especially not to the extent needed
-to determine if Return-path headers are present. SMTP servers making final
-delivery MAY remove Return-path headers before adding their own.
-
-The primary purpose of the Return-path is to designate the address to which
-messages indicating non-delivery or other mail system failures are to be
-sent. For this to be unambiguous, exactly one return path SHOULD be
-present when the message is delivered. Systems using RFC 822 syntax with
-non-SMTP transports SHOULD designate an unambiguous address, associated
-with the transport envelope, to which error reports (e.g., non-delivery
-messages) should be sent.
-
-Historical note: Text in RFC 822 that appears to contradict the use of the
-Return-path header (or the envelope MAIL FROM address) as the destination
-for error messages is not applicable on the Internet. The MAIL FROM address
-(as copied into the Return-path) MUST be used as the target of any mail
-containing delivery error messages.
-
-In particular:
-
- - a gateway from SMTP->elsewhere SHOULD insert a return-path header,
- unless it is known that the "elsewhere" transport also uses Internet
- domain addresses and maintains the envelope sender address separately.
-
- - a gateway from elsewhere->SMTP SHOULD delete any return-path header
- present in the message, and either copy that information to the SMTP
- envelope or combine it with information present in the envelope of the
- other transport system to construct the MAIL FROM part of the SMTP
- envelope.
-
-The server must give special treatment to cases in which the processing
-following the end of mail data indication is only partially successful.
-This could happen if, after accepting several recipients and the mail data,
-the SMTP server finds that the mail data could be successfully delivered to
-some, but not all, of the recipients. In such cases, the response to the
-DATA command MUST be an OK reply. However, the SMTP server MUST compose
-and send an "undeliverable mail" notification message to the originator of
-the message.
-
-A single notification listing all of the failed recipients or separate
-notification messages MUST be sent for each failed recipient. For economy
-of processing by the sender, the former is preferred when possible. All
-undeliverable mail notification messages are sent using the MAIL command
-(even if they result from processing the obsolete SEND, SOML, or SAML
-commands) and use a null return path as discussed in section 3.7.
-
-The time stamp line and the return path line are formally defined as
-follows:
-
- Return-path-line = "Return-Path:" FWS Reverse-path <CRLF>
-
- Time-stamp-line = "Received:" FWS Stamp <CRLF>
-
- Stamp = From-domain By-domain Opt-info ";" FWS Daytime
-
- From-domain = "FROM" FWS Extended-Domain CFWS
-
- By-domain = "BY" FWS Extended-Domain CFWS
-
- Extended-Domain = Domain /
- ( Domain FWS "(" TCP-info ")" ) /
- ( Address-literal FWS "(" TCP-info ")"
- TCP-info = Address-literal / ( Domain FWS Address-literal )
- ; Information derived by server from TCP connection,
- not client EHLO.
-
- Opt-info = [Via] [With] [ID] [For]
-
- Via = "VIA" FWS Link CFWS
-
- With = "WITH" FWS Protocol CFWS
-
- ID = "ID" FWS String / msg-id CFWS
-
- For = "FOR" FWS 1*( Path / Mailbox ) CFWS
-
- Link = "TCP" / Addtl-Link
- Addtl-Link = Atom ; Additional standard names for links are
- registered with the Internet Assigned
- Numbers Authority (IANA). "Via" is
- primarily of value with non-Internet
- transports.
- SMTP servers SHOULD NOT use unregistered
- names.
- Protocol = "ESMTP" / "SMTP" / Attdl-Protocol
- Attdl-Protocol = Atom ; Additional standard names for protocols
- are registered with the Internet Assigned
- Numbers Authority (IANA). SMTP servers
- SHOULD NOT use unregistered names.
-
- Daytime = FWS [ day-of-week "," FWS ] Date FWS Time
-
- Date = DD FWS Mon FWS YYYY
- ; Note that the earlier form, which permits two-digit years, has
- been deprecated. SMTP systems MUST use four-digit years.
-
- Time = HH ":" MM ":" SS FWS Zone
-
- DD = 1*2Digit ; the one or two digit integer day of the
- month in the range 1 to 31.
-
- Mon = "JAN" | "FEB" | "MAR" | "APR" | "MAY" | "JUN" |
- "JUL" | "AUG" | "SEP" | "OCT" | "NOV" | "DEC"
-
- YYYY = 4*4Digit ; the four decimal integer year in the range
- 0000 to 9999.
-
- HH = 2*2Digit ; the two decimal digit hour of the day in
- the range 00 to 24.
-
- MM = 2*2Digit ; the two decimal digit integer minute of the hour
- in the range 00 to 59.
-
- SS = 2*2Digit [ "." 1*Digit ]
- ; the two decimal digit integer second of the
- minute in the range 00 to 59, with
- optional fractional seconds.
-
- Zone = ( "+" / "-" ) 4*4Digit [ <SP> "(" String ")" ]
- ; A four digit, signed time zone offset,
- such as -0500 for US Eastern Standard
- Time. This may be supplemented by a time
- zone name in parentheses, e.g., "-0800
- (PDT)". Note that there is no default;
- time zone information is required and
- MUST be supplied.
-
-4.5 Additional Implementation Issues
-
-4.5.1 Minimum Implementation
-
-In order to make SMTP workable, the following minimum implementation is
-required for all receivers. The following commands MUST be supported to
-conform to this specification:
- EHLO
- HELO
- MAIL
- RCPT
- DATA
- RSET
- NOOP
- QUIT
-
-VRFY, required by RFC 1123 [RFC-1123], is no longer required by this
-specification. However, since it was required earlier, servers are
-strongly encouraged to at least recognize the syntax and provide pro-forma
-support.
-
-Any system that includes an SMTP server supporting mail relaying or
-delivery MUST support the reserved mailbox "postmaster" as a
-case-insensitive local name. This postmaster address is not strictly
-necessary if the server always returns 554 on connection opening (as
-described in section 3.1). The requirement to accept mail for postmaster
-implies that RCPT TO commands which specify a mailbox for postmaster at any
-of the domains for which the SMTP server provides mail service, as well as
-the special case of "RCPT TO:<Postmaster>" (with no domain specification),
-MUST be supported. This requirement does not imply that SMTP systems must
-deliver Postmaster mail in particular cases (e.g., problematic origin
-addresses) in which they have substantive reasons for not doing so.
-
-4.5.2 Transparency
-
-Without some provision for data transparency, the character sequence
-"<CRLF>.<CRLF>" ends the mail text and cannot be sent by the user. In
-general, users are not aware of such "forbidden" sequences. To allow all
-user composed text to be transmitted transparently, the following
-procedures are used:
-
- - Before sending a line of mail text, the SMTP client checks the first
- character of the line. If it is a period, one additional period is
- inserted at the beginning of the line.
-
- - When a line of mail text is received by the SMTP server, it checks the
- line. If the line is composed of a single period, it is treated as the
- end of mail indicator. If the first character is a period and there are
- other characters on the line, the first character is deleted.
-
-The mail data may contain any of the 128 ASCII characters. All characters
-are to be delivered to the recipient's mailbox, including spaces, vertical
-and horizontal tabs, and other control characters. If the transmission
-channel provides an 8-bit byte (octets) data stream, the 7-bit ASCII codes
-are transmitted right justified in the octets, with the high order bits
-cleared to zero. See 3.7 for special treatment of these conditions in SMTP
-systems serving a relay function.
-
-In some systems it may be necessary to transform the data as it is received
-and stored. This may be necessary for hosts that use a different character
-set than ASCII as their local character set or store data in records rather
-than strings. If such transformations are necessary, they MUST be
-reversible, especially if such transformations are applied to mail being
-relayed.
-
-4.5.3 Sizes and Timeouts
-
-There are several objects that have required minimum/maximum sizes. Every
-implementation MUST be able to receive objects of at least these sizes.
-Objects larger than these sizes SHOULD be avoided when possible. However,
-some Internet mail constructs such as encoded X.400 addresses [RFC-X400]
-will often require larger objects: clients MAY attempt to transmit these,
-but MUST be prepared for a server to reject them if they cannot be handled
-by it. To the maximum extent possible, implementation techniques which
-impose no limits on the length of these objects should be used.
-
-local-part
- The maximum total length of a user name or other local-part is 64
- characters.
-
-domain
- The maximum total length of a domain name or number is 255 characters.
-
-path
- The maximum total length of a reverse-path or forward-path is 256
- characters (including the punctuation and element separators).
-
-command line
- The maximum total length of a command line including the command word
- and the <CRLF> is 512 characters. SMTP extensions may be used to
- increase this limit.
-
-reply line
- The maximum total length of a reply line including the reply code and
- the <CRLF> is 512 characters. More information may be conveyed through
- multiple-line replies.
-
-text line
- The maximum total length of a text line including the <CRLF> is 1000
- characters (not counting the leading dot duplicated for transparency).
- This number may be increased by the use of SMTP Service Extensions.
-
-message content
- The maximum total length of a message content (including any message
- headers as well as the message body) MUST BE at least 64K octets. Since
- the introduction of multimedia mail [RFC-MIME], message lengths on the
- Internet have grown dramatically, and message size restrictions should
- be avoided if at all possible. SMTP server systems that must impose
- restrictions SHOULD implement the "SIZE" service extension ([RFC-SIZE]),
- and SMTP client systems that will send large messages SHOULD utilize it
- when possible.
-
-recipients buffer
- The minimum total number of recipients that must be buffered is 100
- recipients. Rejection of messages (for excessive recipients) with fewer
- than 100 RCPT TO commands is a violation of this specification. The
- general principle that relaying SMTP servers MUST NOT, and delivery SMTP
- servers SHOULD NOT, perform validation tests on message headers suggests
- that rejecting a message based on the total number of recipients shown
- in header fields is to be discouraged. A server which imposes a limit
- on the number of recipients MUST behave in an orderly fashion, such as
- to reject additional addresses over its limit rather than silently
- discarding addresses previously accepted. A client that needs to
- deliver a message containing over 100 RCPT TO commands SHOULD be
- prepared to transmit in 100-recipient "chunks" if the server declines to
- accept more than 100 recipients in a single message.
-
-Errors due to exceeding these limits may be reported by using the reply
-codes. Some examples of reply codes are:
-
- 500 Line too long.
-or
- 501 Path too long
-or
- 452 Too many recipients (see below)
-or
- 552 Too much mail data.
-
-[RFC-821] incorrectly listed the error where an SMTP server exhausts its
-implementation limit on the number of RCPT TO commands ("too many
-recipients") as having reply code 552. The correct reply code for this
-condition is 452. Clients SHOULD treat a 552 code in this case as a
-temporary, rather than permanent failure so the logic below works.
-
-When a conforming SMTP server encounters this condition, it has at least
-100 successful RCPT commands in its recipients buffer. If the server is
-able to accept the message, then at least these 100 addresses will be
-removed from the SMTP client's queue. When the client attempts
-retransmission of those addresses which received 452 responses, at least
-100 of these will be able to fit in the SMTP server's recipients buffer.
-Each retransmission attempt which is able to deliver anything will be able
-to dispose of at least 100 of these recipients.
-
-If an SMTP server has an implementation limit on the number of RCPT TO
-commands and this limit is exhausted, it MUST use a response code of 452.
-If the server has a configured site-policy limitation on the number of RCPT
-TO commands, it MAY instead use a 5XX response code.
-
-In order to interoperate with SMTP servers implementing an older version of
-the protocol, SMTP clients MAY treat a 552 code obtained in response to an
-RCPT command as if it were a 452 response code, especially after some RCPT
-commands have already been accepted in the same mail transaction.
-
-An SMTP client MUST provide a timeout mechanism. It MUST use per-command
-timeouts rather than somehow trying to time the entire mail transaction.
-Timeouts SHOULD be easily reconfigurable, preferably without recompiling
-the SMTP code. To implement this, a timer is set for each SMTP command and
-for each buffer of the data transfer. The latter means that the overall
-timeout is inherently proportional to the size of the message.
-
-Based on extensive experience with busy mail-relay hosts, the minimum
-per-command timeout values SHOULD be as follows:
-
-Initial 220 Message: 5 minutes
- An SMTP client process needs to distinguish between a failed TCP
- connection and a delay in receiving the initial 220 greeting message.
- Many SMTP servers accept a TCP connection but delay delivery of the 220
- message until their system load permits more mail to be processed.
-
-MAIL Command: 5 minutes
-
-RCPT Command: 5 minutes
- A longer timeout is required if processing of mailing lists and aliases
- is not deferred until after the message was accepted.
-
-DATA Initiation: 2 minutes
- This is while awaiting the "354 Start Input" reply to a DATA command.
-
-Data Block: 3 minutes
- This is while awaiting the completion of each TCP SEND call transmitting
- a chunk of data.
-
-DATA Termination: 10 minutes.
- This is while awaiting the "250 OK" reply. When the receiver gets the
- final period terminating the message data, it typically performs
- processing to deliver the message to a user mailbox. A spurious timeout
- at this point would be very wasteful and would typically result in
- delivery of multiple copies of the message, since it has been
- successfully sent and the server has accepted responsibility for
- delivery. See section 6.1 for additional discussion.
-
-An SMTP server SHOULD have a timeout of at least 5 minutes while it is
-awaiting the next command from the sender.
-
-4.5.4 Queuing Strategies
-
-The common structure of a host SMTP implementation includes user mailboxes,
-one or more areas for queuing messages in transit, and one or more daemon
-processes for sending and receiving mail. The exact structure will vary
-depending on the needs of the users on the host and the number and size of
-mailing lists supported by the host. We describe several optimizations that
-have proved helpful, particularly for mailers supporting high traffic
-levels.
-
-Any queuing strategy MUST include timeouts on all activities on a
-per-command basis. A queuing strategy MUST NOT send error messages in
-response to error messages under any circumstances.
-
-4.5.4.1 Sending Strategy
-
-The general model for an SMTP client is one or more processes that
-periodically attempt to transmit outgoing mail. In a typical system, the
-program that composes a message has some method for requesting immediate
-attention for a new piece of outgoing mail, while mail that cannot be
-transmitted immediately MUST be queued and periodically retried by the
-sender. A mail queue entry will include not only the message itself but
-also the envelope information.
-
-The sender MUST delay retrying a particular destination after one attempt
-has failed. In general, the retry interval SHOULD be at least 30 minutes;
-however, more sophisticated and variable strategies will be beneficial when
-the SMTP client can determine the reason for non-delivery.
-
-Retries continue until the message is transmitted or the sender gives up;
-the give-up time generally needs to be at least 4-5 days. The parameters
-to the retry algorithm MUST be configurable.
-
-A client SHOULD keep a list of hosts it cannot reach and corresponding
-connection timeouts, rather than just retrying queued mail items.
-
-Experience suggests that failures are typically transient (the target
-system or its connection has crashed), favoring a policy of two connection
-attempts in the first hour the message is in the queue, and then backing
-off to one every two or three hours.
-
-The SMTP client can shorten the queuing delay in cooperation with the SMTP
-server. For example, if mail is received from a particular address, it is
-likely that mail queued for that host can now be sent. Application of this
-principle may, in many cases, eliminate the requirement for an explicit
-"send queues now" function such as that discussed in [RFC-ETRN].
-
-The strategy may be further modified as a result of multiple addresses per
-host (see below) to optimize delivery time vs. resource usage.
-
-An SMTP client may have a large queue of messages for each unavailable
-destination host. If all of these messages were retried in every retry
-cycle, there would be excessive Internet overhead and the sending system
-would be blocked for a long period. Note that an SMTP client can generally
-determine that a delivery attempt has failed only after a timeout of
-several minutes and even a one-minute timeout per connection will result in
-a very large delay if retries are repeated for dozens, or even hundreds, of
-queued messages to the same host.
-
-At the same time, SMTP clients SHOULD use great care in caching negative
-responses from servers. In an extreme case, if EHLO is issued multiple
-times during the same SMTP connection, different answers may be returned by
-the server. More significantly, 5yz responses to MAIL FROM MUST NOT be
-cached.
-
-When a mail message is to be delivered to multiple recipients, and the SMTP
-server to which a copy of the message is to be sent is the same for
-multiple recipients, then only one copy of the message SHOULD be
-transmitted. That is, the SMTP client SHOULD use the command sequence:
-MAIL, RCPT, RCPT,... RCPT, DATA instead of the sequence: MAIL, RCPT, DATA,
-..., MAIL, RCPT, DATA. However, if there are very many addresses, a limit
-on the number of RCPT commands per MAIL command MAY be imposed.
-Implementation of this efficiency feature is strongly encouraged.
-
-Similarly, to achieve timely delivery, the SMTP client MAY support multiple
-concurrent outgoing mail transactions. However, some limit may be
-appropriate to protect the host from devoting all its resources to mail.
-
-4.5.4.2 Receiving Strategy
-
-The SMTP server SHOULD attempt to keep a pending listen on the SMTP port at
-all times. This requires the support of multiple incoming TCP connections
-for SMTP. Some limit MAY be imposed.
-
-As discussed above, when the SMTP server receives mail from a particular
-host address, it could notify the SMTP client to retry any mail pending for
-that host address.
-
-4.5.5 Messages with a null reverse-path
-
-There are several types of notification messages which are required by
-existing and proposed standards to be sent with a null reverse path,
-namely non-delivery notifications as discussed in section 3.7, other kinds
-of Delivery Status Notifications (DSNs, see [RFC 1894]) and also Message
-Disposition Notifications (MDNs, see [RFC 2298]). All of these kinds of
-messages are notifications about a previous message, and they are sent to
-the reverse-path of the previous mail message. (If the delivery of such a
-notification message fails, that usually indicates a problem with the mail
-system of the host to which the notification message is addressed. For
-this reason, at some hosts the MTA is set up to forward such failed
-notification messages to someone who is able to fix problems with the mail
-system, e.g. via the postmaster alias.)
-
-All other types of messages (i.e. any message which is not required by a
-standards-track RFC to have a null reverse-path) SHOULD be sent with with
-a valid, non-null reverse-path.
-
-Implementors of automated email processors should be careful to make sure
-that the various kinds of messages with null reverse-path are handled
-correctly, in particular such systems SHOULD NOT reply to messages with
-null reverse-path.
-
-
-
-
-5. Address Resolution and Mail Handling
-
-Once an SMTP client lexically identifies a domain to which mail will be
-delivered for processing (as described in sections 3.6 and 3.7), a DNS
-lookup is performed to resolve the domain name (see [RFC-DNS]). The names
-are expected to be fully-qualified domain names (FQDNs): mechanisms for
-inferring FQDNs from partial names or local aliases are outside of this
-specification and, due to a history of problems, are generally discouraged.
-The lookup first attempts to locate an MX record associated with the name.
-If a CNAME record is found instead, the resulting name is processed as if
-it were the initial name. If no MX records are found, but an A RR is
-found, the A RR is treated as if it was associated with an implicit MX RR,
-with a preference of 0, pointing to that host. If one or more MX RRs are
-found for a given name, SMTP systems MUST NOT utilize any A RRs associated
-with that name unless they are located using the MX RRs; the "implicit MX"
-rule above applies only if there are no MX records present. If MX records
-are present, but none of them are usable, this situation MUST be reported
-as an error.
-
-When the lookup succeeds, the mapping can result in a list of alternative
-delivery addresses rather than a single address, because of multiple MX
-records, multihoming, or both. To provide reliable mail transmission, the
-SMTP client MUST be able to try (and retry) each of the relevant addresses
-in this list in order, until a delivery attempt succeeds. However, there
-MAY also be a configurable limit on the number of alternate addresses that
-can be tried. In any case, a host SHOULD try at least two addresses.
-
-Two types of information is used to rank the host addresses: multiple MX
-records, and multihomed hosts.
-
-Multiple MX records contain a preference indication that MUST be used in
-sorting (see below). Lower numbers are more preferred than higher ones.
-If there are multiple destinations with the same preference and there is no
-clear reason to favor one (e.g., by recognition of an easily-reached
-address), then the sender-SMTP MUST randomize them to spread the load
-across multiple mail exchangers for a specific organization.
-
-The destination host (perhaps taken from the preferred MX record) may be
-multihomed, in which case the domain name resolver will return a list of
-alternative IP addresses. It is the responsibility of the domain name
-resolver interface to have ordered this list by decreasing preference if
-necessary, and SMTP MUST try them in the order presented.
-
-Although the capability to try multiple alternative addresses is required,
-specific installations may want to limit or disable the use of alternative
-addresses. The question of whether a sender should attempt retries using
-the different addresses of a multihomed host has been controversial. The
-main argument for using the multiple addresses is that it maximizes the
-probability of timely delivery, and indeed sometimes the probability of any
-delivery; the counter-argument is that it may result in unnecessary
-resource use. Note that resource use is also strongly determined by the
-sending strategy discussed in section 4.5.4.1.
-
-If a host receives a message with a destination for which it is a
-designated Mail eXchanger, it MAY relay the message (potentially after
-having rewritten the addresses), make final delivery of the message, or
-hand it off using some mechanism outside the SMTP-provided transport
-environment.
-
-If it determines that it should relay the message without rewriting the
-address, it MUST sort the MX records to determine candidates for delivery.
-The records are first ordered by preference, with the lowest-numbered
-records being most preferred. The relay host MUST then inspect the list
-for any of the names or addresses by which it might be known in mail
-transactions. If a matching record is found, all records at that
-preference level and higher-numbered ones MUST be discarded from
-consideration. If there are no records left at that point, it is an error
-condition, and the message MUST be returned as undeliverable. If records
-do remain, they SHOULD be tried, best preference first, as described above.
-
-
-6. Problem Detection and Handling
-
-6.1 Reliable Delivery and Replies by Email
-
-When the receiver-SMTP accepts a piece of mail (by sending a "250 OK"
-message in response to DATA), it is accepting responsibility for delivering
-or relaying the message. It must take this responsibility seriously. It
-MUST NOT lose the message for frivolous reasons, such as because the host
-later crashes or because of a predictable resource shortage.
-
-If there is a delivery failure after acceptance of a message, the
-receiver-SMTP MUST formulate and mail a notification message. This
-notification MUST be sent using a null ("<>") reverse path in the envelope.
-The recipient of this notification SHOULD be the address from the envelope
-return path (or the Return-Path: line). However, if this address is null
-("<>"), the receiver-SMTP MUST NOT send a notification. Obviously, nothing
-in this section can or should prohibit local decisions (i.e., as part of
-the same system environment as the receiver-SMTP) to log or otherwise
-transmit information about null address events locally if that is desired.
-If the address is an explicit source route, it MUST be stripped down to its
-final hop.
-
-For example, suppose that an error notification must be sent for a message
-that arrived with:
- MAIL FROM:<@a,@b:user@d>
-
-The notification message SHOULD be sent using:
- RCPT TO:<user@d>
-
-Some delivery failures after the message is accepted by SMTP will be
-unavoidable. For example, it may be impossible for the receiving SMTP
-server to validate all the delivery addresses in RCPT command(s) due to a
-"soft" domain system error, because the target is a mailing list (see
-earlier discussion of RCPT), or because the server is acting as a relay and
-has no immediate access to the delivering system.
-
-To avoid receiving duplicate messages as the result of timeouts, a
-receiver-SMTP MUST seek to minimize the time required to respond to the
-final <CRLF>.<CRLF> end of data indicator. See RFC-1047 [RFC-1047] for a
-discussion of this problem.
-
-6.2 Loop Detection
-
-Simple counting of the number of "Received:" headers in a message has
-proven to be an effective, although rarely optimal, method of detecting
-loops in mail systems. SMTP servers using this technique SHOULD use a
-large rejection threshold, normally at least 100 Received entries.
-Whatever mechanisms are used, servers MUST contain provisions for detecting
-and stopping trivial loops.
-
-6.3 Compensating for Irregularities
-
-Unfortunately, variations, creative interpretations, and outright
-violations of Internet mail protocols do occur; some would suggest that
-they occur quite frequently. The debate as to whether a well-behaved SMTP
-receiver or relay should reject a malformed message, attempt to pass it on
-unchanged, or attempt to repair it to increase the odds of successful
-delivery (or subsequent reply) began almost with the dawn of structured
-network mail and shows no signs of abating. Advocates of rejection claim
-that attempted repairs are rarely completely adequate and that rejection of
-bad messages is the only way to get the offending software repaired.
-Advocates of "repair" or "deliver no matter what" argue that users prefer
-that mail go through it if at all possible and that there are significant
-market pressures in that direction. In practice, these market pressures
-may be more important to particular vendors than strict conformance to the
-standards, regardless of the preference of the actual developers.
-
-The problems associated with ill-formed messages were exacerbated by the
-introduction of the split-UA mail reading protocols [RFC-POP2, RFC-POP3,
-RFC-IMAP2, RFC-PCMAIL]. These protocols have encouraged the use of SMTP as
-a posting protocol, and SMTP servers as relay systems for these client
-hosts (which are often only intermittently connected to the Internet).
-Historically, many of those client machines lacked some of the mechanisms
-and information assumed by SMTP (and indeed, by the mail format protocol
-[RFC-822]). Some could not keep adequate track of time; others had no
-concept of time zones; still others could not identify their own names or
-addresses; and, of course, none could satisfy the assumptions that underlay
-RFC-822's conception of authenticated addresses.
-
-In response to these weak SMTP clients, many SMTP systems now complete
-messages that are delivered to them in incomplete or incorrect form. This
-strategy is generally considered appropriate when the server can identify
-or authenticate the client, and there are prior agreements between them.
-By contrast, there is at best great concern about fixes applied by a relay
-or delivery SMTP server that has little or no knowledge of the user or
-client machine.
-
-The following changes to a message being processed MAY be applied when
-necessary by an originating SMTP server, or one used as the target of SMTP
-as an initial posting protocol:
-
- - Addition of a message-id field when none appears
-
- - Addition of a date, time or time zone when none appears
-
- - Correction of addresses to proper FQDN format
-
-The less information the server has about the client, the less likely these
-changes are to be correct and the more caution and conservatism should be
-applied when considering whether or not to perform fixes and how. These
-changes MUST NOT be applied by an SMTP server that provides an intermediate
-relay function.
-
-In all cases, properly-operating clients supplying correct information are
-preferred to corrections by the SMTP server. In all cases, documentation of
-actions performed by the servers (in trace fields and/or header comments)
-is strongly encouraged.
-
-
-7. Security Considerations
-
-7.1 Mail Security and Spoofing
-
-SMTP mail is inherently insecure in that it is feasible for even fairly
-casual users to negotiate directly with receiving and relaying SMTP servers
-
-
-and create messages that will trick a naive recipient into believing that
-they came from somewhere else. Constructing such a message so that the
-"spoofed" behavior cannot be detected by an expert is somewhat more
-difficult, but not sufficiently so as to be a deterrent to someone who is
-determined and knowledgeable. Consequently, as knowledge of Internet mail
-increases, so does the knowledge that SMTP mail inherently cannot be
-authenticated, or integrity checks provided, at the transport level. Real
-mail security lies only in end-to-end methods involving the message bodies,
-such as those that can be provided in the MOSS framework [RFC-MOSS].
-
-Various protocol extensions and configuration options that provide
-authentication at the transport level (e.g., from an SMTP client to an SMTP
-server) improve somewhat on the traditional situation described above.
-However, unless they are accompanied by careful handoffs of responsibility
-in a carefully-designed trust environment, they remain inherently weaker
-than end-to-end mechanisms which use digitally signed messages rather than
-depending on the integrity of the transport system.
-
-Efforts to make it more difficult for users to set envelope MAIL FROM and
-header "From" fields to point to valid addresses other than their own are
-largely misguided: they frustrate legitimate applications in which mail is
-sent by one user on behalf of another or in which error (or normal) replies
-should be directed to a special address. (Systems that provide convenient
-ways for users to alter these fields on a per-message basis should attempt
-to establish a primary and permanent mailbox address for the user so that
-Sender fields within the message data can be generated sensibly.)
-
-This specification does not further address the authentication issues
-associated with SMTP other than to advocate that useful functionality not
-be disabled in the hope of providing some small margin of protection
-against an ignorant user who is trying to fake mail.
-
-7.2 "Blind" Copies
-
-Addresses that do not appear in the message headers may appear in the RCPT
-TO commands to an SMTP server for a number of reasons. The two most common
-involve the use of a mailing address as a "list exploder" (a single address
-that resolves into multiple addresses) and the appearance of "blind
-copies". Especially when more than one RCPT command is present, and in
-order to avoid defeating some of the purpose of these mechanisms, SMTP
-clients and servers SHOULD NOT copy the full set of RCPT TO command
-arguments into the headers, either as part of trace headers or as
-informational or private-extension headers. Since this rule is often
-violated in practice, and cannot be enforced, sending SMTP systems that are
-aware of "bcc" use MAY find it helpful to send each blind copy as a
-separate message transaction containing only a single RCPT TO command.
-
-There is no inherent relationship between either "reverse" (MAIL FROM, SAML
-FROM, etc.) or "forward" (RCPT TO) addresses in the SMTP transaction
-("envelope") and the addresses in the headers. Receiving systems SHOULD
-NOT attempt to deduce such relationships and use them to alter the headers
-of the message for delivery. The popular "Apparently-to" header is a
-violation of this principle and SHOULD NOT be used.
-
-7.3 VRFY, EXPN, and Security
-
-As discussed in section 3.5, individual sites may want to disable one or
-both VRFY or EXPN for security reasons. As a corollary to the above,
-implementations that permit this MUST NOT appear to have verified addresses
-that are not, in fact, verified. If a site disables these commands for
-security reasons, the SMTP server MUST return a 252 response, rather than a
-code that could be confused with successful or unsuccessful verification.
-
-Returning a 250 reply code with the address listed in the VRFY command
-after having checked it only for syntax violates this rule. Of course, an
-implementation that "supports" VRFY by always returning 550 whether or not
-the address is valid is equally not in conformance.
-
-Within the last few years, the contents of mailing lists have become
-popular as an address information source for so-called "spammers." The use
-of EXPN to "harvest" addresses has increased as list administrators have
-installed protections against inappropriate uses of the lists themselves.
-Implementations SHOULD still provide support for EXPN, but sites SHOULD
-carefully evaluate the tradeoffs. As authentication mechanisms are
-introduced into SMTP, some sites may choose to make EXPN available only to
-authenticated requestors.
-
-7.4 Information Disclosure in Announcements
-
-There has been an ongoing debate about the tradeoffs between the debugging
-advantages of announcing server type and version (and, sometimes, even
-server domain name) in the greeting response or in response to the HELP
-command and the disadvantages of exposing useful information to potential
-hostile attack. The utility of the debugging information is beyond doubt.
-Those who argue for making it available point out that it is far better to
-actually secure an SMTP server rather than hope that trying to conceal
-known vulnerabilities by hiding the server's precise identity will provide
-more protection. Sites are encouraged to evaluate the tradeoff with that
-issue in mind; implementations are strongly encouraged to minimally provide
-for making type and version information available in some way to other
-network hosts.
-
-7.5 Information Disclosure in Trace Fields
-
-In some circumstances, such as when mail originates from within a LAN whose
-hosts are not directly from the public Internet, trace ("Received") fields
-produced in conformance with this specification may disclose host names and
-similar information that would not normally be available. This ordinarily
-does not pose a problem, but sites with special concerns about name
-disclosure should be aware of it. Also, the optional FOR clause should be
-supplied with caution or not at all when multiple recipients are involved
-lest it inadvertently disclose the identities of "blind copy" recipients to
-others.
-
-7.6 Scope of Operation of SMTP Servers
-
-It is a well-established principle that an SMTP server may refuse to accept
-mail for any operational or technical reason that makes sense to the site
-providing the server. However, cooperation among sites and installations
-makes the Internet possible. If sites take excessive advantage of the
-right to reject traffic, the ubiquity of email availability (one of the
-strengths of the Internet) will be threatened; considerable care should be
-taken and balance maintained if a site decides to be selective about the
-traffic it will accept and process.
-
-In recent years, use of the relay function through arbitrary sites has been
-used as part of hostile efforts to hide the actual origins of mail. Some
-sites have decided to limit the use of the relay function to known or
-identifiable sources, and implementations SHOULD provide the capability to
-perform this type of filtering. When mail is rejected for these or other
-policy reasons, a 550 code SHOULD be used in response to EHLO, MAIL FROM,
-or RCPT TO as appropriate.
-
-
-8. IANA Considerations
-
-IANA will maintain three registries in support of this specification. The
-first consists of SMTP service extensions with the associated keywords,
-and, as needed, parameters and verbs. As specified in section 2.2.2, no
-entry may be made in this registry that starts in an "X". Entries may be
-made only for service extensions (and associated keywords, parameters, or
-verbs) that are defined in standards-track or experimental RFCs
-specifically approved by the IESG for this purpose.
-
-The second registry consists of "tags" that identify forms of domain
-literals other than those for IPv4 addresses (specified in RFC 821 and in
-this document) and IPv6 addresses (specified in this document). Additional
-literal types require standardization before being used; none are
-anticipated at this time.
-
-The third, established by RFC 821 and renewed by this specification, is a
-registry of link and protocol identifiers to be used with the "via" and
-"with" subclauses of the time stamp ("Received: header") described in
-section 4.4. Link and protocol identifiers in addition to those specified
-in this document may be registered only by standardization or by way of an
-RFC-documented, IESG-approved, Experimental protocol extension.
-
-
-9. References
-
-[8BITMIME] J. Klensin, N. Freed, M. Rose, E. Stefferud, D. Crocker, "SMTP
-Service Extension for 8bit-MIMEtransport", RFC 1652, 07/18/1994.
-
-[ABNF] Crocker, D., P. Overell, Eds., "Augmented BNF for Syntax
-Specifications: ABNF", RFC 2234, November 1997.
-
-[IPv6AddrString] Hinden, R and S. Deering, Eds. "IP Version 6 Addressing
-Architecture", RFC 1884, December 1995.
-
-[MSGFMT] P. Resnick, Work in progress, draft-ietf-drums-msg-fmt-05.txt,
-August, 1998
-
-[RFC-822] Crocker, D., "Standard for the Format of ARPA Internet Text
-Messages", RFC 822, Department of Electrical Engineering, University of
-Delaware, August 1982.
-
-[RFC-974] C. Partridge, "Mail routing and the domain system", RFC 974,
-01/01/1986
-
-[RFC-1047] C. Partridge, "Duplicate messages and SMTP", RFC 1047,
-02/01/1988.
-
-[RFC-1123] R. Braden, "Requirements for Internet hosts - application and
-support", 10/01/1989
-
-[RFC-BDAT] G. Vaudreuil, "SMTP Service Extensions for Transmission of Large
-and Binary MIME Messages", RFC 1830, 08/16/1995.
-
-[RFC-DNS] P. Mockapetris, "Domain names - implementation and
-specification", RFC 1035 and P. Mockapetris, "Domain names - concepts and
-facilities", RFC 1034. (STD 13)
-
-[RFC-ETRN] J. De Winter, "SMTP Service Extension for Remote Message Queue
-Starting", RFC 1985, 08/14/1996.
-
-[RFC-IMAP2] M. Crispin, "Interactive Mail Access Protocol - Version 2", RFC
-1176, 08/20/1990.
-
-[RFC-IMAP4] M. Crispin, "Internet Message Access Protocol - Version 4", RFC
-2060, 12/04/1996.
-
-[RFC-INTLHDR] K. Moore, "MIME (Multipurpose Internet Mail Extensions) Part
-Three: Message Header Extensions for Non-ASCII Text", RFC 2047, 12/02/1996.
-
-[RFC-MIME] N. Freed, N. Borenstein, "Multipurpose Internet Mail Extensions
-(MIME) Part One: Format of Internet Message Bodies", RFC 2045, 12/02/1996.
-
-[RFC-MOSS] S. Crocker, N. Freed, J. Galvin, S. Murphy, "MIME Object
-Security Services", RFC 1848, 10/03/1995.
-
-[RFC-NOTARY1] K. Moore, "SMTP Service Extension for Delivery Status
-Notifications", RFC 1891, 01/15/1996.
-
-[RFC-NOTARY2] K. Moore, G. Vaudreuil, "An Extensible Message Format for
-Delivery Status Notifications", RFC 1894, 01/15/1996.
-
-[RFC-PCMAIL] M. Lambert, "PCMAIL: A distributed mail system for personal
-computers", RFC 1056, 06/01/1988.
-
-[RFC-PIPELINE] N. Freed, A. Cargille, "SMTP Service Extension for Command
-Pipelining", RFC 1854, 10/04/1995.
-
-[RFC-POP2] M. Butler, D. Chase, J. Goldberger, J. Postel, J. Reynolds,
-"Post Office Protocol - version 2", RFC 937, 02/01/1985
-
-[RFC-POP3] J. Myers, M. Rose, "Post Office Protocol - Version 3", RFC 1930,
-5/14/96 (Std 53).
-
-[RFC-REPLY] G. Vaudreuil, "Enhanced Mail System Status Codes", RFC 1893,
-01/15/1996.
-
-[RFC-SIZE] J. Klensin, N. Freed, K. Moore, "SMTP Service Extension for
-Message Size Declaration", RFC 1870, 11/06/1995. (STD 10)
-
-[RFC-X400] S. Hardcastle-Kille, "Mapping between X.400(1988) / ISO 10021
-and RFC 822", RFC 1327, 05/18/1992.
-
-[SMTPEX] J. Klensin, N. Freed, M. Rose, E. Stefferud, D. Crocker, "SMTP
-Service Extensions", RFC-1869, 11/06/1995. (STD 10)
-
-[TCP] Postel, J., ed., "Transmission Control Protocol - DARPA Internet
-Program Protocol Specification", RFC 793, USC/Information Sciences
-Institute, NTIS AD Number A111091, September 1981.
-
-[US-ASCII] United States of America Standards Institute (now American
-National Standards Institute), X3.4, 1968, "USA Code for Information
-Interchange". ANSI X3.4-1968 has been replaced by newer versions with
-slight modifications, but the 1968 version remains definitive for the
-Internet.
-
-
-10. Editor's Address
-
-John C. Klensin
-MCI Communications
-800 Boylston St., 7th floor
-Boston, MA 02199
-USA
-Email: Klensin@mci.net
-Phone: +1 617 960 1011
-Fax: +1 617 960 1009
-
-
-11. Acknowledgments
-
-Many people worked long and hard on the many iterations of this document.
-There was wide-ranging debate on the mailing list about many technical
-issues, and many contributors helped form the wording in this
-specification. The hundreds of participants in the many discussions since
-RFC 821 was produced are too numerous to mention, but they all helped this
-document become what it is.
-
-
-A. TCP Transport Service
-
-The TCP connection supports the transmission of 8-bit bytes. The SMTP data
-is 7-bit ASCII characters. Each character is transmitted as an 8-bit byte
-with the high-order bit cleared to zero. Service extensions may modify
-this rule to permit transmission of full 8-bit data bytes as part of the
-message body, but not in SMTP commands or responses.
-
-
-B. Generating SMTP Commands from RFC 822 Headers
-
-Some systems use RFC 822 headers (only) in a mail submission protocol, or
-otherwise generate SMTP commands from RFC 822 headers when such a message
-is handed to an MTA from a UA. While the MTA-UA protocol is a private
-matter, not covered by any Internet Standard, there are problems with this
-approach. For example, there have been repeated problems with proper
-handling of "bcc" copies and redistribution lists when information that
-conceptually belongs to a mail envelopes is not separated early in
-processing from header information (and kept separate).
-
-It is recommended that the UA provide its initial MTA with an envelope
-separate from the message itself. However, if the envelope is not
-supplied, SMTP commands SHOULD be generated as follows:
-
-1. Each recipient address from a TO, CC, or BCC header field SHOULD be
- copied to a RCPT command (generating multiple message copies if that is
- required for queuing or delivery). This includes any addresses listed
- in a RFC 822 "group". Any BCC fields SHOULD then be removed from the
- headers. Once this process is completed, the remaining headers SHOULD
- be checked to verify that at least one To:, Cc:, or Bcc: header remains.
- If none do, then a bcc: header with no additional information SHOULD be
- inserted as specified in [MSGFMT].
-
-2. The return address in the MAIL command SHOULD, if possible, be derived
- from the system's identity for the submitting (local) user, and the From
- header field otherwise. If there is a system identity available, it
- SHOULD also be copied to the Sender header field if it is different from
- the address in the From header field. (Any Sender field that was
- already there SHOULD be removed.) Systems may provide a way for
- submitters to override the envelope return address, but may want to
- restrict its use to privileged users. This will not prevent mail
- forgery, but may lessen its incidence; see section 7.1.
-
-When an MTA is being used in this way, it bears responsibility for ensuring
-that the message being transmitted is valid. The mechanisms for checking
-that validity, and for handling (or returning) messages that are not valid
-at the time of arrival, are part of the MUA-MTA interface and not covered
-by this specification.
-
-A submission protocol based on Standard RFC 822 information alone MUST NOT
-be used to gateway a message from a foreign (non-SMTP) mail system into an
-SMTP environment. Additional information to construct an envelope must
-come from some source in the other environment, whether supplemental
-headers or the foreign system's envelope.
-
-Attempts to gateway messages using only their header "to" and "cc" fields,
-have repeatedly caused mail loops and other behavior adverse to the proper
-functioning of the Internet mail environment. These problems have been
-especially common when the message originates from an Internet mailing list
-and is distributed into the foreign environment using envelope information.
-When these messages are then processed by a header-only remailer, loops
-back to the Internet environment (and the mailing list) are almost
-inevitable.
-
-
-C. Source Routes
-
-The <reverse-path> is a reverse source routing list of hosts and a source
-mailbox. The first host in the <reverse-path> SHOULD be the host sending
-the MAIL FROM command. Similarly, the <forward-path> may be a source
-routing lists of hosts and a destination mailbox. However, in general, the
-<forward-path> SHOULD contain only a mailbox and domain name, relying on
-the domain name system to supply routing information if required. The use
-of source routes is deprecated; while servers MUST be prepared to receive
-and handle them as discussed in section 3.3 and F.2, clients SHOULD NOT
-transmit them.
-
-For relay purposes, the forward-path may be a source route of the form
-"@ONE,@TWO:JOE@THREE", where ONE, TWO, and THREE MUST BE fully-qualified
-domain names. This form is used to emphasize the distinction between an
-address and a route. The mailbox is an absolute address, and the route is
-information about how to get there. The two concepts should not be
-confused.
-
-If source routes are used, RFC 821 and the text below should be consulted
-for the mechanisms for constructing and updating the forward- and
-reverse-paths.
-
-The SMTP server transforms the command arguments by moving its own
-identifier (its domain name or that of any domain for which it is acting as
-a mail exchanger), if it appears, from the forward-path to the beginning of
-the reverse-path.
-
-Notice that the forward-path and reverse-path appear in the SMTP commands
-and replies, but not necessarily in the message. That is, there is no need
-for these paths and especially this syntax to appear in the "To:" ,
-"From:", "CC:", etc. fields of the message header. Conversely, SMTP servers
-MUST NOT derive final message delivery information from message header
-fields.
-
-When the list of hosts is present, it is a "reverse" source route and
-indicates that the mail was relayed through each host on the list (the
-first host in the list was the most recent relay). This list is used as a
-source route to return non-delivery notices to the sender. As each relay
-host adds itself to the beginning of the list, it MUST use its name as
-known in the transport environment to which it is relaying the mail rather
-than that of the transport environment from which the mail came (if they
-are different).
-
-
-D. Scenarios
-
-This section presents complete scenarios of several types of SMTP sessions.
-In the examples, "C:" indicates what is said by the SMTP client, and "S:"
-indicates what is said by the SMTP server.
-
-D.1 A Typical SMTP Transaction Scenario
-
-This SMTP example shows mail sent by Smith at host bar.com, to Jones,
-Green, and Brown at host foo.com. Here we assume that host bar.com
-contacts host foo.com directly. The mail is accepted for Jones and Brown.
-Green does not have a mailbox at host foo.com.
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: MAIL FROM:<Smith@bar.com>
- S: 250 OK
- C: RCPT TO:<Jones@foo.com>
- S: 250 OK
- C: RCPT TO:<Green@foo.com>
- S: 550 No such user here
- C: RCPT TO:<Brown@foo.com>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Blah blah blah...
- C: ...etc. etc. etc.
- C: .
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-D.2 Aborted SMTP Transaction Scenario
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: MAIL FROM:<Smith@bar.com>
- S: 250 OK
- C: RCPT TO:<Jones@foo.com>
- S: 250 OK
- C: RCPT TO:<Green@foo.com>
- S: 550 No such user here
- C: RSET
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-D.3 Relayed Mail Scenario
-
-Step 1 -- Source Host to Relay Host
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: MAIL FROM:<JQP@bar.com>
- S: 250 OK
- C: RCPT TO:<@foo.com:Jones@XYZ.COM>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Date: Thu, 21 May 1998 05:33:29 -0700
- C: From: John Q. Public <JQP@bar.com>
- C: Subject: The Next Meeting of the Board
- C: To: Jones@xyz.com
- C:
- C: Bill:
- C: The next meeting of the board of directors will be
- C: on Tuesday.
- C: John.
- C: .
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-Step 2 -- Relay Host to Destination Host
-
- S: 220 xyz.com Simple Mail Transfer Service Ready
- C: EHLO foo.com
- S: 250 xyz.com is on the air
- C: MAIL FROM:<@foo.com:JQP@bar.com>
- S: 250 OK
- C: RCPT TO:<Jones@XYZ.COM>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Received: from bar.com by foo.com ; Thu, 21 May 1998 05:33:29 -0700
- C: Date: Thu, 21 May 1998 05:33:22 -0700
- C: From: John Q. Public <JQP@bar.com>
- C: Subject: The Next Meeting of the Board
- C: To: Jones@xyz.com
- C:
- C: Bill:
- C: The next meeting of the board of directors will be
- C: on Tuesday.
- C: John.
- C: .
- S: 250 OK
-
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-D.4 Verifying and Sending Scenario
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: VRFY Crispin
- S: 250 Mark Crispin <Admin.MRC@foo.com>
- C: SEND FROM:<EAK@bar.com>
- S: 250 OK
- C: RCPT TO:<Admin.MRC@foo.com>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Blah blah blah...
- C: ...etc. etc. etc.
- C: .
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-
-E. Other Gateway Issues
-
-In general, gateways between the Internet and other mail systems SHOULD
-attempt to preserve any layering semantics across the boundaries between
-the two mail systems involved. Gateway- translation approaches that
-attempt to take shortcuts by mapping, (such as envelope information from
-one system to the message headers or body of another) have generally proven
-to be inadequate in important ways. Systems translating between
-environments that do not support both envelopes and headers and Internet
-mail must be written with the understanding that some information loss is
-almost inevitable.
-
-
-F. Deprecated Features of RFC 821
-
-A few features of RFC 821 have proven to be problematic and SHOULD NOT be
-used in Internet mail.
-
-F.1 TURN
-
-This command, described in RFC 821, raises important security issues since,
-in the absence of strong authentication of the host requesting that the
-client and server switch roles, it can easily be used to divert mail from
-its correct destination. Its use is deprecated; SMTP systems SHOULD NOT
-use it unless the server can authenticate the client.
-
-F.2 Source Routing
-
-RFC 821 utilized the concept of explicit source routing to get mail from
-one host to another via a series of relays. The requirement to utilize
-source routes in regular mail traffic was eliminated by the introduction of
-the domain name system "MX" record and the last significant justification
-for them was eliminated by the introduction, in RFC 1123, of a clear
-requirement that addresses following an "@" must all be fully-qualified
-domain names. Consequently, the only remaining justifications for the use
-of source routes are support for very old SMTP clients or MUAs and in mail
-system debugging. They can, however, still be useful in the latter
-circumstance and for routing mail around serious, but temporary, problems
-such as problems with the relevant DNS records.
-
-SMTP servers MUST continue to accept source route syntax as specified in
-the main body of this document and in RFC 1123. They MAY, if necessary,
-ignore the routes and utilize only the target domain in the address. If
-they do utilize the source route, the message MUST be sent to the first
-domain shown in the address. In particular, a server MUST NOT guess at
-shortcuts within the source route.
-
-Clients SHOULD NOT utilize explicit source routing except under unusual
-circumstances, such as debugging or potentially relaying around firewall or
-mail system configuration errors.
-
-F.3 HELO
-
-As discussed in sections 3.1 and 4.1.1, EHLO is strongly preferred to HELO
-when the server will accept the former. Servers must continue to accept
-and process HELO in order to support older clients.
-
-F.4 #-literals
-
-RFC 821 provided for specifying an Internet address as a decimal integer
-host number prefixed by a pound sign, "#". In practice, that form has been
-obsolete since the introduction of TCP/IP. It is deprecated and MUST NOT
-be used.
-
-F.5 Dates and Years
-
-When dates are inserted into messages by SMTP clients or servers (e.g., in
-trace fields), four-digit years MUST BE used. Two-digit years are
-deprecated; three-digit years were never permitted in the Internet mail
-system.
-
-F.6 Sending versus Mailing
-
-In addition to specifying a mechanism for delivering messages to user's
-mailboxes, RFC 821 provided additional, optional, commands to deliver
-messages directly to the user's terminal screen. These commands (SEND,
-SAML, SOML) were rarely implemented, and changes in workstation technology
-and the introduction of other protocols may have rendered them obsolete
-even where they are implemented.
-
-Clients SHOULD NOT provide SEND, SAML, or SOML as services. Servers MAY
-implement them. If they are implemented by servers, the implementation
-model specified in RFC 821 MUST be used and the command names MUST be
-published in the response to the EHLO command.
-
-
-X. Change Summary and Loose Ends (Temporary)
-
-X.1 Change summary
-
-X.1.1 Substantive changes between draft-ietf-drums-smtpupd-00.txt and
-draft-ietf-drums-smtpupd-01.txt
-
-(i) Slightly clarified the discussions of rejection and failure of VRFY
-requests and the associated response codes.
-
-(ii) Slightly clarified the discussion of deferred address validation.
-
-(iii) Removed the IPCE terminology and modified the text in section 4.1.1.2
-to explicitly introduce the "mail gateway" terminology and to begin to
-distinguish a mail gateway from a conventional relay.
-
-(iv) Explicitly noted that SMTP clients for things like POP and IMAP may
-send everything to a single relay for further processing, rather than
-resolving final domain names.
-
-(v) Tightened the RSET discussion.
-
-(vi) Deprecation of 251 only for RCPT (still ok for VRFY)
-
-X.1.2. Substantive changes between draft-ietf-drums-smtpupd-01.txt and
-draft-ietf-drums-smtpupd-02.txt.
-
-Incorporated additional RFC 1123 material; reorganized several sections for
-clarity. Added definitions and other previous "loose end" material.
-
-X.1.3. Substantive changes between draft-ietf-drums-smtpupd-02.txt and
-draft-ietf-drums-smtpupd-03.txt.
-
-(i) Eliminated a number of placeholders and tightened some of the
-definitions in section 2. Added a few new placeholders for consistency
-checking against other documents.
-
-(ii) Removed the state diagrams, per direction at IETF Montreal.
-
-(iii) Added new section 6.3, an attempt to summarize WG discussions on the
-"posting" versus "delivery" versus "relay" functions of SMTP and on whether
-"fixups" are appropriate in different cases.
-
-(iv) Inserted section 6.1, a minor rewrite of section 5.3.3 of RFC1123.
-
-(v) Added new text to 3.5.5 to discuss the spammer - EXPN relationship.
-
-(vi) The "ASCII requirement" in 4.1.1.4 has been tightened somewhat.
-
-(v) The remaining miscellaneous changes agreed to in Montreal have been
-incorporated except as noted below.
-
-X.1.4. Substantive changes between draft-ietf-drums-smtpupd-03.txt and
-draft-ietf-drums-smtpupd-04.txt.
-
-Many small changes have been made between these two versions; the list that
-follows is not exhaustive.
-
-(i) To clarify some of the text, definitions have been introduced to
-distinguish among originating, delivery, relay, and gateway SMTP systems.
-
-(ii) The role of LF-terminated lines has been clarified.
-
-(iii) Several changes have been made to clarify the principle that, no
-matter what originating and final delivery systems might do, relay systems
-are not permitted to tamper with message content, even to "fix" headers
-that are determined to be invalid. If they deem message content to be
-seriously unacceptable, they are encouraged to reject the messages in
-preference to trying to fix them up, but, in general, the theme is "don't
-look/ don't tell".
-
-(iv) A few more definitions have been added to the terminology section, and
-the separate glossary has been eliminated.
-
-(v) I have taken a shot at text to address some of the controversies that
-have raged on the WG mailing list (e.g., sections 7.4 and 7.5). Since there
-was no consensus on most of those topics, I expect that the inserted text
-will satisfy no one except, perhaps, for agreement that saying nothing
-would have been worse. As a mechanism for moving forward, the text in
-these controversial areas that now appears will be considered "base";
-alterations will be made only if clear consensus emerges.
-
-(vi) Per discussion in Los Angeles, source routes have been further
-deprecated.
-
-(vii) Some of the VRFY/EXPN materials have been moved to "security
-considerations", where they appear to belong, some text has been added, and
-the conformance statements adjusted to reflect what I perceive to be WG
-consensus.
-
-(viii) New MX resolution material has been added to section 5. While most
-of this material is from RFC974, the rules have been further tightened to
-reflect current practice and experience (974 is written in a somewhat
-speculative fashion for a standard). In particular, the behavior of trying
-the target host's A RR when MXs existed but all of them were eliminated is
-now prohibited, which seems necessary if another of other ideas being
-recommended or considered are to be feasible.
-
-X.1.5. Substantive changes between draft-ietf-drums-smtpupd-04.txt and
-draft-ietf-drums-smtpupd-05.txt.
-
-(i) All normative references to RFC 1123 have been removed from the main
-body of the text (some still appear in the appendices where they will
-remain).
-
-(ii) Section 3.5 has been renamed slightly to distinguish between
-"debugging of SMTP implementations" and "debugging of addresses". Better
-terminology would be welcome.
-
-(iii) Error conditions resulting from the DATA command have been clarified.
-
-(iv) Section 4.2 (SMTP replies) has been revised and tightened to reflect
-reality and recent discussion on the list.
-
-(v) Appendix E has been revised a bit and moved into section 4.2.1. Given
-the importance of the "check only first digit" rule, it has to be there.
-
-(vi) Added new text for "no SMTP service supported" to sections 3.1, 4.2.2,
-4.2.3, and 4.3.2. As noted in 3.1, I'd rather add 521 (which would work
-perfectly with the model) rather than overloading 554.
-
-(vii) The Return-path language in section 4.4 has been cleaned up a bit.
-
-(viii) Tightened the "postmaster" language in 4.5.1, requiring a small
-change to 4.1.1.3.
-
-(ix) I have unilaterally (with a little help from my friends), increased
-some of the size limits. 64 was much too short for a domain name, and the
-DNS limit of 255 (?) has now been inserted. That leaves the return path
-much too short, but I haven't fixed it (maybe that will cause us to get rid
-of them). We still have a 64 character limit on the local-part, which is
-also *much* too short. Votes for 128 or longer limits accepted. See
-X.1.6(I)
-
-(x) The text on the "recipients buffer" has been rewritten so that (I hope)
-it makes sense and gives some explicit guidance for how clients and servers
-should proceed if limits are imposed.
-
-X.1.6. Substantive changes between draft-ietf-drums-smtpupd-05.txt and
-draft-ietf-drums-smtpupd-06.txt.
-
-Most of the changes in this revision have been editorial rather than
-substantive. Major substantive changes include:
-
-(i) The language about maximum sizes of SMTP command lines has been
-reworked, per WG mailing list discussion.
-
-(ii) Several instances of "Should" have been promoted to "Must" when the
-reasons for the weaker rule seemed to have disappeared. In particular, the
-requirement that an SMTP implementation support timeouts has become a MUST.
-Also, conformance to this specification requires support of EHLO. Older
-systems should claim conformance to the [to-be-historical] 821, not this
-specification.
-
-X.1.7. Substantive changes between draft-ietf-drums-smtpupd-06.txt and
-draft-ietf-drums-smtpupd-07.txt.
-
-(i) Removed "implied RSET" text associated with QUIT, as specified at the
-December 1997 IETF
-
-(ii) Required that servers support EHLO, as specified at the December 1997
-IETF
-
-X.1.8. Substantive changes between draft-ietf-drums-smtpupd-07.txt and
-draft-ietf-drums-smtpupd-08.txt.
-
-This version involves mostly editorial work and cleanup of loose ends.
-
-(i) New 7.5 added (old one renumbered) to discuss info disclosure through
-Received fields.
-
-(ii) Some character set and minor syntax issues clarified.
-
-(iii) Material on code 571 added (thought this had been done long ago;
-slipped through the cracks)
-
-(iv) Many clarifications added as the result of list discussions and
-suggestions.
-
-(v) Error code presentation has been restructured.
-
-(vi) ABNF conversion done
-
-(vii) IPv6 address format inserted per RFC 1884, since we could not get
-clear agreement on an alternative.
-
-(viii) Trivial, silly, examples removed. Others not yet renumbered.
-
-(ix) 3.5.2 and 4.1.1 altered slightly per Eric Allman's notes. Eric may
-not like the way I've done either of these change very much: the first now
-makes the distinction between returning an address and returning other
-stuff (which was permitted by -06, but the text wasn't as clear as it
-should have been): if it looks like an address, it needs to be an address.
-Similarly, with 4.1.1, Eric wanted to explicitly permit/legitimize "DATA
-<SP> <CRLF>". I see several disadvantages to doing that, so have inserted
-language that encourages receivers to tolerate trailing white space, which
-may have the same practical effect.
-
-
-X.1.9. Substantive changes between draft-ietf-drums-smtpupd-08.txt and
-draft-ietf-drums-smtpupd-09.txt.
-
-The first ten of these reflect, in order, minuted items from the Chicago
-IETF (IETF 42).
-
-(i) Clarification of "MUST", etc., in the context of this document
-(section 2.3).
-
-(ii) Altered VRFY text to make implementation a SHOULD (section 3.5.1) and
-removed VRFY from the mandatory to implement list (section 4.5.1), per
-42nd IETF (Chicago).
-
-(iii) Clarified that exploders are expected to not purge sender addresses
-from lists (section 3.10). Note that the Chicago conclusion was that this
-should be a "MUST". I could not figure out how to do that without
-absolutely prohibiting removing addresses to prevent loops, to guard
-against spammers, or for similar legitimate purposes. So I have written
-this as a "SHOULD", with additional "strongly discouraged" words. If
-someone still wants a MUST, suggest text.
-
-(iv) Altered text to permit clients that sometimes, or even always,
-initiate sessions with HELO, rather than EHLO, to be fully-conforming
-(section 3.2). [[ Editor's note: I continue to believe that a client that
-does not have any service extension support, even to the extent of being
-able to send EHLO and parse the response without doing anything about it,
-should not be considered fully-conforming to this spec (as distinct from
-821). Consequently, the new text in 3.2 stops well short of encouraging
-clients that don't need service extensions from preferentially using HELO,
-and the text in 2.2.1 (which specifies that the extension mechanisms must
-be supported) has not been changed.
-
-(v) Per Chicago discussions, the text requiring that QUIT be sent has not
-been changed. The text in 4.1.1.10 requiring that the server wait for
-QUIT has been changed to a SHOULD. However, the text in 4.1.1.5,
-prohibiting close on receipt of RSET and that elsewhere prohibiting close
-as a normal response, has not been changed.
-
-(vi) Text has been inserted in 4.1.1 and the text in 4.3.2 altered
-slightly to clarify the handling of parameters to RSET, DATA, and QUIT and
-to 4.1.1.9 specify semantics for parameters to NOOP. I have followed the
-minutes on this although I personally agree with kre's mailing list
-comments that the "servers SHOULD reject" decision leads to silly states.
-I recommend that the WG review this.
-
-(vii) Per discussion in Chicago, no substantive change has been made to
-the specification about underscore characters in domain names (section
-4.1.2). However, the text has been altered to more accurately reflect
-discussion on the mailing list and the source of the requirement.
-
-(viii) Per discussion in Chicago, no change has been made to the
-preference for local time in Received headers.
-
-(ix) Per discussion in Chicago, code 571 has been removed and policy
-rejection is now reflected i a 550 code (section 3.7 and the response code
-lists).
-
-(x) Per discussion in Chicago, no change has been made to the
-specification of use of raw CR or LF.
-
-(xi) In section 4.3, the text has been changed, per comments from Dan
-Bernstein and others, to require that clients be able to handle replies
-that do not contain text strings. A few other places patched to match.
-
-(xii) In sections 4.1.1.1 and 8, the placeholders have been removed.
-
-(xiii) Per discussion on the mailing list (and specifically James
-Berriman's concerns), the text has been clarified (sections 4.1.1.2 and
-4.1.4) to prohibit MAIL unless no mail transaction is open. This is a
-MUST NOT prohibition -- SHOULD NOT makes no sense if this is the direction
-we are going to go. 503 has also been added to the list of valid
-responses for "MAIL" in 4.3.1 - it can't be issued before EHLO/HELO in any
-event. While it is clear that something should be said, this may not be
-the desired outcome (I selected it because it was conservative and easy
-given the text that was there already); the WG should check that the text
-is as intended.
-
-(xiv) Per discussion on the mailing list, a new section 4.5.5 has been
-added to describe null return paths and their handling (forward pointer
-from 3.7). The text in 4.5.5 is substantially that suggested by Norbert
-Bollow. As with (xiii), there is now clear text, but it may not be what
-the WG desires. Please check.
-
-[9b] Text lost in upload process restored.
-
-(xv) "all addresses" substituted for "each...in turn" in 3.10.2.
-
-(xvi) Requirement for "<" and ">" around paths clarified in section 3.3
-(syntax productions were clear and correct, but not this overview
-material).
-
-[9c]
-
-(xvii) Clarified text in 3.3 to permit post-DATA bounces on policy
-matters.
-
-
-
-Z. Full Copyright Statement
-
-Copyright (C) The Internet Society (1998). All Rights Reserved.
-
-This document and translations of it may be copied and furnished to others,
-and derivative works that comment on or otherwise explain it or assist in
-its implementation may be prepared, copied, published and distributed, in
-whole or in part, without restriction of any kind, provided that the above
-copyright notice and this paragraph are included on all such copies and
-derivative works. However, this document itself may not be modified in any
-way, such as by removing the copyright notice or references to the Internet
-Society or other Internet organizations, except as needed for the purpose
-of developing Internet standards in which case the procedures for
-copyrights defined in the Internet Standards process must be followed, or
-as required to translate it into languages other than English.
-
-The limited permissions granted above are perpetual and will not be revoked
-by the Internet Society or its successors or assigns.
-
-This document and the information contained herein is provided on an "AS
-IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE
-DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY
-RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
-PARTICULAR PURPOSE.
-
-Expires June 1999
diff --git a/Documentation/en/I-D/draft-ietf-drums-smtpupd-10.txt b/Documentation/en/I-D/draft-ietf-drums-smtpupd-10.txt
deleted file mode 100644
index 32e7799d..00000000
--- a/Documentation/en/I-D/draft-ietf-drums-smtpupd-10.txt
+++ /dev/null
@@ -1,3796 +0,0 @@
-INTERNET-DRAFT John C. Klensin, Editor
-Expires July 1999
-February 26, 1999
-
-
- Simple Mail Transfer Protocol
-
- draft-ietf-drums-smtpupd-10.txt
-
-Status of this Memo
-
-This document is an Internet-Draft and is in full conformance with
-all provisions of Section 10 of RFC2026.
-
-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 view the list Internet-Draft Shadow Directories, see
-http://www.ietf.org/shadow.html.
-
-[[Appendix X will be removed before the document is submitted to the
-IESG.]]
-
-[[If consensus is reached on this document, it will be forwarded to the
-IESG with the recommendation that it be processed onto the Standards
-track.]]
-
-Copyright Notice
-
-Copyright (C) The Internet Society (1998). All Rights Reserved.
-
- Table of Contents
-
-0. Abstract
-
-1. Introduction
-
-2. The SMTP Model
-2.1 Basic Structure
-2.2 The Extension Model
-2.2.1 Background
-2.2.2 Definition and Registration of Extensions
-2.3 Terminology
-2.3.1 Mail Objects
-2.3.2 Senders and Receivers
-2.3.3 Mail Agents
-2.3.4 Host
-2.3.5 Domain
-2.3.6 Buffer and State Table
-2.3.7 Lines
-2.3.8 Originator, Delivery, Relay, and Gateway Systems
-2.3.9 Message Content and Mail Data
-2.3.10 Mailbox and Address
-2.3.11 Reply
-2.4 Syntax Principles
-2.4.1 General Syntax and Transaction Model
-2.4.2 Command and Reply Syntax
-
-3. The SMTP Procedures: An Overview
-3.1 Session Initiation
-3.2 Client Initiation
-3.3 Mail Transactions
-3.4 Forwarding for Address Correction or Updating
-3.5 Commands for Debugging Addresses
-3.5.1 Overview
-3.5.2 VRFY Normal Response
-3.5.3 Meaning of VRFY or EXPN Success Response
-3.5.4 Semantics and Applications of EXPN
-3.6 Domains
-3.7 Relaying
-3.8 Mail Gatewaying
-3.8.1 Header Fields in Gatewaying
-3.8.2 Received Lines in Gatewaying
-3.8.3 Addresses in Gatewaying
-3.8.4 Other Header Fields in Gatewaying
-3.8.5 Envelopes in Gatewaying
-3.9 Terminating Sessions and Connections
-3.10 Mailing Lists and Aliases
-3.10.1 Alias
-3.10.2 List
-
-4. The SMTP Specifications
-4.1 SMTP Commands
-4.1.1 Command Semantics and Syntax
-4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)
-4.1.1.2 MAIL (MAIL)
-4.1.1.3 RECIPIENT (RCPT)
-4.1.1.4 DATA (DATA)
-4.1.1.5 RESET (RSET)
-4.1.1.6 VERIFY (VRFY)
-4.1.1.7 EXPAND (EXPN)
-4.1.1.8 HELP (HELP)
-4.1.1.9 NOOP (NOOP)
-4.1.1.10 QUIT (QUIT)
-4.1.2 Lower-level Syntax
-4.1.3 Address Literals
-4.1.4 Order of Commands
-4.1.5 Private-use Commands
-4.2 SMTP Replies
-4.2.1 Reply Code Severities and Theory
-4.2.2 Reply Codes by Function Groups
-4.2.3 Reply Codes in Numeric Order
-4.2.4 Reply Code 502
-4.2.5 Reply Codes After DATA and the Subsequent <CRLF>.<CRLF>
-4.3 Sequencing of Commands and Replies
-4.3.1 Sequencing Overview
-4.3.2 Command-Reply Sequences
-4.4 Trace Information
-4.5 Additional Implementation Issues
-4.5.1 Minimum Implementation
-4.5.2 Transparency
-4.5.3 Sizes and Timeouts
-4.5.4 Queuing Strategies
-4.5.4.1 Sending Strategy
-4.5.4.2 Receiving Strategy
-4.5.5 Messages with a null reverse-path
-
-5. Address Resolution and Mail Handling
-
-6. Problem Detection and Handling
-6.1 Reliable Delivery and Replies by Email
-6.2 Loop Detection
-6.3 Compensating for Irregularities
-
-7. Security Considerations
-7.1 Mail Security and Spoofing
-7.2 "Blind" Copies
-7.3 VRFY, EXPN, and Security
-7.4 Information Disclosure in Announcements
-7.5 Information Disclosure in Trace Fields
-7.6 Scope of Operation of SMTP Servers
-
-8. IANA Considerations
-
-9. References
-
-10. Editors' Addresses
-
-11. Acknowledgments
-
-A. TCP Transport Service
-B. Generating SMTP Commands from RFC 822 Headers
-C. Source Routes
-D. Scenarios
-E. Other Gateway Issues
-F. Deprecated Features of RFC 821
-X. Change Summary and Loose Ends (Temporary)
-
-
-0. Abstract
-
-This document is a self-contained specification of the basic protocol for
-the Internet electronic mail transport, consolidating and updating:
-
- - the original SMTP specification of RFC 821 [RFC-821],
-
- - domain name system requirements and implications for mail transport from
- RFC 1035 [RFC-DNS] and RFC 974 [RFC-974],
-
- - the clarifications and applicability statements in RFC 1123 [RFC-1123],
- and
-
- - material drawn from the SMTP Extension mechanisms [SMTPEXT].
-
-It replaces RFC 821, RFC 974, and the mail transport materials of RFC
-1123. However, RFC 821 specifies some features that were not in
-significant use in the Internet by the mid-1990s and (in appendices)
-some additional transport models. Those sections are omitted here in
-the interest of clarity and brevity; readers needing them should
-refer to RFC 821.
-
-It also includes some additional material from RFC 1123 that required
-amplification. This material has been identified in multiple ways, mostly
-by tracking flaming on various lists and newsgroups and problems of unusual
-readings or interpretations that have turned up as the SMTP extensions have
-been deployed. Where this specification moves beyond consolidation and
-actually differs from earlier documents, it supersedes them technically as
-well as textually.
-
-Although SMTP was designed as a mail transport and delivery protocol, this
-specification also contains information that is important to its use as a
-'mail posting' protocol, as recommended for POP [RFC-POP2, RFC-POP3] and
-IMAP [RFC-IMAP4].
-
-Section 2.3 provides definitions of terms specific to this document. Except
-when the historical terminology is necessary for clarity, this document
-uses the current 'client' and 'server' terminology to identify the sending
-and receiving SMTP processes, respectively.
-
-A companion document discusses message headers, message bodies and formats
-and structures for them, and their relationship - [MSGFMT].
-
-
-1. Introduction
-
-The objective of the Simple Mail Transfer Protocol (SMTP) is to transfer
-mail reliably and efficiently.
-
-SMTP is independent of the particular transmission subsystem and requires
-only a reliable ordered data stream channel. While this document
-specifically discusses transport over TCP, other transports are possible.
-Appendices to RFC 821 describe some of them.
-
-An important feature of SMTP is its capability to transport mail across
-transport service environments, usually referred to as "SMTP mail relaying"
-(see section 3.8). A transport service environment might consist of the
-mutually-TCP-accessible hosts on the public Internet, the
-mutually-TCP-accessible hosts on a firewall-isolated private TCP/IP
-Intranet, or hosts in some other LAN or WAN environment utilizing a
-different transport-level protocol. It is important to realize that
-"transport service environments" are one-to-one with usual definitions of
-"networks". A process can communicate directly with another process, and
-transport mail using this protocol, through any mutually known and
-connected transport service. Conversely, mail can be relayed or gatewayed
-between processes in two different transport service environments by a
-process known and connected to each of the two transport service
-environments. The Mail eXchanger mechanisms of the domain name system
-[RFC-DNS, and section 5 of this document] allows the identity of hosts
-supporting SMTP relay and gateway processes to be specified.
-
-
-2. The SMTP Model
-
-2.1 Basic Structure
-
-The SMTP design can be pictured as:
-
- +----------+ +----------+
- +------+ | | | |
- | User |<-->| | SMTP | |
- +------+ | Sender- |Commands/Replies| Receiver-|
- +------+ | SMTP |<-------------->| SMTP | +------+
- | File |<-->| | and Mail | |<-->| File |
- |System| | | | | |System|
- +------+ +----------+ +----------+ +------+
- SMTP client SMTP server
-
-When an SMTP client has a message to transmit, it establishes a two-way
-transmission channel to an SMTP server. The role of an SMTP client is to
-transfer mail messages to one or more SMTP servers, or report its failure
-to do so.
-
-The means by which a mail message is transferred to an SMTP client, and how
-that client determines the domain name(s) to which mail messages are to be
-transferred is a local matter, and is not addressed by this document. In
-some cases, the domain name(s) transferred to, or determined by, an SMTP
-client will identify the final destination(s) of the mail message. In other
-cases, common with SMTP clients associated with implementations of the POP
-[RFC-POP2, RFC-POP3] or IMAP [RFC-IMAP4] protocols, or when the SMTP client
-is inside an isolated transport service environment, the domain name
-determined will identify an intermediate destination through which all mail
-messages are to be relayed. SMTP clients that transfer all traffic,
-regardless of the target domain names associated with the individual
-messages, or that do not maintain queues for retrying message transmissions
-that initially cannot be completed, may otherwise conform to this
-specification but are not considered fully-capable. Fully-capable SMTP
-implementations, including the relays used by these less capable ones, and
-their destinations, are expected to support all of the queuing, retrying,
-and alternate address functions discussed in this specification.
-
-The means by which an SMTP client, once it has determined a target domain
-name, determines the identity of an SMTP server to which a copy of a
-message is to be transferred, and then performs that transfer, is covered
-by this document. To effect a mail transfer to an SMTP server, an SMTP
-client establishes a two-way transmission channel to that SMTP server. An
-SMTP client determines the address of an appropriate host running an SMTP
-server by resolving a destination domain name to either an intermediate
-Mail eXchanger host or a final target host.
-
-An SMTP server may be either the ultimate destination or an intermediate
-"relay" (that is, it may assume the role of an SMTP client after receiving
-the message) or "gateway" (that is, it may transport the message further
-using some protocol other than SMTP). SMTP commands are generated by the
-SMTP client and sent to the SMTP server. SMTP replies are sent from the
-SMTP server to the SMTP client in response to the commands.
-
-Once the transmission channel is established and initial handshaking
-completed, the SMTP client normally initiates a mail transaction. Such a
-transaction consists of a series of commands to specify the originator and
-destination of the mail and transmission of the message content (including
-any headers or other structure) itself. When the same message is sent to
-multiple recipients, this protocol encourages the transmission of only one
-copy of the data for all recipients at the same destination (or
-intermediate relay) host.
-
-The server responds to each command with a reply; replies may indicate that
-the command was accepted, that additional commands are expected, or that a
-temporary or permanent error condition exists. Commands specifying the
-sender or recipients may include server-permitted SMTP service extension
-requests as discussed in section 2.2. The dialog is purposely lock-step,
-one-at-a-time, although this can be modified by mutually-agreed extension
-requests such as in [RFC-Pipeline].
-
-Once a given mail message has been transmitted, the client may either
-request that the connection be shut down or may initiate other mail
-transactions. In addition, an SMTP client may use a connection to an SMTP
-server for ancillary services such as verification of email addresses or
-retrieval of mailing list subscriber addresses.
-
-As suggested above, this protocol provides mechanisms for the transmission
-of mail. This transmission normally occurs directly from the sending
-user's host to the receiving user's host when the two hosts are connected
-to the same transport service. When they are not connected to the same
-transport service, transmission occurs via one or more relay SMTP servers.
-An intermediate host that acts as either an SMTP relay or as a gateway into
-some other transmission environment is usually selected through the use of
-the domain name service (DNS) Mail eXchanger mechanism.
-
-To provide relay capability, the SMTP server is supplied with the name of
-the ultimate destination host as well as the destination mailbox name.
-Usually, intermediate hosts are determined via the DNS MX record, not by
-explicit "source" routing (see section 5 and appendices C and F.2).
-
-2.2 The Extension Model
-
-2.2.1 Background
-
-In an effort that started in 1990, approximately a decade after RFC 821 was
-completed, the protocol was modified with a "service extensions" model that
-permits the client and server to agree to utilize shared functionality
-beyond the original SMTP requirements. The SMTP extension mechanism defines
-a means whereby an extended SMTP client and server may recognize each
-other, and the server can inform the client as to the service extensions
-that it supports.
-
-Contemporary SMTP implementations MUST support the basic extension
-mechanisms. For instance, servers MUST support the EHLO command even if
-they do not implement any specific extensions and clients SHOULD
-preferentially utilize EHLO rather than HELO. (However, for compatibility
-with older conforming implementations, SMTP clients and servers MUST
-support the original HELO mechanisms as a fallback.) Unless the different
-characteristics of HELO must be identified for interoperability purposes,
-this document discusses only EHLO.
-
-SMTP is widely deployed and high-quality implementations have proven to be
-very robust. However, the Internet community now considers some services to
-be important that were not anticipated when the protocol was first
-designed. If support for those services is to be added, it must be done in
-a way that permits older implementations to continue working acceptably.
-The extension framework consists of:
-
- - The SMTP command EHLO, superseding the earlier HELO,
-
- - a registry of SMTP service extensions,
-
- - additional parameters to the SMTP MAIL FROM and RCPT TO commands, and
-
- - optional replacements for verbs defined in this protocol, such as for
- DATA (see [RFC-BDAT]).
-
-SMTP's strength comes primarily from its simplicity. Experience with many
-protocols has shown that protocols with few options tend towards ubiquity,
-whereas protocols with many options tend towards obscurity.
-
-Each and every extension, regardless of its benefits, must be carefully
-scrutinized with respect to its implementation, deployment, and
-interoperability costs. In many cases, the cost of extending the SMTP
-service will likely outweigh the benefit.
-
-2.2.2 Definition and Registration of Extensions
-
-The IANA maintains a registry of SMTP service extensions. A corresponding
-EHLO keyword value is associated with each extension. Each service
-extension registered with the IANA must be defined in a formal
-standards-track or IESG-approved experimental protocol document. The
-definition must include:
-
- - the textual name of the SMTP service extension;
-
- - the EHLO keyword value associated with the extension;
-
- - the syntax and possible values of parameters associated with the
- EHLO keyword value;
-
- - any additional SMTP verbs associated with the extension (additional
- verbs will usually be, but are not required to be, the same as the
- EHLO keyword value);
-
- - any new parameters the extension associates with the MAIL FROM or
- RCPT TO verbs;
-
- - a description of how support for the extension affects the behavior
- of a server and client SMTP; and,
-
- - the increment by which the extension is increasing the maximum
- length of the commands MAIL FROM and/or RCPT TO, over that specified
- in this standard.
-
-In addition, any EHLO keyword value starting with an upper or lower case
-"X" refers to a local SMTP service extension used exclusively through
-bilateral agreement. Keywords beginning with "X" MUST NOT be used in a
-registered service extension. Conversely, keyword values presented in the
-EHLO response that do not begin with "X" MUST correspond to a standard,
-standards-track, or IESG-approved experimental SMTP service extension
-registered with IANA. A conforming server MUST NOT offer non-"X"-prefixed
-keyword values that are not described in a registered extension.
-
-Additional verbs and parameter names are bound by the same rules as EHLO
-keywords; specifically, verbs beginning with "X" are local extensions that
-may not be registered or standardized. Conversely, verbs not beginning
-with "X" must always be registered.
-
-2.3 Terminology
-
-Most of the terminology in this document is common in the Internet at the
-time of its writing. However, the following terms and concepts are used
-in special ways here, or represent differences in terminology between RFC
-821 and this document, and should be understood before reading further.
-These definitions are normative, that is, they contain specifications to
-which SMTP implementations are required to conform.
-
-The terms "MUST" and "SHOULD" (and "MUST NOT" and "SHOULD NOT") are used
-in the same general sense here as in the Host Requirements Standards
-[RFC-1123]. Specifically, "MUST" or "MUST NOT" identify absolute
-requirements for conformance to this specification. Implementations that
-do not conform to them lie outside the scope of this specification and
-often will not interoperate properly with SMTP implementations that do
-conform. Implementations that are fully conforming also adhere to all
-"SHOULD" and "SHOULD NOT" requirements. Implementations that adhere to
-all "MUST" ("MUST NOT") but not to all of these are considered to be
-partially conforming. Such implementations may interoperate properly with
-fully conforming ones and with each other, but this will typically be the
-case only if great care is taken. Consequently, an implementation should
-violate "SHOULD" ("SHOULD NOT") requirements only under exceptional and
-well-understood circumstances. "SHOULD" (and sometimes "MUST")
-requirements are often imposed by this specification when experience has
-shown that following such requirements or restrictions leads, in practice,
-to better interoperation, or smoother operation of the Internet email
-infrastructure. As a consequence, some of these statements constitute
-recommended practices, rather than the statistically most common practice
-at the time of this writing. Statements using "MAY" describe features or
-styles of doing things that may be followed, or not, at the discretion of
-the implementation, normally without causing significant interoperability
-problems.
-
-2.3.1 Mail Objects
-
-SMTP transports a mail object. A mail object contains an envelope and
-content.
-
-The SMTP envelope is sent as a series of SMTP protocol units (described in
-section 3). It consists of an originator address (to which error reports
-should be directed); a delivery mode (e.g., deliver to recipient
-mailboxes); one or more recipient addresses; and optional protocol
-extension material.
-
-The SMTP content is sent in the SMTP DATA protocol unit and has two parts:
-the headers and the body. If the content conforms to existing standards,
-the headers form a collection of field/value pairs structured as described
-in [MSGFMT]; the body, if structured, is defined according to MIME
-[RFC-MIME]. The content is textual in nature, expressed using the US-ASCII
-repertoire [US-ASCII]. Although SMTP extensions (such as [8BitMIME]) may
-relax this restriction for the content body, the content headers are always
-encoded using the US-ASCII repertoire. The algorithm defined in
-[RFC-INTLHDR] is used to represent header values outside the US-ASCII
-repertoire, while still encoding them using the US-ASCII repertoire.
-
-2.3.2 Senders and Receivers
-
-In RFC 821, the two hosts participating in an SMTP transaction were
-described as the "SMTP-sender" and "SMTP-receiver". This document has been
-changed to reflect current industry terminology and hence refers to them as
-the "SMTP client" (or sometimes just "the client") and "SMTP server" (or
-just "the server"), respectively. Since a given host may act both as
-server and client in a relay situation, "receiver" and "sender" terminology
-is still used where needed for clarity.
-
-2.3.3 Mail Agents
-
-Additional mail system terminology became common after RFC 821 was
-published and, where convenient, is used in this specification. In
-particular, SMTP servers and clients provide a mail transport service and
-therefore act as Mail Transfer Agents (MTAs). Mail User Agents (MUAs or
-UAs) are normally thought of as the sources and targets of mail. At the
-source, an MUA might collect mail to be transmitted from a user and hand it
-off to an MTA; the final ("delivery") MTA would be thought of as handing
-the mail off to an MUA (or at least transferring responsibility to it).
-However, while these terms are used with at least the appearance of great
-precision in other environments, the implied boundaries between MUAs and
-MTAs often do not accurately match common, and conforming, practices with
-Internet mail. Hence, the reader should be cautious about inferring the
-strong relationships and responsibilities that might be implied if these
-terms were used elsewhere.
-
-2.3.4 Host
-
-For the purposes of this specification, a host is a computer system
-attached to the Internet (or, in some cases, to a private TCP/IP network)
-and supporting the SMTP protocol. Hosts are known by names (see "domain");
-identifying them by numerical address is discouraged.
-
-2.3.5 Domain
-
-A domain (or domain name) consists of one or more dot-separated components,
-each consisting of a sequence of letters, digits, and hyphens. Domain
-names are used as names of hosts and of other entities in the domain name
-hierarchy. For example, a domain may refer to an alias (label of a CNAME
-RR) or the label of Mail eXchanger records to be used to deliver mail
-instead of representing a host name. See [RFC-DNS] and section 5.
-
-The domain name, as described in this document and in [RFC-DNS], is the
-entire, fully-qualified name (often referred to as an "FQDN"). A domain
-name that is not in FQDN form is no more than a local alias. Local aliases
-MUST NOT appear in any SMTP transaction.
-
-2.3.6 Buffer and State Table
-
-SMTP sessions are stateful, with both parties carefully maintaining a
-common view of the current state. In this document we model this state by
-a virtual "buffer" and a "state table" on the server which may be used by
-the client to, for example, "clear the buffer" or "reset the state table,"
-causing the information in the buffer to be discarded and the state to be
-returned to some previous state
-
-2.3.7 Lines
-
-SMTP commands and, unless altered by a service extension, message data, are
-transmitted in "lines". Lines consist of zero or more data characters
-terminated by the sequence ASCII character "CR" (hex value 0D) followed
-immediately by ASCII character "LF" (hex value 0A). This termination
-sequence is denoted as <CRLF> in this document. Conforming implementations
-MUST NOT recognize or generate any other character or character sequence as
-a line terminator.
-
-2.3.8 Originator, Delivery, Relay, and Gateway Systems
-
-This specification makes a distinction among four types of SMTP systems,
-based on the role those systems play in transmitting electronic mail. An
-"originating" system (sometimes called an SMTP originator) introduces mail
-into the Internet or, more generally, into a transport service environment.
-A "delivery" SMTP system is one that receives mail from a transport service
-environment and hands it to a mail user agent or deposits it in a message
-store which a mail user agent is expected to subsequently access. A
-"relay" SMTP system (usually referred to just as a "relay") receives mail
-from an SMTP client and transmits it, without modification to the message
-data other than adding trace information, to another SMTP server for
-further relaying or for delivery.
-
-A "gateway" SMTP system (usually referred to just as a "gateway") receives
-mail from a client system in one transport environment and transmits it to
-a server system in another transport environment. Differences in protocols
-or message semantics between the transport environments on either side of a
-gateway may require that the gateway system perform transformations to the
-message that are not permitted to SMTP relay systems.
-
-2.3.9 Message Content and Mail Data
-
-The terms "message content" and "mail data" are used interchangeably in
-this document to describe the material transmitted after the DATA command
-is accepted and before the end of data indication is transmitted. Message
-content includes message headers and the possibly-structured message body.
-The MIME specification [RFC-MIME] provides the Standard mechanisms for
-structured message bodies.
-
-2.3.10 Mailbox and Address
-
-As used in this specification, an "address" is a character string that
-identifies a user to whom mail will be sent or a location into which mail
-will be deposited. The term "mailbox" refers to that depository. The two
-terms are typically used interchangeably unless the distinction between the
-location in which mail is placed (the mailbox) and a reference to it (the
-address) is important. An address normally consists of user and domain
-specifications. The standard mailbox naming convention is defined to be
-"local-part@domain": contemporary usage permits a much broader set of
-applications than simple "user names" and, consequently, the local-part is
-interpreted and assigned semantics only by the host specified in the domain
-part of the address.
-
-2.3.11 Reply
-
-An SMTP reply is an acknowledgment (positive or negative) sent from
-receiver to sender via the transmission channel in response to a command.
-The general form of a reply is a numeric completion code (indicating
-failure or success) usually followed by a text string. The codes are for
-use by programs and the text is usually intended for human users.
-
-2.4 Syntax Principles
-
-2.4.1 General Syntax and Transaction Model
-
-SMTP commands and replies have a rigid syntax. All commands begin with a
-four letter command verb. All Replies begin with a three digit numeric
-code. In some commands and replies, arguments MUST follow the verb or reply
-code. Some commands do not accept arguments (after the verb), and some
-reply codes are followed, sometimes optionally, by free form text. In both
-cases, where text appears, it is separated from the verb or reply code by a
-<SP>. Complete definitions of commands and replies appear in section 4.
-
-Verbs and argument values are not case sensitive, with the sole
-exception in this specification of a mailbox local-part (SMTP
-Extensions may explicitly specify case-sensitive elements). That is, a
-command verb, an argument value other than a mailbox local-part, and
-free form text MAY be encoded in upper case, lower case, or any mixture
-of upper and lower case with no impact on its meaning. This is NOT
-true of a mailbox local-part. The local-part of a mailbox MUST BE
-treated as case sensitive. Therefore, SMTP implementations MUST take
-care to preserve the case of mailbox local-parts. Mailbox domains are
-not case sensitive. However, exploiting the case sensitivity of
-mailbox local-parts impedes interoperability and is discouraged.
-
-Commands and replies are composed of characters from the ASCII character
-set [US-ASCII]. When the transport service provides an 8-bit byte (octet)
-transmission channel, each 7-bit character is transmitted right justified
-in an octet with the high order bit cleared to zero. More specifically, the
-unextended SMTP service provides seven bit transport only. An originating
-SMTP client which has not successfully negotiated an appropriate extension
-with a particular server MUST NOT transmit messages with information in the
-high-order bit of octets. If such messages are transmitted in violation of
-this rule, receiving SMTP servers MAY clear the high-order bit or reject
-the message as invalid. In general, a relay SMTP SHOULD assume that the
-message content it has received is valid and, assuming that the envelope
-permits doing so, relay it without inspecting that content. Of course, if
-the content is mislabeled and the data path cannot accept the actual
-content, this may result in ultimate delivery of a severely garbled message
-to the recipient. Delivery SMTP systems MAY reject ("bounce") such
-messages rather than deliver them. No sending SMTP system is permitted to
-send envelope commands in any character set other than US-ASCII; receiving
-systems SHOULD reject such commands, normally using "500 syntax error -
-invalid character" replies.
-
-Eight-bit message content transmission MAY be requested of the server by a
-client using extended SMTP facilities, notably the "8BITMIME" extension
-[8BITMIME]. 8BITMIME SHOULD be supported by SMTP servers. However, it MUST
-not be construed as authorization to transmit unrestricted eight bit
-material. 8BITMIME MUST NOT be requested by senders for material with the
-high bit on that is not in MIME format with an appropriate content-transfer
-encoding; servers MAY reject such messages.
-
-The metalinguistic notation used in this document corresponds to the
-"Augmented BNF" used in other Internet mail system documents. The reader
-who is not familiar with that syntax should consult [ABNF]. Metalanguage
-terms used in running text are surrounded by pointed brackets (e.g.,
-<CRLF>) for clarity.
-
-2.4.2 Command and Reply Syntax
-
-The commands consist of a command verb followed by an argument field.
-Command verbs are four alphabetic characters and are case insensitive.
-
-This also applies to any symbols representing parameter values, such as
-"TO" or "to" for the forward-path. Command verbs and the argument fields
-are separated by one or more spaces. However, case is important in the
-local-part within the reverse-path and forward-path arguments. In
-particular, for some hosts the user "smith" is different from the user
-"Smith".
-
-A few SMTP servers, in violation of this specification (and RFC 821)
-require that command verbs be encoded by clients in upper case.
-Implementations MAY wish to employ this encoding to accommodate those
-servers.
-
-The argument field consists of a variable length character string ending
-with the character sequence <CRLF>. The receiver will take no action until
-this sequence is received.
-
-The syntax for each command is shown with the discussion of that command.
-Common elements and parameters are shown in section 4.1.2.
-
-
-3. The SMTP Procedures: An Overview
-
-This section contains descriptions of the procedures used in SMTP: session
-initiation, the mail transaction, forwarding mail, verifying mailbox names
-and expanding mailing lists, and the opening and closing exchanges.
-Comments on relaying, a note on mail domains, and a discussion of changing
-roles are included at the end of this section. Several complete scenarios
-are presented in appendix D.
-
-3.1 Session Initiation
-
-An SMTP session is initiated when a client opens a connection to a server
-and the server responds with an opening message.
-
-SMTP server implementations MAY include identification of their software
-and version information in the connection greeting reply after the 220
-code, a practice that permits more efficient isolation and repair of any
-problems. Implementations MAY make provision for SMTP servers to disable
-the software and version announcement where it causes security concerns.
-While some systems also identify their contact point for mail problems,
-this is not a substitute for maintaining the required "postmaster" address
-(see section 4.5.1).
-
-The SMTP protocol allows a server to formally reject a transaction while
-still allowing the initial connection as follows: a 554 response MAY be
-given in the initial connection opening message instead of the 220. A
-server taking this approach MUST still wait for the client to send a QUIT
-(see section 4.1.1.10) before closing the connection and SHOULD respond to
-any intervening commands with "503 bad sequence of commands". Since an
-attempt to make an SMTP connection to such a system is probably in error, a
-server returning a 554 response on connection opening SHOULD provide enough
-information in the reply text to facilitate debugging of the sending
-system.
-
-3.2 Client Initiation
-
-Once the server has sent the welcoming message and the client has received
-it, the client normally sends the EHLO command to the server, indicating
-the client's identity. In addition to opening the session, use of EHLO
-indicates that the client is able to process service extensions and
-requests that the server provide a list of the extensions it supports.
-Older SMTP systems which are unable to support service extensions and
-contemporary clients which do not require service extensions in the mail
-session being initiated, MAY use HELO instead of EHLO. Servers MUST NOT
-return the extended EHLO-style response to a HELO command.
-
-In the EHLO command the host sending the command identifies itself; the
-command may be interpreted as saying "Hello, I am <domain>" (and, in the
-case of EHLO, "and I support service extension requests").
-
-3.3 Mail Transactions
-
-There are three steps to SMTP mail transactions. The transaction starts
-with a MAIL command which gives the sender identification. A series of one
-or more RCPT commands follows giving the receiver information. Then a DATA
-command initiates transfer of the mail data and is terminated by the "end
-of mail" data indicator, which also confirms the transaction.
-
-The first step in the procedure is the MAIL command.
-
- MAIL FROM:<reverse-path> [<SP> <mail-parameters> ] <CRLF>
-
-This command tells the SMTP-receiver that a new mail transaction is
-starting and to reset all its state tables and buffers, including any
-recipients or mail data. The <reverse-path> contains the source mailbox
-(between "<" and ">" brackets, which can be used to report errors (see
-section 4.2 for a discussion of error reporting). If accepted, the
-SMTP server returns a 250 OK reply. If the mailbox specification is
-not acceptable for some reason, the server MUST return a reply
-indicating whether the failure is permanent (i.e., will occur again if
-the client tries to send the same address again) or temporary (i.e.,
-the address might be accepted if the client tries again later). Despite
-the apparent scope of this requirement, there are circumstances in
-which the acceptability of the reverse-path may not be determined until
-one or more forward-paths (in RCPT commands) can be examined. In those
-cases, the server MAY reasonably accept the reverse-path (with a 250
-reply) and then report problems after the forward-paths are received
-and examined. Normally, failures produce 550 or 553 replies.
-
-Historically, the <reverse-path> can contain more than just a mailbox,
-however, contemporary systems SHOULD NOT use source routing (see appendix
-C).
-
-The optional <mail-parameters> are associated with negotiated SMTP service
-extensions (see section 2.2).
-
-The second step in the procedure is the RCPT command.
-
- RCPT TO:<forward-path> [ <SP> <rcpt-parameters> ] <CRLF>
-
-This command gives a forward-path (normally a mailbox and domain,
-always surrounded by "<" and ">" brackets) identifying one recipient.
-If accepted, the SMTP server returns a 250 OK reply and stores the
-forward-path. If the recipient is known not to be a deliverable
-address, the SMTP server returns a 550 reply, typically with a string
-such as "no such user - " and the mailbox name (other circumstances and
-reply codes are possible). This step of the procedure can be repeated
-any number of times.
-
-The <forward-path> can contain more than just a mailbox. Historically, the
-<forward-path> can be a source routing list of hosts and the destination
-mailbox, however, contemporary SMTP clients SHOULD NOT utilize source
-routes (see appendix C). Servers MUST be prepared to encounter a list of
-source routes in the forward path, but SHOULD ignore the routes or MAY
-decline to support the relaying they imply. Similarly, servers MAY decline
-to accept mail that is destined for other hosts or systems. These
-restrictions make a server useless as a relay for clients that do not
-support full SMTP functionality. Consequently, restricted-capability
-clients MUST NOT assume that any SMTP server on the Internet can be used as
-their mail processing (relaying) site. If RCPT TO appears without a
-previous MAIL FROM, the server MUST return a 503 "Bad sequence of commands"
-response. The optional <rcpt-parameters> are associated with negotiated
-SMTP service extensions (see section 2.2).
-
-The third step in the procedure is the DATA command (or some alternative
-specified in a service extension).
-
- DATA <CRLF>
-
-If accepted, the SMTP server returns a 354 Intermediate reply and considers
-all succeeding lines up to but not including the end of mail data indicator
-to be the message text. When the end of text is successfully received and
-stored the SMTP-receiver sends a 250 OK reply.
-
-Since the mail data is sent on the transmission channel, the end of mail
-data must be indicated so that the command and reply dialog can be resumed.
-SMTP indicates the end of the mail data by sending a line containing only a
-"." (period or full stop). A transparency procedure is used to prevent
-this from interfering with the user's text (see section 4.5.2).
-
-The end of mail data indicator also confirms the mail transaction and tells
-the SMTP server to now process the stored recipients and mail data. If
-accepted, the SMTP server returns a 250 OK reply. The DATA command can fail
-in only two ways:
-
- - If there was no MAIL FROM, or no RCPT TO, command, or all such commands
- were rejected, the server MAY return a "command out of sequence" (503)
- reply. If that reply is received, the client MUST NOT send the message
- data; more generally, message data MUST NOT be sent unless a 354 reply
- is received.
-
- - If the verb is initially accepted and the 354 reply issued, the DATA
- command should fail only if the mail transaction was incomplete (for
- example, no recipients), or if resources were unavailable, or if the
- server determines that the message should be rejected for policy or
- other reasons.
-
-However, in practice, some servers do not perform recipient verification
-until after the message text is received. These servers SHOULD treat a
-failure for one or more recipients as a "subsequent failure" and return a
-mail message as discussed in section 6. Using a "550 mailbox not found"
-(or equivalent) reply code after the data are accepted makes it difficult
-or impossible for the client to determine which recipients failed.
-
-When RFC 822 format is being used, the mail data include the memo header
-items such as Date, Subject, To, Cc, From [MSGFMT]. Server SMTP systems
-SHOULD NOT reject messages based on perceived defects in the RFC 822 or
-MIME [RFC-MIME] message header or message body. In particular, they MUST
-NOT reject messages in which the numbers of Resent- fields do not match or
-Resent-to appears without Resent-from and/or Resent-date.
-
-Mail transaction commands MUST be used in the order discussed above.
-
-
-3.4 Forwarding for Address Correction or Updating
-
-Forwarding support is most often required to consolidate and simplify
-addresses within, or relative to, some enterprise and less frequently to
-establish addresses to link a person's prior address with current one.
-Silent forwarding of messages (without server notification to the sender),
-for security or non-disclosure purposes, is common in the contemporary
-Internet.
-
-In both the enterprise and the "new address" cases, information hiding
-(and sometimes security) considerations argue against exposure of the
-"final" address through the SMTP protocol as a side-effect of the
-forwarding activity. This may be especially important when the final
-address may not even be reachable by the sender. Consequently, the
-"forwarding" mechanisms described in section 3.2 of RFC 821, and
-especially the 251 (corrected destination) reply code from RCPT TO are
-deprecated: Servers SHOULD NOT provide that service or return that code.
-
-
-3.5 Commands for Debugging Addresses
-
-3.5.1 Overview
-
-SMTP provides commands to verify a user name or obtain the content of a
-mailing list. This is done with the VRFY and EXPN commands, which have
-character string arguments. Implementations SHOULD support VRFY and EXPN
-(however, see section 3.5.2 and 7.3).
-
-For the VRFY command, the string is a user name or a user name and domain
-(see below). If a normal (i.e., 250) response is returned, the response MAY
-include the full name of the user and MUST include the mailbox of the user.
-It MUST be in either of the following forms:
-
- User Name <local-part@domain>
- local-part@domain
-
-When a name that is the argument to VRFY could identify more than one
-mailbox, the server MAY either note the ambiguity or identify the
-alternatives. In other words, any of the following are legitimate
-response to VRFY:
-
- 553 User ambiguous
-
-or
-
- 553- Ambiguous; Possibilities are
- 553-Joe Smith <jsmith@foo.com>
- 553-Harry Smith <hsmith@foo.com>
- 553 Melvin Smith <dweep@foo.com>
-
-or
-
- 553-Ambiguous; Possibilities
- 553- <jsmith@foo.com>
- 553- <hsmith@foo.com>
- 553 <dweep@foo.com>
-
-Under normal circumstances, a client receiving a 553 reply would be
-expected to expose the result to the user. Use of exactly the forms
-given, and the "user ambiguous" or "ambiguous" keywords, possibly
-supplemented by extended reply codes such as those described in
-[RFC-REPLY], will facilitate automated translation into other languages as
-needed. Of course, a client that was highly automated or that was
-operating in another language than English, might choose to try to
-translate the response, to return some other indication to the user than
-the literal text of the reply, or to take some automated action such as
-consulting a directory service for additional information before reporting
-to the user.
-
-For the EXPN command, the string identifies a mailing list, and the
-successful (i.e., 250) multiline response MAY include the full name of the
-users and MUST give the mailboxes on the mailing list.
-
-In some hosts the distinction between a mailing list and an alias for a
-single mailbox is a bit fuzzy, since a common data structure may hold both
-types of entries, and it is possible to have mailing lists of one mailbox.
-If a request is made to verify a mailing list, a positive response MAY be
-given if a message so addressed would be delivered to everyone on the list,
-otherwise an error SHOULD be reported (e.g., "550 That is a mailing list,
-not a user" or "252 Unable to verify members of mailing list"). If a
-request is made to expand a user name, the server MAY return a positive
-response consisting of a list containing one name, or an error MAY be
-reported (e.g., "550 That is a user name, not a mailing list").
-
-In the case of a successful multiline reply (normal for EXPN) exactly one
-mailbox is to be specified on each line of the reply. The case of an
-ambiguous request is discussed above.
-
-"User name" is a fuzzy term and has been used deliberately. An
-implementation of the VRFY or EXPN commands MUST include at least
-recognition of local mailboxes as "user names". However, since current
-Internet practice often results in a single host handling mail for
-multiple domains, hosts, especially hosts that provide this functionality,
-SHOULD accept the "local-part@domain" form as a "user name"; hosts MAY
-also choose to recognize other strings as "user names".
-
-The case of expanding a mailbox list requires a multiline reply, such as:
-
- C: EXPN Example-People
- S: 250-Jon Postel <Postel@isi.edu>
- S: 250-Fred Fonebone <Fonebone@physics.foo-u.edu>
- S: 250 Sam Q. Smith <SQSmith@specific.generic.com>
-
-or
-
- C EXPN Executive-Washroom-List
- S: 550 Access Denied to You.
-
-The character string arguments of the VRFY and EXPN commands cannot be
-further restricted due to the variety of implementations of the user name
-and mailbox list concepts. On some systems it may be appropriate for the
-argument of the EXPN command to be a file name for a file containing a
-mailing list, but again there are a variety of file naming conventions in
-the Internet. Similarly, historical variations in what is returned by
-these commands are such that the response SHOULD be interpreted very
-carefully, if at all, and SHOULD generally only be used for diagnostic
-purposes.
-
-3.5.2 VRFY Normal Response
-
-When normal (2yz or 551) responses are returned from a VRFY or EXPN
-request, the reply MUST normally include the mailbox name.
-"<local-part@domain>", where "domain" is a fully qualified domain name,
-MUST appear in the syntax. In exceptional circumstances, free-form text
-MAY be returned. In order to facilitate parsing by both computers and
-people, addresses SHOULD appear in pointed brackets. When addresses,
-rather than free-form debugging information, are returned, EXPN and VRFY
-MUST return only valid domain addresses that are usable in SMTP RCPT
-commands. Consequently, if an address implies delivery to a program or
-other system, the mailbox name used to reach that target MUST be given.
-Paths (explicit source routes) MUST NOT be returned by VRFY or EXPN.
-
-Server implementations SHOULD support both VRFY and EXPN. For security
-reasons, implementations MAY provide local installations a way to disable
-either or both of these commands through configuration options or the
-equivalent. When these commands are supported, they are not required to
-work across relays when relaying is supported. Since they were both
-optional in RFC 821, they MUST be listed as service extensions in an EHLO
-response, if they are supported.
-
-3.5.3 Meaning of VRFY or EXPN Success Response
-
-A server MUST NOT return a 220 code in response to a VRFY or EXPN command
-unless it has actually verified the address. In particular, a server MUST
-NOT return 220 if all it has done is to verify that the syntax given is
-valid. In that case, 502 (Command not implemented) or 500 (Syntax error,
-command unrecognized) SHOULD be returned. As stated elsewhere,
-implementation of VRFY and EXPN are strongly recommended.
-Hence, implementations that return 500 or 502 for VRFY are not in full
-compliance with this specification.
-
-There may be circumstances where an address appears to be valid but cannot
-reasonably be verified in real time, particularly when a server is acting
-as a mail exchanger for another server or domain. "Apparent validity" in
-this case would normally involve at least syntax checking and might
-involve verification that any domains specified were ones to which the
-host expected to be able to relay mail. In these situations, reply code
-252 SHOULD be returned. These cases parallel the discussion of RCPT
-verification discussed in section 2.1. Implementations generally SHOULD
-be more aggressive about address verification in the case of VRFY than in
-the case of RCPT, even if it takes a little longer to do so.
-
-3.5.4 Semantics and Applications of EXPN
-
-EXPN is often very useful in debugging and understanding problems with
-mailing lists and multiple-target-address aliases. Some systems have
-attempted to use source expansion of mailing lists as a means of
-eliminating duplicates. The propagation of aliasing systems with mail on
-the Internet, for hosts (typically with MX and CNAME DNS records), for
-mailboxes (various types of local host aliases), and in various proxying
-arrangements, has made it nearly impossible for these strategies to work,
-and mail systems SHOULD NOT attempt them.
-
-3.6 Domains
-
-Only resolvable, fully-qualified, domain names (FQDNs) are permitted when
-domain names are used in SMTP. In other words, names that can be resolved
-to MX RRs or A RRs (as discussed in section 5) are permitted, as are CNAME
-RRs whose targets can be resolved, in turn, to MX or A RRs. Local
-nicknames or unqualified names MUST NOT be used. There are two exceptions
-to the rule requiring FQDNs:
-
- - The domain name given in the EHLO command MUST BE either a primary host
- name (a domain name that resolves to an A RR) or, if the host has no
- name, an address literal as described in section 4.1.1.1.
-
- - The reserved mailbox name "postmaster" may be used in a RCPT TO command
- without domain qualification (see section 4.1.1.3) and MUST be accepted
- if so used.
-
-3.7 Relaying
-
-In general, the availability of Mail eXchanger records in the domain name
-system [RFC-DNS] makes the use of explicit source routes in the Internet
-mail system unnecessary. Many historical problems with their
-interpretation have made their use undesirable. SMTP clients SHOULD NOT
-generate explicit source routes except under unusual circumstances. SMTP
-servers MAY decline to act as mail relays or to accept addresses that
-specify source routes. When route information is encountered, SMTP
-servers are also permitted to ignore the route information and simply send
-to the final destination specified as the last element in the route and
-SHOULD do so. There has been an invalid practice of using names that do
-not appear in the DNS as destination names, with the senders counting on
-the intermediate hosts specified in source routing to resolve any
-problems. If source routes are stripped, this practice will cause
-failures. This is one of several reasons why SMTP clients MUST NOT
-generate invalid source routes or depend on serial resolution of names.
-
-When source routes are not used, the process described in RFC 821 for
-constructing a reverse-path from the forward-path is not applicable and the
-reverse-path at the time of delivery will simply be the address that
-appeared in the MAIL command.
-
-A relay SMTP server is usually the target of a DNS MX record that
-designates it, rather than the final delivery system. The relay server may
-accept or reject the task of relaying the mail in the same way it accepts
-or rejects mail for a local user. If it accepts the task, it then becomes
-an SMTP client, establishes a transmission channel to the next SMTP server
-specified in the DNS (according to the rules in section 5), and sends it
-the mail. If it declines to relay mail to a particular address for policy
-reasons, a 550 response SHOULD be returned.
-
-A relay SMTP server may be encountered in one additional circumstance: by
-private agreement between an originating client SMTP and an associated
-SMTP relay, the client MAY be configured to send all mail to that relay
-for further processing. In conformance with this specification and other
-Internet Standards and guidelines, the relay SMTP SHOULD be configured
-into a client of this type by name (rather than by IP address), and the
-name SHOULD be processed as described in section 5. Clients of this sort
-will rarely be fully-conformant to this specification since, in most
-cases, the use of a single relay for all outgoing mail traffic is used as
-an alternative to such requirements as the one to retry mail delivery on
-connection failures (see section 5 and elsewhere).
-
-It is important to note that MX records can point to SMTP servers which
-act as gateways into other environments, not just SMTP relays and final
-delivery systems; see sections 3.8 and 5.
-
-If an SMTP server has accepted the task of relaying the mail and later
-finds that the destination is incorrect or that the mail cannot be
-delivered for some other reason, then it MUST construct an "undeliverable
-mail" notification message and send it to the originator of the
-undeliverable mail (as indicated by the reverse-path). Formats specified
-for non-delivery reports by other standards (see, for example,
-[RFC-NOTARY1]) SHOULD be used if possible.
-
-This notification message must be from the SMTP server at the relay host
-or the host that first determines that delivery cannot be accomplished.
-Of course, SMTP servers MUST NOT send notification messages about problems
-transporting notification messages. One way to prevent loops in error
-reporting is to specify a null reverse-path in the MAIL command of a
-notification message. When such a message is transmitted the reverse-path
-MUST be set to null (see section 4.5.5 for additional discussion). A MAIL
-command with a null reverse-path appears as follows:
-
- MAIL FROM:<>
-
-As discussed in section 2.4.1, a relay SMTP has no need to inspect or act
-upon the headers or body of the message data and MUST NOT do so except
-to add its own "Received:" header (section 4.4) and to perform simple
-counting of the number of "Received:" headers in a message (section 6.2).
-
-3.8 Mail Gatewaying
-
-While the relay function discussed above operates within the Internet SMTP
-transport service environment, MX records or various forms of explicit
-routing may require that an intermediate SMTP server perform a translation
-function between one transport service and another. As discussed in
-section 2.3.8, when such a system is at the boundary between two transport
-service environments, we refer to it as a "gateway" or "gateway SMTP".
-
-Gatewaying mail between different mail environments, such as different mail
-formats and protocols, is complex and does not easily yield to
-standardization. However, some general requirements may be given for a
-gateway between the Internet and another mail environment.
-
-3.8.1 Header Fields in Gatewaying
-
-Header fields MAY be rewritten when necessary as messages are gatewayed
-across mail environment boundaries. This may involve inspecting the message
-body or interpreting the local-part of the destination address in spite of
-the prohibitions in section 2.4.1
-
-Other mail systems gatewayed to the Internet often use a subset of RFC-822
-headers or provide similar functionality with a different syntax, but some
-of these mail systems do not have an equivalent to the SMTP envelope.
-Therefore, when a message leaves the Internet environment, it may be
-necessary to fold the SMTP envelope information into the message header. A
-possible solution would be to create new header fields to carry the
-envelope information (e.g., "X-SMTP-MAIL:" and "X-SMTP-RCPT:"); however,
-this would require changes in mail programs in foreign environments and
-might risk disclosure of private information (see section 7.2).
-
-3.8.2 Received Lines in Gatewaying
-
-When forwarding a message into or out of the Internet environment, a
-gateway MUST prepend a Received: line, but it MUST NOT alter in any way a
-Received: line that is already in the header.
-
-Received: fields of messages originating from other environments may not
-conform exactly to this specification. However, the most important use of
-Received: lines is for debugging mail faults, and this debugging can be
-severely hampered by well-meaning gateways that try to "fix" a Received:
-line. As another consequence of trace fields arising in non-SMTP
-environments, receiving systems MUST NOT reject mail based on the format of
-a trace field and SHOULD be extremely robust in the light of unexpected
-information or formats in those fields.
-
-The gateway SHOULD indicate the environment and protocol in the "via"
-clauses of Received field(s) that it supplies.
-
-3.8.3 Addresses in Gatewaying
-
->From the Internet side, the gateway SHOULD accept all valid address formats
-in SMTP commands and in RFC-822 headers, and all valid RFC-822 messages.
-Gateways are, of course, subject to the same rules for handling source
-routes as those described for other SMTP systems in section 3.3.
-
-3.8.4 Other Header Fields in Gatewaying
-
-The gateway MUST ensure that all header fields of a message that it
-forwards into the Internet meet the requirements for Internet mail. In
-particular, all addresses in "From:", "To:", "Cc:", etc., fields MUST be
-transformed (if necessary) to satisfy RFC-822 syntax, MUST reference only
-fully-qualified domain names, and MUST be effective and useful for sending
-replies. The translation algorithm used to convert mail from the
-Internet protocols to another environment's protocol SHOULD ensure that
-error messages from the foreign mail environment are delivered to the
-return path from the SMTP envelope, not to the sender listed in the "From:"
-field (or other fields) of the RFC-822 message.
-
-3.8.5 Envelopes in Gatewaying
-
-Similarly, when forwarding a message from another environment into the
-Internet, the gateway SHOULD set the envelope return path in accordance
-with an error message return address, if supplied by the foreign
-environment. If the foreign environment has no equivalent concept, the
-gateway must select and use a best approximation, with the message
-originator's address as the default of last resort.
-
-3.9 Terminating Sessions and Connections
-
-An SMTP connection is terminated when the client sends a QUIT command. The
-server responds with a positive reply code, after which it closes the
-connection.
-
-An SMTP server MUST NOT intentionally close the connection except:
-
- - After receiving a QUIT command and responding with a 221 reply.
-
- - After detecting the need to shutdown the SMTP service and returning a
- 421 response code. This response code can be issued after the server
- receives any command or, if necessary, asynchronously from command
- receipt (on the assumption that the client will receive it after the
- next command is issued).
-
-In particular, a server that closes connections in response to commands
-that are not understood is in violation of this specification. Servers are
-expected to be tolerant of unknown commands, issuing a 500 reply and
-awaiting further instructions from the client.
-
-An SMTP server which is forcibly shut down via external means SHOULD
-attempt to send a line containing a 421 response code to the SMTP client
-before exiting. The SMTP client will normally read the 421 response code
-after sending its next command.
-
-SMTP clients that experience a connection close, reset, or other
-communications failure due to circumstances not under their control (in
-violation of the intent of this specification but sometimes unavoidable)
-SHOULD, to maintain the robustness of the mail system, treat the mail
-transaction as if a 451 response had been received and act accordingly.
-
-3.10 Mailing Lists and Aliases
-
-An SMTP-capable host SHOULD support both the alias and the list models of
-address expansion for multiple delivery. When a message is delivered or
-forwarded to each address of an expanded list form, the return address in
-the envelope ("MAIL FROM:") MUST be changed to be the address of a person
-or other entity who administers the list. However, in this case, the
-message header (see [MSGFMT]) MUST be left unchanged; in particular, the
-"From" field of the message header is unaffected.
-
-An important mail facility is a mechanism for multi-destination delivery
-of a single message, by transforming (or "expanding" or "exploding") a
-pseudo-mailbox address into a list of destination mailbox addresses. When
-a message is sent to such a pseudo-mailbox (sometimes called an
-"exploder"), copies are forwarded or redistributed to each mailbox in the
-expanded list. Servers SHOULD simply utilize the addresses on the list;
-application of heuristics or other matching rules to eliminate some
-addresses, such as that of the originator, is strongly discouraged. We
-classify such a pseudo-mailbox as an "alias" or a "list", depending upon
-the expansion rules.
-
-3.10.1 Alias
-
-To expand an alias, the recipient mailer simply replaces the pseudo-mailbox
-address in the envelope with each of the expanded addresses in turn; the
-rest of the envelope and the message body are left unchanged. The message
-is then delivered or forwarded to each expanded address.
-
-3.10.2 List
-
-A mailing list may be said to operate by "redistribution" rather than
-by "forwarding". To expand a list, the recipient mailer replaces the
-pseudo-mailbox address in the envelope with all of the expanded
-addresses. The return address in the envelope is changed so that all
-error messages generated by the final deliveries will be returned to a
-list administrator, not to the message originator, who generally has no
-control over the contents of the list and will typically find error
-messages annoying.
-
-
-4. The SMTP Specifications
-
-4.1 SMTP Commands
-
-4.1.1 Command Semantics and Syntax
-
-The SMTP commands define the mail transfer or the mail system function
-requested by the user. SMTP commands are character strings terminated by
-<CRLF>. The commands themselves are alphabetic characters terminated by
-<SP> if parameters follow and <CRLF> otherwise. (In the interest of
-improved interoperability, SMTP receivers are encouraged to tolerate
-trailing white space before the terminating <CRLF>.) The syntax of the
-local part of a mailbox must conform to receiver site conventions and the
-syntax specified in section 4.1.2. The SMTP commands are discussed below.
-The SMTP replies are discussed in section 4.2.
-
-A mail transaction involves several data objects which are communicated as
-arguments to different commands. The reverse-path is the argument of the
-MAIL command, the forward-path is the argument of the RCPT command, and the
-mail data is the argument of the DATA command. These arguments or data
-objects must be transmitted and held pending the confirmation communicated
-by the end of mail data indication which finalizes the transaction. The
-model for this is that distinct buffers are provided to hold the types of
-data objects, that is, there is a reverse-path buffer, a forward-path
-buffer, and a mail data buffer. Specific commands cause information to be
-appended to a specific buffer, or cause one or more buffers to be cleared.
-
-Several commands (RSET, DATA, QUIT) are specified as not permitting
-parameters. In the absence of specific extensions offered by the server
-and accepted by the client, clients MUST NOT send such parameters and
-servers SHOULD reject commands containing them as having invalid syntax.
-
-4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)
-
-These commands are used to identify the SMTP client to the SMTP server.
-The argument field contains the fully-qualified domain name of the SMTP
-client if one is available. In situations in which the SMTP client system
-does not have a meaningful domain name (e.g., when its address is
-dynamically allocated and no reverse mapping record is available), the
-client SHOULD send an address literal (see section 4.1.3), optionally
-followed by information that will help to identify the client system.
-
-The SMTP server identifies itself to the SMTP client in the connection
-greeting reply and in the response to this command.
-
-A client SMTP SHOULD start an SMTP session by issuing the EHLO command. If
-the SMTP server supports the SMTP service extensions it will give a
-successful response, a failure response, or an error response. If the SMTP
-server, in violation of this specification, does not support any SMTP
-service extensions it will generate an error response. Older client SMTP
-systems MAY, as discussed above, use HELO (as specified in RFC 821) instead
-of EHLO, and servers MUST support the HELO command and reply properly to
-it. In any event, a client MUST issue HELO or EHLO before starting a mail
-transaction.
-
-These commands, and a "250 OK" reply to one of them, confirm that both the
-SMTP client and the SMTP server are in the initial state, that is, there is
-no transaction in progress and all state tables and buffers are cleared.
-
-Normally, the response to EHLO will be a multiline reply. Each line of the
-response contains a keyword and, optionally, one or more parameters. The
-syntax for a positive response, using the ABNF notation and low-level
-terminals of [ABNF], is:
-
- ehlo-ok-rsp ::= "250" domain [ <SP> greeting ] <CRLF>
- / ( "250-" domain [ <SP> greeting ] <CRLF>
- *( "250-" ehlo-line <CRLF> )
- "250" <SP> ehlo-line <CRLF> )
-
- greeting ::= 1*<any character other than CR or LF>
-
- ehlo-line ::= ehlo-keyword *( <SP> ehlo-param )
-
- ehlo-keyword ::= (ALPHA / DIGIT) *(ALPHA / DIGIT / "-")
- ; syntax and values depend on ehlo-keyword
-
- ehlo-param ::= 1*<any CHAR excluding <SP> and all
- control characters (US-ASCII 0-31
- inclusive)>
-
-Although EHLO keywords may be specified in upper, lower, or mixed case,
-they MUST always be recognized and processed in a case-insensitive manner.
-This is simply an extension of practices specified in RFC 821 and section
-2.4.1.
-
-4.1.1.2 MAIL (MAIL)
-
-This command is used to initiate a mail transaction in which the mail
-data is delivered to an SMTP server which may, in turn, deliver it to
-one or more mailboxes or pass it on to another system (possibly using
-SMTP). The argument field contains a reverse-path and may contain
-optional parameters. In general, the MAIL command may be sent only
-when no mail transaction is in progress, see section 4.1.4.
-
-The reverse-path consists of the sender mailbox. Historically, that
-mailbox might optionally have been preceeded by a list of hosts, but
-that behavior. In some types of reporting messages for which a reply
-is likely to cause a mail loop (for example, mail delivery and
-nondelivery notifications), the reverse-path may be null (see section
-3.7).
-
-This command clears the reverse-path buffer, the forward-path buffer, and
-the mail data buffer; and inserts the reverse-path information from this
-command into the reverse-path buffer.
-
-If service extensions were negotiated, the MAIL command may also carry
-parameters associated with a particular service extension.
-
-Syntax:
-
- "MAIL FROM:" Reverse-path [ <SP> Mail-parameters ]
-
-or
- "MAIL FROM:<>" [ <SP> Mail-parameters ]
-
-4.1.1.3 RECIPIENT (RCPT)
-
-This command is used to identify an individual recipient of the mail data;
-multiple recipients are specified by multiple use of this command.
-The argument field contains a forward-path and may contain optional
-parameters.
-
-The forward-path normally consists of the required destination
-mailbox. Sending systems SHOULD not generate the optional list of hosts
-known as a source route. Receiving systems MUST recognize source route
-syntax but SHOULD strip off the source route specification and utilize the
-domain name associated with the mailbox as if the source route had not been
-provided.
-
-Similarly, relay hosts SHOULD strip or ignore source routes, and names MUST
-NOT be copied into the reverse-path. When mail reaches its ultimate
-destination (the forward-path contains only a destination mailbox), the
-SMTP server inserts it into the destination mailbox in accordance with its
-host mail conventions.
-
-For example, mail received at relay host xyz.com with envelope commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<@hosta.int,@jkl.org:userc@d.bar.org>
-
-will normally be sent directly on to host d.bar.org with envelope commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<userc@d.bar.org>
-
-As provided in appendix C, xyz.com MAY also choose to relay the
-message to hosta.int, using the envelope commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<@hosta.int,@jkl.org:userc@d.bar.org>
-
-or to jkl.org, using the envelope commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<@jkl.org:userc@d.bar.org>
-
-Of course, since hosts are not required to relay mail at all, xyz.com
-may also reject the message entirely when the RCPT command is
-received, using a 550 code (since this is a "policy reason").
-
-If service extensions were negotiated, the RCPT TO command may also carry
-parameters associated with a particular service extension offered by the
-server. The client MUST NOT transmit parameters other than those
-associated with a service extension offered by the server in its EHLO
-response.
-
-Syntax:
- "RCPT TO:" Forward-path [ <SP> Rcpt-parameters ]
-or
- "RCPT TO:<Postmaster>" [ <SP> Rcpt-parameters ]
-
-4.1.1.4 DATA (DATA)
-
-The receiver treats the lines (strings ending in <CRLF> sequences, as
-described in section 2.3.7) following the command as mail data from the
-sender. This command causes the mail data to be appended to the mail data
-buffer. The mail data may contain any of the 128 ASCII character codes,
-although experience has indicated that use of control characters other than
-SP, HT, CR, and LF (especially the ASCII "Null" character) may cause
-problems and SHOULD be avoided when possible.
-
-The mail data is terminated by a line containing only a period, that is,
-the character sequence "<CRLF>.<CRLF>" (see section 4.5.2). This is the
-end of mail data indication. Note that the first <CRLF> of this
-terminating sequence is also the <CRLF> that ends the final line of the
-data (message text) or, if there was no data, ends the DATA command itself.
-An extra <CRLF> MUST NOT be added, as that would cause an empty line to be
-added to the message. The only exception to this rule would arise if the
-message body were passed to the originating SMTP-sender with a final "line"
-that did not end in <CRLF>; in that case, the originating SMTP system MUST
-either reject the message as invalid or add <CRLF> in order to have the
-receiving SMTP server recognize the "end of data" condition.
-
-The custom of accepting lines ending only in <LF>, as a concession to
-non-conforming behavior on the part of some UNIX systems, has proven to
-cause more interoperability problems than it solves, and SMTP server
-systems MUST NOT do this, even in the name of improved robustness. In
-particular, the sequence "<LF>.<LF>" (bare line feeds, without carriage
-returns) MUST NOT be treated as equivalent to <CRLF>.<CRLF> as the end of
-mail data indication.
-
-Receipt of the end of mail data indication requires the server to process
-the stored mail transaction information. This processing consumes the
-information in the reverse-path buffer, the forward-path buffer, and the
-mail data buffer, and on the completion of this command these buffers are
-cleared. If the processing is successful, the receiver MUST send an OK
-reply. If the processing fails the receiver MUST send a failure reply. The
-SMTP model does not allow for partial failures at this point: either the
-message is accepted by the server for delivery and a positive response is
-returned or it is not accepted and a failure reply is returned. Errors
-that are diagnosed subsequently MUST be reported in a mail message, as
-discussed in section 4.4 In sending a positive completion reply to the end
-of data indication, the receiver takes full responsibility for the message
-(see section 6.1).
-
-When the SMTP server accepts a message either for relaying or for final
-delivery, it inserts a trace record (also referred to interchangeably as a
-"time stamp line" or "Received" line) at the top of the mail data. This
-trace record indicates the identity of the host that sent the message, the
-identity of the host that received the message (and is inserting this time
-stamp), and the date and time the message was received. Relayed messages
-will have multiple time stamp lines. Details for formation of these lines,
-including their syntax, is specified in section 4.4.
-
-4.1.1.5 RESET (RSET)
-
-This command specifies that the current mail transaction will be aborted.
-Any stored sender, recipients, and mail data MUST be discarded, and all
-buffers and state tables cleared. The receiver MUST send a "250 OK" reply
-to a RSET command with no arguments. A reset command may be issued by the
-client at any time. It is effectively equivalent to a NOOP if issued
-immediately after EHLO, before EHLO is issued in the session, after an
-end-of-data indicator has been sent and acknowledged, or immediately before
-a QUIT. In other situations, it restores the state to that immediately
-after the most recent EHLO. An SMTP server MUST NOT close the connection
-as the result of receiving a RSET; that action is reserved for QUIT (see
-section 4.1.1.10).
-
-Since EHLO implies some additional processing and response by the server,
-RSET will normally be more efficient than reissuing that command, even
-though the formal semantics are the same.
-
-There are circumstances, contrary to the intent of this specification, in
-which an SMTP server may receive an indication that the underlying TCP
-connection has been closed or reset. To preserve the robustness of the
-mail system, SMTP servers SHOULD be prepared for this condition and SHOULD
-treat it as if a QUIT had been received before the connection disappeared.
-
-Syntax:
- "RSET"
-
-4.1.1.6 VERIFY (VRFY)
-
-This command asks the receiver to confirm that the argument identifies a
-user or mailbox. If it is a user name, information is returned as
-specified in section 3.5.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer.
-
-Syntax:
- "VRFY" <SP> String
-
-4.1.1.7 EXPAND (EXPN)
-
-This command asks the receiver to confirm that the argument identifies a
-mailing list, and if so, to return the membership of that list. If the
-command is successful, a reply is returned containing information as
-described in section 3.5. This reply will have multiple lines except in
-the trivial case of a one-member list.
-
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer.
-
-Syntax:
- "EXPN" <SP> String
-
-4.1.1.8 HELP (HELP)
-
-This command causes the server to send helpful information to the client.
-The command MAY take an argument (e.g., any command name) and return more
-specific information as a response.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer.
-
-SMTP servers SHOULD support HELP without arguments and MAY support it with
-arguments.
-
-Syntax:
- "HELP" [ <SP> String ]
-
-4.1.1.9 NOOP (NOOP)
-
-This command does not affect any parameters or previously entered commands.
-It specifies no action other than that the receiver send an OK reply.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer. If a parameter string is specified,
-servers SHOULD ignore it.
-
-Syntax:
- "NOOP" [ <SP> String ]
-
-
-4.1.1.10 QUIT (QUIT)
-
-This command specifies that the receiver MUST send an OK reply, and then
-close the transmission channel.
-
-The receiver MUST NOT intentionally close the transmission channel until
-it receives and replies to a QUIT command (even if there was an error).
-The sender MUST NOT intentionally close the transmission channel until it
-sends a QUIT command and SHOULD wait until it receives the reply (even if
-there was an error response to a previous command). If the connection is
-closed prematurely due to violations of the above or system or network
-failure, the server MUST cancel any pending transaction, but not undo any
-previously completed transaction, and generally MUST act as if the command
-or transaction in progress had received a temporary error (i.e., a 4yz
-response).
-
-Syntax:
- "QUIT"
-
-4.1.2 Lower-level Syntax
-
-The syntax of the argument fields of the above commands (using the syntax
-specified in [ABNF] where applicable) is given below. Some of the
-productions given below are used only in conjunction with source routes as
-described in appendix C. Terminals not defined in this document, such as
-ALPHA, DIGIT, SP, CR, LF, CRLF, are as defined in the "core" syntax
-(section 6) of [ABNF] or in the syntax of [MSGFMT].
-
- Reverse-path = Path
-
- Forward-path = Path
-
- Path = "<" [ A-d-l ":" ] Mailbox ">"
-
- A-d-l = At-domain *( "," A-d-l ) ; Note that this form, the
- so-called "source route", MUST BE
- accepted, SHOULD NOT be generated,
- and SHOULD be ignored.
-
- At-domain = "@" Domain
-
- Mail-parameters = *( <SP> Keyword "=" Argument )
-
- Rcpt-parameters = *( <SP> Keyword "=" Argument )
-
- Keyword = Ldh-str
- Argument = Atom
-
- Domain = sub-domain 1*("." sub-domain) / address-literal
-
- sub-domain = let-dig *(Ldh-str)
- address-literal = "[" IPv4-address-literal /
- IPv6-address-literal / General-address-literal "]"
- IPv4-address-literal = snum 3*3("." snum)
- IPv6-address-literal = "IPv6 " IPv6-addr-string
- IPv6-addr-string = String ; IPv6 address in standard form
- [IPv6AddrSpec]. Since this
- form uses colon characters,
- the String will actually need
- to be quoted in all cases.
- General-address-literal = Standardized-tag <SP> String
- Standardized-tag = Ldh-str ; Specified in a
- standards-track RFC
- and registered with IANA
- snum = 1*3Digit ; representing a decimal integer
- value in the range 0 through 255
- let-dig = Alpha / Digit
- ldh-str = *( Alpha / Digit / "-" ) let-dig
-
- Mailbox = Local-part "@" Domain
-
- Local-part = Dot-string / Quoted-string
-
- Dot-string = Atom [ "." Atom ]
-
-While the above definition for Local-part is relatively permissive, for
-maximum interoperability, a host that expects to receive mail SHOULD avoid
-defining mailboxes where the Local-part requires (or uses) the
-Quoted-string form or where the Local-part is case-sensitive. For any
-purposes that require generating or comparing Local-parts (e.g., to
-specific mailbox names), all quoted forms MUST be treated as equivalent and
-the sending system SHOULD transmit the form that uses the minimum quoting
-possible.
-
-Systems MUST NOT define mailboxes in such a way as to require the use of
-non-ASCII characters (octets with the high order bit set to one) or ASCII
-"control characters" (decimal value 0-31 and 127). These characters MUST
-NOT be used in MAIL FROM or RCPT TO commands or other commands that require
-mailbox names.
-
- String = Atom / Quoted-string
-
- special = <<Msg-fmt-special>> / [[placeholder, see above]]
- the control characters (ASCII codes 0 through 31
- inclusive and 127)
-
-Note that the backslash, "\", is a quote character, which is used to
-indicate that the next character is to be used literally (instead of its
-normal interpretation). For example, "Joe\,Smith" indicates a single nine
-character user field with the comma being the fourth character of the
-field.
-
-To promote interoperability and consistent with long-standing guidance
-about conservative use of the DNS in naming and applications (e.g., see
-section 2.3.1 of the base DNS document [RFC-1015]), characters outside the
-set of alphas, digits, and hyphen MUST NOT appear in domain name labels
-for SMTP clients or servers. In particular, the underscore character is
-not permitted. SMTP servers that receive a command in which illegal
-character codes have been employed, and for which there are no other
-reasons for rejection, MUST reject that command with a 501 response.
-
-4.1.3 Address Literals
-
-Sometimes a host is not known to the domain name system and communication
-(and, in particular, communication to report and repair the error) is
-blocked. To bypass this barrier a special literal form of the address is
-allowed as an alternative to a domain name. For IPv4 addresses, this form
-uses four small decimal integers separated by dots and enclosed by brackets
-such as [123.255.37.2], which indicates an (IPv4) Internet Address in
-sequence-of-octets form. For IPv6 and other forms of addressing that might
-eventually be standardized, the form consists of a standardized "tag" that
-identifies the address syntax, a space, and the address itself, in a format
-specified as part of the IPv6 standards [IPv6AddrSpec].
-
-4.1.4 Order of Commands
-
-There are restrictions on the order in which these commands may be used.
-
-A session that will contain mail transactions MUST first be initialized by
-the use of the EHLO command. An SMTP server SHOULD accept commands for
-non-mail transactions (e.g., VRFY or EXPN) without this initialization.
-
-An EHLO command MAY be issued by a client later in the session. If it is
-issued after the session begins, the SMTP server MUST clear all buffers and
-reset the state exactly as if a RSET command had been issued. In other
-words, the sequence of RSET followed immediately by EHLO is redundant, but
-not harmful other than in the performance cost of executing unnecessary
-commands.
-
-If the EHLO command is not acceptable to the SMTP server, 501, 500, or 502
-failure replies MUST be returned as appropriate. The SMTP server MUST stay
-in the same state after transmitting these replies that it was in before
-the EHLO was received.
-
-The SMTP client MUST, if possible, ensure that the domain parameter to the
-EHLO command is a valid principal host name (not a CNAME or MX name) for
-its host. If this is not possible (e.g., when the client's address is
-dynamically assigned and the client does not have an obvious name), an
-address literal SHOULD be substituted for the domain name and supplemental
-information provided that will assist in identifying the client.
-
-An SMTP server MAY verify that the domain name parameter in the EHLO
-command actually corresponds to the IP address of the client. However, the
-server MUST NOT refuse to accept a message for this reason if the
-verification fails: the information about verification failure is for
-logging and tracing only.
-
-The NOOP, HELP, EXPN, VRFY, and RSET commands can be used at any time
-during a session, or without previously initializing a session. SMTP
-servers SHOULD process these normally (that is, not return a 503 code) even
-if no EHLO command has yet been received; clients SHOULD open a session
-with EHLO before sending these commands.
-
-If these rules are followed, the example in RFC 821 that shows "550 access
-denied to you" in response to an EXPN command is incorrect unless an EHLO
-command precedes the EXPN or the denial of access is based on the client's
-IP address or other authentication or authorization-determining mechanisms.
-
-The MAIL command (or the obsolete SEND, SOML, or SAML commands) begins a
-mail transaction. Once started, a mail transaction consists of a
-transaction beginning command, one or more RCPT commands, and a DATA
-command, in that order. A mail transaction may be aborted by the RSET (or
-a new EHLO) command. There may be zero or more transactions in a session.
-MAIL (or SEND, SOML, or SAML) MUST NOT be sent if a mail transaction is
-already open, i.e., it should be sent only if no mail transaction had been
-started in the session, or it the previous one successfully concluded with
-a successful DATA command, or if the previous one was aborted with a RSET.
-
-If the transaction beginning command argument is not acceptable, a 501
-failure reply MUST be returned and the SMTP server MUST stay in the same
-state. If the commands in a transaction are out of order to the degree
-that they cannot be processed by the server, a 503 failure reply MUST be
-returned and the SMTP server MUST stay in the same state.
-
-The last command in a session MUST be the QUIT command. The QUIT command
-cannot be used at any other time in a session, but SHOULD be used by the
-client SMTP to request connection closure, even when no session opening
-command was sent and accepted.
-
-4.1.5 Private-use Commands
-
-As specified in section 2.2.2, commands starting in "X" may be used by
-bilateral agreement between the client (sending) and server (receiving)
-SMTP agents. An SMTP server that does not recognize such a command is
-expected to reply with "500 Command not recognized". An extended SMTP
-server MAY list the feature names associated with these private commands in
-the response to the EHLO command.
-
-Commands sent or accepted by SMTP systems that do not start with "X" MUST
-conform to the requirements of section 2.2.2.
-
-4.2 SMTP Replies
-
-Replies to SMTP commands serve to ensure the synchronization of requests
-and actions in the process of mail transfer and to guarantee that the SMTP
-client always knows the state of the SMTP server. Every command MUST
-generate exactly one reply.
-
-The details of the command-reply sequence are described in section 4.3.
-
-An SMTP reply consists of a three digit number (transmitted as three
-alphanumeric characters) followed by some text unless specified otherwise
-in this document. The number is for use by automata to determine what
-state to enter next; the text is for the human user. The three digits
-contain enough encoded information that the SMTP client need not examine
-the text and may either discard it or pass it on to the user, as
-appropriate. Exceptions are as noted elsewhere in this document. In
-particular, the 220, 221, 251, 421, and 551 reply codes are associated
-with message text that must be parsed and interpreted by machines. In the
-general case, the text may be receiver dependent and context dependent, so
-there are likely to be varying texts for each reply code. A discussion of
-the theory of reply codes is given in section 4.2.1. Formally, a reply is
-defined to be the sequence: a three-digit code, <SP>, one line of text,
-and <CRLF>, or a multiline reply (as defined in section 4.2.1). Since, in
-violation of this specification, the text is sometimes not sent, clients
-which do not receive it SHOULD be prepared to process the code alone (with
-or without a trailing space character). Only the EHLO, EXPN, and HELP
-commands are expected to result in multiline replies in normal
-circumstances, however, multiline replies are allowed for any command.
-
-In ABNF, server responses are:
-
- Greeting = "220 " Domain [ SP text ] CRLF
- Reply-line = Reply-code [ SP text ] CRLF
-
-where "Greeting" appears only in the 220 response that announces that the
-server is opening its part of the connection.
-
-An SMTP server SHOULD send only the reply codes listed in this document.
-An SMTP server SHOULD use the text shown in the examples whenever
-appropriate.
-
-An SMTP client MUST determine its actions only by the reply code, not by
-the text (except for 251 and 551 and, if necessary, 220, 221, and 421
-replies); in the general case, any text, including no text at all (although
-senders SHOULD NOT send bare codes), MUST be acceptable. The space (blank)
-following the reply code is considered part of the text. Whenever
-possible, a receiver-SMTP SHOULD test the first digit (severity indication)
-of the reply code.
-
-The list of codes that appears below must not be construed as permanent.
-While the addition of new codes should be a rare and significant activity,
-with supplemental information in the textual part of the response being
-preferred, new codes may be added as the result of new Standards or
-Standards-track specifications. Consequently, a sender-SMTP MUST be
-prepared to handle codes not specified in this document and MUST do so by
-interpreting the first digit only.
-
-4.2.1 Reply Code Severities and Theory
-
-The three digits of the reply each have a special significance. The first
-digit denotes whether the response is good, bad or incomplete. An
-unsophisticated SMTP client, or one that receives an unexpected code, will
-be able to determine its next action (proceed as planned, redo, retrench,
-etc.) by examining this first digit. An SMTP client that wants to know
-approximately what kind of error occurred (e.g., mail system error, command
-syntax error) may examine the second digit. The third digit and any
-supplemental information that may be present is reserved for the finest
-gradation of information.
-
-There are five values for the first digit of the reply code:
-
-1yz Positive Preliminary reply
- The command has been accepted, but the requested action is being held in
- abeyance, pending confirmation of the information in this reply. The
- SMTP client should send another command specifying whether to continue
- or abort the action. Note: unextended SMTP does not have any commands
- that allow this type of reply, and so does not have continue or abort
- commands.
-
-2yz Positive Completion reply
- The requested action has been successfully completed. A new request may
- be initiated.
-
-3yz Positive Intermediate reply
- The command has been accepted, but the requested action is being held in
- abeyance, pending receipt of further information. The SMTP client
- should send another command specifying this information. This reply is
- used in command sequence groups (i.e., in DATA).
-
-4yz Transient Negative Completion reply
- The command was not accepted, and the requested action did not occur.
- However, the error condition is temporary and the action may be
- requested again. The sender should return to the beginning of the
- command sequence (if any). It is difficult to assign a meaning to
- "transient" when two different sites (receiver- and sender- SMTP agents)
- must agree on the interpretation. Each reply in this category might have
- a different time value, but the SMTP client is encouraged to try again.
- A rule of thumb to determine whether a reply fits into the 4yz or the
- 5yz category (see below) is that replies are 4yz if they can be
- successful if repeated without any change in command form or in
- properties of the sender or receiver (that is, the command is repeated
- identically and the receiver does not put up a new implementation.)
-
-5yz Permanent Negative Completion reply
- The command was not accepted and the requested action did not occur.
- The SMTP client is discouraged from repeating the exact request (in the
- same sequence). Even some "permanent" error conditions can be
- corrected, so the human user may want to direct the SMTP client to
- reinitiate the command sequence by direct action at some point in the
- future (e.g., after the spelling has been changed, or the user has
- altered the account status).
-
-The second digit encodes responses in specific categories:
-
-x0z Syntax: These replies refer to syntax errors, syntactically correct
- commands that don't fit any functional category, and unimplemented or
- superfluous commands.
-
-x1z Information: These are replies to requests for information, such as
- status or help.
-
-x2z Connections: These are replies referring to the transmission channel.
-
-x3z Unspecified.
-
-x4z Unspecified.
-
-x5z Mail system: These replies indicate the status of the receiver mail
- system vis-a-vis the requested transfer or other mail system action.
-
-The third digit gives a finer gradation of meaning in each category
-specified by the second digit. The list of replies illustrates this. Each
-reply text is recommended rather than mandatory, and may even change
-according to the command with which it is associated. On the other hand,
-the reply codes must strictly follow the specifications in this section.
-Receiver implementations should not invent new codes for slightly different
-situations from the ones described here, but rather adapt codes already
-defined.
-
-For example, a command such as NOOP, whose successful execution does not
-offer the SMTP client any new information, will return a 250 reply. The
-reply is 502 when the command requests an unimplemented non-site-specific
-action. A refinement of that is the 504 reply for a command that is
-implemented, but that requests an unimplemented parameter.
-
-The reply text may be longer than a single line; in these cases the
-complete text must be marked so the SMTP client knows when it can stop
-reading the reply. This requires a special format to indicate a multiple
-line reply.
-
-The format for multiline replies requires that every line, except the last,
-begin with the reply code, followed immediately by a hyphen, "-" (also
-known as minus), followed by text. The last line will begin with the reply
-code, followed immediately by <SP>, optionally some text, and <CRLF>. As
-noted above, servers SHOULD send the <SP> if subsequent text is not sent,
-but clients MUST be prepared for it to be omitted.
-
-For example:
- 123-First line
- 123-Second line
- 123-234 text beginning with numbers
- 123 The last line
-
-In many cases the SMTP client then simply needs to search for the reply
-code followed by <SP> at the beginning of a line, and ignore all preceding
-lines. In a few cases, there is important data for the client in the
-reply "text". The client will be able to identify these cases from the
-current context.
-
-4.2.2 Reply Codes by Function Groups
-
- 500 Syntax error, command unrecognized
- (This may include errors such as command line too long)
- 501 Syntax error in parameters or arguments
- 502 Command not implemented (see section 4.2.4)
- 503 Bad sequence of commands
- 504 Command parameter not implemented
-
- 211 System status, or system help reply
- 214 Help message
- (Information on how to use the receiver or the meaning of a
- particular non-standard command; this reply is useful only
- to the human user)
-
- 220 <domain> Service ready
- 221 <domain> Service closing transmission channel
- 421 <domain> Service not available, closing transmission channel
- (This may be a reply to any command if the service knows it
- must shut down)
-
- 250 Requested mail action okay, completed
- 251 User not local; will forward to <forward-path>
- (See section 3.4)
- 252 Cannot VRFY user, but will accept message and attempt
- delivery
- (See section 3.5.3)
- 450 Requested mail action not taken: mailbox unavailable
- (e.g., mailbox busy)
- 550 Requested action not taken: mailbox unavailable
- (e.g., mailbox not found, no access, or command rejected
- for policy reasons)
- 451 Requested action aborted: error in processing
- 551 User not local; please try <forward-path>
- (See section 3.4)
- 452 Requested action not taken: insufficient system storage
- 552 Requested mail action aborted: exceeded storage allocation
- 553 Requested action not taken: mailbox name not allowed
- (e.g., mailbox syntax incorrect)
- 354 Start mail input; end with <CRLF>.<CRLF>
- 554 Transaction failed (Or, in the case of a connection-opening
- response, "No SMTP service here")
-
-4.2.3 Reply Codes in Numeric Order
-
- 211 System status, or system help reply
- 214 Help message
- (Information on how to use the receiver or the meaning of a
- particular non-standard command; this reply is useful only
- to the human user)
- 220 <domain> Service ready
- 221 <domain> Service closing transmission channel
- 250 Requested mail action okay, completed
- 251 User not local; will forward to <forward-path>
- (See section 3.4)
- 252 Cannot VRFY user, but will accept message and attempt
- delivery
- (See section 3.5.3)
-
- 354 Start mail input; end with <CRLF>.<CRLF>
-
- 421 <domain> Service not available, closing transmission channel
- (This may be a reply to any command if the service knows it
- must shut down)
- 450 Requested mail action not taken: mailbox unavailable
- (e.g., mailbox busy)
- 451 Requested action aborted: local error in processing
- 452 Requested action not taken: insufficient system storage
-
- 500 Syntax error, command unrecognized
- (This may include errors such as command line too long)
- 501 Syntax error in parameters or arguments
- 502 Command not implemented (see section 4.2.4)
- 503 Bad sequence of commands
- 504 Command parameter not implemented
- 550 Requested action not taken: mailbox unavailable
- (e.g., mailbox not found, no access, or command rejected
- for policy reasons)
- 551 User not local; please try <forward-path>
- (See section 3.4)
- 552 Requested mail action aborted: exceeded storage allocation
- 553 Requested action not taken: mailbox name not allowed
- (e.g., mailbox syntax incorrect)
- 554 Transaction failed (Or, in the case of a connection-opening
- response, "No SMTP service here")
-
-4.2.4 Reply Code 502
-
-Questions have been raised as to when reply code 502 (Command not
-implemented) SHOULD be returned in preference to other codes. 502 SHOULD
-be used when the command is actually recognized by the SMTP server, but not
-implemented. If the command is not recognized, code 500 SHOULD be
-returned. Extended SMTP systems MUST NOT list capabilities in response to
-EHLO for which they will return 502 (or 500) replies.
-
-4.2.5 Reply Codes After DATA and the Subsequent <CRLF>.<CRLF>
-
-When an SMTP server returns a positive completion status (2yz code) after
-the DATA command is completed with <CRLF>.<CRLF>, it accepts responsibility
-for:
-
- - delivering the message (if the recipient mailbox exists), or
-
- - if attempts to deliver the message fail due to transient conditions,
- retrying delivery some reasonable number of times at intervals as
- specified in section 4.5.4.
-
- - if attempts to deliver the message fail due to permanent conditions, or
- if repeated attempts to deliver the message fail due to transient
- conditions, returning appropriate notification to the sender of the
- original message (using the address in the SMTP MAIL FROM command).
-
-When an SMTP server returns a transient error completion status (4yz) code
-after the DATA command is completed with <CRLF>.<CRLF>, it MUST NOT make
-any further attempt to deliver that message. The SMTP client retains
-responsibility for delivery of that message and may either return it to the
-user or requeue it for a subsequent attempt (see section 4.5.4.1). The
-sending user SHOULD be able to interpret the return of a transient or
-permanent failure status as a non-delivery indication.
-
-When an SMTP server returns a permanent error status (5yz) code after
-the DATA command is completely with <CRLF>.<CRLF>, it MUST NOT make
-any further attempt to deliver the message. As with temporary error
-status codes, the SMTP client retains responsibility for the message,
-but SHOULD not again attempt delivery to the same server without user
-review and intervention of the message.
-
-4.3 Sequencing of Commands and Replies
-
-4.3.1 Sequencing Overview
-
-The communication between the sender and receiver is an alternating
-dialogue, controlled by the sender. As such, the sender issues a command
-and the receiver responds with a reply. Unless other arrangements are
-negotiated through service extensions, the sender MUST wait for this
-response before sending further commands.
-
-One important reply is the connection greeting. Normally, a receiver will
-send a 220 "Service ready" reply when the connection is completed. The
-sender SHOULD wait for this greeting message before sending any commands.
-
-Note: all the greeting-type replies have the official name (the
-fully-qualified primary domain name) of the server host as the first word
-following the reply code. Sometimes the host will have no meaningful name.
-See 4.1.3 for a discussion of alternatives in these situations.
-
-For example,
- 220 ISIF.USC.EDU Service ready
-or
- 220 mail.foo.com SuperSMTP v 6.1.2 Service ready
-or
- 220 [10.0.0.1] Clueless host service ready
-
-The table below lists alternative success and failure replies for each
-command. These SHOULD be strictly adhered to: a receiver may substitute
-text in the replies, but the meaning and action implied by the code numbers
-and by the specific command reply sequence cannot be altered.
-
-4.3.2 Command-Reply Sequences
-
-Each command is listed with its usual possible replies. The prefixes used
-before the possible replies are "I" for intermediate, "S" for success, and
-"E" for error. Since some servers may generate other replies under special
-circumstances, and to allow for future extension, SMTP clients SHOULD, when
-possible, interpret only the first digit of the reply and MUST be prepared
-to deal with unrecognized reply codes by interpreting the first digit only.
-Unless extended using the mechanisms described in section 2.2, SMTP servers
-MUST NOT transmit reply codes to an SMTP client that are other than three
-digits or that do not start in a digit between 2 and 5 inclusive.
-
-These sequencing rules and, in principle, the codes themselves, can be
-extended or modified by SMTP extensions offered by the server and accepted
-(requested) by the client.
-
-In addition to the codes listed below, any SMTP command can return any of
-the following codes if the corresponding unusual circumstances are
-encountered:
-
-500 For the "command line too long" case or if the command name was not
- recognized. Note that producing a "command not recognized" error in
- response to the required subset of these commands is a violation of this
- specification.
-
-501 Syntax error in command or arguments. In order to provide for future
- extensions, commands that are specified in this document as not
- accepting arguments (DATA, RSET, QUIT) SHOULD return a 501 message if
- arguments are supplied in the absence of EHLO-advertised extensions.
-
-421 Service shutting down and closing transmission channel
-
-Specific sequences are:
-
-CONNECTION ESTABLISHMENT
- S: 220
- E: 554
-EHLO or HELO
- S: 250
- E: 504, 550
-MAIL
- S: 250
- E: 552, 451, 452, 550, 553, 503
-RCPT
- S: 250, 251 (but see section 3.4 for discussion of 251)
- E: 550, 551, 552, 553, 450, 451, 452, 503, 550
-DATA
- I: 354 -> data -> S: 250
- E: 552, 554, 451, 452
- E: 451, 554, 503
-RSET
- S: 250
-VRFY
- S: 250, 251, 252
- E: 550, 551, 553, 502, 504
-EXPN
- S: 250, 252
- E: 550, 500, 502, 504
-HELP
- S: 211, 214
- E: 502, 504
-NOOP
- S: 250
-QUIT
- S: 221
-
-4.4 Trace Information
-
-When an SMTP server receives a message for delivery or further processing,
-it MUST insert trace ("time stamp" or "Received") information at the
-beginning of the message content, as discussed in section 4.1.1.4.
-
-This line MUST be structured as follows:
-
- - The FROM field, which MUST be supplied in an SMTP environment, SHOULD
- contain both (1) the name of the source host as presented in the EHLO
- command and (2) an address literal containing the IP address of the
- source, determined from the TCP connection.
-
- - The ID field MAY contain an "@" as suggested in RFC-822, but this is not
- required.
-
- - The FOR field MAY contain a list of <path> entries when multiple RCPT
- commands have been given. This may raise some security issues and is
- usually not desirable; see section 7.2.
-
-An Internet mail program MUST NOT change a Received: line that was
-previously added to the message header. SMTP servers MUST prepend Received
-lines to messages; they MUST NOT change the order of existing lines or
-insert Received lines in any other location.
-
-As the Internet grows, comparability of Received fields is important for
-detecting problems, especially slow relays. SMTP servers that create
-Received fields SHOULD use explicit offsets in the dates (e.g., -0800),
-rather than time zone names of any type. Local time (with an offset) is
-preferred to UT when feasible. This formulation allows slightly more
-information about local circumstances to be specified. If UT is needed,
-the receiver need merely do some simple arithmetic to convert the values.
-Use of UT loses information about the time zone-location of the server. If
-a time zone name is used, it SHOULD be included in a comment.
-
-When the delivery SMTP server makes the "final delivery" of a message, it
-inserts a return-path line at the beginning of the mail data. This use of
-return-path is required; mail systems MUST support it. The return-path
-line preserves the information in the <reverse-path> from the MAIL
-command. Here, final delivery means the message has left the SMTP
-enviroment. Normally, this would mean it had been delivered to the
-destination user or an associated mail drop, but in some cases it may be
-further processed and transmitted by another mail system.
-
-It is possible for the mailbox in the return path to be different from the
-actual sender's mailbox, for example, if error responses are to be
-delivered to a special error handling mailbox rather than to the message
-sender. When mailing lists are involved, this arrangement is common and
-useful as a means of directing errors to the list maintainer rather than
-the message originator.
-
-The text above implies that the final mail data will begin with a return
-path line, followed by one or more time stamp lines. These lines will be
-followed by the mail data headers and body [MSGFMT].
-
-It is sometimes difficult for an SMTP server to determine whether or not it
-is making final delivery since forwarding or other operations may occur
-after the message is accepted for delivery. Consequently, any further
-(forwarding, gateway, or relay) systems MAY remove the return path and
-rebuild the MAIL FROM command as needed to ensure that exactly one such
-line appears in a delivered message.
-
-A message-originating SMTP system SHOULD NOT send a message that already
-contains a Return-path header. SMTP servers performing a relay function
-MUST NOT inspect the message data, and especially not to the extent needed
-to determine if Return-path headers are present. SMTP servers making final
-delivery MAY remove Return-path headers before adding their own.
-
-The primary purpose of the Return-path is to designate the address to which
-messages indicating non-delivery or other mail system failures are to be
-sent. For this to be unambiguous, exactly one return path SHOULD be
-present when the message is delivered. Systems using RFC 822 syntax with
-non-SMTP transports SHOULD designate an unambiguous address, associated
-with the transport envelope, to which error reports (e.g., non-delivery
-messages) should be sent.
-
-Historical note: Text in RFC 822 that appears to contradict the use of the
-Return-path header (or the envelope MAIL FROM address) as the destination
-for error messages is not applicable on the Internet. The MAIL FROM address
-(as copied into the Return-path) MUST be used as the target of any mail
-containing delivery error messages.
-
-In particular:
-
- - a gateway from SMTP->elsewhere SHOULD insert a return-path header,
- unless it is known that the "elsewhere" transport also uses Internet
- domain addresses and maintains the envelope sender address separately.
-
- - a gateway from elsewhere->SMTP SHOULD delete any return-path header
- present in the message, and either copy that information to the SMTP
- envelope or combine it with information present in the envelope of the
- other transport system to construct the MAIL FROM part of the SMTP
- envelope.
-
-The server must give special treatment to cases in which the processing
-following the end of mail data indication is only partially successful.
-This could happen if, after accepting several recipients and the mail data,
-the SMTP server finds that the mail data could be successfully delivered to
-some, but not all, of the recipients. In such cases, the response to the
-DATA command MUST be an OK reply. However, the SMTP server MUST compose
-and send an "undeliverable mail" notification message to the originator of
-the message.
-
-A single notification listing all of the failed recipients or separate
-notification messages MUST be sent for each failed recipient. For economy
-of processing by the sender, the former is preferred when possible. All
-undeliverable mail notification messages are sent using the MAIL command
-(even if they result from processing the obsolete SEND, SOML, or SAML
-commands) and use a null return path as discussed in section 3.7.
-
-The time stamp line and the return path line are formally defined as
-follows:
-
- Return-path-line = "Return-Path:" FWS Reverse-path <CRLF>
-
- Time-stamp-line = "Received:" FWS Stamp <CRLF>
-
- Stamp = From-domain By-domain Opt-info ";" FWS Daytime
-
- From-domain = "FROM" FWS Extended-Domain CFWS
-
- By-domain = "BY" FWS Extended-Domain CFWS
-
- Extended-Domain = Domain /
- ( Domain FWS "(" TCP-info ")" ) /
- ( Address-literal FWS "(" TCP-info ")"
- TCP-info = Address-literal / ( Domain FWS Address-literal )
- ; Information derived by server from TCP connection,
- not client EHLO.
-
- Opt-info = [Via] [With] [ID] [For]
-
- Via = "VIA" FWS Link CFWS
-
- With = "WITH" FWS Protocol CFWS
-
- ID = "ID" FWS String / msg-id CFWS
-
- For = "FOR" FWS 1*( Path / Mailbox ) CFWS
-
- Link = "TCP" / Addtl-Link
- Addtl-Link = Atom ; Additional standard names for links are
- registered with the Internet Assigned
- Numbers Authority (IANA). "Via" is
- primarily of value with non-Internet
- transports.
- SMTP servers SHOULD NOT use unregistered
- names.
- Protocol = "ESMTP" / "SMTP" / Attdl-Protocol
- Attdl-Protocol = Atom ; Additional standard names for protocols
- are registered with the Internet Assigned
- Numbers Authority (IANA). SMTP servers
- SHOULD NOT use unregistered names.
-
- Daytime = FWS [ day-of-week "," FWS ] Date FWS Time
-
- Date = DD FWS Mon FWS YYYY
- ; Note that the earlier form, which permits two-digit years, has
- been deprecated. SMTP systems MUST use four-digit years.
-
- Time = HH ":" MM ":" SS FWS Zone
-
- DD = 1*2Digit ; the one or two digit integer day of the
- month in the range 1 to 31.
-
- Mon = "JAN" | "FEB" | "MAR" | "APR" | "MAY" | "JUN" |
- "JUL" | "AUG" | "SEP" | "OCT" | "NOV" | "DEC"
-
- YYYY = 4*4Digit ; the four decimal integer year in the range
- 0000 to 9999.
-
- HH = 2*2Digit ; the two decimal digit hour of the day in
- the range 00 to 24.
-
- MM = 2*2Digit ; the two decimal digit integer minute of the hour
- in the range 00 to 59.
-
- SS = 2*2Digit [ "." 1*Digit ]
- ; the two decimal digit integer second of the
- minute in the range 00 to 60 (to allow
- for leap seconds), with optional
- fractional seconds.
-
- Zone = ( "+" / "-" ) 4*4Digit [ <SP> "(" String ")" ]
- ; A four digit, signed time zone offset,
- such as -0500 for US Eastern Standard
- Time. This may be supplemented by a time
- zone name in parentheses, e.g., "-0800
- (PDT)". Note that there is no default;
- time zone information is required and
- MUST be supplied.
-
-4.5 Additional Implementation Issues
-
-4.5.1 Minimum Implementation
-
-In order to make SMTP workable, the following minimum implementation is
-required for all receivers. The following commands MUST be supported to
-conform to this specification:
- EHLO
- HELO
- MAIL
- RCPT
- DATA
- RSET
- NOOP
- QUIT
- VRFY
-
-Any system that includes an SMTP server supporting mail relaying or
-delivery MUST support the reserved mailbox "postmaster" as a
-case-insensitive local name. This postmaster address is not strictly
-necessary if the server always returns 554 on connection opening (as
-described in section 3.1). The requirement to accept mail for postmaster
-implies that RCPT TO commands which specify a mailbox for postmaster at any
-of the domains for which the SMTP server provides mail service, as well as
-the special case of "RCPT TO:<Postmaster>" (with no domain specification),
-MUST be supported. This requirement does not imply that SMTP systems must
-deliver Postmaster mail in particular cases (e.g., problematic origin
-addresses) in which they have substantive reasons for not doing so.
-
-4.5.2 Transparency
-
-Without some provision for data transparency, the character sequence
-"<CRLF>.<CRLF>" ends the mail text and cannot be sent by the user. In
-general, users are not aware of such "forbidden" sequences. To allow all
-user composed text to be transmitted transparently, the following
-procedures are used:
-
- - Before sending a line of mail text, the SMTP client checks the first
- character of the line. If it is a period, one additional period is
- inserted at the beginning of the line.
-
- - When a line of mail text is received by the SMTP server, it checks the
- line. If the line is composed of a single period, it is treated as the
- end of mail indicator. If the first character is a period and there are
- other characters on the line, the first character is deleted.
-
-The mail data may contain any of the 128 ASCII characters. All characters
-are to be delivered to the recipient's mailbox, including spaces, vertical
-and horizontal tabs, and other control characters. If the transmission
-channel provides an 8-bit byte (octets) data stream, the 7-bit ASCII codes
-are transmitted right justified in the octets, with the high order bits
-cleared to zero. See 3.7 for special treatment of these conditions in SMTP
-systems serving a relay function.
-
-In some systems it may be necessary to transform the data as it is received
-and stored. This may be necessary for hosts that use a different character
-set than ASCII as their local character set or store data in records rather
-than strings. If such transformations are necessary, they MUST be
-reversible, especially if such transformations are applied to mail being
-relayed.
-
-4.5.3 Sizes and Timeouts
-
-There are several objects that have required minimum/maximum sizes. Every
-implementation MUST be able to receive objects of at least these sizes.
-Objects larger than these sizes SHOULD be avoided when possible. However,
-some Internet mail constructs such as encoded X.400 addresses [RFC-X400]
-will often require larger objects: clients MAY attempt to transmit these,
-but MUST be prepared for a server to reject them if they cannot be handled
-by it. To the maximum extent possible, implementation techniques which
-impose no limits on the length of these objects should be used.
-
-local-part
- The maximum total length of a user name or other local-part is 64
- characters.
-
-domain
- The maximum total length of a domain name or number is 255 characters.
-
-path
- The maximum total length of a reverse-path or forward-path is 256
- characters (including the punctuation and element separators).
-
-command line
- The maximum total length of a command line including the command word
- and the <CRLF> is 512 characters. SMTP extensions may be used to
- increase this limit.
-
-reply line
- The maximum total length of a reply line including the reply code and
- the <CRLF> is 512 characters. More information may be conveyed through
- multiple-line replies.
-
-text line
- The maximum total length of a text line including the <CRLF> is 1000
- characters (not counting the leading dot duplicated for transparency).
- This number may be increased by the use of SMTP Service Extensions.
-
-message content
- The maximum total length of a message content (including any message
- headers as well as the message body) MUST BE at least 64K octets. Since
- the introduction of multimedia mail [RFC-MIME], message lengths on the
- Internet have grown dramatically, and message size restrictions should
- be avoided if at all possible. SMTP server systems that must impose
- restrictions SHOULD implement the "SIZE" service extension ([RFC-SIZE]),
- and SMTP client systems that will send large messages SHOULD utilize it
- when possible.
-
-recipients buffer
- The minimum total number of recipients that must be buffered is 100
- recipients. Rejection of messages (for excessive recipients) with fewer
- than 100 RCPT TO commands is a violation of this specification. The
- general principle that relaying SMTP servers MUST NOT, and delivery SMTP
- servers SHOULD NOT, perform validation tests on message headers suggests
- that rejecting a message based on the total number of recipients shown
- in header fields is to be discouraged. A server which imposes a limit
- on the number of recipients MUST behave in an orderly fashion, such as
- to reject additional addresses over its limit rather than silently
- discarding addresses previously accepted. A client that needs to
- deliver a message containing over 100 RCPT TO commands SHOULD be
- prepared to transmit in 100-recipient "chunks" if the server declines to
- accept more than 100 recipients in a single message.
-
-Errors due to exceeding these limits may be reported by using the reply
-codes. Some examples of reply codes are:
-
- 500 Line too long.
-or
- 501 Path too long
-or
- 452 Too many recipients (see below)
-or
- 552 Too much mail data.
-
-[RFC-821] incorrectly listed the error where an SMTP server exhausts its
-implementation limit on the number of RCPT TO commands ("too many
-recipients") as having reply code 552. The correct reply code for this
-condition is 452. Clients SHOULD treat a 552 code in this case as a
-temporary, rather than permanent failure so the logic below works.
-
-When a conforming SMTP server encounters this condition, it has at least
-100 successful RCPT commands in its recipients buffer. If the server is
-able to accept the message, then at least these 100 addresses will be
-removed from the SMTP client's queue. When the client attempts
-retransmission of those addresses which received 452 responses, at least
-100 of these will be able to fit in the SMTP server's recipients buffer.
-Each retransmission attempt which is able to deliver anything will be able
-to dispose of at least 100 of these recipients.
-
-If an SMTP server has an implementation limit on the number of RCPT TO
-commands and this limit is exhausted, it MUST use a response code of 452.
-If the server has a configured site-policy limitation on the number of RCPT
-TO commands, it MAY instead use a 5XX response code.
-
-In order to interoperate with SMTP servers implementing an older version of
-the protocol, SMTP clients MAY treat a 552 code obtained in response to an
-RCPT command as if it were a 452 response code, especially after some RCPT
-commands have already been accepted in the same mail transaction.
-
-An SMTP client MUST provide a timeout mechanism. It MUST use per-command
-timeouts rather than somehow trying to time the entire mail transaction.
-Timeouts SHOULD be easily reconfigurable, preferably without recompiling
-the SMTP code. To implement this, a timer is set for each SMTP command and
-for each buffer of the data transfer. The latter means that the overall
-timeout is inherently proportional to the size of the message.
-
-Based on extensive experience with busy mail-relay hosts, the minimum
-per-command timeout values SHOULD be as follows:
-
-Initial 220 Message: 5 minutes
- An SMTP client process needs to distinguish between a failed TCP
- connection and a delay in receiving the initial 220 greeting message.
- Many SMTP servers accept a TCP connection but delay delivery of the 220
- message until their system load permits more mail to be processed.
-
-MAIL Command: 5 minutes
-
-RCPT Command: 5 minutes
- A longer timeout is required if processing of mailing lists and aliases
- is not deferred until after the message was accepted.
-
-DATA Initiation: 2 minutes
- This is while awaiting the "354 Start Input" reply to a DATA command.
-
-Data Block: 3 minutes
- This is while awaiting the completion of each TCP SEND call transmitting
- a chunk of data.
-
-DATA Termination: 10 minutes.
- This is while awaiting the "250 OK" reply. When the receiver gets the
- final period terminating the message data, it typically performs
- processing to deliver the message to a user mailbox. A spurious timeout
- at this point would be very wasteful and would typically result in
- delivery of multiple copies of the message, since it has been
- successfully sent and the server has accepted responsibility for
- delivery. See section 6.1 for additional discussion.
-
-An SMTP server SHOULD have a timeout of at least 5 minutes while it is
-awaiting the next command from the sender.
-
-4.5.4 Queuing Strategies
-
-The common structure of a host SMTP implementation includes user mailboxes,
-one or more areas for queuing messages in transit, and one or more daemon
-processes for sending and receiving mail. The exact structure will vary
-depending on the needs of the users on the host and the number and size of
-mailing lists supported by the host. We describe several optimizations that
-have proved helpful, particularly for mailers supporting high traffic
-levels.
-
-Any queuing strategy MUST include timeouts on all activities on a
-per-command basis. A queuing strategy MUST NOT send error messages in
-response to error messages under any circumstances.
-
-4.5.4.1 Sending Strategy
-
-The general model for an SMTP client is one or more processes that
-periodically attempt to transmit outgoing mail. In a typical system, the
-program that composes a message has some method for requesting immediate
-attention for a new piece of outgoing mail, while mail that cannot be
-transmitted immediately MUST be queued and periodically retried by the
-sender. A mail queue entry will include not only the message itself but
-also the envelope information.
-
-The sender MUST delay retrying a particular destination after one attempt
-has failed. In general, the retry interval SHOULD be at least 30 minutes;
-however, more sophisticated and variable strategies will be beneficial when
-the SMTP client can determine the reason for non-delivery.
-
-Retries continue until the message is transmitted or the sender gives up;
-the give-up time generally needs to be at least 4-5 days. The parameters
-to the retry algorithm MUST be configurable.
-
-A client SHOULD keep a list of hosts it cannot reach and corresponding
-connection timeouts, rather than just retrying queued mail items.
-
-Experience suggests that failures are typically transient (the target
-system or its connection has crashed), favoring a policy of two connection
-attempts in the first hour the message is in the queue, and then backing
-off to one every two or three hours.
-
-The SMTP client can shorten the queuing delay in cooperation with the SMTP
-server. For example, if mail is received from a particular address, it is
-likely that mail queued for that host can now be sent. Application of this
-principle may, in many cases, eliminate the requirement for an explicit
-"send queues now" function such as that discussed in [RFC-ETRN].
-
-The strategy may be further modified as a result of multiple addresses per
-host (see below) to optimize delivery time vs. resource usage.
-
-An SMTP client may have a large queue of messages for each unavailable
-destination host. If all of these messages were retried in every retry
-cycle, there would be excessive Internet overhead and the sending system
-would be blocked for a long period. Note that an SMTP client can generally
-determine that a delivery attempt has failed only after a timeout of
-several minutes and even a one-minute timeout per connection will result in
-a very large delay if retries are repeated for dozens, or even hundreds, of
-queued messages to the same host.
-
-At the same time, SMTP clients SHOULD use great care in caching negative
-responses from servers. In an extreme case, if EHLO is issued multiple
-times during the same SMTP connection, different answers may be returned by
-the server. More significantly, 5yz responses to MAIL FROM MUST NOT be
-cached.
-
-When a mail message is to be delivered to multiple recipients, and the SMTP
-server to which a copy of the message is to be sent is the same for
-multiple recipients, then only one copy of the message SHOULD be
-transmitted. That is, the SMTP client SHOULD use the command sequence:
-MAIL, RCPT, RCPT,... RCPT, DATA instead of the sequence: MAIL, RCPT, DATA,
-..., MAIL, RCPT, DATA. However, if there are very many addresses, a limit
-on the number of RCPT commands per MAIL command MAY be imposed.
-Implementation of this efficiency feature is strongly encouraged.
-
-Similarly, to achieve timely delivery, the SMTP client MAY support multiple
-concurrent outgoing mail transactions. However, some limit may be
-appropriate to protect the host from devoting all its resources to mail.
-
-4.5.4.2 Receiving Strategy
-
-The SMTP server SHOULD attempt to keep a pending listen on the SMTP port at
-all times. This requires the support of multiple incoming TCP connections
-for SMTP. Some limit MAY be imposed.
-
-As discussed above, when the SMTP server receives mail from a particular
-host address, it could notify the SMTP client to retry any mail pending for
-that host address.
-
-4.5.5 Messages with a null reverse-path
-
-There are several types of notification messages which are required by
-existing and proposed standards to be sent with a null reverse path,
-namely non-delivery notifications as discussed in section 3.7, other kinds
-of Delivery Status Notifications (DSNs, see [RFC 1894]) and also Message
-Disposition Notifications (MDNs, see [RFC 2298]). All of these kinds of
-messages are notifications about a previous message, and they are sent to
-the reverse-path of the previous mail message. (If the delivery of such a
-notification message fails, that usually indicates a problem with the mail
-system of the host to which the notification message is addressed. For
-this reason, at some hosts the MTA is set up to forward such failed
-notification messages to someone who is able to fix problems with the mail
-system, e.g. via the postmaster alias.)
-
-All other types of messages (i.e. any message which is not required by a
-standards-track RFC to have a null reverse-path) SHOULD be sent with with
-a valid, non-null reverse-path.
-
-Implementors of automated email processors should be careful to make sure
-that the various kinds of messages with null reverse-path are handled
-correctly, in particular such systems SHOULD NOT reply to messages with
-null reverse-path.
-
-
-
-5. Address Resolution and Mail Handling
-
-Once an SMTP client lexically identifies a domain to which mail will be
-delivered for processing (as described in sections 3.6 and 3.7), a DNS
-lookup MUST be performed to resolve the domain name (see [RFC-DNS]). The
-names are expected to be fully-qualified domain names (FQDNs): mechanisms
-for inferring FQDNs from partial names or local aliases are outside of
-this specification and, due to a history of problems, are generally
-discouraged. The lookup first attempts to locate an MX record associated
-with the name. If a CNAME record is found instead, the resulting name is
-processed as if it were the initial name. If no MX records are found, but
-an A RR is found, the A RR is treated as if it was associated with an
-implicit MX RR, with a preference of 0, pointing to that host. If one or
-more MX RRs are found for a given name, SMTP systems MUST NOT utilize any
-A RRs associated with that name unless they are located using the MX RRs;
-the "implicit MX" rule above applies only if there are no MX records
-present. If MX records are present, but none of them are usable, this
-situation MUST be reported as an error.
-
-When the lookup succeeds, the mapping can result in a list of alternative
-delivery addresses rather than a single address, because of multiple MX
-records, multihoming, or both. To provide reliable mail transmission, the
-SMTP client MUST be able to try (and retry) each of the relevant addresses
-in this list in order, until a delivery attempt succeeds. However, there
-MAY also be a configurable limit on the number of alternate addresses that
-can be tried. In any case, a host SHOULD try at least two addresses.
-
-Two types of information is used to rank the host addresses: multiple MX
-records, and multihomed hosts.
-
-Multiple MX records contain a preference indication that MUST be used in
-sorting (see below). Lower numbers are more preferred than higher ones.
-If there are multiple destinations with the same preference and there is no
-clear reason to favor one (e.g., by recognition of an easily-reached
-address), then the sender-SMTP MUST randomize them to spread the load
-across multiple mail exchangers for a specific organization.
-
-The destination host (perhaps taken from the preferred MX record) may be
-multihomed, in which case the domain name resolver will return a list of
-alternative IP addresses. It is the responsibility of the domain name
-resolver interface to have ordered this list by decreasing preference if
-necessary, and SMTP MUST try them in the order presented.
-
-Although the capability to try multiple alternative addresses is required,
-specific installations may want to limit or disable the use of alternative
-addresses. The question of whether a sender should attempt retries using
-the different addresses of a multihomed host has been controversial. The
-main argument for using the multiple addresses is that it maximizes the
-probability of timely delivery, and indeed sometimes the probability of any
-delivery; the counter-argument is that it may result in unnecessary
-resource use. Note that resource use is also strongly determined by the
-sending strategy discussed in section 4.5.4.1.
-
-If a host receives a message with a destination for which it is a
-designated Mail eXchanger, it MAY relay the message (potentially after
-having rewritten the addresses), make final delivery of the message, or
-hand it off using some mechanism outside the SMTP-provided transport
-environment. Of course, neither of the latter require that the list of MX
-records be examined further.
-
-If it determines that it should relay the message without rewriting the
-address, it MUST sort the MX records to determine candidates for delivery.
-The records are first ordered by preference, with the lowest-numbered
-records being most preferred. The relay host MUST then inspect the list
-for any of the names or addresses by which it might be known in mail
-transactions. If a matching record is found, all records at that
-preference level and higher-numbered ones MUST be discarded from
-consideration. If there are no records left at that point, it is an error
-condition, and the message MUST be returned as undeliverable. If records
-do remain, they SHOULD be tried, best preference first, as described above.
-
-
-6. Problem Detection and Handling
-
-6.1 Reliable Delivery and Replies by Email
-
-When the receiver-SMTP accepts a piece of mail (by sending a "250 OK"
-message in response to DATA), it is accepting responsibility for delivering
-or relaying the message. It must take this responsibility seriously. It
-MUST NOT lose the message for frivolous reasons, such as because the host
-later crashes or because of a predictable resource shortage.
-
-If there is a delivery failure after acceptance of a message, the
-receiver-SMTP MUST formulate and mail a notification message. This
-notification MUST be sent using a null ("<>") reverse path in the envelope.
-The recipient of this notification MUST be the address from the envelope
-return path (or the Return-Path: line). However, if this address is null
-("<>"), the receiver-SMTP MUST NOT send a notification. Obviously, nothing
-in this section can or should prohibit local decisions (i.e., as part of
-the same system environment as the receiver-SMTP) to log or otherwise
-transmit information about null address events locally if that is desired.
-If the address is an explicit source route, it MUST be stripped down to its
-final hop.
-
-For example, suppose that an error notification must be sent for a message
-that arrived with:
- MAIL FROM:<@a,@b:user@d>
-
-The notification message SHOULD be sent using:
- RCPT TO:<user@d>
-
-Some delivery failures after the message is accepted by SMTP will be
-unavoidable. For example, it may be impossible for the receiving SMTP
-server to validate all the delivery addresses in RCPT command(s) due to a
-"soft" domain system error, because the target is a mailing list (see
-earlier discussion of RCPT), or because the server is acting as a relay and
-has no immediate access to the delivering system.
-
-To avoid receiving duplicate messages as the result of timeouts, a
-receiver-SMTP MUST seek to minimize the time required to respond to the
-final <CRLF>.<CRLF> end of data indicator. See RFC-1047 [RFC-1047] for a
-discussion of this problem.
-
-6.2 Loop Detection
-
-Simple counting of the number of "Received:" headers in a message has
-proven to be an effective, although rarely optimal, method of detecting
-loops in mail systems. SMTP servers using this technique SHOULD use a
-large rejection threshold, normally at least 100 Received entries.
-Whatever mechanisms are used, servers MUST contain provisions for detecting
-and stopping trivial loops.
-
-6.3 Compensating for Irregularities
-
-Unfortunately, variations, creative interpretations, and outright
-violations of Internet mail protocols do occur; some would suggest that
-they occur quite frequently. The debate as to whether a well-behaved SMTP
-receiver or relay should reject a malformed message, attempt to pass it on
-unchanged, or attempt to repair it to increase the odds of successful
-delivery (or subsequent reply) began almost with the dawn of structured
-network mail and shows no signs of abating. Advocates of rejection claim
-that attempted repairs are rarely completely adequate and that rejection of
-bad messages is the only way to get the offending software repaired.
-Advocates of "repair" or "deliver no matter what" argue that users prefer
-that mail go through it if at all possible and that there are significant
-market pressures in that direction. In practice, these market pressures
-may be more important to particular vendors than strict conformance to the
-standards, regardless of the preference of the actual developers.
-
-The problems associated with ill-formed messages were exacerbated by the
-introduction of the split-UA mail reading protocols [RFC-POP2, RFC-POP3,
-RFC-IMAP2, RFC-PCMAIL]. These protocols have encouraged the use of SMTP as
-a posting protocol, and SMTP servers as relay systems for these client
-hosts (which are often only intermittently connected to the Internet).
-Historically, many of those client machines lacked some of the mechanisms
-and information assumed by SMTP (and indeed, by the mail format protocol
-[RFC-822]). Some could not keep adequate track of time; others had no
-concept of time zones; still others could not identify their own names or
-addresses; and, of course, none could satisfy the assumptions that underlay
-RFC-822's conception of authenticated addresses.
-
-In response to these weak SMTP clients, many SMTP systems now complete
-messages that are delivered to them in incomplete or incorrect form. This
-strategy is generally considered appropriate when the server can identify
-or authenticate the client, and there are prior agreements between them.
-By contrast, there is at best great concern about fixes applied by a relay
-or delivery SMTP server that has little or no knowledge of the user or
-client machine.
-
-The following changes to a message being processed MAY be applied when
-necessary by an originating SMTP server, or one used as the target of SMTP
-as an initial posting protocol:
-
- - Addition of a message-id field when none appears
-
- - Addition of a date, time or time zone when none appears
-
- - Correction of addresses to proper FQDN format
-
-The less information the server has about the client, the less likely these
-changes are to be correct and the more caution and conservatism should be
-applied when considering whether or not to perform fixes and how. These
-changes MUST NOT be applied by an SMTP server that provides an intermediate
-relay function.
-
-In all cases, properly-operating clients supplying correct information are
-preferred to corrections by the SMTP server. In all cases, documentation of
-actions performed by the servers (in trace fields and/or header comments)
-is strongly encouraged.
-
-
-7. Security Considerations
-
-7.1 Mail Security and Spoofing
-
-SMTP mail is inherently insecure in that it is feasible for even fairly
-casual users to negotiate directly with receiving and relaying SMTP servers
-and create messages that will trick a naive recipient into believing that
-they came from somewhere else. Constructing such a message so that the
-"spoofed" behavior cannot be detected by an expert is somewhat more
-difficult, but not sufficiently so as to be a deterrent to someone who is
-determined and knowledgeable. Consequently, as knowledge of Internet mail
-increases, so does the knowledge that SMTP mail inherently cannot be
-authenticated, or integrity checks provided, at the transport level. Real
-mail security lies only in end-to-end methods involving the message bodies,
-such as those that can be provided in the MOSS framework [RFC-MOSS].
-
-Various protocol extensions and configuration options that provide
-authentication at the transport level (e.g., from an SMTP client to an SMTP
-server) improve somewhat on the traditional situation described above.
-However, unless they are accompanied by careful handoffs of responsibility
-in a carefully-designed trust environment, they remain inherently weaker
-than end-to-end mechanisms which use digitally signed messages rather than
-depending on the integrity of the transport system.
-
-Efforts to make it more difficult for users to set envelope MAIL FROM and
-header "From" fields to point to valid addresses other than their own are
-largely misguided: they frustrate legitimate applications in which mail is
-sent by one user on behalf of another or in which error (or normal) replies
-should be directed to a special address. (Systems that provide convenient
-ways for users to alter these fields on a per-message basis should attempt
-to establish a primary and permanent mailbox address for the user so that
-Sender fields within the message data can be generated sensibly.)
-
-This specification does not further address the authentication issues
-associated with SMTP other than to advocate that useful functionality not
-be disabled in the hope of providing some small margin of protection
-against an ignorant user who is trying to fake mail.
-
-7.2 "Blind" Copies
-
-Addresses that do not appear in the message headers may appear in the RCPT
-TO commands to an SMTP server for a number of reasons. The two most common
-involve the use of a mailing address as a "list exploder" (a single address
-that resolves into multiple addresses) and the appearance of "blind
-copies". Especially when more than one RCPT command is present, and in
-order to avoid defeating some of the purpose of these mechanisms, SMTP
-clients and servers SHOULD NOT copy the full set of RCPT TO command
-arguments into the headers, either as part of trace headers or as
-informational or private-extension headers. Since this rule is often
-violated in practice, and cannot be enforced, sending SMTP systems that are
-aware of "bcc" use MAY find it helpful to send each blind copy as a
-separate message transaction containing only a single RCPT TO command.
-
-There is no inherent relationship between either "reverse" (MAIL FROM, SAML
-FROM, etc.) or "forward" (RCPT TO) addresses in the SMTP transaction
-("envelope") and the addresses in the headers. Receiving systems SHOULD
-NOT attempt to deduce such relationships and use them to alter the headers
-of the message for delivery. The popular "Apparently-to" header is a
-violation of this principle and SHOULD NOT be used.
-
-7.3 VRFY, EXPN, and Security
-
-As discussed in section 3.5, individual sites may want to disable one or
-both VRFY or EXPN for security reasons. As a corollary to the above,
-implementations that permit this MUST NOT appear to have verified addresses
-that are not, in fact, verified. If a site disables these commands for
-security reasons, the SMTP server MUST return a 252 response, rather than a
-code that could be confused with successful or unsuccessful verification.
-
-Returning a 250 reply code with the address listed in the VRFY command
-after having checked it only for syntax violates this rule. Of course, an
-implementation that "supports" VRFY by always returning 550 whether or not
-the address is valid is equally not in conformance.
-
-Within the last few years, the contents of mailing lists have become
-popular as an address information source for so-called "spammers." The use
-of EXPN to "harvest" addresses has increased as list administrators have
-installed protections against inappropriate uses of the lists themselves.
-Implementations SHOULD still provide support for EXPN, but sites SHOULD
-carefully evaluate the tradeoffs. As authentication mechanisms are
-introduced into SMTP, some sites may choose to make EXPN available only to
-authenticated requestors.
-
-7.4 Information Disclosure in Announcements
-
-There has been an ongoing debate about the tradeoffs between the debugging
-advantages of announcing server type and version (and, sometimes, even
-server domain name) in the greeting response or in response to the HELP
-command and the disadvantages of exposing useful information to potential
-hostile attack. The utility of the debugging information is beyond doubt.
-Those who argue for making it available point out that it is far better to
-actually secure an SMTP server rather than hope that trying to conceal
-known vulnerabilities by hiding the server's precise identity will provide
-more protection. Sites are encouraged to evaluate the tradeoff with that
-issue in mind; implementations are strongly encouraged to minimally provide
-for making type and version information available in some way to other
-network hosts.
-
-7.5 Information Disclosure in Trace Fields
-
-In some circumstances, such as when mail originates from within a LAN whose
-hosts are not directly from the public Internet, trace ("Received") fields
-produced in conformance with this specification may disclose host names and
-similar information that would not normally be available. This ordinarily
-does not pose a problem, but sites with special concerns about name
-disclosure should be aware of it. Also, the optional FOR clause should be
-supplied with caution or not at all when multiple recipients are involved
-lest it inadvertently disclose the identities of "blind copy" recipients to
-others.
-
-7.6 Scope of Operation of SMTP Servers
-
-It is a well-established principle that an SMTP server may refuse to accept
-mail for any operational or technical reason that makes sense to the site
-providing the server. However, cooperation among sites and installations
-makes the Internet possible. If sites take excessive advantage of the
-right to reject traffic, the ubiquity of email availability (one of the
-strengths of the Internet) will be threatened; considerable care should be
-taken and balance maintained if a site decides to be selective about the
-traffic it will accept and process.
-
-In recent years, use of the relay function through arbitrary sites has been
-used as part of hostile efforts to hide the actual origins of mail. Some
-sites have decided to limit the use of the relay function to known or
-identifiable sources, and implementations SHOULD provide the capability to
-perform this type of filtering. When mail is rejected for these or other
-policy reasons, a 550 code SHOULD be used in response to EHLO, MAIL FROM,
-or RCPT TO as appropriate.
-
-
-8. IANA Considerations
-
-IANA will maintain three registries in support of this specification. The
-first consists of SMTP service extensions with the associated keywords,
-and, as needed, parameters and verbs. As specified in section 2.2.2, no
-entry may be made in this registry that starts in an "X". Entries may be
-made only for service extensions (and associated keywords, parameters, or
-verbs) that are defined in standards-track or experimental RFCs
-specifically approved by the IESG for this purpose.
-
-The second registry consists of "tags" that identify forms of domain
-literals other than those for IPv4 addresses (specified in RFC 821 and in
-this document) and IPv6 addresses (specified in this document). Additional
-literal types require standardization before being used; none are
-anticipated at this time.
-
-The third, established by RFC 821 and renewed by this specification, is a
-registry of link and protocol identifiers to be used with the "via" and
-"with" subclauses of the time stamp ("Received: header") described in
-section 4.4. Link and protocol identifiers in addition to those specified
-in this document may be registered only by standardization or by way of an
-RFC-documented, IESG-approved, Experimental protocol extension.
-
-
-9. References
-
-[8BITMIME] J. Klensin, N. Freed, M. Rose, E. Stefferud, D. Crocker, "SMTP
-Service Extension for 8bit-MIMEtransport", RFC 1652, 07/18/1994.
-
-[ABNF] Crocker, D., P. Overell, Eds., "Augmented BNF for Syntax
-Specifications: ABNF", RFC 2234, November 1997.
-
-[IPv6AddrSpec] Hinden, R and S. Deering, Eds. "IP Version 6 Addressing
-Architecture", RFC 1884, December 1995.
-
-[MSGFMT] P. Resnick, Work in progress, draft-ietf-drums-msg-fmt-05.txt,
-August, 1998
-
-[RFC-822] Crocker, D., "Standard for the Format of ARPA Internet Text
-Messages", RFC 822, Department of Electrical Engineering, University of
-Delaware, August 1982.
-
-[RFC-974] C. Partridge, "Mail routing and the domain system", RFC 974,
-01/01/1986
-
-[RFC-1047] C. Partridge, "Duplicate messages and SMTP", RFC 1047,
-02/01/1988.
-
-[RFC-1123] R. Braden, "Requirements for Internet hosts - application and
-support", 10/01/1989
-
-[RFC-BDAT] G. Vaudreuil, "SMTP Service Extensions for Transmission of Large
-and Binary MIME Messages", RFC 1830, 08/16/1995.
-
-[RFC-DNS] P. Mockapetris, "Domain names - implementation and
-specification", RFC 1035 and P. Mockapetris, "Domain names - concepts and
-facilities", RFC 1034. (STD 13)
-
-[RFC-ETRN] J. De Winter, "SMTP Service Extension for Remote Message Queue
-Starting", RFC 1985, 08/14/1996.
-
-[RFC-IMAP2] M. Crispin, "Interactive Mail Access Protocol - Version 2", RFC
-1176, 08/20/1990.
-
-[RFC-IMAP4] M. Crispin, "Internet Message Access Protocol - Version 4", RFC
-2060, 12/04/1996.
-
-[RFC-INTLHDR] K. Moore, "MIME (Multipurpose Internet Mail Extensions) Part
-Three: Message Header Extensions for Non-ASCII Text", RFC 2047, 12/02/1996.
-
-[RFC-MIME] N. Freed, N. Borenstein, "Multipurpose Internet Mail Extensions
-(MIME) Part One: Format of Internet Message Bodies", RFC 2045, 12/02/1996.
-
-[RFC-MOSS] S. Crocker, N. Freed, J. Galvin, S. Murphy, "MIME Object
-Security Services", RFC 1848, 10/03/1995.
-
-[RFC-NOTARY1] K. Moore, "SMTP Service Extension for Delivery Status
-Notifications", RFC 1891, 01/15/1996.
-
-[RFC-NOTARY2] K. Moore, G. Vaudreuil, "An Extensible Message Format for
-Delivery Status Notifications", RFC 1894, 01/15/1996.
-
-[RFC-PCMAIL] M. Lambert, "PCMAIL: A distributed mail system for personal
-computers", RFC 1056, 06/01/1988.
-
-[RFC-PIPELINE] N. Freed, A. Cargille, "SMTP Service Extension for Command
-Pipelining", RFC 1854, 10/04/1995.
-
-[RFC-POP2] M. Butler, D. Chase, J. Goldberger, J. Postel, J. Reynolds,
-"Post Office Protocol - version 2", RFC 937, 02/01/1985
-
-[RFC-POP3] J. Myers, M. Rose, "Post Office Protocol - Version 3", RFC 1930,
-5/14/96 (Std 53).
-
-[RFC-REPLY] G. Vaudreuil, "Enhanced Mail System Status Codes", RFC 1893,
-01/15/1996.
-
-[RFC-SIZE] J. Klensin, N. Freed, K. Moore, "SMTP Service Extension for
-Message Size Declaration", RFC 1870, 11/06/1995. (STD 10)
-
-[RFC-X400] S. Hardcastle-Kille, "Mapping between X.400(1988) / ISO 10021
-and RFC 822", RFC 1327, 05/18/1992.
-
-[SMTPEXT] J. Klensin, N. Freed, M. Rose, E. Stefferud, D. Crocker, "SMTP
-Service Extensions", RFC-1869, 11/06/1995. (STD 10)
-
-[TCP] Postel, J., ed., "Transmission Control Protocol - DARPA Internet
-Program Protocol Specification", RFC 793, USC/Information Sciences
-Institute, NTIS AD Number A111091, September 1981.
-
-[US-ASCII] United States of America Standards Institute (now American
-National Standards Institute), X3.4, 1968, "USA Code for Information
-Interchange". ANSI X3.4-1968 has been replaced by newer versions with
-slight modifications, but the 1968 version remains definitive for the
-Internet.
-
-
-10. Editor's Address
-
-John C. Klensin
-MCI Communications
-800 Boylston St., 7th floor
-Boston, MA 02199
-USA
-Email: Klensin@mci.net
-Phone: +1 617 960 1011
-Fax: +1 617 960 1009
-
-
-11. Acknowledgments
-
-Many people worked long and hard on the many iterations of this document.
-There was wide-ranging debate on the mailing list about many technical
-issues, and many contributors helped form the wording in this
-specification. The hundreds of participants in the many discussions since
-RFC 821 was produced are too numerous to mention, but they all helped this
-document become what it is.
-
-
-A. TCP Transport Service
-
-The TCP connection supports the transmission of 8-bit bytes. The SMTP data
-is 7-bit ASCII characters. Each character is transmitted as an 8-bit byte
-with the high-order bit cleared to zero. Service extensions may modify
-this rule to permit transmission of full 8-bit data bytes as part of the
-message body, but not in SMTP commands or responses.
-
-
-B. Generating SMTP Commands from RFC 822 Headers
-
-Some systems use RFC 822 headers (only) in a mail submission protocol, or
-otherwise generate SMTP commands from RFC 822 headers when such a message
-is handed to an MTA from a UA. While the MTA-UA protocol is a private
-matter, not covered by any Internet Standard, there are problems with this
-approach. For example, there have been repeated problems with proper
-handling of "bcc" copies and redistribution lists when information that
-conceptually belongs to a mail envelopes is not separated early in
-processing from header information (and kept separate).
-
-It is recommended that the UA provide its initial MTA with an envelope
-separate from the message itself. However, if the envelope is not
-supplied, SMTP commands SHOULD be generated as follows:
-
-1. Each recipient address from a TO, CC, or BCC header field SHOULD be
- copied to a RCPT command (generating multiple message copies if that is
- required for queuing or delivery). This includes any addresses listed
- in a RFC 822 "group". Any BCC fields SHOULD then be removed from the
- headers. Once this process is completed, the remaining headers SHOULD
- be checked to verify that at least one To:, Cc:, or Bcc: header remains.
- If none do, then a bcc: header with no additional information SHOULD be
- inserted as specified in [MSGFMT].
-
-2. The return address in the MAIL command SHOULD, if possible, be derived
- from the system's identity for the submitting (local) user, and the From
- header field otherwise. If there is a system identity available, it
- SHOULD also be copied to the Sender header field if it is different from
- the address in the From header field. (Any Sender field that was
- already there SHOULD be removed.) Systems may provide a way for
- submitters to override the envelope return address, but may want to
- restrict its use to privileged users. This will not prevent mail
- forgery, but may lessen its incidence; see section 7.1.
-
-When an MTA is being used in this way, it bears responsibility for ensuring
-that the message being transmitted is valid. The mechanisms for checking
-that validity, and for handling (or returning) messages that are not valid
-at the time of arrival, are part of the MUA-MTA interface and not covered
-by this specification.
-
-A submission protocol based on Standard RFC 822 information alone MUST NOT
-be used to gateway a message from a foreign (non-SMTP) mail system into an
-SMTP environment. Additional information to construct an envelope must
-come from some source in the other environment, whether supplemental
-headers or the foreign system's envelope.
-
-Attempts to gateway messages using only their header "to" and "cc" fields,
-have repeatedly caused mail loops and other behavior adverse to the proper
-functioning of the Internet mail environment. These problems have been
-especially common when the message originates from an Internet mailing list
-and is distributed into the foreign environment using envelope information.
-When these messages are then processed by a header-only remailer, loops
-back to the Internet environment (and the mailing list) are almost
-inevitable.
-
-
-C. Source Routes
-
-The <reverse-path> is a reverse source routing list of hosts and a source
-mailbox. The first host in the <reverse-path> SHOULD be the host sending
-the MAIL FROM command. Similarly, the <forward-path> may be a source
-routing lists of hosts and a destination mailbox. However, in general, the
-<forward-path> SHOULD contain only a mailbox and domain name, relying on
-the domain name system to supply routing information if required. The use
-of source routes is deprecated; while servers MUST be prepared to receive
-and handle them as discussed in section 3.3 and F.2, clients SHOULD NOT
-transmit them.
-
-For relay purposes, the forward-path may be a source route of the form
-"@ONE,@TWO:JOE@THREE", where ONE, TWO, and THREE MUST BE fully-qualified
-domain names. This form is used to emphasize the distinction between an
-address and a route. The mailbox is an absolute address, and the route is
-information about how to get there. The two concepts should not be
-confused.
-
-If source routes are used, RFC 821 and the text below should be consulted
-for the mechanisms for constructing and updating the forward- and
-reverse-paths.
-
-The SMTP server transforms the command arguments by moving its own
-identifier (its domain name or that of any domain for which it is acting as
-a mail exchanger), if it appears, from the forward-path to the beginning of
-the reverse-path.
-
-Notice that the forward-path and reverse-path appear in the SMTP commands
-and replies, but not necessarily in the message. That is, there is no need
-for these paths and especially this syntax to appear in the "To:" ,
-"From:", "CC:", etc. fields of the message header. Conversely, SMTP servers
-MUST NOT derive final message delivery information from message header
-fields.
-
-When the list of hosts is present, it is a "reverse" source route and
-indicates that the mail was relayed through each host on the list (the
-first host in the list was the most recent relay). This list is used as a
-source route to return non-delivery notices to the sender. As each relay
-host adds itself to the beginning of the list, it MUST use its name as
-known in the transport environment to which it is relaying the mail rather
-than that of the transport environment from which the mail came (if they
-are different).
-
-
-D. Scenarios
-
-This section presents complete scenarios of several types of SMTP sessions.
-In the examples, "C:" indicates what is said by the SMTP client, and "S:"
-indicates what is said by the SMTP server.
-
-D.1 A Typical SMTP Transaction Scenario
-
-This SMTP example shows mail sent by Smith at host bar.com, to Jones,
-Green, and Brown at host foo.com. Here we assume that host bar.com
-contacts host foo.com directly. The mail is accepted for Jones and Brown.
-Green does not have a mailbox at host foo.com.
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: MAIL FROM:<Smith@bar.com>
- S: 250 OK
- C: RCPT TO:<Jones@foo.com>
- S: 250 OK
- C: RCPT TO:<Green@foo.com>
- S: 550 No such user here
- C: RCPT TO:<Brown@foo.com>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Blah blah blah...
- C: ...etc. etc. etc.
- C: .
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-D.2 Aborted SMTP Transaction Scenario
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: MAIL FROM:<Smith@bar.com>
- S: 250 OK
- C: RCPT TO:<Jones@foo.com>
- S: 250 OK
- C: RCPT TO:<Green@foo.com>
- S: 550 No such user here
- C: RSET
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-D.3 Relayed Mail Scenario
-
-Step 1 -- Source Host to Relay Host
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: MAIL FROM:<JQP@bar.com>
- S: 250 OK
- C: RCPT TO:<@foo.com:Jones@XYZ.COM>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Date: Thu, 21 May 1998 05:33:29 -0700
- C: From: John Q. Public <JQP@bar.com>
- C: Subject: The Next Meeting of the Board
- C: To: Jones@xyz.com
- C:
- C: Bill:
- C: The next meeting of the board of directors will be
- C: on Tuesday.
- C: John.
- C: .
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-Step 2 -- Relay Host to Destination Host
-
- S: 220 xyz.com Simple Mail Transfer Service Ready
- C: EHLO foo.com
- S: 250 xyz.com is on the air
- C: MAIL FROM:<@foo.com:JQP@bar.com>
- S: 250 OK
- C: RCPT TO:<Jones@XYZ.COM>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Received: from bar.com by foo.com ; Thu, 21 May 1998 05:33:29 -0700
- C: Date: Thu, 21 May 1998 05:33:22 -0700
- C: From: John Q. Public <JQP@bar.com>
- C: Subject: The Next Meeting of the Board
- C: To: Jones@xyz.com
- C:
- C: Bill:
- C: The next meeting of the board of directors will be
- C: on Tuesday.
- C: John.
- C: .
- S: 250 OK
-
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-D.4 Verifying and Sending Scenario
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: VRFY Crispin
- S: 250 Mark Crispin <Admin.MRC@foo.com>
- C: SEND FROM:<EAK@bar.com>
- S: 250 OK
- C: RCPT TO:<Admin.MRC@foo.com>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Blah blah blah...
- C: ...etc. etc. etc.
- C: .
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-
-E. Other Gateway Issues
-
-In general, gateways between the Internet and other mail systems SHOULD
-attempt to preserve any layering semantics across the boundaries between
-the two mail systems involved. Gateway- translation approaches that
-attempt to take shortcuts by mapping, (such as envelope information from
-one system to the message headers or body of another) have generally proven
-to be inadequate in important ways. Systems translating between
-environments that do not support both envelopes and headers and Internet
-mail must be written with the understanding that some information loss is
-almost inevitable.
-
-
-F. Deprecated Features of RFC 821
-
-A few features of RFC 821 have proven to be problematic and SHOULD NOT be
-used in Internet mail.
-
-F.1 TURN
-
-This command, described in RFC 821, raises important security issues since,
-in the absence of strong authentication of the host requesting that the
-client and server switch roles, it can easily be used to divert mail from
-its correct destination. Its use is deprecated; SMTP systems SHOULD NOT
-use it unless the server can authenticate the client.
-
-F.2 Source Routing
-
-RFC 821 utilized the concept of explicit source routing to get mail from
-one host to another via a series of relays. The requirement to utilize
-source routes in regular mail traffic was eliminated by the introduction of
-the domain name system "MX" record and the last significant justification
-for them was eliminated by the introduction, in RFC 1123, of a clear
-requirement that addresses following an "@" must all be fully-qualified
-domain names. Consequently, the only remaining justifications for the use
-of source routes are support for very old SMTP clients or MUAs and in mail
-system debugging. They can, however, still be useful in the latter
-circumstance and for routing mail around serious, but temporary, problems
-such as problems with the relevant DNS records.
-
-SMTP servers MUST continue to accept source route syntax as specified in
-the main body of this document and in RFC 1123. They MAY, if necessary,
-ignore the routes and utilize only the target domain in the address. If
-they do utilize the source route, the message MUST be sent to the first
-domain shown in the address. In particular, a server MUST NOT guess at
-shortcuts within the source route.
-
-Clients SHOULD NOT utilize explicit source routing except under unusual
-circumstances, such as debugging or potentially relaying around firewall or
-mail system configuration errors.
-
-F.3 HELO
-
-As discussed in sections 3.1 and 4.1.1, EHLO is strongly preferred to HELO
-when the server will accept the former. Servers must continue to accept
-and process HELO in order to support older clients.
-
-F.4 #-literals
-
-RFC 821 provided for specifying an Internet address as a decimal integer
-host number prefixed by a pound sign, "#". In practice, that form has been
-obsolete since the introduction of TCP/IP. It is deprecated and MUST NOT
-be used.
-
-F.5 Dates and Years
-
-When dates are inserted into messages by SMTP clients or servers (e.g., in
-trace fields), four-digit years MUST BE used. Two-digit years are
-deprecated; three-digit years were never permitted in the Internet mail
-system.
-
-F.6 Sending versus Mailing
-
-In addition to specifying a mechanism for delivering messages to user's
-mailboxes, RFC 821 provided additional, optional, commands to deliver
-messages directly to the user's terminal screen. These commands (SEND,
-SAML, SOML) were rarely implemented, and changes in workstation technology
-and the introduction of other protocols may have rendered them obsolete
-even where they are implemented.
-
-Clients SHOULD NOT provide SEND, SAML, or SOML as services. Servers MAY
-implement them. If they are implemented by servers, the implementation
-model specified in RFC 821 MUST be used and the command names MUST be
-published in the response to the EHLO command.
-
-
-X. Change Summary and Loose Ends (Temporary)
-
-X.1 Change summary
-
-X.1.1 Substantive changes between draft-ietf-drums-smtpupd-00.txt and
-draft-ietf-drums-smtpupd-01.txt
-
-(i) Slightly clarified the discussions of rejection and failure of VRFY
-requests and the associated response codes.
-
-(ii) Slightly clarified the discussion of deferred address validation.
-
-(iii) Removed the IPCE terminology and modified the text in section 4.1.1.2
-to explicitly introduce the "mail gateway" terminology and to begin to
-distinguish a mail gateway from a conventional relay.
-
-(iv) Explicitly noted that SMTP clients for things like POP and IMAP may
-send everything to a single relay for further processing, rather than
-resolving final domain names.
-
-(v) Tightened the RSET discussion.
-
-(vi) Deprecation of 251 only for RCPT (still ok for VRFY)
-
-X.1.2. Substantive changes between draft-ietf-drums-smtpupd-01.txt and
-draft-ietf-drums-smtpupd-02.txt.
-
-Incorporated additional RFC 1123 material; reorganized several sections for
-clarity. Added definitions and other previous "loose end" material.
-
-X.1.3. Substantive changes between draft-ietf-drums-smtpupd-02.txt and
-draft-ietf-drums-smtpupd-03.txt.
-
-(i) Eliminated a number of placeholders and tightened some of the
-definitions in section 2. Added a few new placeholders for consistency
-checking against other documents.
-
-(ii) Removed the state diagrams, per direction at IETF Montreal.
-
-(iii) Added new section 6.3, an attempt to summarize WG discussions on the
-"posting" versus "delivery" versus "relay" functions of SMTP and on whether
-"fixups" are appropriate in different cases.
-
-(iv) Inserted section 6.1, a minor rewrite of section 5.3.3 of RFC1123.
-
-(v) Added new text to 3.5.5 to discuss the spammer - EXPN relationship.
-
-(vi) The "ASCII requirement" in 4.1.1.4 has been tightened somewhat.
-
-(v) The remaining miscellaneous changes agreed to in Montreal have been
-incorporated except as noted below.
-
-X.1.4. Substantive changes between draft-ietf-drums-smtpupd-03.txt and
-draft-ietf-drums-smtpupd-04.txt.
-
-Many small changes have been made between these two versions; the list that
-follows is not exhaustive.
-
-(i) To clarify some of the text, definitions have been introduced to
-distinguish among originating, delivery, relay, and gateway SMTP systems.
-
-(ii) The role of LF-terminated lines has been clarified.
-
-(iii) Several changes have been made to clarify the principle that, no
-matter what originating and final delivery systems might do, relay systems
-are not permitted to tamper with message content, even to "fix" headers
-that are determined to be invalid. If they deem message content to be
-seriously unacceptable, they are encouraged to reject the messages in
-preference to trying to fix them up, but, in general, the theme is "don't
-look/ don't tell".
-
-(iv) A few more definitions have been added to the terminology section, and
-the separate glossary has been eliminated.
-
-(v) I have taken a shot at text to address some of the controversies that
-have raged on the WG mailing list (e.g., sections 7.4 and 7.5). Since there
-was no consensus on most of those topics, I expect that the inserted text
-will satisfy no one except, perhaps, for agreement that saying nothing
-would have been worse. As a mechanism for moving forward, the text in
-these controversial areas that now appears will be considered "base";
-alterations will be made only if clear consensus emerges.
-
-(vi) Per discussion in Los Angeles, source routes have been further
-deprecated.
-
-(vii) Some of the VRFY/EXPN materials have been moved to "security
-considerations", where they appear to belong, some text has been added, and
-the conformance statements adjusted to reflect what I perceive to be WG
-consensus.
-
-(viii) New MX resolution material has been added to section 5. While most
-of this material is from RFC974, the rules have been further tightened to
-reflect current practice and experience (974 is written in a somewhat
-speculative fashion for a standard). In particular, the behavior of trying
-the target host's A RR when MXs existed but all of them were eliminated is
-now prohibited, which seems necessary if another of other ideas being
-recommended or considered are to be feasible.
-
-X.1.5. Substantive changes between draft-ietf-drums-smtpupd-04.txt and
-draft-ietf-drums-smtpupd-05.txt.
-
-(i) All normative references to RFC 1123 have been removed from the main
-body of the text (some still appear in the appendices where they will
-remain).
-
-(ii) Section 3.5 has been renamed slightly to distinguish between
-"debugging of SMTP implementations" and "debugging of addresses". Better
-terminology would be welcome.
-
-(iii) Error conditions resulting from the DATA command have been clarified.
-
-(iv) Section 4.2 (SMTP replies) has been revised and tightened to reflect
-reality and recent discussion on the list.
-
-(v) Appendix E has been revised a bit and moved into section 4.2.1. Given
-the importance of the "check only first digit" rule, it has to be there.
-
-(vi) Added new text for "no SMTP service supported" to sections 3.1, 4.2.2,
-4.2.3, and 4.3.2. As noted in 3.1, I'd rather add 521 (which would work
-perfectly with the model) rather than overloading 554.
-
-(vii) The Return-path language in section 4.4 has been cleaned up a bit.
-
-(viii) Tightened the "postmaster" language in 4.5.1, requiring a small
-change to 4.1.1.3.
-
-(ix) I have unilaterally (with a little help from my friends), increased
-some of the size limits. 64 was much too short for a domain name, and the
-DNS limit of 255 (?) has now been inserted. That leaves the return path
-much too short, but I haven't fixed it (maybe that will cause us to get rid
-of them). We still have a 64 character limit on the local-part, which is
-also *much* too short. Votes for 128 or longer limits accepted. See
-X.1.6(I)
-
-(x) The text on the "recipients buffer" has been rewritten so that (I hope)
-it makes sense and gives some explicit guidance for how clients and servers
-should proceed if limits are imposed.
-
-X.1.6. Substantive changes between draft-ietf-drums-smtpupd-05.txt and
-draft-ietf-drums-smtpupd-06.txt.
-
-Most of the changes in this revision have been editorial rather than
-substantive. Major substantive changes include:
-
-(i) The language about maximum sizes of SMTP command lines has been
-reworked, per WG mailing list discussion.
-
-(ii) Several instances of "Should" have been promoted to "Must" when the
-reasons for the weaker rule seemed to have disappeared. In particular, the
-requirement that an SMTP implementation support timeouts has become a MUST.
-Also, conformance to this specification requires support of EHLO. Older
-systems should claim conformance to the [to-be-historical] 821, not this
-specification.
-
-X.1.7. Substantive changes between draft-ietf-drums-smtpupd-06.txt and
-draft-ietf-drums-smtpupd-07.txt.
-
-(i) Removed "implied RSET" text associated with QUIT, as specified at the
-December 1997 IETF
-
-(ii) Required that servers support EHLO, as specified at the December 1997
-IETF
-
-X.1.8. Substantive changes between draft-ietf-drums-smtpupd-07.txt and
-draft-ietf-drums-smtpupd-08.txt.
-
-This version involves mostly editorial work and cleanup of loose ends.
-
-(i) New 7.5 added (old one renumbered) to discuss info disclosure through
-Received fields.
-
-(ii) Some character set and minor syntax issues clarified.
-
-(iii) Material on code 571 added (thought this had been done long ago;
-slipped through the cracks)
-
-(iv) Many clarifications added as the result of list discussions and
-suggestions.
-
-(v) Error code presentation has been restructured.
-
-(vi) ABNF conversion done
-
-(vii) IPv6 address format inserted per RFC 1884, since we could not get
-clear agreement on an alternative.
-
-(viii) Trivial, silly, examples removed. Others not yet renumbered.
-
-(ix) 3.5.2 and 4.1.1 altered slightly per Eric Allman's notes. Eric may
-not like the way I've done either of these change very much: the first now
-makes the distinction between returning an address and returning other
-stuff (which was permitted by -06, but the text wasn't as clear as it
-should have been): if it looks like an address, it needs to be an address.
-Similarly, with 4.1.1, Eric wanted to explicitly permit/legitimize "DATA
-<SP> <CRLF>". I see several disadvantages to doing that, so have inserted
-language that encourages receivers to tolerate trailing white space, which
-may have the same practical effect.
-
-
-X.1.9. Substantive changes between draft-ietf-drums-smtpupd-08.txt and
-draft-ietf-drums-smtpupd-09.txt.
-
-The first ten of these reflect, in order, minuted items from the Chicago
-IETF (IETF 42).
-
-(i) Clarification of "MUST", etc., in the context of this document
-(section 2.3).
-
-(ii) Altered VRFY text to make implementation a SHOULD (section 3.5.1) and
-removed VRFY from the mandatory to implement list (section 4.5.1), per
-42nd IETF (Chicago).
-
-(iii) Clarified that exploders are expected to not purge sender addresses
-from lists (section 3.10). Note that the Chicago conclusion was that this
-should be a "MUST". I could not figure out how to do that without
-absolutely prohibiting removing addresses to prevent loops, to guard
-against spammers, or for similar legitimate purposes. So I have written
-this as a "SHOULD", with additional "strongly discouraged" words. If
-someone still wants a MUST, suggest text.
-
-(iv) Altered text to permit clients that sometimes, or even always,
-initiate sessions with HELO, rather than EHLO, to be fully-conforming
-(section 3.2). [[ Editor's note: I continue to believe that a client that
-does not have any service extension support, even to the extent of being
-able to send EHLO and parse the response without doing anything about it,
-should not be considered fully-conforming to this spec (as distinct from
-821). Consequently, the new text in 3.2 stops well short of encouraging
-clients that don't need service extensions from preferentially using HELO,
-and the text in 2.2.1 (which specifies that the extension mechanisms must
-be supported) has not been changed.
-
-(v) Per Chicago discussions, the text requiring that QUIT be sent has not
-been changed. The text in 4.1.1.10 requiring that the server wait for
-QUIT has been changed to a SHOULD. However, the text in 4.1.1.5,
-prohibiting close on receipt of RSET and that elsewhere prohibiting close
-as a normal response, has not been changed.
-
-(vi) Text has been inserted in 4.1.1 and the text in 4.3.2 altered
-slightly to clarify the handling of parameters to RSET, DATA, and QUIT and
-to 4.1.1.9 specify semantics for parameters to NOOP. I have followed the
-minutes on this although I personally agree with kre's mailing list
-comments that the "servers SHOULD reject" decision leads to silly states.
-I recommend that the WG review this.
-
-(vii) Per discussion in Chicago, no substantive change has been made to
-the specification about underscore characters in domain names (section
-4.1.2). However, the text has been altered to more accurately reflect
-discussion on the mailing list and the source of the requirement.
-
-(viii) Per discussion in Chicago, no change has been made to the
-preference for local time in Received headers.
-
-(ix) Per discussion in Chicago, code 571 has been removed and policy
-rejection is now reflected i a 550 code (section 3.7 and the response code
-lists).
-
-(x) Per discussion in Chicago, no change has been made to the
-specification of use of raw CR or LF.
-
-(xi) In section 4.3, the text has been changed, per comments from Dan
-Bernstein and others, to require that clients be able to handle replies
-that do not contain text strings. A few other places patched to match.
-
-(xii) In sections 4.1.1.1 and 8, the placeholders have been removed.
-
-(xiii) Per discussion on the mailing list (and specifically James
-Berriman's concerns), the text has been clarified (sections 4.1.1.2 and
-4.1.4) to prohibit MAIL unless no mail transaction is open. This is a
-MUST NOT prohibition -- SHOULD NOT makes no sense if this is the direction
-we are going to go. 503 has also been added to the list of valid
-responses for "MAIL" in 4.3.1 - it can't be issued before EHLO/HELO in any
-event. While it is clear that something should be said, this may not be
-the desired outcome (I selected it because it was conservative and easy
-given the text that was there already); the WG should check that the text
-is as intended.
-
-(xiv) Per discussion on the mailing list, a new section 4.5.5 has been
-added to describe null return paths and their handling (forward pointer
-from 3.7). The text in 4.5.5 is substantially that suggested by Norbert
-Bollow. As with (xiii), there is now clear text, but it may not be what
-the WG desires. Please check.
-
-(xv) "all addresses" substituted for "each...in turn" in 3.10.2.
-
-(xvi) Requirement for "<" and ">" around paths clarified in section 3.3
-(syntax productions were clear and correct, but not this overview
-material).
-
-(xvii) Clarified text in 3.3 to permit post-DATA bounces on policy
-matters.
-
-
-X.1.10. Substantive changes between draft-ietf-drums-smtpupd-09.txt
-and draft-ietf-drums-smtpupd-10.txt.
-
-(i) A large series of typos, most of them caught by Philip Hazel,
-corrected.
-
-(ii) Residual problems with references to mailboxes, forward, and
-reverse paths in 4.1.1.2 and 4.1.1.3 corrected and some text, I hope,
-clarified.
-
-(iii) Text added to 4.2.5 to talk about 5yz errors after DATA. This
-text should be checked carefully -- it is a proposal and may or may
-not reflect WG consensus.
-
-(iv) Upper bound on "seconds" has been changed to 60 (not 61), per
-list discussion. Years are still four-digits and will stay that way
-unless the list discussion converges on something else. The increase
-to 60 seconds includes an explicit note about leap seconds.
-
-(v) Text has been inserted to reflect the Orlando consensus about "QUIT",
-i.e., the client MUST send a QUIT command and SHOULD wait for the results
-before closing the connection. Servers are still not permitted to close
-without receiving a QUIT and sending a 221 response (except, of course,
-under the usual "unavoidable circumstances", in which case they should get
-off a 451 if that is feasible).
-
-(vi) The EHLO response specification has been changed back to reflect
-non-advertisement of VRFY and some text implying that VRFY was optional to
-support has been removed (WG consensus seemed to be moving in that
-direction at one point, and the editor reacted prematurely). This makes
-the text compatible with RFC1869 and restores VRFY to its RFC1123 status.
-
-(vii) The text in section 5 has been clarified with regard to what a relay
-that receives a message because of its designation as an MX can do and 3.7
-has been slightly modified to point to it.
-
-(viii) New text has been added to 3.7 to clarify the use of "SMTP server"
-relays in "dumb" originating clients.
-
-(viii) Small wording changes inserted into 4.1.4 (e.g., insertion of ", if
-possible," into the first sentence of the fifth paragraph to eliminate the
-apparent conflict with the second sentence).
-
-
-Z. Full Copyright Statement
-
-Copyright (C) The Internet Society (1998). All Rights Reserved.
-
-This document and translations of it may be copied and furnished to others,
-and derivative works that comment on or otherwise explain it or assist in
-its implementation may be prepared, copied, published and distributed, in
-whole or in part, without restriction of any kind, provided that the above
-copyright notice and this paragraph are included on all such copies and
-derivative works. However, this document itself may not be modified in any
-way, such as by removing the copyright notice or references to the Internet
-Society or other Internet organizations, except as needed for the purpose
-of developing Internet standards in which case the procedures for
-copyrights defined in the Internet Standards process must be followed, or
-as required to translate it into languages other than English.
-
-The limited permissions granted above are perpetual and will not be revoked
-by the Internet Society or its successors or assigns.
-
-This document and the information contained herein is provided on an "AS
-IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE
-DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
-ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY
-RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
-PARTICULAR PURPOSE.
-
-Expires July 1999
diff --git a/Documentation/en/I-D/draft-ietf-drums-smtpupd-11.txt b/Documentation/en/I-D/draft-ietf-drums-smtpupd-11.txt
deleted file mode 100644
index ec272339..00000000
--- a/Documentation/en/I-D/draft-ietf-drums-smtpupd-11.txt
+++ /dev/null
@@ -1,4018 +0,0 @@
-INTERNET-DRAFT John C. Klensin, Editor
-Expires September 9, 2000
-March 9, 2000
-
-
- Simple Mail Transfer Protocol
-
- draft-ietf-drums-smtpupd-11.txt
-
-Status of this Memo
-
-This document is an Internet-Draft and is in full conformance with
-all provisions of Section 10 of RFC2026.
-
-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."
-
-The list of current Internet-Drafts can be accessed at
-http://www.ietf.org/ietf/1id-abstracts.txt
-
-The list of Internet-Draft Shadow Directories can be accessed at
-http://www.ietf.org/shadow.html.
-
-[[Appendix X will be removed before the document is submitted to the
-IESG.]]
-
-[[If consensus is reached on this document, it will be forwarded to the
-IESG with the recommendation that it be processed onto the Standards
-track.]]
-
-Copyright Notice
-
-Copyright (C) The Internet Society (1998). All Rights Reserved.
-
- Table of Contents
-
-0. Abstract
-
-1. Introduction
-
-2. The SMTP Model
-2.1 Basic Structure
-2.2 The Extension Model
-2.2.1 Background
-2.2.2 Definition and Registration of Extensions
-2.3 Terminology
-2.3.1 Mail Objects
-2.3.2 Senders and Receivers
-2.3.3 Mail Agents and Message Stores
-2.3.4 Host
-2.3.5 Domain
-2.3.6 Buffer and State Table
-2.3.7 Lines
-2.3.8 Originator, Delivery, Relay, and Gateway Systems
-2.3.9 Message Content and Mail Data
-2.3.10 Mailbox and Address
-2.3.11 Reply
-2.4 General Syntax Principles and Transaction Model
-
-3. The SMTP Procedures: An Overview
-3.1 Session Initiation
-3.2 Client Initiation
-3.3 Mail Transactions
-3.4 Forwarding for Address Correction or Updating
-3.5 Commands for Debugging Addresses
-3.5.1 Overview
-3.5.2 VRFY Normal Response
-3.5.3 Meaning of VRFY or EXPN Success Response
-3.5.4 Semantics and Applications of EXPN
-3.6 Domains
-3.7 Relaying
-3.8 Mail Gatewaying
-3.8.1 Header Fields in Gatewaying
-3.8.2 Received Lines in Gatewaying
-3.8.3 Addresses in Gatewaying
-3.8.4 Other Header Fields in Gatewaying
-3.8.5 Envelopes in Gatewaying
-3.9 Terminating Sessions and Connections
-3.10 Mailing Lists and Aliases
-3.10.1 Alias
-3.10.2 List
-
-4. The SMTP Specifications
-4.1 SMTP Commands
-4.1.1 Command Semantics and Syntax
-4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)
-4.1.1.2 MAIL (MAIL)
-4.1.1.3 RECIPIENT (RCPT)
-4.1.1.4 DATA (DATA)
-4.1.1.5 RESET (RSET)
-4.1.1.6 VERIFY (VRFY)
-4.1.1.7 EXPAND (EXPN)
-4.1.1.8 HELP (HELP)
-4.1.1.9 NOOP (NOOP)
-4.1.1.10 QUIT (QUIT)
-4.1.2 Lower-level Syntax
-4.1.3 Address Literals
-4.1.4 Order of Commands
-4.1.5 Private-use Commands
-4.2 SMTP Replies
-4.2.1 Reply Code Severities and Theory
-4.2.2 Reply Codes by Function Groups
-4.2.3 Reply Codes in Numeric Order
-4.2.4 Reply Code 502
-4.2.5 Reply Codes After DATA and the Subsequent <CRLF>.<CRLF>
-4.3 Sequencing of Commands and Replies
-4.3.1 Sequencing Overview
-4.3.2 Command-Reply Sequences
-4.4 Trace Information
-4.5 Additional Implementation Issues
-4.5.1 Minimum Implementation
-4.5.2 Transparency
-4.5.3 Sizes and Timeouts
-4.5.3.1 Size limits and minimums
-4.5.3.2 Timeouts
-4.5.4 Queuing Strategies
-4.5.4.1 Sending Strategy
-4.5.4.2 Receiving Strategy
-4.5.5 Messages with a null reverse-path
-
-5. Address Resolution and Mail Handling
-
-6. Problem Detection and Handling
-6.1 Reliable Delivery and Replies by Email
-6.2 Loop Detection
-6.3 Compensating for Irregularities
-
-7. Security Considerations
-7.1 Mail Security and Spoofing
-7.2 "Blind" Copies
-7.3 VRFY, EXPN, and Security
-7.4 Information Disclosure in Announcements
-7.5 Information Disclosure in Trace Fields
-7.6 Scope of Operation of SMTP Servers
-
-8. IANA Considerations
-
-9. References
-
-10. Editors' Addresses
-
-11. Acknowledgments
-
-Appendices
-A. TCP Transport Service
-B. Generating SMTP Commands from RFC 822 Headers
-C. Source Routes
-D. Scenarios
-E. Other Gateway Issues
-F. Deprecated Features of RFC 821
-X. Change Summary and Loose Ends (Temporary)
-
-
-0. Abstract
-
-This document is a self-contained specification of the basic protocol for
-the Internet electronic mail transport, consolidating and updating:
-
- - the original SMTP specification of RFC 821 [RFC-821],
-
- - domain name system requirements and implications for mail transport from
- RFC 1035 [RFC-DNS] and RFC 974 [RFC-974],
-
- - the clarifications and applicability statements in RFC 1123 [RFC-1123],
- and
-
- - material drawn from the SMTP Extension mechanisms [SMTPEXT].
-
-It replaces RFC 821, RFC 974, and the mail transport materials of RFC
-1123. However, RFC 821 specifies some features that were not in
-significant use in the Internet by the mid-1990s and (in appendices)
-some additional transport models. Those sections are omitted here in
-the interest of clarity and brevity; readers needing them should
-refer to RFC 821.
-
-It also includes some additional material from RFC 1123 that required
-amplification. This material has been identified in multiple ways, mostly
-by tracking flaming on various lists and newsgroups and problems of unusual
-readings or interpretations that have turned up as the SMTP extensions have
-been deployed. Where this specification moves beyond consolidation and
-actually differs from earlier documents, it supersedes them technically as
-well as textually.
-
-Although SMTP was designed as a mail transport and delivery protocol, this
-specification also contains information that is important to its use as a
-'mail posting' protocol, as recommended for POP [RFC-POP2, RFC-POP3] and
-IMAP [RFC-IMAP4].
-
-Section 2.3 provides definitions of terms specific to this document. Except
-when the historical terminology is necessary for clarity, this document
-uses the current 'client' and 'server' terminology to identify the sending
-and receiving SMTP processes, respectively.
-
-A companion document [MSGFMT] discusses message headers, message bodies
-and formats and structures for them, and their relationship.
-
-Comments on this draft should be addressed to the IETF DRUMS Working
-Group:
- General Discussion:drums@cs.utk.edu
- To Subscribe: drums-request@cs.utk.edu
- Archive: ftp://cs.utk.edu/pub/drums/mail-archive/
-
-
-
-1. Introduction
-
-The objective of the Simple Mail Transfer Protocol (SMTP) is to transfer
-mail reliably and efficiently.
-
-SMTP is independent of the particular transmission subsystem and requires
-only a reliable ordered data stream channel. While this document
-specifically discusses transport over TCP, other transports are possible.
-Appendices to RFC 821 describe some of them.
-
-An important feature of SMTP is its capability to transport mail across
-networks, usually referred to as "SMTP mail relaying" (see section 3.8).
-A network consists of the mutually-TCP-accessible hosts on the public
-Internet, the mutually-TCP-accessible hosts on a firewall-isolated TCP/IP
-Intranet, or hosts in some other LAN or WAN environment utilizing a
-non-TCP transport-level protocol. Using SMTP, a process can transfer
-mail to another process on the same network or to some other network via
-a relay or gateway process accessible to both networks.
-
-Inthis way, a mail message may pass through a number of intermediate
-relay or gateway hosts on its path from sender to ultimate recipient.
-The Mail eXchanger mechanisms of the domain name system [RFC-DNS, and
-section 5 of this document] are used to identify the appropriate next-hop
-destination for a message being transported.
-
-
-2. The SMTP Model
-
-2.1 Basic Structure
-
-The SMTP design can be pictured as:
-
- +----------+ +----------+
- +------+ | | | |
- | User |<-->| | SMTP | |
- +------+ | Client- |Commands/Replies| Server- |
- +------+ | SMTP |<-------------->| SMTP | +------+
- | File |<-->| | and Mail | |<-->| File |
- |System| | | | | |System|
- +------+ +----------+ +----------+ +------+
- SMTP client SMTP server
-
-When an SMTP client has a message to transmit, it establishes a two-way
-transmission channel to an SMTP server. The responsibility of an SMTP client is to
-transfer mail messages to one or more SMTP servers, or report its failure
-to do so.
-
-The means by which a mail message is presented to an SMTP client, and how
-that client determines the domain name(s) to which mail messages are to be
-transferred is a local matter, and is not addressed by this document. In
-some cases, the domain name(s) transferred to, or determined by, an SMTP
-client will identify the final destination(s) of the mail message. In other
-cases, common with SMTP clients associated with implementations of the POP
-[RFC-POP2, RFC-POP3] or IMAP [RFC-IMAP4] protocols, or when the SMTP client
-is inside an isolated transport service environment, the domain name
-determined will identify an intermediate destination through which all mail
-messages are to be relayed. SMTP clients that transfer all traffic,
-regardless of the target domain names associated with the individual
-messages, or that do not maintain queues for retrying message transmissions
-that initially cannot be completed, may otherwise conform to this
-specification but are not considered fully-capable. Fully-capable SMTP
-implementations, including the relays used by these less capable ones, and
-their destinations, are expected to support all of the queuing, retrying,
-and alternate address functions discussed in this specification.
-
-The means by which an SMTP client, once it has determined a target domain
-name, determines the identity of an SMTP server to which a copy of a
-message is to be transferred, and then performs that transfer, is covered
-by this document. To effect a mail transfer to an SMTP server, an SMTP
-client establishes a two-way transmission channel to that SMTP server. An
-SMTP client determines the address of an appropriate host running an SMTP
-server by resolving a destination domain name to either an intermediate
-Mail eXchanger host or a final target host.
-
-An SMTP server may be either the ultimate destination or an intermediate
-"relay" (that is, it may assume the role of an SMTP client after receiving
-the message) or "gateway" (that is, it may transport the message further
-using some protocol other than SMTP). SMTP commands are generated by the
-SMTP client and sent to the SMTP server. SMTP replies are sent from the
-SMTP server to the SMTP client in response to the commands.
-
-In other words, message transfer can occur in a single connection between
-the original SMTP-sender and the final SMTP-recipient, or can occur in a
-series of hops through intermediary systems. In either case, a formal
-handoff of responsibility for the message occurs: the protocol requires
-that a server accept responsibility for either delivering a message or
-properly reporting the failure to do so.
-
-Once the transmission channel is established and initial handshaking
-completed, the SMTP client normally initiates a mail transaction. Such a
-transaction consists of a series of commands to specify the originator and
-destination of the mail and transmission of the message content (including
-any headers or other structure) itself. When the same message is sent to
-multiple recipients, this protocol encourages the transmission of only one
-copy of the data for all recipients at the same destination (or
-intermediate relay) host.
-
-The server responds to each command with a reply; replies may indicate that
-the command was accepted, that additional commands are expected, or that a
-temporary or permanent error condition exists. Commands specifying the
-sender or recipients may include server-permitted SMTP service extension
-requests as discussed in section 2.2. The dialog is purposely lock-step,
-one-at-a-time, although this can be modified by mutually-agreed extension
-requests such as in [RFC-Pipeline].
-
-Once a given mail message has been transmitted, the client may either
-request that the connection be shut down or may initiate other mail
-transactions. In addition, an SMTP client may use a connection to an SMTP
-server for ancillary services such as verification of email addresses or
-retrieval of mailing list subscriber addresses.
-
-As suggested above, this protocol provides mechanisms for the transmission
-of mail. This transmission normally occurs directly from the sending
-user's host to the receiving user's host when the two hosts are connected
-to the same transport service. When they are not connected to the same
-transport service, transmission occurs via one or more relay SMTP servers.
-An intermediate host that acts as either an SMTP relay or as a gateway into
-some other transmission environment is usually selected through the use of
-the domain name service (DNS) Mail eXchanger mechanism.
-
-To provide relay capability, the SMTP server is supplied with the name of
-the ultimate destination host as well as the destination mailbox name.
-Usually, intermediate hosts are determined via the DNS MX record, not by
-explicit "source" routing (see section 5 and appendices C and F.2).
-
-2.2 The Extension Model
-
-2.2.1 Background
-
-In an effort that started in 1990, approximately a decade after RFC 821 was
-completed, the protocol was modified with a "service extensions" model that
-permits the client and server to agree to utilize shared functionality
-beyond the original SMTP requirements. The SMTP extension mechanism defines
-a means whereby an extended SMTP client and server may recognize each
-other, and the server can inform the client as to the service extensions
-that it supports.
-
-Contemporary SMTP implementations MUST support the basic extension
-mechanisms. For instance, servers MUST support the EHLO command even if
-they do not implement any specific extensions and clients SHOULD
-preferentially utilize EHLO rather than HELO. (However, for compatibility
-with older conforming implementations, SMTP clients and servers MUST
-support the original HELO mechanisms as a fallback.) Unless the different
-characteristics of HELO must be identified for interoperability purposes,
-this document discusses only EHLO.
-
-SMTP is widely deployed and high-quality implementations have proven to be
-very robust. However, the Internet community now considers some services to
-be important that were not anticipated when the protocol was first
-designed. If support for those services is to be added, it must be done in
-a way that permits older implementations to continue working acceptably.
-The extension framework consists of:
-
- - The SMTP command EHLO, superseding the earlier HELO,
-
- - a registry of SMTP service extensions,
-
- - additional parameters to the SMTP MAIL and RCPT commands, and
-
- - optional replacements for verbs defined in this protocol, such as for
- DATA (see [RFC-BDAT]).
-
-SMTP's strength comes primarily from its simplicity. Experience with many
-protocols has shown that protocols with few options tend towards ubiquity,
-whereas protocols with many options tend towards obscurity.
-
-Each and every extension, regardless of its benefits, must be carefully
-scrutinized with respect to its implementation, deployment, and
-interoperability costs. In many cases, the cost of extending the SMTP
-service will likely outweigh the benefit.
-
-2.2.2 Definition and Registration of Extensions
-
-The IANA maintains a registry of SMTP service extensions. A corresponding
-EHLO keyword value is associated with each extension. Each service
-extension registered with the IANA must be defined in a formal
-standards-track or IESG-approved experimental protocol document. The
-definition must include:
-
- - the textual name of the SMTP service extension;
-
- - the EHLO keyword value associated with the extension;
-
- - the syntax and possible values of parameters associated with the
- EHLO keyword value;
-
- - any additional SMTP verbs associated with the extension (additional
- verbs will usually be, but are not required to be, the same as the
- EHLO keyword value);
-
- - any new parameters the extension associates with the MAIL or RCPT
- verbs;
-
- - a description of how support for the extension affects the behavior
- of a server and client SMTP; and,
-
- - the increment by which the extension is increasing the maximum
- length of the commands MAIL and/or RCPT, over that specified
- in this standard.
-
-In addition, any EHLO keyword value starting with an upper or lower case
-"X" refers to a local SMTP service extension used exclusively through
-bilateral agreement. Keywords beginning with "X" MUST NOT be used in a
-registered service extension. Conversely, keyword values presented in the
-EHLO response that do not begin with "X" MUST correspond to a standard,
-standards-track, or IESG-approved experimental SMTP service extension
-registered with IANA. A conforming server MUST NOT offer non-"X"-prefixed
-keyword values that are not described in a registered extension.
-
-Additional verbs and parameter names are bound by the same rules as EHLO
-keywords; specifically, verbs beginning with "X" are local extensions that
-may not be registered or standardized. Conversely, verbs not beginning
-with "X" must always be registered.
-
-2.3 Terminology
-
-Most of the terminology in this document is common in the Internet at the
-time of its writing. However, the following terms and concepts are used
-in special ways here, or represent differences in terminology between RFC
-821 and this document, and should be understood before reading further.
-These definitions are normative, that is, they contain specifications to
-which SMTP implementations are required to conform.
-
-The terms "MUST" and "SHOULD" (and "MUST NOT" and "SHOULD NOT") are
-used in the same general sense here as in the Host Requirements
-Standards [RFC-1123]. Specifically, "MUST" or "MUST NOT" identify
-absolute requirements for conformance to this specification.
-Implementations that do not conform to them lie outside the scope of
-this specification and often will not interoperate properly with SMTP
-implementations that do conform. Implementations that are fully
-conforming also adhere to all "SHOULD" and "SHOULD NOT" requirements.
-Implementations that adhere to all "MUST" ("MUST NOT") but not to all
-of these are considered to be partially conforming. Such
-implementations may interoperate properly with fully conforming ones
-and with each other, but this will typically be the case only if great
-care is taken. Consequently, an implementation should violate "SHOULD"
-("SHOULD NOT") requirements only under exceptional and well-understood
-circumstances. "SHOULD" (and sometimes "MUST") requirements are often
-imposed by this specification when experience has shown that following
-such requirements or restrictions leads, in practice, to better
-interoperation, or smoother operation of the Internet email
-infrastructure. As a consequence, some of these statements constitute
-recommended practices, rather than the statistically most common
-practice at the time of this writing. Statements using "MAY" describe
-features or styles of doing things that may be followed, or not, at the
-discretion of the implementation, normally without causing significant
-interoperability problems.
-
-2.3.1 Mail Objects
-
-SMTP transports a mail object. A mail object contains an envelope and
-content.
-
-The SMTP envelope is sent as a series of SMTP protocol units (described
-in section 3). It consists of an originator address (to which error
-reports should be directed); a delivery mode (e.g., deliver to
-recipient mailboxes); one or more recipient addresses; and optional
-protocol extension material.
-
-The SMTP content is sent in the SMTP DATA protocol unit and has two
-parts: the headers and the body. If the content conforms to other
-contemporary standards, the headers form a collection of field/value
-pairs structured as described in [MSGFMT]; the body, if structured, is
-defined according to MIME [RFC-MIME]. The content is textual in nature,
-expressed using the US-ASCII repertoire [US-ASCII]. Although SMTP
-extensions (such as [8BitMIME]) may relax this restriction for the
-content body, the content headers are always encoded using the US-ASCII
-repertoire. The algorithm defined in [RFC-INTLHDR] is used to represent
-header values outside the US-ASCII repertoire, while still encoding
-them using the US-ASCII repertoire.
-
-2.3.2 Senders and Receivers
-
-In RFC 821, the two hosts participating in an SMTP transaction were
-described as the "SMTP-sender" and "SMTP-receiver". This document has
-been changed to reflect current industry terminology and hence refers
-to them as the "SMTP client" (or sometimes just "the client") and "SMTP
-server" (or just "the server"), respectively. Since a given host may
-act both as server and client in a relay situation, "receiver" and
-"sender" terminology is still used where needed for clarity.
-
-2.3.3 Mail Agents and Message Stores
-
-Additional mail system terminology became common after RFC 821 was
-published and, where convenient, is used in this specification. In
-particular, SMTP servers and clients provide a mail transport service
-and therefore act as "Mail Transfer Agents" (MTAs). "Mail User Agents"
-(MUAs or UAs) are normally thought of as the sources and targets of
-mail. At the source, an MUA might collect mail to be transmitted from
-a user and hand it off to an MTA; the final ("delivery") MTA would be
-thought of as handing the mail off to an MUA (or at least transferring
-responsibility to it, e.g., by depositing the message in a "message
-store"). However, while these terms are used with at least the
-appearance of great precision in other environments, the implied
-boundaries between MUAs and MTAs often do not accurately match common,
-and conforming, practices with Internet mail. Hence, the reader should
-be cautious about inferring the strong relationships and
-responsibilities that might be implied if these terms were used
-elsewhere.
-
-2.3.4 Host
-
-For the purposes of this specification, a host is a computer system
-attached to the Internet (or, in some cases, to a private TCP/IP
-network) and supporting the SMTP protocol. Hosts are known by names
-(see "domain"); identifying them by numerical address is discouraged.
-
-2.3.5 Domain
-
-A domain (or domain name) consists of one or more dot-separated
-components. These components ("labels" in DNS terminology [RFC-DNS]
-are restricted for SMTP purposes to consist of a sequence of letters,
-digits, and hyphens drawn from the ASCII character set [US-ASCII}.
-Domain names are used as names of hosts and of other entities in the
-domain name hierarchy. For example, a domain may refer to an alias
-(label of a CNAME RR) or the label of Mail eXchanger records to be used
-to deliver mail instead of representing a host name. See [RFC-DNS] and
-section 5.
-
-The domain name, as described in this document and in [RFC-DNS], is the
-entire, fully-qualified name (often referred to as an "FQDN"). A
-domain name that is not in FQDN form is no more than a local alias.
-Local aliases MUST NOT appear in any SMTP transaction.
-
-2.3.6 Buffer and State Table
-
-SMTP sessions are stateful, with both parties carefully maintaining a
-common view of the current state. In this document we model this state
-by a virtual "buffer" and a "state table" on the server which may be
-used by the client to, for example, "clear the buffer" or "reset the
-state table," causing the information in the buffer to be discarded and
-the state to be returned to some previous state.
-
-2.3.7 Lines
-
-SMTP commands and, unless altered by a service extension, message data,
-are transmitted in "lines". Lines consist of zero or more data
-characters terminated by the sequence ASCII character "CR" (hex value
-0D) followed immediately by ASCII character "LF" (hex value 0A). This
-termination sequence is denoted as <CRLF> in this document. Conforming
-implementations MUST NOT recognize or generate any other character or
-character sequence as a line terminator. Limits MAY be imposed on line
-lengths by servers (see section 4.5.3).
-
-2.3.8 Originator, Delivery, Relay, and Gateway Systems
-
-This specification makes a distinction among four types of SMTP
-systems, based on the role those systems play in transmitting
-electronic mail. An "originating" system (sometimes called an SMTP
-originator) introduces mail into the Internet or, more generally, into
-a transport service environment. A "delivery" SMTP system is one that
-receives mail from a transport service environment and passes it to a
-mail user agent or deposits it in a message store which a mail user
-agent is expected to subsequently access. A "relay" SMTP system
-(usually referred to just as a "relay") receives mail from an SMTP
-client and transmits it, without modification to the message data other
-than adding trace information, to another SMTP server for further
-relaying or for delivery.
-
-A "gateway" SMTP system (usually referred to just as a "gateway")
-receives mail from a client system in one transport environment and
-transmits it to a server system in another transport environment.
-Differences in protocols or message semantics between the transport
-environments on either side of a gateway may require that the gateway
-system perform transformations to the message that are not permitted to
-SMTP relay systems. For the purposes of this specification, firewalls
-that rewrite addresses should be considered as gateways, even if SMTP
-is used on both sides of them. (See [IAB-Firewalls].)
-
-2.3.9 Message Content and Mail Data
-
-The terms "message content" and "mail data" are used interchangeably in
-this document to describe the material transmitted after the DATA
-command is accepted and before the end of data indication is
-transmitted. Message content includes message headers and the
-possibly-structured message body. The MIME specification [RFC-MIME]
-provides the Standard mechanisms for structured message bodies.
-
-2.3.10 Mailbox and Address
-
-As used in this specification, an "address" is a character string that
-identifies a user to whom mail will be sent or a location into which
-mail will be deposited. The term "mailbox" refers to that depository.
-The two terms are typically used interchangeably unless the distinction
-between the location in which mail is placed (the mailbox) and a
-reference to it (the address) is important. An address normally
-consists of user and domain specifications. The standard mailbox
-naming convention is defined to be "local-part@domain": contemporary
-usage permits a much broader set of applications than simple "user
-names". Consequently, and due to a long history of problems when
-intermediate hosts have attempted to optimize transport by modifying
-them, the local-part MUST be interpreted and assigned semantics only by
-the host specified in the domain part of the address.
-
-2.3.11 Reply
-
-An SMTP reply is an acknowledgment (positive or negative) sent from
-receiver to sender via the transmission channel in response to a
-command. The general form of a reply is a numeric completion code
-(indicating failure or success) usually followed by a text string. The
-codes are for use by programs and the text is usually intended for
-human users. Recent work [RFC-Reply] has specified further structuring
-of the reply strings, including the use of supplemental and more
-specific completion codes.
-
-2.4 General Syntax Principles and Transaction Model
-
-SMTP commands and replies have a rigid syntax. All commands begin with
-a four letter command verb. All Replies begin with a three digit
-numeric code. In some commands and replies, arguments MUST follow the
-verb or reply code. Some commands do not accept arguments (after the
-verb), and some reply codes are followed, sometimes optionally, by free
-form text. In both cases, where text appears, it is separated from the
-verb or reply code by a space character. Complete definitions of
-commands and replies appear in section 4.
-
-Verbs and argument values (e.g., "TO:" or "to:" in the MAIL command and
-extension name keywords) are not case sensitive, with the sole
-exception in this specification of a mailbox local-part (SMTP
-Extensions may explicitly specify case-sensitive elements). That is, a
-command verb, an argument value other than a mailbox local-part, and
-free form text MAY be encoded in upper case, lower case, or any mixture
-of upper and lower case with no impact on its meaning. This is NOT
-true of a mailbox local-part. The local-part of a mailbox MUST BE
-treated as case sensitive. Therefore, SMTP implementations MUST take
-care to preserve the case of mailbox local-parts. Mailbox domains are
-not case sensitive. In particular, for some hosts the user "smith" is
-different from the user "Smith". However, exploiting the case
-sensitivity of mailbox local-parts impedes interoperability and is
-discouraged.
-
-A few SMTP servers, in violation of this specification (and RFC 821)
-require that command verbs be encoded by clients in upper case.
-Implementations MAY wish to employ this encoding to accommodate those
-servers.
-
-The argument field consists of a variable length character string
-ending with the end of the line, i.e., with the character sequence
-<CRLF>. The receiver will take no action until this sequence is
-received.
-
-The syntax for each command is shown with the discussion of that
-command. Common elements and parameters are shown in section 4.1.2.
-
-Commands and replies are composed of characters from the ASCII
-character set [US-ASCII]. When the transport service provides an 8-bit
-byte (octet) transmission channel, each 7-bit character is transmitted
-right justified in an octet with the high order bit cleared to zero.
-More specifically, the unextended SMTP service provides seven bit
-transport only. An originating SMTP client which has not successfully
-negotiated an appropriate extension with a particular server MUST NOT
-transmit messages with information in the high-order bit of octets. If
-such messages are transmitted in violation of this rule, receiving SMTP
-servers MAY clear the high-order bit or reject the message as invalid.
-In general, a relay SMTP SHOULD assume that the message content it has
-received is valid and, assuming that the envelope permits doing so,
-relay it without inspecting that content. Of course, if the content is
-mislabeled and the data path cannot accept the actual content, this may
-result in ultimate delivery of a severely garbled message to the
-recipient. Delivery SMTP systems MAY reject ("bounce") such messages
-rather than deliver them. No sending SMTP system is permitted to send
-envelope commands in any character set other than US-ASCII; receiving
-systems SHOULD reject such commands, normally using "500 syntax error -
-invalid character" replies.
-
-Eight-bit message content transmission MAY be requested of the server
-by a client using extended SMTP facilities, notably the "8BITMIME"
-extension [8BITMIME]. 8BITMIME SHOULD be supported by SMTP servers.
-However, it MUST not be construed as authorization to transmit
-unrestricted eight bit material. 8BITMIME MUST NOT be requested by
-senders for material with the high bit on that is not in MIME format
-with an appropriate content-transfer encoding; servers MAY reject such
-messages.
-
-The metalinguistic notation used in this document corresponds to the
-"Augmented BNF" used in other Internet mail system documents. The
-reader who is not familiar with that syntax should consult [ABNF].
-Metalanguage terms used in running text are surrounded by pointed
-brackets (e.g., <CRLF>) for clarity.
-
-
-3. The SMTP Procedures: An Overview
-
-This section contains descriptions of the procedures used in SMTP:
-session initiation, the mail transaction, forwarding mail, verifying
-mailbox names and expanding mailing lists, and the opening and closing
-exchanges. Comments on relaying, a note on mail domains, and a
-discussion of changing roles are included at the end of this section.
-Several complete scenarios are presented in appendix D.
-
-3.1 Session Initiation
-
-An SMTP session is initiated when a client opens a connection to a
-server and the server responds with an opening message.
-
-SMTP server implementations MAY include identification of their
-software and version information in the connection greeting reply after
-the 220 code, a practice that permits more efficient isolation and
-repair of any problems. Implementations MAY make provision for SMTP
-servers to disable the software and version announcement where it
-causes security concerns. While some systems also identify their
-contact point for mail problems, this is not a substitute for
-maintaining the required "postmaster" address (see section 4.5.1).
-
-The SMTP protocol allows a server to formally reject a transaction
-while still allowing the initial connection as follows: a 554 response
-MAY be given in the initial connection opening message instead of the
-220. A server taking this approach MUST still wait for the client to
-send a QUIT (see section 4.1.1.10) before closing the connection and
-SHOULD respond to any intervening commands with "503 bad sequence of
-commands". Since an attempt to make an SMTP connection to such a
-system is probably in error, a server returning a 554 response on
-connection opening SHOULD provide enough information in the reply text
-to facilitate debugging of the sending system.
-
-3.2 Client Initiation
-
-Once the server has sent the welcoming message and the client has
-received it, the client normally sends the EHLO command to the server,
-indicating the client's identity. In addition to opening the session,
-use of EHLO indicates that the client is able to process service
-extensions and requests that the server provide a list of the
-extensions it supports. Older SMTP systems which are unable to support
-service extensions and contemporary clients which do not require
-service extensions in the mail session being initiated, MAY use HELO
-instead of EHLO. Servers MUST NOT return the extended EHLO-style
-response to a HELO command. For a particular connection attempt, if
-the server returns a "command not recognized" response to EHLO, the
-client SHOULD be able to fall back and send HELO.
-
-In the EHLO command the host sending the command identifies itself; the
-command may be interpreted as saying "Hello, I am <domain>" (and, in
-the case of EHLO, "and I support service extension requests").
-
-3.3 Mail Transactions
-
-There are three steps to SMTP mail transactions. The transaction
-starts with a MAIL command which gives the sender identification. A
-series of one or more RCPT commands follows giving the receiver
-information. Then a DATA command initiates transfer of the mail data
-and is terminated by the "end of mail" data indicator, which also
-confirms the transaction.
-
-The first step in the procedure is the MAIL command.
-
- MAIL FROM:<reverse-path> [<SP> <mail-parameters> ] <CRLF>
-
-This command tells the SMTP-receiver that a new mail transaction is
-starting and to reset all its state tables and buffers, including any
-recipients or mail data. The <reverse-path> portion of the first or
-only argument contains the source mailbox (between "<" and ">"
-brackets), which can be used to report errors (see section 4.2 for a
-discussion of error reporting). If accepted, the SMTP server returns a
-250 OK reply. If the mailbox specification is not acceptable for some
-reason, the server MUST return a reply indicating whether the failure
-is permanent (i.e., will occur again if the client tries to send the
-same address again) or temporary (i.e., the address might be accepted
-if the client tries again later). Despite the apparent scope of this
-requirement, there are circumstances in which the acceptability of the
-reverse-path may not be determined until one or more forward-paths (in
-RCPT commands) can be examined. In those cases, the server MAY
-reasonably accept the reverse-path (with a 250 reply) and then report
-problems after the forward-paths are received and examined. Normally,
-failures produce 550 or 553 replies.
-
-Historically, the <reverse-path> can contain more than just a mailbox,
-however, contemporary systems SHOULD NOT use source routing (see
-appendix C).
-
-The optional <mail-parameters> are associated with negotiated SMTP
-service extensions (see section 2.2).
-
-The second step in the procedure is the RCPT command.
-
- RCPT TO:<forward-path> [ <SP> <rcpt-parameters> ] <CRLF>
-
-The first or only argument to this command includes a forward-path
-(normally a mailbox and domain, always surrounded by "<" and ">"
-brackets) identifying one recipient. If accepted, the SMTP server
-returns a 250 OK reply and stores the forward-path. If the recipient
-is known not to be a deliverable address, the SMTP server returns a 550
-reply, typically with a string such as "no such user - " and the
-mailbox name (other circumstances and reply codes are possible). This
-step of the procedure can be repeated any number of times.
-
-The <forward-path> can contain more than just a mailbox. Historically,
-the <forward-path> can be a source routing list of hosts and the
-destination mailbox, however, contemporary SMTP clients SHOULD NOT
-utilize source routes (see appendix C). Servers MUST be prepared to
-encounter a list of source routes in the forward path, but SHOULD
-ignore the routes or MAY decline to support the relaying they imply.
-Similarly, servers MAY decline to accept mail that is destined for
-other hosts or systems. These restrictions make a server useless as a
-relay for clients that do not support full SMTP functionality.
-Consequently, restricted-capability clients MUST NOT assume that any
-SMTP server on the Internet can be used as their mail processing
-(relaying) site. If a RCPT command appears without a previous MAIL
-command, the server MUST return a 503 "Bad sequence of commands"
-response. The optional <rcpt-parameters> are associated with negotiated
-SMTP service extensions (see section 2.2).
-
-The third step in the procedure is the DATA command (or some
-alternative specified in a service extension).
-
- DATA <CRLF>
-
-If accepted, the SMTP server returns a 354 Intermediate reply and
-considers all succeeding lines up to but not including the end of mail
-data indicator to be the message text. When the end of text is
-successfully received and stored the SMTP-receiver sends a 250 OK reply.
-
-Since the mail data is sent on the transmission channel, the end of
-mail data must be indicated so that the command and reply dialog can be
-resumed. SMTP indicates the end of the mail data by sending a line
-containing only a "." (period or full stop). A transparency procedure
-is used to prevent this from interfering with the user's text (see
-section 4.5.2).
-
-The end of mail data indicator also confirms the mail transaction and
-tells the SMTP server to now process the stored recipients and mail
-data. If accepted, the SMTP server returns a 250 OK reply. The DATA
-command can fail in only two ways:
-
- - If there was no MAIL, or no RCPT, command, or all such commands
- were rejected, the server MAY return a "command out of sequence"
- (503) reply in response to the DATA command. If that reply is
- received, the client MUST NOT send the message data; more generally,
- message data MUST NOT be sent unless a 354 reply is received.
-
- - If the verb is initially accepted and the 354 reply issued, the DATA
- command should fail only if the mail transaction was incomplete (for
- example, no recipients), or if resources were unavailable
- (including, of course, the server unexpectedly becoming
- unavailable), or if the server determines that the message should be
- rejected for policy or other reasons.
-
-However, in practice, some servers do not perform recipient
-verification until after the message text is received. These servers
-SHOULD treat a failure for one or more recipients as a "subsequent
-failure" and return a mail message as discussed in section 6. Using a
-"550 mailbox not found" (or equivalent) reply code after the data are
-accepted makes it difficult or impossible for the client to determine
-which recipients failed.
-
-When RFC 822 format is being used, the mail data include the memo
-header items such as Date, Subject, To, Cc, From [MSGFMT]. Server SMTP
-systems SHOULD NOT reject messages based on perceived defects in the
-RFC 822 or MIME [RFC-MIME] message header or message body. In
-particular, they MUST NOT reject messages in which the numbers of
-Resent- fields do not match or Resent-to appears without Resent-from
-and/or Resent-date.
-
-Mail transaction commands MUST be used in the order discussed above.
-
-
-3.4 Forwarding for Address Correction or Updating
-
-Forwarding support is most often required to consolidate and simplify
-addresses within, or relative to, some enterprise and less frequently
-to establish addresses to link a person's prior address with current
-one. Silent forwarding of messages (without server notification to the
-sender), for security or non-disclosure purposes, is common in the
-contemporary Internet.
-
-In both the enterprise and the "new address" cases, information hiding
-(and sometimes security) considerations argue against exposure of the
-"final" address through the SMTP protocol as a side-effect of the
-forwarding activity. This may be especially important when the final
-address may not even be reachable by the sender. Consequently, the
-"forwarding" mechanisms described in section 3.2 of RFC 821, and
-especially the 251 (corrected destination) reply code from RCPT are
-deprecated: Servers SHOULD NOT provide that service or return that code.
-
-
-3.5 Commands for Debugging Addresses
-
-3.5.1 Overview
-
-SMTP provides commands to verify a user name or obtain the content of a
-mailing list. This is done with the VRFY and EXPN commands, which have
-character string arguments. Implementations SHOULD support VRFY and
-EXPN (however, see section 3.5.2 and 7.3).
-
-For the VRFY command, the string is a user name or a user name and
-domain (see below). If a normal (i.e., 250) response is returned, the
-response MAY include the full name of the user and MUST include the
-mailbox of the user. It MUST be in either of the following forms:
-
- User Name <local-part@domain>
- local-part@domain
-
-When a name that is the argument to VRFY could identify more than one
-mailbox, the server MAY either note the ambiguity or identify the
-alternatives. In other words, any of the following are legitimate
-response to VRFY:
-
- 553 User ambiguous
-
-or
-
- 553- Ambiguous; Possibilities are
- 553-Joe Smith <jsmith@foo.com>
- 553-Harry Smith <hsmith@foo.com>
- 553 Melvin Smith <dweep@foo.com>
-
-or
-
- 553-Ambiguous; Possibilities
- 553- <jsmith@foo.com>
- 553- <hsmith@foo.com>
- 553 <dweep@foo.com>
-
-Under normal circumstances, a client receiving a 553 reply would be
-expected to expose the result to the user. Use of exactly the forms
-given, and the "user ambiguous" or "ambiguous" keywords, possibly
-supplemented by extended reply codes such as those described in
-[RFC-REPLY], will facilitate automated translation into other languages
-as needed. Of course, a client that was highly automated or that was
-operating in another language than English, might choose to try to
-translate the response, to return some other indication to the user
-than the literal text of the reply, or to take some automated action
-such as consulting a directory service for additional information
-before reporting to the user.
-
-For the EXPN command, the string identifies a mailing list, and the
-successful (i.e., 250) multiline response MAY include the full name of
-the users and MUST give the mailboxes on the mailing list.
-
-In some hosts the distinction between a mailing list and an alias for a
-single mailbox is a bit fuzzy, since a common data structure may hold
-both types of entries, and it is possible to have mailing lists of one
-mailbox. If a request is made to verify a mailing list, a positive
-response MAY be given if a message so addressed would be delivered to
-everyone on the list, otherwise an error SHOULD be reported (e.g., "550
-That is a mailing list, not a user" or "252 Unable to verify members of
-mailing list"). If a request is made to expand a user name, the server
-MAY return a positive response consisting of a list containing one
-name, or an error MAY be reported (e.g., "550 That is a user name, not
-a mailing list").
-
-In the case of a successful multiline reply (normal for EXPN) exactly
-one mailbox is to be specified on each line of the reply. The case of
-an ambiguous request is discussed above.
-
-"User name" is a fuzzy term and has been used deliberately. An
-implementation of the VRFY or EXPN commands MUST include at least
-recognition of local mailboxes as "user names". However, since current
-Internet practice often results in a single host handling mail for
-multiple domains, hosts, especially hosts that provide this
-functionality, SHOULD accept the "local-part@domain" form as a "user
-name"; hosts MAY also choose to recognize other strings as "user names".
-
-The case of expanding a mailbox list requires a multiline reply, such
-as:
-
- C: EXPN Example-People
- S: 250-Jon Postel <Postel@isi.edu>
- S: 250-Fred Fonebone <Fonebone@physics.foo-u.edu>
- S: 250 Sam Q. Smith <SQSmith@specific.generic.com>
-
-or
-
- C EXPN Executive-Washroom-List
- S: 550 Access Denied to You.
-
-The character string arguments of the VRFY and EXPN commands cannot be
-further restricted due to the variety of implementations of the user
-name and mailbox list concepts. On some systems it may be appropriate
-for the argument of the EXPN command to be a file name for a file
-containing a mailing list, but again there are a variety of file naming
-conventions in the Internet. Similarly, historical variations in what
-is returned by these commands are such that the response SHOULD be
-interpreted very carefully, if at all, and SHOULD generally only be
-used for diagnostic purposes.
-
-3.5.2 VRFY Normal Response
-
-When normal (2yz or 551) responses are returned from a VRFY or EXPN
-request, the reply MUST normally include the mailbox name.
-"<local-part@domain>", where "domain" is a fully qualified domain name,
-MUST appear in the syntax. In exceptional circumstances, free-form
-text MAY be returned. In order to facilitate parsing by both computers
-and people, addresses SHOULD appear in pointed brackets. When
-addresses, rather than free-form debugging information, are returned,
-EXPN and VRFY MUST return only valid domain addresses that are usable
-in SMTP RCPT commands. Consequently, if an address implies delivery to
-a program or other system, the mailbox name used to reach that target
-MUST be given. Paths (explicit source routes) MUST NOT be returned by
-VRFY or EXPN.
-
-Server implementations SHOULD support both VRFY and EXPN. For security
-reasons, implementations MAY provide local installations a way to
-disable either or both of these commands through configuration options
-or the equivalent. When these commands are supported, they are not
-required to work across relays when relaying is supported. Since they
-were both optional in RFC 821, they MUST be listed as service
-extensions in an EHLO response, if they are supported.
-
-3.5.3 Meaning of VRFY or EXPN Success Response
-
-A server MUST NOT return a 220 code in response to a VRFY or EXPN
-command unless it has actually verified the address. In particular, a
-server MUST NOT return 220 if all it has done is to verify that the
-syntax given is valid. In that case, 502 (Command not implemented) or
-500 (Syntax error, command unrecognized) SHOULD be returned. As stated
-elsewhere, implementation (in the sense of actually validating
-addresses and returning information) of VRFY and EXPN are strongly
-recommended. Hence, implementations that return 500 or 502 for VRFY
-are not in full compliance with this specification.
-
-There may be circumstances where an address appears to be valid but
-cannot reasonably be verified in real time, particularly when a server
-is acting as a mail exchanger for another server or domain. "Apparent
-validity" in this case would normally involve at least syntax checking
-and might involve verification that any domains specified were ones to
-which the host expected to be able to relay mail. In these situations,
-reply code 252 SHOULD be returned. These cases parallel the discussion
-of RCPT verification discussed in section 2.1. Implementations
-generally SHOULD be more aggressive about address verification in the
-case of VRFY than in the case of RCPT, even if it takes a little longer
-to do so.
-
-3.5.4 Semantics and Applications of EXPN
-
-EXPN is often very useful in debugging and understanding problems with
-mailing lists and multiple-target-address aliases. Some systems have
-attempted to use source expansion of mailing lists as a means of
-eliminating duplicates. The propagation of aliasing systems with mail
-on the Internet, for hosts (typically with MX and CNAME DNS records),
-for mailboxes (various types of local host aliases), and in various
-proxying arrangements, has made it nearly impossible for these
-strategies to work, and mail systems SHOULD NOT attempt them.
-
-3.6 Domains
-
-Only resolvable, fully-qualified, domain names (FQDNs) are permitted
-when domain names are used in SMTP. In other words, names that can be
-resolved to MX RRs or A RRs (as discussed in section 5) are permitted,
-as are CNAME RRs whose targets can be resolved, in turn, to MX or A
-RRs. Local nicknames or unqualified names MUST NOT be used. There are
-two exceptions to the rule requiring FQDNs:
-
- - The domain name given in the EHLO command MUST BE either a primary
- host name (a domain name that resolves to an A RR) or, if the host
- has no name, an address literal as described in section 4.1.1.1.
-
- - The reserved mailbox name "postmaster" may be used in a RCPT command
- without domain qualification (see section 4.1.1.3) and MUST be
- accepted if so used.
-
-3.7 Relaying
-
-In general, the availability of Mail eXchanger records in the domain
-name system [RFC-DNS, RFC-974] makes the use of explicit source routes
-in the Internet mail system unnecessary. Many historical problems with
-their interpretation have made their use undesirable. SMTP clients
-SHOULD NOT generate explicit source routes except under unusual
-circumstances. SMTP servers MAY decline to act as mail relays or to
-accept addresses that specify source routes. When route information is
-encountered, SMTP servers are also permitted to ignore the route
-information and simply send to the final destination specified as the
-last element in the route and SHOULD do so. There has been an invalid
-practice of using names that do not appear in the DNS as destination
-names, with the senders counting on the intermediate hosts specified in
-source routing to resolve any problems. If source routes are stripped,
-this practice will cause failures. This is one of several reasons why
-SMTP clients MUST NOT generate invalid source routes or depend on
-serial resolution of names.
-
-When source routes are not used, the process described in RFC 821 for
-constructing a reverse-path from the forward-path is not applicable and
-the reverse-path at the time of delivery will simply be the address
-that appeared in the MAIL command.
-
-A relay SMTP server is usually the target of a DNS MX record that
-designates it, rather than the final delivery system. The relay server
-may accept or reject the task of relaying the mail in the same way it
-accepts or rejects mail for a local user. If it accepts the task, it
-then becomes an SMTP client, establishes a transmission channel to the
-next SMTP server specified in the DNS (according to the rules in
-section 5), and sends it the mail. If it declines to relay mail to a
-particular address for policy reasons, a 550 response SHOULD be
-returned.
-
-Many mail-sending clients exist, especially in conjunction with
-facilities that receive mail via POP3 or IMAP, that have limited
-capability to support some of the requirements of this specification,
-such as the ability to queue messages for subsequent delivery attempts.
-For these clients, it is common practice to make private arrangements
-to send all messages to a single server for processing and subsequent
-distribution. SMTP, as specified here, is not ideally suited for this
-role, and work is underway on standardized mail submission protocols
-that might eventually supercede the current practices. In any event,
-because these arrangements are private and fall outside the scope of
-this specification, they are not described here.
-
-It is important to note that MX records can point to SMTP servers which
-act as gateways into other environments, not just SMTP relays and final
-delivery systems; see sections 3.8 and 5.
-
-If an SMTP server has accepted the task of relaying the mail and later
-finds that the destination is incorrect or that the mail cannot be
-delivered for some other reason, then it MUST construct an
-"undeliverable mail" notification message and send it to the originator
-of the undeliverable mail (as indicated by the reverse-path). Formats
-specified for non-delivery reports by other standards (see, for
-example, [RFC-NOTARY1]) SHOULD be used if possible.
-
-This notification message must be from the SMTP server at the relay
-host or the host that first determines that delivery cannot be
-accomplished. Of course, SMTP servers MUST NOT send notification
-messages about problems transporting notification messages. One way to
-prevent loops in error reporting is to specify a null reverse-path in
-the MAIL command of a notification message. When such a message is
-transmitted the reverse-path MUST be set to null (see section 4.5.5 for
-additional discussion). A MAIL command with a null reverse-path
-appears as follows:
-
- MAIL FROM:<>
-
-As discussed in section 2.4.1, a relay SMTP has no need to inspect or
-act upon the headers or body of the message data and MUST NOT do so
-except to add its own "Received:" header (section 4.4) and, optionally,
-to attempt to detect looping in the mail system (see section 6.2).
-
-3.8 Mail Gatewaying
-
-While the relay function discussed above operates within the Internet
-SMTP transport service environment, MX records or various forms of
-explicit routing may require that an intermediate SMTP server perform a
-translation function between one transport service and another. As
-discussed in section 2.3.8, when such a system is at the boundary
-between two transport service environments, we refer to it as a
-"gateway" or "gateway SMTP".
-
-Gatewaying mail between different mail environments, such as different
-mail formats and protocols, is complex and does not easily yield to
-standardization. However, some general requirements may be given for a
-gateway between the Internet and another mail environment.
-
-3.8.1 Header Fields in Gatewaying
-
-Header fields MAY be rewritten when necessary as messages are gatewayed
-across mail environment boundaries. This may involve inspecting the
-message body or interpreting the local-part of the destination address
-in spite of the prohibitions in section 2.4.1
-
-Other mail systems gatewayed to the Internet often use a subset of
-RFC-822 headers or provide similar functionality with a different
-syntax, but some of these mail systems do not have an equivalent to the
-SMTP envelope. Therefore, when a message leaves the Internet
-environment, it may be necessary to fold the SMTP envelope information
-into the message header. A possible solution would be to create new
-header fields to carry the envelope information (e.g., "X-SMTP-MAIL:"
-and "X-SMTP-RCPT:"); however, this would require changes in mail
-programs in foreign environments and might risk disclosure of private
-information (see section 7.2).
-
-3.8.2 Received Lines in Gatewaying
-
-When forwarding a message into or out of the Internet environment, a
-gateway MUST prepend a Received: line, but it MUST NOT alter in any way
-a Received: line that is already in the header.
-
-"Received:" fields of messages originating from other environments may
-not conform exactly to this specification. However, the most important
-use of Received: lines is for debugging mail faults, and this debugging
-can be severely hampered by well-meaning gateways that try to "fix" a
-Received: line. As another consequence of trace fields arising in
-non-SMTP environments, receiving systems MUST NOT reject mail based on
-the format of a trace field and SHOULD be extremely robust in the light
-of unexpected information or formats in those fields.
-
-The gateway SHOULD indicate the environment and protocol in the "via"
-clauses of Received field(s) that it supplies.
-
-3.8.3 Addresses in Gatewaying
-
->From the Internet side, the gateway SHOULD accept all valid address
-formats in SMTP commands and in RFC-822 headers, and all valid RFC-822
-messages. Addresses and headers generated by gateways MUST conform to
-applicable Internet standards (including this one and RFC-822).
-Gateways are, of course, subject to the same rules for handling source
-routes as those described for other SMTP systems in section 3.3.
-
-3.8.4 Other Header Fields in Gatewaying
-
-The gateway MUST ensure that all header fields of a message that it
-forwards into the Internet meet the requirements for Internet mail. In
-particular, all addresses in "From:", "To:", "Cc:", etc., fields MUST
-be transformed (if necessary) to satisfy RFC-822 syntax, MUST reference
-only fully-qualified domain names, and MUST be effective and useful for
-sending replies. The translation algorithm used to convert mail from
-the Internet protocols to another environment's protocol SHOULD ensure
-that error messages from the foreign mail environment are delivered to
-the return path from the SMTP envelope, not to the sender listed in the
-"From:" field (or other fields) of the RFC-822 message.
-
-3.8.5 Envelopes in Gatewaying
-
-Similarly, when forwarding a message from another environment into the
-Internet, the gateway SHOULD set the envelope return path in accordance
-with an error message return address, if supplied by the foreign
-environment. If the foreign environment has no equivalent concept, the
-gateway must select and use a best approximation, with the message
-originator's address as the default of last resort.
-
-3.9 Terminating Sessions and Connections
-
-An SMTP connection is terminated when the client sends a QUIT command.
-The server responds with a positive reply code, after which it closes
-the connection.
-
-An SMTP server MUST NOT intentionally close the connection except:
-
- - After receiving a QUIT command and responding with a 221 reply.
-
- - After detecting the need to shutdown the SMTP service and returning
- a 421 response code. This response code can be issued after the
- server receives any command or, if necessary, asynchronously from
- command receipt (on the assumption that the client will receive it
- after the next command is issued).
-
-In particular, a server that closes connections in response to commands
-that are not understood is in violation of this specification. Servers
-are expected to be tolerant of unknown commands, issuing a 500 reply
-and awaiting further instructions from the client.
-
-An SMTP server which is forcibly shut down via external means SHOULD
-attempt to send a line containing a 421 response code to the SMTP
-client before exiting. The SMTP client will normally read the 421
-response code after sending its next command.
-
-SMTP clients that experience a connection close, reset, or other
-communications failure due to circumstances not under their control (in
-violation of the intent of this specification but sometimes
-unavoidable) SHOULD, to maintain the robustness of the mail system,
-treat the mail transaction as if a 451 response had been received and
-act accordingly.
-
-3.10 Mailing Lists and Aliases
-
-An SMTP-capable host SHOULD support both the alias and the list models
-of address expansion for multiple delivery. When a message is
-delivered or forwarded to each address of an expanded list form, the
-return address in the envelope ("MAIL FROM:") MUST be changed to be the
-address of a person or other entity who administers the list. However,
-in this case, the message header (see [MSGFMT]) MUST be left unchanged;
-in particular, the "From" field of the message header is unaffected.
-
-An important mail facility is a mechanism for multi-destination
-delivery of a single message, by transforming (or "expanding" or
-"exploding") a pseudo-mailbox address into a list of destination
-mailbox addresses. When a message is sent to such a pseudo-mailbox
-(sometimes called an "exploder"), copies are forwarded or redistributed
-to each mailbox in the expanded list. Servers SHOULD simply utilize
-the addresses on the list; application of heuristics or other matching
-rules to eliminate some addresses, such as that of the originator, is
-strongly discouraged. We classify such a pseudo-mailbox as an "alias"
-or a "list", depending upon the expansion rules.
-
-3.10.1 Alias
-
-To expand an alias, the recipient mailer simply replaces the
-pseudo-mailbox address in the envelope with each of the expanded
-addresses in turn; the rest of the envelope and the message body are
-left unchanged. The message is then delivered or forwarded to each
-expanded address.
-
-3.10.2 List
-
-A mailing list may be said to operate by "redistribution" rather than
-by "forwarding". To expand a list, the recipient mailer replaces the
-pseudo-mailbox address in the envelope with all of the expanded
-addresses. The return address in the envelope is changed so that all
-error messages generated by the final deliveries will be returned to a
-list administrator, not to the message originator, who generally has no
-control over the contents of the list and will typically find error
-messages annoying.
-
-
-4. The SMTP Specifications
-
-4.1 SMTP Commands
-
-4.1.1 Command Semantics and Syntax
-
-The SMTP commands define the mail transfer or the mail system function
-requested by the user. SMTP commands are character strings terminated
-by <CRLF>. The commands themselves are alphabetic characters
-terminated by <SP> if parameters follow and <CRLF> otherwise. (In the
-interest of improved interoperability, SMTP receivers are encouraged to
-tolerate trailing white space before the terminating <CRLF>.) The
-syntax of the local part of a mailbox must conform to receiver site
-conventions and the syntax specified in section 4.1.2. The SMTP
-commands are discussed below. The SMTP replies are discussed in
-section 4.2.
-
-A mail transaction involves several data objects which are communicated
-as arguments to different commands. The reverse-path is the argument
-of the MAIL command, the forward-path is the argument of the RCPT
-command, and the mail data is the argument of the DATA command. These
-arguments or data objects must be transmitted and held pending the
-confirmation communicated by the end of mail data indication which
-finalizes the transaction. The model for this is that distinct buffers
-are provided to hold the types of data objects, that is, there is a
-reverse-path buffer, a forward-path buffer, and a mail data buffer.
-Specific commands cause information to be appended to a specific
-buffer, or cause one or more buffers to be cleared.
-
-Several commands (RSET, DATA, QUIT) are specified as not permitting
-parameters. In the absence of specific extensions offered by the
-server and accepted by the client, clients MUST NOT send such
-parameters and servers SHOULD reject commands containing them as having
-invalid syntax.
-
-4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)
-
-These commands are used to identify the SMTP client to the SMTP server.
-The argument field contains the fully-qualified domain name of the SMTP
-client if one is available. In situations in which the SMTP client
-system does not have a meaningful domain name (e.g., when its address
-is dynamically allocated and no reverse mapping record is available),
-the client SHOULD send an address literal (see section 4.1.3),
-optionally followed by information that will help to identify the
-client system.
-
-The SMTP server identifies itself to the SMTP client in the connection
-greeting reply and in the response to this command.
-
-A client SMTP SHOULD start an SMTP session by issuing the EHLO command.
-If the SMTP server supports the SMTP service extensions it will give a
-successful response, a failure response, or an error response. If the
-SMTP server, in violation of this specification, does not support any
-SMTP service extensions it will generate an error response. Older
-client SMTP systems MAY, as discussed above, use HELO (as specified in
-RFC 821) instead of EHLO, and servers MUST support the HELO command and
-reply properly to it. In any event, a client MUST issue HELO or EHLO
-before starting a mail transaction.
-
-These commands, and a "250 OK" reply to one of them, confirm that both
-the SMTP client and the SMTP server are in the initial state, that is,
-there is no transaction in progress and all state tables and buffers
-are cleared.
-
-Syntax:
- ehlo = "EHLO" SP Domain CRLF
- helo = "HELO" SP Domain CRLF
-
-Normally, the response to EHLO will be a multiline reply. Each line of
-the response contains a keyword and, optionally, one or more
-parameters. The syntax for a positive response, using the ABNF
-notation and low-level terminals of [ABNF], is:
-
- ehlo-ok-rsp = ( "250" domain [ SP ehlo-greet ] CRLF )
- / ( "250-" domain [ SP ehlo-greet ] CRLF
- *( "250-" ehlo-line CRLF )
- "250" SP ehlo-line CRLF )
-
- ehlo-greet = 1*(%d0-9 / %d11-12 / %d14-127)
- ; string of any characters other than CR or LF
-
- ehlo-line = ehlo-keyword *( SP ehlo-param )
-
- ehlo-keyword = (ALPHA / DIGIT) *(ALPHA / DIGIT / "-")
- ; additional syntax of ehlo-params depends on
- ; ehlo-keyword
-
- ehlo-param = 1*(%d33-127)
- ; any CHAR excluding <SP> and all
- ; control characters (US-ASCII 0-31 inclusive)
-
-Although EHLO keywords may be specified in upper, lower, or mixed case,
-they MUST always be recognized and processed in a case-insensitive
-manner. This is simply an extension of practices specified in RFC 821
-and section 2.4.1.
-
-4.1.1.2 MAIL (MAIL)
-
-This command is used to initiate a mail transaction in which the mail
-data is delivered to an SMTP server which may, in turn, deliver it to
-one or more mailboxes or pass it on to another system (possibly using
-SMTP). The argument field contains a reverse-path and may contain
-optional parameters. In general, the MAIL command may be sent only
-when no mail transaction is in progress, see section 4.1.4.
-
-The reverse-path consists of the sender mailbox. Historically, that
-mailbox might optionally have been preceeded by a list of hosts, but
-that behavior. In some types of reporting messages for which a reply
-is likely to cause a mail loop (for example, mail delivery and
-nondelivery notifications), the reverse-path may be null (see section
-3.7).
-
-This command clears the reverse-path buffer, the forward-path buffer,
-and the mail data buffer; and inserts the reverse-path information from
-this command into the reverse-path buffer.
-
-If service extensions were negotiated, the MAIL command may also carry
-parameters associated with a particular service extension.
-
-Syntax:
-
- "MAIL FROM:" ("<>" / Reverse-Path)
- [SP Mail-parameters] CRLF
-
-4.1.1.3 RECIPIENT (RCPT)
-
-This command is used to identify an individual recipient of the mail
-data; multiple recipients are specified by multiple use of this
-command. The argument field contains a forward-path and may contain
-optional parameters.
-
-The forward-path normally consists of the required destination mailbox.
-Sending systems SHOULD not generate the optional list of hosts known as
-a source route. Receiving systems MUST recognize source route syntax
-but SHOULD strip off the source route specification and utilize the
-domain name associated with the mailbox as if the source route had not
-been provided.
-
-Similarly, relay hosts SHOULD strip or ignore source routes, and names
-MUST NOT be copied into the reverse-path. When mail reaches its
-ultimate destination (the forward-path contains only a destination
-mailbox), the SMTP server inserts it into the destination mailbox in
-accordance with its host mail conventions.
-
-For example, mail received at relay host xyz.com with envelope commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<@hosta.int,@jkl.org:userc@d.bar.org>
-
-will normally be sent directly on to host d.bar.org with envelope
-commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<userc@d.bar.org>
-
-As provided in appendix C, xyz.com MAY also choose to relay the message
-to hosta.int, using the envelope commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<@hosta.int,@jkl.org:userc@d.bar.org>
-
-or to jkl.org, using the envelope commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<@jkl.org:userc@d.bar.org>
-
-Of course, since hosts are not required to relay mail at all, xyz.com
-may also reject the message entirely when the RCPT command is received,
-using a 550 code (since this is a "policy reason").
-
-If service extensions were negotiated, the RCPT command may also carry
-parameters associated with a particular service extension offered by
-the server. The client MUST NOT transmit parameters other than those
-associated with a service extension offered by the server in its EHLO
-response.
-
-Syntax:
- "RCPT TO:" ("<Postmaster@" domain ">" / Forward-Path)
- [SP Rcpt-parameters] CRLF
-
-4.1.1.4 DATA (DATA)
-
-The receiver treats the lines (strings ending in <CRLF> sequences, as
-described in section 2.3.7) following the command as mail data from the
-sender. This command causes the mail data to be appended to the mail
-data buffer. The mail data may contain any of the 128 ASCII character
-codes, although experience has indicated that use of control characters
-other than SP, HT, CR, and LF (especially the ASCII "Null" character)
-may cause problems and SHOULD be avoided when possible.
-
-The mail data is terminated by a line containing only a period, that
-is, the character sequence "<CRLF>.<CRLF>" (see section 4.5.2). This
-is the end of mail data indication. Note that the first <CRLF> of this
-terminating sequence is also the <CRLF> that ends the final line of the
-data (message text) or, if there was no data, ends the DATA command
-itself. An extra <CRLF> MUST NOT be added, as that would cause an
-empty line to be added to the message. The only exception to this rule
-would arise if the message body were passed to the originating
-SMTP-sender with a final "line" that did not end in <CRLF>; in that
-case, the originating SMTP system MUST either reject the message as
-invalid or add <CRLF> in order to have the receiving SMTP server
-recognize the "end of data" condition.
-
-The custom of accepting lines ending only in <LF>, as a concession to
-non-conforming behavior on the part of some UNIX systems, has proven to
-cause more interoperability problems than it solves, and SMTP server
-systems MUST NOT do this, even in the name of improved robustness. In
-particular, the sequence "<LF>.<LF>" (bare line feeds, without carriage
-returns) MUST NOT be treated as equivalent to <CRLF>.<CRLF> as the end
-of mail data indication.
-
-Receipt of the end of mail data indication requires the server to
-process the stored mail transaction information. This processing
-consumes the information in the reverse-path buffer, the forward-path
-buffer, and the mail data buffer, and on the completion of this command
-these buffers are cleared. If the processing is successful, the
-receiver MUST send an OK reply. If the processing fails the receiver
-MUST send a failure reply. The SMTP model does not allow for partial
-failures at this point: either the message is accepted by the server
-for delivery and a positive response is returned or it is not accepted
-and a failure reply is returned. Errors that are diagnosed
-subsequently MUST be reported in a mail message, as discussed in
-section 4.4 In sending a positive completion reply to the end of data
-indication, the receiver takes full responsibility for the message (see
-section 6.1).
-
-When the SMTP server accepts a message either for relaying or for final
-delivery, it inserts a trace record (also referred to interchangeably
-as a "time stamp line" or "Received" line) at the top of the mail data.
-This trace record indicates the identity of the host that sent the
-message, the identity of the host that received the message (and is
-inserting this time stamp), and the date and time the message was
-received. Relayed messages will have multiple time stamp lines.
-Details for formation of these lines, including their syntax, is
-specified in section 4.4.
-
-Syntax:
- "DATA" CRLF
-
-
-4.1.1.5 RESET (RSET)
-
-This command specifies that the current mail transaction will be
-aborted. Any stored sender, recipients, and mail data MUST be
-discarded, and all buffers and state tables cleared. The receiver MUST
-send a "250 OK" reply to a RSET command with no arguments. A reset
-command may be issued by the client at any time. It is effectively
-equivalent to a NOOP if issued immediately after EHLO, before EHLO is
-issued in the session, after an end-of-data indicator has been sent and
-acknowledged, or immediately before a QUIT. In other situations, it
-restores the state to that immediately after the most recent EHLO. An
-SMTP server MUST NOT close the connection as the result of receiving a
-RSET; that action is reserved for QUIT (see section 4.1.1.10).
-
-Since EHLO implies some additional processing and response by the
-server, RSET will normally be more efficient than reissuing that
-command, even though the formal semantics are the same.
-
-There are circumstances, contrary to the intent of this specification,
-in which an SMTP server may receive an indication that the underlying
-TCP connection has been closed or reset. To preserve the robustness of
-the mail system, SMTP servers SHOULD be prepared for this condition and
-SHOULD treat it as if a QUIT had been received before the connection
-disappeared.
-
-Syntax:
- "RSET" CRLF
-
-
-4.1.1.6 VERIFY (VRFY)
-
-This command asks the receiver to confirm that the argument identifies
-a user or mailbox. If it is a user name, information is returned as
-specified in section 3.5.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer.
-
-Syntax:
- "VRFY" SP String CRLF
-
-4.1.1.7 EXPAND (EXPN)
-
-This command asks the receiver to confirm that the argument identifies
-a mailing list, and if so, to return the membership of that list. If
-the command is successful, a reply is returned containing information
-as described in section 3.5. This reply will have multiple lines
-except in the trivial case of a one-member list.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer.
-
-Syntax:
- "EXPN" SP String CRLF
-
-4.1.1.8 HELP (HELP)
-
-This command causes the server to send helpful information to the
-client. The command MAY take an argument (e.g., any command name) and
-return more specific information as a response.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer.
-
-SMTP servers SHOULD support HELP without arguments and MAY support it
-with arguments.
-
-Syntax:
- "HELP" [ SP String ] CRLF
-
-4.1.1.9 NOOP (NOOP)
-
-This command does not affect any parameters or previously entered
-commands. It specifies no action other than that the receiver send an
-OK reply.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer. If a parameter string is specified,
-servers SHOULD ignore it.
-
-Syntax:
- "NOOP" [ SP String ] CRLF
-
-
-4.1.1.10 QUIT (QUIT)
-
-This command specifies that the receiver MUST send an OK reply, and
-then close the transmission channel.
-
-The receiver MUST NOT intentionally close the transmission channel
-until it receives and replies to a QUIT command (even if there was an
-error). The sender MUST NOT intentionally close the transmission
-channel until it sends a QUIT command and SHOULD wait until it receives
-the reply (even if there was an error response to a previous command).
-If the connection is closed prematurely due to violations of the above
-or system or network failure, the server MUST cancel any pending
-transaction, but not undo any previously completed transaction, and
-generally MUST act as if the command or transaction in progress had
-received a temporary error (i.e., a 4yz response).
-
-Syntax:
- "QUIT" CRLF
-
-
-4.1.2 Lower-level Syntax
-
-The syntax of the argument fields of the above commands (using the
-syntax specified in [ABNF] where applicable) is given below. Some of
-the productions given below are used only in conjunction with source
-routes as described in appendix C. Terminals not defined in this
-document, such as ALPHA, DIGIT, SP, CR, LF, CRLF, are as defined in the
-"core" syntax (section 6) of [ABNF] or in the syntax of [MSGFMT].
-
- Reverse-path = Path
- Forward-path = Path
- Path = "<" [ A-d-l ":" ] Mailbox ">"
- A-d-l = At-domain *( "," A-d-l )
- ; Note that this form, the so-called "source route",
- ; MUST BE accepted, SHOULD NOT be generated, and SHOULD be
- ; ignored.
- At-domain = "@" domain
- Mail-parameters = esmtp-param *(SP esmtp-param)
- Rcpt-parameters = esmtp-param *(SP esmtp-param)
- esmtp-param = esmtp-keyword ["=" esmtp-value]
- esmtp-keyword = (ALPHA / DIGIT) *(ALPHA / DIGIT / "-")
- esmtp-value = 1*(%d33-60 / %d62-127)
- ; any CHAR excluding "=", SP, and control
- ; characters
- Keyword = Ldh-str
- Argument = Atom
- Domain = (sub-domain 1*("." sub-domain)) / address-literal
- sub-domain = Let-dig [Ldh-str]
-
- address-literal = "[" IPv4-address-literal /
- IPv6-address-literal /
- General-address-literal "]"
- ; See section 4.1.3
-
- Mailbox = Local-part "@" Domain
-
- Local-part = Dot-string / Quoted-string
- ; MAY be case-sensitive
-
- Dot-string = Atom [ "." Atom ]
-
- Atom = 1*atext
-
- Quoted-string = DQUOTE *qcontent DQUOTE
-
- String = Atom / Quoted-string
-
-
-While the above definition for Local-part is relatively permissive, for
-maximum interoperability, a host that expects to receive mail SHOULD
-avoid defining mailboxes where the Local-part requires (or uses) the
-Quoted-string form or where the Local-part is case-sensitive. For any
-purposes that require generating or comparing Local-parts (e.g., to
-specific mailbox names), all quoted forms MUST be treated as equivalent
-and the sending system SHOULD transmit the form that uses the minimum
-quoting possible.
-
-Systems MUST NOT define mailboxes in such a way as to require the use
-in SMTP of non-ASCII characters (octets with the high order bit set to
-one) or ASCII "control characters" (decimal value 0-31 and 127). These
-characters MUST NOT be used in MAIL or RCPT commands or other commands
-that require mailbox names.
-
-Note that the backslash, "\", is a quote character, which is used to
-indicate that the next character is to be used literally (instead of
-its normal interpretation). For example, "Joe\,Smith" indicates a
-single nine character user field with the comma being the fourth
-character of the field.
-
-To promote interoperability and consistent with long-standing guidance
-about conservative use of the DNS in naming and applications (e.g., see
-section 2.3.1 of the base DNS document [RFC-1015]), characters outside
-the set of alphas, digits, and hyphen MUST NOT appear in domain name
-labels for SMTP clients or servers. In particular, the underscore
-character is not permitted. SMTP servers that receive a command in
-which invalid character codes have been employed, and for which there
-are no other reasons for rejection, MUST reject that command with a 501
-response.
-
-4.1.3 Address Literals
-
-Sometimes a host is not known to the domain name system and
-communication (and, in particular, communication to report and repair
-the error) is blocked. To bypass this barrier a special literal form
-of the address is allowed as an alternative to a domain name. For IPv4
-addresses, this form uses four small decimal integers separated by dots
-and enclosed by brackets such as [123.255.37.2], which indicates an
-(IPv4) Internet Address in sequence-of-octets form. For IPv6 and other
-forms of addressing that might eventually be standardized, the form
-consists of a standardized "tag" that identifies the address syntax, a
-space, and the address itself, in a format specified as part of the
-IPv6 standards [IPv6AddrSpec].
-
-Specifically:
-
- IPv4-address-literal = Snum 3("." Snum)
- IPv6-address-literal = "IPv6:" IPv6-addr
- General-address-literal = Standardized-tag ":" 1*dcontent
- Standardized-tag = Ldh-str
- ; MUST be specified in a standards-track RFC
- ; and registered with IANA
-
- Snum = 1*3DIGIT ; representing a decimal integer
- ; value in the range 0 through 255
- Let-dig = ALPHA / DIGIT
- Ldh-str = *( ALPHA / DIGIT / "-" ) Let-dig
-
- IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp
- IPv6-hex = 1*4HEXDIG
- IPv6-full = IPv6-hex 7(":" IPv6-hex)
- IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":"
- IPv6-hex)]
- ; The "::" represents at least 2 16-bit groups of zeros
- ; No more than 6 groups in addition to the "::" may be
- ; present
- IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal
- IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::"
- [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal
- ; The "::" represents at least 2 16-bit groups of zeros
- ; No more than 4 groups in addition to the "::" and
- ; IPv4-address-literal may be present
-
-
-4.1.4 Order of Commands
-
-There are restrictions on the order in which these commands may be used.
-
-A session that will contain mail transactions MUST first be initialized
-by the use of the EHLO command. An SMTP server SHOULD accept commands
-for non-mail transactions (e.g., VRFY or EXPN) without this
-initialization.
-
-An EHLO command MAY be issued by a client later in the session. If it
-is issued after the session begins, the SMTP server MUST clear all
-buffers and reset the state exactly as if a RSET command had been
-issued. In other words, the sequence of RSET followed immediately by
-EHLO is redundant, but not harmful other than in the performance cost
-of executing unnecessary commands.
-
-If the EHLO command is not acceptable to the SMTP server, 501, 500, or
-502 failure replies MUST be returned as appropriate. The SMTP server
-MUST stay in the same state after transmitting these replies that it
-was in before the EHLO was received.
-
-The SMTP client MUST, if possible, ensure that the domain parameter to
-the EHLO command is a valid principal host name (not a CNAME or MX
-name) for its host. If this is not possible (e.g., when the client's
-address is dynamically assigned and the client does not have an obvious
-name), an address literal SHOULD be substituted for the domain name and
-supplemental information provided that will assist in identifying the
-client.
-
-An SMTP server MAY verify that the domain name parameter in the EHLO
-command actually corresponds to the IP address of the client. However,
-the server MUST NOT refuse to accept a message for this reason if the
-verification fails: the information about verification failure is for
-logging and tracing only.
-
-The NOOP, HELP, EXPN, VRFY, and RSET commands can be used at any time
-during a session, or without previously initializing a session. SMTP
-servers SHOULD process these normally (that is, not return a 503 code)
-even if no EHLO command has yet been received; clients SHOULD open a
-session with EHLO before sending these commands.
-
-If these rules are followed, the example in RFC 821 that shows "550
-access denied to you" in response to an EXPN command is incorrect
-unless an EHLO command precedes the EXPN or the denial of access is
-based on the client's IP address or other authentication or
-authorization-determining mechanisms.
-
-The MAIL command (or the obsolete SEND, SOML, or SAML commands) begins
-a mail transaction. Once started, a mail transaction consists of a
-transaction beginning command, one or more RCPT commands, and a DATA
-command, in that order. A mail transaction may be aborted by the RSET
-(or a new EHLO) command. There may be zero or more transactions in a
-session. MAIL (or SEND, SOML, or SAML) MUST NOT be sent if a mail
-transaction is already open, i.e., it should be sent only if no mail
-transaction had been started in the session, or it the previous one
-successfully concluded with a successful DATA command, or if the
-previous one was aborted with a RSET.
-
-If the transaction beginning command argument is not acceptable, a 501
-failure reply MUST be returned and the SMTP server MUST stay in the
-same state. If the commands in a transaction are out of order to the
-degree that they cannot be processed by the server, a 503 failure reply
-MUST be returned and the SMTP server MUST stay in the same state.
-
-The last command in a session MUST be the QUIT command. The QUIT
-command cannot be used at any other time in a session, but SHOULD be
-used by the client SMTP to request connection closure, even when no
-session opening command was sent and accepted.
-
-4.1.5 Private-use Commands
-
-As specified in section 2.2.2, commands starting in "X" may be used by
-bilateral agreement between the client (sending) and server (receiving)
-SMTP agents. An SMTP server that does not recognize such a command is
-expected to reply with "500 Command not recognized". An extended SMTP
-server MAY list the feature names associated with these private
-commands in the response to the EHLO command.
-
-Commands sent or accepted by SMTP systems that do not start with "X"
-MUST conform to the requirements of section 2.2.2.
-
-
-4.2 SMTP Replies
-
-Replies to SMTP commands serve to ensure the synchronization of
-requests and actions in the process of mail transfer and to guarantee
-that the SMTP client always knows the state of the SMTP server. Every
-command MUST generate exactly one reply.
-
-The details of the command-reply sequence are described in section 4.3.
-
-An SMTP reply consists of a three digit number (transmitted as three
-alphanumeric characters) followed by some text unless specified
-otherwise in this document. The number is for use by automata to
-determine what state to enter next; the text is for the human user.
-The three digits contain enough encoded information that the SMTP
-client need not examine the text and may either discard it or pass it
-on to the user, as appropriate. Exceptions are as noted elsewhere in
-this document. In particular, the 220, 221, 251, 421, and 551 reply
-codes are associated with message text that must be parsed and
-interpreted by machines. In the general case, the text may be receiver
-dependent and context dependent, so there are likely to be varying
-texts for each reply code. A discussion of the theory of reply codes
-is given in section 4.2.1. Formally, a reply is defined to be the
-sequence: a three-digit code, <SP>, one line of text, and <CRLF>, or a
-multiline reply (as defined in section 4.2.1). Since, in violation of
-this specification, the text is sometimes not sent, clients which do
-not receive it SHOULD be prepared to process the code alone (with or
-without a trailing space character). Only the EHLO, EXPN, and HELP
-commands are expected to result in multiline replies in normal
-circumstances, however, multiline replies are allowed for any command.
-
-In ABNF, server responses are:
-
- Greeting = "220 " Domain [ SP text ] CRLF
- Reply-line = Reply-code [ SP text ] CRLF
-
-where "Greeting" appears only in the 220 response that announces that
-the server is opening its part of the connection.
-
-An SMTP server SHOULD send only the reply codes listed in this
-document. An SMTP server SHOULD use the text shown in the examples
-whenever appropriate.
-
-An SMTP client MUST determine its actions only by the reply code, not
-by the text (except for 251 and 551 and, if necessary, 220, 221, and
-421 replies); in the general case, any text, including no text at all
-(although senders SHOULD NOT send bare codes), MUST be acceptable. The
-space (blank) following the reply code is considered part of the text.
-Whenever possible, a receiver-SMTP SHOULD test the first digit
-(severity indication) of the reply code.
-
-The list of codes that appears below MUST NOT be construed as
-permanent. While the addition of new codes should be a rare and
-significant activity, with supplemental information in the textual part
-of the response being preferred, new codes may be added as the result
-of new Standards or Standards-track specifications. Consequently, a
-sender-SMTP MUST be prepared to handle codes not specified in this
-document and MUST do so by interpreting the first digit only.
-
-4.2.1 Reply Code Severities and Theory
-
-The three digits of the reply each have a special significance. The
-first digit denotes whether the response is good, bad or incomplete. An
-unsophisticated SMTP client, or one that receives an unexpected code,
-will be able to determine its next action (proceed as planned, redo,
-retrench, etc.) by examining this first digit. An SMTP client that
-wants to know approximately what kind of error occurred (e.g., mail
-system error, command syntax error) may examine the second digit. The
-third digit and any supplemental information that may be present is
-reserved for the finest gradation of information.
-
-There are five values for the first digit of the reply code:
-
-1yz Positive Preliminary reply
- The command has been accepted, but the requested action is being
- held in abeyance, pending confirmation of the information in this
- reply. The SMTP client should send another command specifying
- whether to continue or abort the action. Note: unextended SMTP does
- not have any commands that allow this type of reply, and so does not
- have continue or abort commands.
-
-2yz Positive Completion reply
- The requested action has been successfully completed. A new request
- may be initiated.
-
-3yz Positive Intermediate reply
- The command has been accepted, but the requested action is being
- held in abeyance, pending receipt of further information. The SMTP
- client should send another command specifying this information.
- This reply is used in command sequence groups (i.e., in DATA).
-
-4yz Transient Negative Completion reply
- The command was not accepted, and the requested action did not
- occur. However, the error condition is temporary and the action may
- be requested again. The sender should return to the beginning of
- the command sequence (if any). It is difficult to assign a meaning
- to "transient" when two different sites (receiver- and sender- SMTP
- agents) must agree on the interpretation. Each reply in this
- category might have a different time value, but the SMTP client is
- encouraged to try again. A rule of thumb to determine whether a
- reply fits into the 4yz or the 5yz category (see below) is that
- replies are 4yz if they can be successful if repeated without any
- change in command form or in properties of the sender or receiver
- (that is, the command is repeated identically and the receiver does
- not put up a new implementation.)
-
-5yz Permanent Negative Completion reply
- The command was not accepted and the requested action did not occur.
- The SMTP client is discouraged from repeating the exact request (in
- the same sequence). Even some "permanent" error conditions can be
- corrected, so the human user may want to direct the SMTP client to
- reinitiate the command sequence by direct action at some point in
- the future (e.g., after the spelling has been changed, or the user
- has altered the account status).
-
-The second digit encodes responses in specific categories:
-
-x0z Syntax: These replies refer to syntax errors, syntactically
- correct commands that do not fit any functional category, and
- unimplemented or superfluous commands.
-
-x1z Information: These are replies to requests for information, such
- as status or help.
-
-x2z Connections: These are replies referring to the transmission
- channel.
-
-x3z Unspecified.
-
-x4z Unspecified.
-
-x5z Mail system: These replies indicate the status of the receiver
- mail system vis-a-vis the requested transfer or other mail system
- action.
-
-The third digit gives a finer gradation of meaning in each category
-specified by the second digit. The list of replies illustrates this.
-Each reply text is recommended rather than mandatory, and may even
-change according to the command with which it is associated. On the
-other hand, the reply codes must strictly follow the specifications in
-this section. Receiver implementations should not invent new codes for
-slightly different situations from the ones described here, but rather
-adapt codes already defined.
-
-For example, a command such as NOOP, whose successful execution does
-not offer the SMTP client any new information, will return a 250 reply.
-The reply is 502 when the command requests an unimplemented
-non-site-specific action. A refinement of that is the 504 reply for a
-command that is implemented, but that requests an unimplemented
-parameter.
-
-The reply text may be longer than a single line; in these cases the
-complete text must be marked so the SMTP client knows when it can stop
-reading the reply. This requires a special format to indicate a
-multiple line reply.
-
-The format for multiline replies requires that every line, except the
-last, begin with the reply code, followed immediately by a hyphen, "-"
-(also known as minus), followed by text. The last line will begin with
-the reply code, followed immediately by <SP>, optionally some text, and
-<CRLF>. As noted above, servers SHOULD send the <SP> if subsequent
-text is not sent, but clients MUST be prepared for it to be omitted.
-
-For example:
- 123-First line
- 123-Second line
- 123-234 text beginning with numbers
- 123 The last line
-
-In many cases the SMTP client then simply needs to search for the reply
-code followed by <SP> at the beginning of a line, and ignore all
-preceding lines. In a few cases, there is important data for the
-client in the reply "text". The client will be able to identify these
-cases from the current context.
-
-4.2.2 Reply Codes by Function Groups
-
- 500 Syntax error, command unrecognized
- (This may include errors such as command line too long)
- 501 Syntax error in parameters or arguments
- 502 Command not implemented (see section 4.2.4)
- 503 Bad sequence of commands
- 504 Command parameter not implemented
-
- 211 System status, or system help reply
- 214 Help message
- (Information on how to use the receiver or the meaning of a
- particular non-standard command; this reply is useful only
- to the human user)
-
- 220 <domain> Service ready
- 221 <domain> Service closing transmission channel
- 421 <domain> Service not available, closing transmission channel
- (This may be a reply to any command if the service knows it
- must shut down)
-
- 250 Requested mail action okay, completed
- 251 User not local; will forward to <forward-path>
- (See section 3.4)
- 252 Cannot VRFY user, but will accept message and attempt
- delivery
- (See section 3.5.3)
- 450 Requested mail action not taken: mailbox unavailable
- (e.g., mailbox busy)
- 550 Requested action not taken: mailbox unavailable
- (e.g., mailbox not found, no access, or command rejected
- for policy reasons)
- 451 Requested action aborted: error in processing
- 551 User not local; please try <forward-path>
- (See section 3.4)
- 452 Requested action not taken: insufficient system storage
- 552 Requested mail action aborted: exceeded storage allocation
- 553 Requested action not taken: mailbox name not allowed
- (e.g., mailbox syntax incorrect)
- 354 Start mail input; end with <CRLF>.<CRLF>
- 554 Transaction failed (Or, in the case of a connection-opening
- response, "No SMTP service here")
-
-4.2.3 Reply Codes in Numeric Order
-
- 211 System status, or system help reply
- 214 Help message
- (Information on how to use the receiver or the meaning of a
- particular non-standard command; this reply is useful only
- to the human user)
- 220 <domain> Service ready
- 221 <domain> Service closing transmission channel
- 250 Requested mail action okay, completed
- 251 User not local; will forward to <forward-path>
- (See section 3.4)
- 252 Cannot VRFY user, but will accept message and attempt
- delivery
- (See section 3.5.3)
-
- 354 Start mail input; end with <CRLF>.<CRLF>
-
- 421 <domain> Service not available, closing transmission channel
- (This may be a reply to any command if the service knows it
- must shut down)
- 450 Requested mail action not taken: mailbox unavailable
- (e.g., mailbox busy)
- 451 Requested action aborted: local error in processing
- 452 Requested action not taken: insufficient system storage
-
- 500 Syntax error, command unrecognized
- (This may include errors such as command line too long)
- 501 Syntax error in parameters or arguments
- 502 Command not implemented (see section 4.2.4)
- 503 Bad sequence of commands
- 504 Command parameter not implemented
- 550 Requested action not taken: mailbox unavailable
- (e.g., mailbox not found, no access, or command rejected
- for policy reasons)
- 551 User not local; please try <forward-path>
- (See section 3.4)
- 552 Requested mail action aborted: exceeded storage allocation
- 553 Requested action not taken: mailbox name not allowed
- (e.g., mailbox syntax incorrect)
- 554 Transaction failed (Or, in the case of a connection-opening
- response, "No SMTP service here")
-
-4.2.4 Reply Code 502
-
-Questions have been raised as to when reply code 502 (Command not
-implemented) SHOULD be returned in preference to other codes. 502
-SHOULD be used when the command is actually recognized by the SMTP
-server, but not implemented. If the command is not recognized, code
-500 SHOULD be returned. Extended SMTP systems MUST NOT list
-capabilities in response to EHLO for which they will return 502 (or
-500) replies.
-
-4.2.5 Reply Codes After DATA and the Subsequent <CRLF>.<CRLF>
-
-When an SMTP server returns a positive completion status (2yz code)
-after the DATA command is completed with <CRLF>.<CRLF>, it accepts
-responsibility for:
-
- - delivering the message (if the recipient mailbox exists), or
-
- - if attempts to deliver the message fail due to transient conditions,
- retrying delivery some reasonable number of times at intervals as
- specified in section 4.5.4.
-
- - if attempts to deliver the message fail due to permanent conditions,
- or if repeated attempts to deliver the message fail due to transient
- conditions, returning appropriate notification to the sender of the
- original message (using the address in the SMTP MAIL command).
-
-When an SMTP server returns a transient error completion status (4yz)
-code after the DATA command is completed with <CRLF>.<CRLF>, it MUST
-NOT make any further attempt to deliver that message. The SMTP client
-retains responsibility for delivery of that message and may either
-return it to the user or requeue it for a subsequent attempt (see
-section 4.5.4.1). The sending user SHOULD be able to interpret the
-return of a transient or permanent failure status as a non-delivery
-indication.
-
-When an SMTP server returns a permanent error status (5yz) code after
-the DATA command is completely with <CRLF>.<CRLF>, it MUST NOT make any
-further attempt to deliver the message. As with temporary error status
-codes, the SMTP client retains responsibility for the message, but
-SHOULD not again attempt delivery to the same server without user
-review and intervention of the message.
-
-4.3 Sequencing of Commands and Replies
-
-4.3.1 Sequencing Overview
-
-The communication between the sender and receiver is an alternating
-dialogue, controlled by the sender. As such, the sender issues a
-command and the receiver responds with a reply. Unless other
-arrangements are negotiated through service extensions, the sender MUST
-wait for this response before sending further commands.
-
-One important reply is the connection greeting. Normally, a receiver
-will send a 220 "Service ready" reply when the connection is completed.
-The sender SHOULD wait for this greeting message before sending any
-commands.
-
-Note: all the greeting-type replies have the official name (the
-fully-qualified primary domain name) of the server host as the first
-word following the reply code. Sometimes the host will have no
-meaningful name. See 4.1.3 for a discussion of alternatives in these
-situations.
-
-For example,
- 220 ISIF.USC.EDU Service ready
-or
- 220 mail.foo.com SuperSMTP v 6.1.2 Service ready
-or
- 220 [10.0.0.1] Clueless host service ready
-
-The table below lists alternative success and failure replies for each
-command. These SHOULD be strictly adhered to: a receiver may
-substitute text in the replies, but the meaning and action implied by
-the code numbers and by the specific command reply sequence cannot be
-altered.
-
-4.3.2 Command-Reply Sequences
-
-Each command is listed with its usual possible replies. The prefixes
-used before the possible replies are "I" for intermediate, "S" for
-success, and "E" for error. Since some servers may generate other
-replies under special circumstances, and to allow for future extension,
-SMTP clients SHOULD, when possible, interpret only the first digit of
-the reply and MUST be prepared to deal with unrecognized reply codes by
-interpreting the first digit only. Unless extended using the
-mechanisms described in section 2.2, SMTP servers MUST NOT transmit
-reply codes to an SMTP client that are other than three digits or that
-do not start in a digit between 2 and 5 inclusive.
-
-These sequencing rules and, in principle, the codes themselves, can be
-extended or modified by SMTP extensions offered by the server and
-accepted (requested) by the client.
-
-In addition to the codes listed below, any SMTP command can return any
-of the following codes if the corresponding unusual circumstances are
-encountered:
-
-500 For the "command line too long" case or if the command name was not
- recognized. Note that producing a "command not recognized" error in
- response to the required subset of these commands is a violation of
- this specification.
-
-501 Syntax error in command or arguments. In order to provide for
- future extensions, commands that are specified in this document as
- not accepting arguments (DATA, RSET, QUIT) SHOULD return a 501
- message if arguments are supplied in the absence of EHLO-advertised
- extensions.
-
-421 Service shutting down and closing transmission channel
-
-Specific sequences are:
-
-CONNECTION ESTABLISHMENT
- S: 220
- E: 554
-EHLO or HELO
- S: 250
- E: 504, 550
-MAIL
- S: 250
- E: 552, 451, 452, 550, 553, 503
-RCPT
- S: 250, 251 (but see section 3.4 for discussion of 251)
- E: 550, 551, 552, 553, 450, 451, 452, 503, 550
-DATA
- I: 354 -> data -> S: 250
- E: 552, 554, 451, 452
- E: 451, 554, 503
-RSET
- S: 250
-VRFY
- S: 250, 251, 252
- E: 550, 551, 553, 502, 504
-EXPN
- S: 250, 252
- E: 550, 500, 502, 504
-HELP
- S: 211, 214
- E: 502, 504
-NOOP
- S: 250
-QUIT
- S: 221
-
-4.4 Trace Information
-
-When an SMTP server receives a message for delivery or further
-processing, it MUST insert trace ("time stamp" or "Received")
-information at the beginning of the message content, as discussed in
-section 4.1.1.4.
-
-This line MUST be structured as follows:
-
- - The FROM field, which MUST be supplied in an SMTP environment,
- SHOULD contain both (1) the name of the source host as presented in
- the EHLO command and (2) an address literal containing the IP
- address of the source, determined from the TCP connection.
-
- - The ID field MAY contain an "@" as suggested in RFC-822, but this is
- not required.
-
- - The FOR field MAY contain a list of <path> entries when multiple
- RCPT commands have been given. This may raise some security issues
- and is usually not desirable; see section 7.2.
-
-An Internet mail program MUST NOT change a Received: line that was
-previously added to the message header. SMTP servers MUST prepend
-Received lines to messages; they MUST NOT change the order of existing
-lines or insert Received lines in any other location.
-
-As the Internet grows, comparability of Received fields is important
-for detecting problems, especially slow relays. SMTP servers that
-create Received fields SHOULD use explicit offsets in the dates (e.g.,
--0800), rather than time zone names of any type. Local time (with an
-offset) is preferred to UT when feasible. This formulation allows
-slightly more information about local circumstances to be specified.
-If UT is needed, the receiver need merely do some simple arithmetic to
-convert the values. Use of UT loses information about the time
-zone-location of the server. If a time zone name is used, it SHOULD be
-included in a comment.
-
-When the delivery SMTP server makes the "final delivery" of a message,
-it inserts a return-path line at the beginning of the mail data. This
-use of return-path is required; mail systems MUST support it. The
-return-path line preserves the information in the <reverse-path> from
-the MAIL command. Here, final delivery means the message has left the
-SMTP enviroment. Normally, this would mean it had been delivered to
-the destination user or an associated mail drop, but in some cases it
-may be further processed and transmitted by another mail system.
-
-It is possible for the mailbox in the return path to be different from
-the actual sender's mailbox, for example, if error responses are to be
-delivered to a special error handling mailbox rather than to the
-message sender. When mailing lists are involved, this arrangement is
-common and useful as a means of directing errors to the list maintainer
-rather than the message originator.
-
-The text above implies that the final mail data will begin with a
-return path line, followed by one or more time stamp lines. These
-lines will be followed by the mail data headers and body [MSGFMT].
-
-It is sometimes difficult for an SMTP server to determine whether or
-not it is making final delivery since forwarding or other operations
-may occur after the message is accepted for delivery. Consequently,
-any further (forwarding, gateway, or relay) systems MAY remove the
-return path and rebuild the MAIL command as needed to ensure that
-exactly one such line appears in a delivered message.
-
-A message-originating SMTP system SHOULD NOT send a message that
-already contains a Return-path header. SMTP servers performing a relay
-function MUST NOT inspect the message data, and especially not to the
-extent needed to determine if Return-path headers are present. SMTP
-servers making final delivery MAY remove Return-path headers before
-adding their own.
-
-The primary purpose of the Return-path is to designate the address to
-which messages indicating non-delivery or other mail system failures
-are to be sent. For this to be unambiguous, exactly one return path
-SHOULD be present when the message is delivered. Systems using RFC 822
-syntax with non-SMTP transports SHOULD designate an unambiguous
-address, associated with the transport envelope, to which error reports
-(e.g., non-delivery messages) should be sent.
-
-Historical note: Text in RFC 822 that appears to contradict the use of
-the Return-path header (or the envelope reverse path address from the
-MAIL command) as the destination for error messages is not applicable
-on the Internet. The reverse path address (as copied into the
-Return-path) MUST be used as the target of any mail containing delivery
-error messages.
-
-In particular:
-
- - a gateway from SMTP->elsewhere SHOULD insert a return-path header,
- unless it is known that the "elsewhere" transport also uses Internet
- domain addresses and maintains the envelope sender address
- separately.
-
- - a gateway from elsewhere->SMTP SHOULD delete any return-path header
- present in the message, and either copy that information to the SMTP
- envelope or combine it with information present in the envelope of
- the other transport system to construct the reverse path argument to
- the MAIL command in the SMTP envelope.
-
-The server must give special treatment to cases in which the processing
-following the end of mail data indication is only partially successful.
-This could happen if, after accepting several recipients and the mail
-data, the SMTP server finds that the mail data could be successfully
-delivered to some, but not all, of the recipients. In such cases, the
-response to the DATA command MUST be an OK reply. However, the SMTP
-server MUST compose and send an "undeliverable mail" notification
-message to the originator of the message.
-
-A single notification listing all of the failed recipients or separate
-notification messages MUST be sent for each failed recipient. For
-economy of processing by the sender, the former is preferred when
-possible. All undeliverable mail notification messages are sent using
-the MAIL command (even if they result from processing the obsolete
-SEND, SOML, or SAML commands) and use a null return path as discussed
-in section 3.7.
-
-The time stamp line and the return path line are formally defined as
-follows:
-
- Return-path-line = "Return-Path:" FWS Reverse-path <CRLF>
-
- Time-stamp-line = "Received:" FWS Stamp <CRLF>
-
- Stamp = From-domain By-domain Opt-info ";" FWS Daytime
-
- From-domain = "FROM" FWS Extended-Domain CFWS
-
- By-domain = "BY" FWS Extended-Domain CFWS
-
- Extended-Domain = Domain /
- ( Domain FWS "(" TCP-info ")" ) /
- ( Address-literal FWS "(" TCP-info ")"
- TCP-info = Address-literal / ( Domain FWS Address-literal )
- ; Information derived by server from TCP connection
- not client EHLO.
-
- Opt-info = [Via] [With] [ID] [For]
-
- Via = "VIA" FWS Link CFWS
-
- With = "WITH" FWS Protocol CFWS
-
- ID = "ID" FWS String / msg-id CFWS
-
- For = "FOR" FWS 1*( Path / Mailbox ) CFWS
-
- Link = "TCP" / Addtl-Link
- Addtl-Link = Atom ; Additional standard names for links are
- registered with the Internet Assigned
- Numbers Authority (IANA). "Via" is
- primarily of value with non-Internet
- transports.
- SMTP servers SHOULD NOT use unregistered
- names.
- Protocol = "ESMTP" / "SMTP" / Attdl-Protocol
- Attdl-Protocol = Atom ; Additional standard names for protocols
- are registered with the Internet Assigned
- Numbers Authority (IANA). SMTP servers
- SHOULD NOT use unregistered names.
-
- Daytime = FWS [ day-of-week "," FWS ] Date FWS Time
-
- Date = DD FWS Mon FWS YYYY
- ; Note that the earlier form, which permits two-digit years,
- ; has been deprecated. SMTP systems MUST use four-digit
- ; years.
-
- Time = HH ":" MM ":" SS FWS Zone
-
- DD = 1*2Digit ; the one or two digit integer day of the
- month in the range 1 to 31.
-
- Mon = "JAN" | "FEB" | "MAR" | "APR" | "MAY" | "JUN" |
- "JUL" | "AUG" | "SEP" | "OCT" | "NOV" | "DEC"
-
- YYYY = 4*4Digit ; the four decimal integer year in the range
- 0000 to 9999.
-
- HH = 2*2Digit ; the two decimal digit hour of the day in
- the range 00 to 24.
-
- MM = 2*2Digit ; the two decimal digit integer minute of
- the hour in the range 00 to 59.
-
- SS = 2*2Digit [ "." 1*Digit ]
- ; the two decimal digit integer second of
- the minute in the range 00 to 60 (to allow
- for leap seconds), with optional
- fractional seconds.
-
- Zone = ( "+" / "-" ) 4*4Digit [ <SP> "(" String ")" ]
- ; A four digit, signed time zone offset,
- such as -0500 for US Eastern Standard
- Time. This may be supplemented by a time
- zone name in parentheses, e.g., "-0800
- (PDT)". Note that there is no default;
- time zone information is required and
- MUST be supplied.
-
-4.5 Additional Implementation Issues
-
-4.5.1 Minimum Implementation
-
-In order to make SMTP workable, the following minimum implementation is
-required for all receivers. The following commands MUST be supported to
-conform to this specification:
-
- EHLO
- HELO
- MAIL
- RCPT
- DATA
- RSET
- NOOP
- QUIT
- VRFY
-
-Any system that includes an SMTP server supporting mail relaying or
-delivery MUST support the reserved mailbox "postmaster" as a
-case-insensitive local name. This postmaster address is not strictly
-necessary if the server always returns 554 on connection opening (as
-described in section 3.1). The requirement to accept mail for
-postmaster implies that RCPT commands which specify a mailbox for
-postmaster at any of the domains for which the SMTP server provides
-mail service, as well as the special case of "RCPT TO:<Postmaster>"
-(with no domain specification), MUST be supported. This requirement
-does not imply that SMTP systems must deliver Postmaster mail in
-particular cases (e.g., problematic origin addresses) in which they
-have substantive reasons for not doing so.
-
-4.5.2 Transparency
-
-Without some provision for data transparency, the character sequence
-"<CRLF>.<CRLF>" ends the mail text and cannot be sent by the user. In
-general, users are not aware of such "forbidden" sequences. To allow
-all user composed text to be transmitted transparently, the following
-procedures are used:
-
- - Before sending a line of mail text, the SMTP client checks the first
- character of the line. If it is a period, one additional period is
- inserted at the beginning of the line.
-
- - When a line of mail text is received by the SMTP server, it checks
- the line. If the line is composed of a single period, it is treated
- as the end of mail indicator. If the first character is a period
- and there are other characters on the line, the first character is
- deleted.
-
-The mail data may contain any of the 128 ASCII characters. All
-characters are to be delivered to the recipient's mailbox, including
-spaces, vertical and horizontal tabs, and other control characters. If
-the transmission channel provides an 8-bit byte (octets) data stream,
-the 7-bit ASCII codes are transmitted right justified in the octets,
-with the high order bits cleared to zero. See 3.7 for special
-treatment of these conditions in SMTP systems serving a relay function.
-
-In some systems it may be necessary to transform the data as it is
-received and stored. This may be necessary for hosts that use a
-different character set than ASCII as their local character set, that
-store data in records rather than strings, or which use special
-character sequences as delimiters inside mailboxes. If such
-transformations are necessary, they MUST be reversible, especially if
-they are applied to mail being relayed.
-
-4.5.3 Sizes and Timeouts
-
-4.5.3.1 Size limits and minimums
-
-There are several objects that have required minimum/maximum sizes.
-Every implementation MUST be able to receive objects of at least these
-sizes. Objects larger than these sizes SHOULD be avoided when
-possible. However, some Internet mail constructs such as encoded X.400
-addresses [RFC-X400] will often require larger objects: clients MAY
-attempt to transmit these, but MUST be prepared for a server to reject
-them if they cannot be handled by it. To the maximum extent possible,
-implementation techniques which impose no limits on the length of these
-objects should be used.
-
-local-part
- The maximum total length of a user name or other local-part is 64
- characters.
-
-domain
- The maximum total length of a domain name or number is 255
- characters.
-
-path
- The maximum total length of a reverse-path or forward-path is 256
- characters (including the punctuation and element separators).
-
-command line
- The maximum total length of a command line including the command
- word and the <CRLF> is 512 characters. SMTP extensions may be used
- to increase this limit.
-
-reply line
- The maximum total length of a reply line including the reply code
- and the <CRLF> is 512 characters. More information may be conveyed
- through multiple-line replies.
-
-text line
- The maximum total length of a text line including the <CRLF> is 1000
- characters (not counting the leading dot duplicated for
- transparency). This number may be increased by the use of SMTP
- Service Extensions.
-
-message content
- The maximum total length of a message content (including any message
- headers as well as the message body) MUST BE at least 64K octets.
- Since the introduction of multimedia mail [RFC-MIME], message
- lengths on the Internet have grown dramatically, and message size
- restrictions should be avoided if at all possible. SMTP server
- systems that must impose restrictions SHOULD implement the "SIZE"
- service extension ([RFC-SIZE]), and SMTP client systems that will
- send large messages SHOULD utilize it when possible.
-
-recipients buffer
- The minimum total number of recipients that must be buffered is 100
- recipients. Rejection of messages (for excessive recipients) with
- fewer than 100 RCPT commands is a violation of this specification.
- The general principle that relaying SMTP servers MUST NOT, and
- delivery SMTP servers SHOULD NOT, perform validation tests on
- message headers suggests that rejecting a message based on the total
- number of recipients shown in header fields is to be discouraged. A
- server which imposes a limit on the number of recipients MUST behave
- in an orderly fashion, such as to reject additional addresses over
- its limit rather than silently discarding addresses previously
- accepted. A client that needs to deliver a message containing over
- 100 RCPT commands SHOULD be prepared to transmit in 100-recipient
- "chunks" if the server declines to accept more than 100 recipients
- in a single message.
-
-Errors due to exceeding these limits may be reported by using the reply
-codes. Some examples of reply codes are:
-
- 500 Line too long.
-or
- 501 Path too long
-or
- 452 Too many recipients (see below)
-or
- 552 Too much mail data.
-
-[RFC-821] incorrectly listed the error where an SMTP server exhausts
-its implementation limit on the number of RCPT commands ("too many
-recipients") as having reply code 552. The correct reply code for this
-condition is 452. Clients SHOULD treat a 552 code in this case as a
-temporary, rather than permanent failure so the logic below works.
-
-When a conforming SMTP server encounters this condition, it has at
-least 100 successful RCPT commands in its recipients buffer. If the
-server is able to accept the message, then at least these 100 addresses
-will be removed from the SMTP client's queue. When the client attempts
-retransmission of those addresses which received 452 responses, at
-least 100 of these will be able to fit in the SMTP server's recipients
-buffer. Each retransmission attempt which is able to deliver anything
-will be able to dispose of at least 100 of these recipients.
-
-If an SMTP server has an implementation limit on the number of RCPT
-commands and this limit is exhausted, it MUST use a response code of
-452. If the server has a configured site-policy limitation on the
-number of RCPT commands, it MAY instead use a 5XX response code.
-
-In order to interoperate with SMTP servers implementing an older
-version of the protocol, SMTP clients MAY treat a 552 code obtained in
-response to an RCPT command as if it were a 452 response code,
-especially after some RCPT commands have already been accepted in the
-same mail transaction.
-
-4.5.3.2 Timeouts
-
-An SMTP client MUST provide a timeout mechanism. It MUST use
-per-command timeouts rather than somehow trying to time the entire mail
-transaction. Timeouts SHOULD be easily reconfigurable, preferably
-without recompiling the SMTP code. To implement this, a timer is set
-for each SMTP command and for each buffer of the data transfer. The
-latter means that the overall timeout is inherently proportional to the
-size of the message.
-
-Based on extensive experience with busy mail-relay hosts, the minimum
-per-command timeout values SHOULD be as follows:
-
-Initial 220 Message: 5 minutes
- An SMTP client process needs to distinguish between a failed TCP
- connection and a delay in receiving the initial 220 greeting
- message. Many SMTP servers accept a TCP connection but delay
- delivery of the 220 message until their system load permits more
- mail to be processed.
-
-MAIL Command: 5 minutes
-
-RCPT Command: 5 minutes
- A longer timeout is required if processing of mailing lists and
- aliases is not deferred until after the message was accepted.
-
-DATA Initiation: 2 minutes
- This is while awaiting the "354 Start Input" reply to a DATA command.
-
-Data Block: 3 minutes
- This is while awaiting the completion of each TCP SEND call
- transmitting a chunk of data.
-
-DATA Termination: 10 minutes.
- This is while awaiting the "250 OK" reply. When the receiver gets
- the final period terminating the message data, it typically performs
- processing to deliver the message to a user mailbox. A spurious
- timeout at this point would be very wasteful and would typically
- result in delivery of multiple copies of the message, since it has
- been successfully sent and the server has accepted responsibility
- for delivery. See section 6.1 for additional discussion.
-
-An SMTP server SHOULD have a timeout of at least 5 minutes while it is
-awaiting the next command from the sender.
-
-4.5.4 Queuing Strategies
-
-The common structure of a host SMTP implementation includes user
-mailboxes, one or more areas for queuing messages in transit, and one
-or more daemon processes for sending and receiving mail. The exact
-structure will vary depending on the needs of the users on the host and
-the number and size of mailing lists supported by the host. We describe
-several optimizations that have proved helpful, particularly for
-mailers supporting high traffic levels.
-
-Any queuing strategy MUST include timeouts on all activities on a
-per-command basis. A queuing strategy MUST NOT send error messages in
-response to error messages under any circumstances.
-
-4.5.4.1 Sending Strategy
-
-The general model for an SMTP client is one or more processes that
-periodically attempt to transmit outgoing mail. In a typical system,
-the program that composes a message has some method for requesting
-immediate attention for a new piece of outgoing mail, while mail that
-cannot be transmitted immediately MUST be queued and periodically
-retried by the sender. A mail queue entry will include not only the
-message itself but also the envelope information.
-
-The sender MUST delay retrying a particular destination after one
-attempt has failed. In general, the retry interval SHOULD be at least
-30 minutes; however, more sophisticated and variable strategies will be
-beneficial when the SMTP client can determine the reason for
-non-delivery.
-
-Retries continue until the message is transmitted or the sender gives
-up; the give-up time generally needs to be at least 4-5 days. The
-parameters to the retry algorithm MUST be configurable.
-
-A client SHOULD keep a list of hosts it cannot reach and corresponding
-connection timeouts, rather than just retrying queued mail items.
-
-Experience suggests that failures are typically transient (the target
-system or its connection has crashed), favoring a policy of two
-connection attempts in the first hour the message is in the queue, and
-then backing off to one every two or three hours.
-
-The SMTP client can shorten the queuing delay in cooperation with the
-SMTP server. For example, if mail is received from a particular
-address, it is likely that mail queued for that host can now be sent.
-Application of this principle may, in many cases, eliminate the
-requirement for an explicit "send queues now" function such as that
-discussed in [RFC-ETRN].
-
-The strategy may be further modified as a result of multiple addresses
-per host (see below) to optimize delivery time vs. resource usage.
-
-An SMTP client may have a large queue of messages for each unavailable
-destination host. If all of these messages were retried in every retry
-cycle, there would be excessive Internet overhead and the sending
-system would be blocked for a long period. Note that an SMTP client
-can generally determine that a delivery attempt has failed only after a
-timeout of several minutes and even a one-minute timeout per connection
-will result in a very large delay if retries are repeated for dozens,
-or even hundreds, of queued messages to the same host.
-
-At the same time, SMTP clients SHOULD use great care in caching
-negative responses from servers. In an extreme case, if EHLO is issued
-multiple times during the same SMTP connection, different answers may
-be returned by the server. More significantly, 5yz responses to the
-MAIL command MUST NOT be cached.
-
-When a mail message is to be delivered to multiple recipients, and the
-SMTP server to which a copy of the message is to be sent is the same
-for multiple recipients, then only one copy of the message SHOULD be
-transmitted. That is, the SMTP client SHOULD use the command sequence:
-MAIL, RCPT, RCPT,... RCPT, DATA instead of the sequence: MAIL, RCPT,
-DATA, ..., MAIL, RCPT, DATA. However, if there are very many
-addresses, a limit on the number of RCPT commands per MAIL command MAY
-be imposed. Implementation of this efficiency feature is strongly
-encouraged.
-
-Similarly, to achieve timely delivery, the SMTP client MAY support
-multiple concurrent outgoing mail transactions. However, some limit
-may be appropriate to protect the host from devoting all its resources
-to mail.
-
-4.5.4.2 Receiving Strategy
-
-The SMTP server SHOULD attempt to keep a pending listen on the SMTP
-port at all times. This requires the support of multiple incoming TCP
-connections for SMTP. Some limit MAY be imposed but servers that
-cannot handle more than one SMTP transaction at a time are not in
-conformance with the intent of this specification.
-
-As discussed above, when the SMTP server receives mail from a
-particular host address, it could notify the SMTP client to retry any
-mail pending for that host address.
-
-4.5.5 Messages with a null reverse-path
-
-There are several types of notification messages which are required by
-existing and proposed standards to be sent with a null reverse path,
-namely non-delivery notifications as discussed in section 3.7, other
-kinds of Delivery Status Notifications (DSNs, see [RFC 1894]) and also
-Message Disposition Notifications (MDNs, see [RFC 2298]). All of these
-kinds of messages are notifications about a previous message, and they
-are sent to the reverse-path of the previous mail message. (If the
-delivery of such a notification message fails, that usually indicates a
-problem with the mail system of the host to which the notification
-message is addressed. For this reason, at some hosts the MTA is set up
-to forward such failed notification messages to someone who is able to
-fix problems with the mail system, e.g. via the postmaster alias.)
-
-All other types of messages (i.e. any message which is not required by
-a standards-track RFC to have a null reverse-path) SHOULD be sent with
-with a valid, non-null reverse-path.
-
-Implementors of automated email processors should be careful to make
-sure that the various kinds of messages with null reverse-path are
-handled correctly, in particular such systems SHOULD NOT reply to
-messages with null reverse-path.
-
-
-
-5. Address Resolution and Mail Handling
-
-Once an SMTP client lexically identifies a domain to which mail will be
-delivered for processing (as described in sections 3.6 and 3.7), a DNS
-lookup MUST be performed to resolve the domain name (see [RFC-DNS]).
-The names are expected to be fully-qualified domain names (FQDNs):
-mechanisms for inferring FQDNs from partial names or local aliases are
-outside of this specification and, due to a history of problems, are
-generally discouraged. The lookup first attempts to locate an MX
-record associated with the name. If a CNAME record is found instead,
-the resulting name is processed as if it were the initial name. If no
-MX records are found, but an A RR is found, the A RR is treated as if
-it was associated with an implicit MX RR, with a preference of 0,
-pointing to that host. If one or more MX RRs are found for a given
-name, SMTP systems MUST NOT utilize any A RRs associated with that name
-unless they are located using the MX RRs; the "implicit MX" rule above
-applies only if there are no MX records present. If MX records are
-present, but none of them are usable, this situation MUST be reported
-as an error.
-
-When the lookup succeeds, the mapping can result in a list of
-alternative delivery addresses rather than a single address, because of
-multiple MX records, multihoming, or both. To provide reliable mail
-transmission, the SMTP client MUST be able to try (and retry) each of
-the relevant addresses in this list in order, until a delivery attempt
-succeeds. However, there MAY also be a configurable limit on the number
-of alternate addresses that can be tried. In any case, a host SHOULD
-try at least two addresses.
-
-Two types of information is used to rank the host addresses: multiple
-MX records, and multihomed hosts.
-
-Multiple MX records contain a preference indication that MUST be used
-in sorting (see below). Lower numbers are more preferred than higher
-ones. If there are multiple destinations with the same preference and
-there is no clear reason to favor one (e.g., by recognition of an
-easily-reached address), then the sender-SMTP MUST randomize them to
-spread the load across multiple mail exchangers for a specific
-organization.
-
-The destination host (perhaps taken from the preferred MX record) may
-be multihomed, in which case the domain name resolver will return a
-list of alternative IP addresses. It is the responsibility of the
-domain name resolver interface to have ordered this list by decreasing
-preference if necessary, and SMTP MUST try them in the order presented.
-
-Although the capability to try multiple alternative addresses is
-required, specific installations may want to limit or disable the use
-of alternative addresses. The question of whether a sender should
-attempt retries using the different addresses of a multihomed host has
-been controversial. The main argument for using the multiple addresses
-is that it maximizes the probability of timely delivery, and indeed
-sometimes the probability of any delivery; the counter-argument is that
-it may result in unnecessary resource use. Note that resource use is
-also strongly determined by the sending strategy discussed in section
-4.5.4.1.
-
-If a host receives a message with a destination for which it is a
-designated Mail eXchanger, it MAY relay the message (potentially after
-having rewritten the addresses), make final delivery of the message, or
-hand it off using some mechanism outside the SMTP-provided transport
-environment. Of course, neither of the latter require that the list of
-MX records be examined further.
-
-If it determines that it should relay the message without rewriting the
-address, it MUST sort the MX records to determine candidates for
-delivery. The records are first ordered by preference, with the
-lowest-numbered records being most preferred. The relay host MUST then
-inspect the list for any of the names or addresses by which it might be
-known in mail transactions. If a matching record is found, all records
-at that preference level and higher-numbered ones MUST be discarded
-from consideration. If there are no records left at that point, it is
-an error condition, and the message MUST be returned as undeliverable.
-If records do remain, they SHOULD be tried, best preference first, as
-described above.
-
-
-6. Problem Detection and Handling
-
-6.1 Reliable Delivery and Replies by Email
-
-When the receiver-SMTP accepts a piece of mail (by sending a "250 OK"
-message in response to DATA), it is accepting responsibility for
-delivering or relaying the message. It must take this responsibility
-seriously. It MUST NOT lose the message for frivolous reasons, such as
-because the host later crashes or because of a predictable resource
-shortage.
-
-If there is a delivery failure after acceptance of a message, the
-receiver-SMTP MUST formulate and mail a notification message. This
-notification MUST be sent using a null ("<>") reverse path in the
-envelope. The recipient of this notification MUST be the address from
-the envelope return path (or the Return-Path: line). However, if this
-address is null ("<>"), the receiver-SMTP MUST NOT send a notification.
-Obviously, nothing in this section can or should prohibit local
-decisions (i.e., as part of the same system environment as the
-receiver-SMTP) to log or otherwise transmit information about null
-address events locally if that is desired. If the address is an
-explicit source route, it MUST be stripped down to its final hop.
-
-For example, suppose that an error notification must be sent for a
-message that arrived with:
-
- MAIL FROM:<@a,@b:user@d>
-
-The notification message SHOULD be sent using:
-
- RCPT TO:<user@d>
-
-Some delivery failures after the message is accepted by SMTP will be
-unavoidable. For example, it may be impossible for the receiving SMTP
-server to validate all the delivery addresses in RCPT command(s) due to
-a "soft" domain system error, because the target is a mailing list (see
-earlier discussion of RCPT), or because the server is acting as a relay
-and has no immediate access to the delivering system.
-
-To avoid receiving duplicate messages as the result of timeouts, a
-receiver-SMTP MUST seek to minimize the time required to respond to the
-final <CRLF>.<CRLF> end of data indicator. See RFC-1047 [RFC-1047] for
-a discussion of this problem.
-
-6.2 Loop Detection
-
-Simple counting of the number of "Received:" headers in a message has
-proven to be an effective, although rarely optimal, method of detecting
-loops in mail systems. SMTP servers using this technique SHOULD use a
-large rejection threshold, normally at least 100 Received entries.
-Whatever mechanisms are used, servers MUST contain provisions for
-detecting and stopping trivial loops.
-
-6.3 Compensating for Irregularities
-
-Unfortunately, variations, creative interpretations, and outright
-violations of Internet mail protocols do occur; some would suggest that
-they occur quite frequently. The debate as to whether a well-behaved
-SMTP receiver or relay should reject a malformed message, attempt to
-pass it on unchanged, or attempt to repair it to increase the odds of
-successful delivery (or subsequent reply) began almost with the dawn of
-structured network mail and shows no signs of abating. Advocates of
-rejection claim that attempted repairs are rarely completely adequate
-and that rejection of bad messages is the only way to get the offending
-software repaired. Advocates of "repair" or "deliver no matter what"
-argue that users prefer that mail go through it if at all possible and
-that there are significant market pressures in that direction. In
-practice, these market pressures may be more important to particular
-vendors than strict conformance to the standards, regardless of the
-preference of the actual developers.
-
-The problems associated with ill-formed messages were exacerbated by
-the introduction of the split-UA mail reading protocols [RFC-POP2,
-RFC-POP3, RFC-IMAP2, RFC-PCMAIL]. These protocols have encouraged the
-use of SMTP as a posting protocol, and SMTP servers as relay systems
-for these client hosts (which are often only intermittently connected
-to the Internet). Historically, many of those client machines lacked
-some of the mechanisms and information assumed by SMTP (and indeed, by
-the mail format protocol [RFC-822]). Some could not keep adequate
-track of time; others had no concept of time zones; still others could
-not identify their own names or addresses; and, of course, none could
-satisfy the assumptions that underlay RFC-822's conception of
-authenticated addresses.
-
-In response to these weak SMTP clients, many SMTP systems now complete
-messages that are delivered to them in incomplete or incorrect form.
-This strategy is generally considered appropriate when the server can
-identify or authenticate the client, and there are prior agreements
-between them. By contrast, there is at best great concern about fixes
-applied by a relay or delivery SMTP server that has little or no
-knowledge of the user or client machine.
-
-The following changes to a message being processed MAY be applied when
-necessary by an originating SMTP server, or one used as the target of
-SMTP as an initial posting protocol:
-
- - Addition of a message-id field when none appears
-
- - Addition of a date, time or time zone when none appears
-
- - Correction of addresses to proper FQDN format
-
-The less information the server has about the client, the less likely
-these changes are to be correct and the more caution and conservatism
-should be applied when considering whether or not to perform fixes and
-how. These changes MUST NOT be applied by an SMTP server that provides
-an intermediate relay function.
-
-In all cases, properly-operating clients supplying correct information
-are preferred to corrections by the SMTP server. In all cases,
-documentation of actions performed by the servers (in trace fields
-and/or header comments) is strongly encouraged.
-
-
-7. Security Considerations
-
-7.1 Mail Security and Spoofing
-
-SMTP mail is inherently insecure in that it is feasible for even fairly
-casual users to negotiate directly with receiving and relaying SMTP
-servers and create messages that will trick a naive recipient into
-believing that they came from somewhere else. Constructing such a
-message so that the "spoofed" behavior cannot be detected by an expert
-is somewhat more difficult, but not sufficiently so as to be a
-deterrent to someone who is determined and knowledgeable. Consequently,
-as knowledge of Internet mail increases, so does the knowledge that
-SMTP mail inherently cannot be authenticated, or integrity checks
-provided, at the transport level. Real mail security lies only in
-end-to-end methods involving the message bodies, such as those that can
-be provided in the MOSS framework [RFC-MOSS].
-
-Various protocol extensions and configuration options that provide
-authentication at the transport level (e.g., from an SMTP client to an
-SMTP server) improve somewhat on the traditional situation described
-above. However, unless they are accompanied by careful handoffs of
-responsibility in a carefully-designed trust environment, they remain
-inherently weaker than end-to-end mechanisms which use digitally signed
-messages rather than depending on the integrity of the transport system.
-
-Efforts to make it more difficult for users to set envelope return path
-and header "From" fields to point to valid addresses other than their
-own are largely misguided: they frustrate legitimate applications in
-which mail is sent by one user on behalf of another or in which error
-(or normal) replies should be directed to a special address. (Systems
-that provide convenient ways for users to alter these fields on a
-per-message basis should attempt to establish a primary and permanent
-mailbox address for the user so that Sender fields within the message
-data can be generated sensibly.)
-
-This specification does not further address the authentication issues
-associated with SMTP other than to advocate that useful functionality
-not be disabled in the hope of providing some small margin of
-protection against an ignorant user who is trying to fake mail.
-
-7.2 "Blind" Copies
-
-Addresses that do not appear in the message headers may appear in the
-RCPT commands to an SMTP server for a number of reasons. The two most
-common involve the use of a mailing address as a "list exploder" (a
-single address that resolves into multiple addresses) and the
-appearance of "blind copies". Especially when more than one RCPT
-command is present, and in order to avoid defeating some of the purpose
-of these mechanisms, SMTP clients and servers SHOULD NOT copy the full
-set of RCPT command arguments into the headers, either as part of trace
-headers or as informational or private-extension headers. Since this
-rule is often violated in practice, and cannot be enforced, sending
-SMTP systems that are aware of "bcc" use MAY find it helpful to send
-each blind copy as a separate message transaction containing only a
-single RCPT command.
-
-There is no inherent relationship between either "reverse" (from MAIL,
-SAML, etc., commands) or "forward" (RCPT) addresses in the SMTP
-transaction ("envelope") and the addresses in the headers. Receiving
-systems SHOULD NOT attempt to deduce such relationships and use them to
-alter the headers of the message for delivery. The popular
-"Apparently-to" header is a violation of this principle as well as a
-common source of unintended information disclosure and SHOULD NOT be
-used.
-
-7.3 VRFY, EXPN, and Security
-
-As discussed in section 3.5, individual sites may want to disable one
-or both VRFY or EXPN for security reasons. As a corollary to the
-above, implementations that permit this MUST NOT appear to have
-verified addresses that are not, in fact, verified. If a site disables
-these commands for security reasons, the SMTP server MUST return a 252
-response, rather than a code that could be confused with successful or
-unsuccessful verification.
-
-Returning a 250 reply code with the address listed in the VRFY command
-after having checked it only for syntax violates this rule. Of course,
-an implementation that "supports" VRFY by always returning 550 whether
-or not the address is valid is equally not in conformance.
-
-Within the last few years, the contents of mailing lists have become
-popular as an address information source for so-called "spammers." The
-use of EXPN to "harvest" addresses has increased as list administrators
-have installed protections against inappropriate uses of the lists
-themselves. Implementations SHOULD still provide support for EXPN, but
-sites SHOULD carefully evaluate the tradeoffs. As authentication
-mechanisms are introduced into SMTP, some sites may choose to make EXPN
-available only to authenticated requestors.
-
-7.4 Information Disclosure in Announcements
-
-There has been an ongoing debate about the tradeoffs between the
-debugging advantages of announcing server type and version (and,
-sometimes, even server domain name) in the greeting response or in
-response to the HELP command and the disadvantages of exposing useful
-information to potential hostile attack. The utility of the debugging
-information is beyond doubt. Those who argue for making it available
-point out that it is far better to actually secure an SMTP server
-rather than hope that trying to conceal known vulnerabilities by hiding
-the server's precise identity will provide more protection. Sites are
-encouraged to evaluate the tradeoff with that issue in mind;
-implementations are strongly encouraged to minimally provide for making
-type and version information available in some way to other network
-hosts.
-
-7.5 Information Disclosure in Trace Fields
-
-In some circumstances, such as when mail originates from within a LAN
-whose hosts are not directly from the public Internet, trace
-("Received") fields produced in conformance with this specification may
-disclose host names and similar information that would not normally be
-available. This ordinarily does not pose a problem, but sites with
-special concerns about name disclosure should be aware of it. Also,
-the optional FOR clause should be supplied with caution or not at all
-when multiple recipients are involved lest it inadvertently disclose
-the identities of "blind copy" recipients to others.
-
-7.6 Scope of Operation of SMTP Servers
-
-It is a well-established principle that an SMTP server may refuse to
-accept mail for any operational or technical reason that makes sense to
-the site providing the server. However, cooperation among sites and
-installations makes the Internet possible. If sites take excessive
-advantage of the right to reject traffic, the ubiquity of email
-availability (one of the strengths of the Internet) will be threatened;
-considerable care should be taken and balance maintained if a site
-decides to be selective about the traffic it will accept and process.
-
-In recent years, use of the relay function through arbitrary sites has
-been used as part of hostile efforts to hide the actual origins of
-mail. Some sites have decided to limit the use of the relay function
-to known or identifiable sources, and implementations SHOULD provide
-the capability to perform this type of filtering. When mail is
-rejected for these or other policy reasons, a 550 code SHOULD be used
-in response to EHLO, MAIL, or RCPT as appropriate.
-
-
-8. IANA Considerations
-
-IANA will maintain three registries in support of this specification.
-The first consists of SMTP service extensions with the associated
-keywords, and, as needed, parameters and verbs. As specified in
-section 2.2.2, no entry may be made in this registry that starts in an
-"X". Entries may be made only for service extensions (and associated
-keywords, parameters, or verbs) that are defined in standards-track or
-experimental RFCs specifically approved by the IESG for this purpose.
-
-The second registry consists of "tags" that identify forms of domain
-literals other than those for IPv4 addresses (specified in RFC 821 and
-in this document) and IPv6 addresses (specified in this document).
-Additional literal types require standardization before being used;
-none are anticipated at this time.
-
-The third, established by RFC 821 and renewed by this specification, is
-a registry of link and protocol identifiers to be used with the "via"
-and "with" subclauses of the time stamp ("Received: header") described
-in section 4.4. Link and protocol identifiers in addition to those
-specified in this document may be registered only by standardization or
-by way of an RFC-documented, IESG-approved, Experimental protocol
-extension.
-
-
-9. References
-
-[8BITMIME] J. Klensin, N. Freed, M. Rose, E. Stefferud, D. Crocker, "SMTP
-Service Extension for 8bit-MIMEtransport", RFC 1652, 07/18/1994.
-
-[ABNF] Crocker, D., P. Overell, Eds., "Augmented BNF for Syntax
-Specifications: ABNF", RFC 2234, November 1997.
-
-[IPv6AddrSpec] Hinden, R and S. Deering, Eds. "IP Version 6 Addressing
-Architecture", RFC 1884, December 1995.
-
-[MSGFMT] P. Resnick, Work in progress, draft-ietf-drums-msg-fmt-05.txt,
-August, 1998
-
-[RFC-822] Crocker, D., "Standard for the Format of ARPA Internet Text
-Messages", RFC 822, Department of Electrical Engineering, University of
-Delaware, August 1982.
-
-[RFC-974] Partridge, C., "Mail routing and the domain system", RFC 974,
-01/01/1986
-
-[RFC-1047] Partridge, C., "Duplicate messages and SMTP", RFC 1047,
-02/01/1988.
-
-[RFC-1123] Braden, R., "Requirements for Internet hosts - application and
-support", 10/01/1989
-
-[RFC-BDAT] Vaudreuil, G., "SMTP Service Extensions for Transmission of Large
-and Binary MIME Messages", RFC 1830, 08/16/1995.
-
-[RFC-DNS] Mockapetris, P., "Domain names - implementation and
-specification", RFC 1035 and P. Mockapetris, "Domain names - concepts and
-facilities", RFC 1034. (STD 13)
-
-[RFC-ETRN] De Winter, J., "SMTP Service Extension for Remote Message Queue
-Starting", RFC 1985, 08/14/1996.
-
-[RFC-IMAP2] Crispin, M., "Interactive Mail Access Protocol - Version 2", RFC
-1176, 08/20/1990.
-
-[RFC-IMAP4] Crispin, M., "Internet Message Access Protocol - Version 4", RFC
-2060, 12/04/1996.
-
-[RFC-INTLHDR] Moore, K., "MIME (Multipurpose Internet Mail Extensions) Part
-Three: Message Header Extensions for Non-ASCII Text", RFC 2047, 12/02/1996.
-
-[IAB-Firewalls] Freed, N, ed., "Behavior of and Requirements for
-Internet Firewalls", Work in progress, draft-iab-firewall-req-01.txt,
-Feb 2000.
-
-[RFC-MIME] Freed, N., N. Borenstein, "Multipurpose Internet Mail Extensions
-(MIME) Part One: Format of Internet Message Bodies", RFC 2045, 12/02/1996.
-
-[RFC-MOSS] Crocker, S., N. Freed, J. Galvin, S. Murphy, "MIME Object
-Security Services", RFC 1848, 10/03/1995.
-
-[RFC-NOTARY1] K. Moore, "SMTP Service Extension for Delivery Status
-Notifications", RFC 1891, 01/15/1996.
-
-[RFC-NOTARY2] K. Moore, G. Vaudreuil, "An Extensible Message Format for
-Delivery Status Notifications", RFC 1894, 01/15/1996.
-
-[RFC-PCMAIL] M. Lambert, "PCMAIL: A distributed mail system for personal
-computers", RFC 1056, 06/01/1988.
-
-[RFC-PIPELINE] N. Freed, A. Cargille, "SMTP Service Extension for Command
-Pipelining", RFC 1854, 10/04/1995.
-
-[RFC-POP2] M. Butler, D. Chase, J. Goldberger, J. Postel, J. Reynolds,
-"Post Office Protocol - version 2", RFC 937, 02/01/1985
-
-[RFC-POP3] J. Myers, M. Rose, "Post Office Protocol - Version 3", RFC 1930,
-5/14/96 (Std 53).
-
-[RFC-REPLY] G. Vaudreuil, "Enhanced Mail System Status Codes", RFC 1893,
-01/15/1996.
-
-[RFC-SIZE] J. Klensin, N. Freed, K. Moore, "SMTP Service Extension for
-Message Size Declaration", RFC 1870, 11/06/1995. (STD 10)
-
-[RFC-X400] S. Hardcastle-Kille, "Mapping between X.400(1988) / ISO 10021
-and RFC 822", RFC 1327, 05/18/1992.
-
-[SMTPEXT] J. Klensin, N. Freed, M. Rose, E. Stefferud, D. Crocker, "SMTP
-Service Extensions", RFC-1869, 11/06/1995. (STD 10)
-
-[TCP] Postel, J., ed., "Transmission Control Protocol - DARPA Internet
-Program Protocol Specification", RFC 793, USC/Information Sciences
-Institute, NTIS AD Number A111091, September 1981.
-
-[US-ASCII] United States of America Standards Institute (now American
-National Standards Institute), X3.4, 1968, "USA Code for Information
-Interchange". ANSI X3.4-1968 has been replaced by newer versions with
-slight modifications, but the 1968 version remains definitive for the
-Internet.
-
-
-10. Editor's Address
-
-John C. Klensin
-AT&T Laboratories
-Tel: 617-674-3076
-email: klensin@research.att.com
-
-
-
-11. Acknowledgments
-
-Many people worked long and hard on the many iterations of this document.
-There was wide-ranging debate on the mailing list about many technical
-issues, and many contributors helped form the wording in this
-specification. The hundreds of participants in the many discussions since
-RFC 821 was produced are too numerous to mention, but they all helped this
-document become what it is.
-
-
-
-
- APPENDICES
-
-A. TCP Transport Service
-
-The TCP connection supports the transmission of 8-bit bytes. The SMTP
-data is 7-bit ASCII characters. Each character is transmitted as an
-8-bit byte with the high-order bit cleared to zero. Service extensions
-may modify this rule to permit transmission of full 8-bit data bytes as
-part of the message body, but not in SMTP commands or responses.
-
-
-B. Generating SMTP Commands from RFC 822 Headers
-
-Some systems use RFC 822 headers (only) in a mail submission protocol,
-or otherwise generate SMTP commands from RFC 822 headers when such a
-message is handed to an MTA from a UA. While the MTA-UA protocol is a
-private matter, not covered by any Internet Standard, there are
-problems with this approach. For example, there have been repeated
-problems with proper handling of "bcc" copies and redistribution lists
-when information that conceptually belongs to a mail envelopes is not
-separated early in processing from header information (and kept
-separate).
-
-It is recommended that the UA provide its initial MTA with an envelope
-separate from the message itself. However, if the envelope is not
-supplied, SMTP commands SHOULD be generated as follows:
-
-1. Each recipient address from a TO, CC, or BCC header field SHOULD be
- copied to a RCPT command (generating multiple message copies if that
- is required for queuing or delivery). This includes any addresses
- listed in a RFC 822 "group". Any BCC fields SHOULD then be removed
- from the headers. Once this process is completed, the remaining
- headers SHOULD be checked to verify that at least one To:, Cc:, or
- Bcc: header remains. If none do, then a bcc: header with no
- additional information SHOULD be inserted as specified in [MSGFMT].
-
-2. The return address in the MAIL command SHOULD, if possible, be
- derived from the system's identity for the submitting (local) user,
- and the "From:" header field otherwise. If there is a system
- identity available, it SHOULD also be copied to the Sender header
- field if it is different from the address in the From header field.
- (Any Sender field that was already there SHOULD be removed.)
- Systems may provide a way for submitters to override the envelope
- return address, but may want to restrict its use to privileged
- users. This will not prevent mail forgery, but may lessen its
- incidence; see section 7.1.
-
-When an MTA is being used in this way, it bears responsibility for
-ensuring that the message being transmitted is valid. The mechanisms
-for checking that validity, and for handling (or returning) messages
-that are not valid at the time of arrival, are part of the MUA-MTA
-interface and not covered by this specification.
-
-A submission protocol based on Standard RFC 822 information alone MUST
-NOT be used to gateway a message from a foreign (non-SMTP) mail system
-into an SMTP environment. Additional information to construct an
-envelope must come from some source in the other environment, whether
-supplemental headers or the foreign system's envelope.
-
-Attempts to gateway messages using only their header "to" and "cc"
-fields have repeatedly caused mail loops and other behavior adverse to
-the proper functioning of the Internet mail environment. These
-problems have been especially common when the message originates from
-an Internet mailing list and is distributed into the foreign
-environment using envelope information. When these messages are then
-processed by a header-only remailer, loops back to the Internet
-environment (and the mailing list) are almost inevitable.
-
-
-C. Source Routes
-
-The <reverse-path> is a reverse source routing list of hosts and a
-source mailbox. The first host in the <reverse-path> SHOULD be the
-host sending the MAIL command. Similarly, the <forward-path> may be a
-source routing lists of hosts and a destination mailbox. However, in
-general, the <forward-path> SHOULD contain only a mailbox and domain
-name, relying on the domain name system to supply routing information
-if required. The use of source routes is deprecated; while servers
-MUST be prepared to receive and handle them as discussed in section 3.3
-and F.2, clients SHOULD NOT transmit them.
-
-For relay purposes, the forward-path may be a source route of the form
-"@ONE,@TWO:JOE@THREE", where ONE, TWO, and THREE MUST BE
-fully-qualified domain names. This form is used to emphasize the
-distinction between an address and a route. The mailbox is an absolute
-address, and the route is information about how to get there. The two
-concepts should not be confused.
-
-If source routes are used, RFC 821 and the text below should be
-consulted for the mechanisms for constructing and updating the forward-
-and reverse-paths.
-
-The SMTP server transforms the command arguments by moving its own
-identifier (its domain name or that of any domain for which it is
-acting as a mail exchanger), if it appears, from the forward-path to
-the beginning of the reverse-path.
-
-Notice that the forward-path and reverse-path appear in the SMTP
-commands and replies, but not necessarily in the message. That is,
-there is no need for these paths and especially this syntax to appear
-in the "To:" , "From:", "CC:", etc. fields of the message header.
-Conversely, SMTP servers MUST NOT derive final message delivery
-information from message header fields.
-
-When the list of hosts is present, it is a "reverse" source route and
-indicates that the mail was relayed through each host on the list (the
-first host in the list was the most recent relay). This list is used
-as a source route to return non-delivery notices to the sender. As each
-relay host adds itself to the beginning of the list, it MUST use its
-name as known in the transport environment to which it is relaying the
-mail rather than that of the transport environment from which the mail
-came (if they are different).
-
-
-D. Scenarios
-
-This section presents complete scenarios of several types of SMTP
-sessions. In the examples, "C:" indicates what is said by the SMTP
-client, and "S:" indicates what is said by the SMTP server.
-
-D.1 A Typical SMTP Transaction Scenario
-
-This SMTP example shows mail sent by Smith at host bar.com, to Jones,
-Green, and Brown at host foo.com. Here we assume that host bar.com
-contacts host foo.com directly. The mail is accepted for Jones and
-Brown. Green does not have a mailbox at host foo.com.
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: MAIL FROM:<Smith@bar.com>
- S: 250 OK
- C: RCPT TO:<Jones@foo.com>
- S: 250 OK
- C: RCPT TO:<Green@foo.com>
- S: 550 No such user here
- C: RCPT TO:<Brown@foo.com>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Blah blah blah...
- C: ...etc. etc. etc.
- C: .
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-D.2 Aborted SMTP Transaction Scenario
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: MAIL FROM:<Smith@bar.com>
- S: 250 OK
- C: RCPT TO:<Jones@foo.com>
- S: 250 OK
- C: RCPT TO:<Green@foo.com>
- S: 550 No such user here
- C: RSET
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-D.3 Relayed Mail Scenario
-
-Step 1 -- Source Host to Relay Host
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: MAIL FROM:<JQP@bar.com>
- S: 250 OK
- C: RCPT TO:<@foo.com:Jones@XYZ.COM>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Date: Thu, 21 May 1998 05:33:29 -0700
- C: From: John Q. Public <JQP@bar.com>
- C: Subject: The Next Meeting of the Board
- C: To: Jones@xyz.com
- C:
- C: Bill:
- C: The next meeting of the board of directors will be
- C: on Tuesday.
- C: John.
- C: .
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-Step 2 -- Relay Host to Destination Host
-
- S: 220 xyz.com Simple Mail Transfer Service Ready
- C: EHLO foo.com
- S: 250 xyz.com is on the air
- C: MAIL FROM:<@foo.com:JQP@bar.com>
- S: 250 OK
- C: RCPT TO:<Jones@XYZ.COM>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Received: from bar.com by foo.com ; Thu, 21 May 1998
- C: 05:33:29 -0700
- C: Date: Thu, 21 May 1998 05:33:22 -0700
- C: From: John Q. Public <JQP@bar.com>
- C: Subject: The Next Meeting of the Board
- C: To: Jones@xyz.com
- C:
- C: Bill:
- C: The next meeting of the board of directors will be
- C: on Tuesday.
- C: John.
- C: .
- S: 250 OK
-
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-D.4 Verifying and Sending Scenario
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: VRFY Crispin
- S: 250 Mark Crispin <Admin.MRC@foo.com>
- C: SEND FROM:<EAK@bar.com>
- S: 250 OK
- C: RCPT TO:<Admin.MRC@foo.com>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Blah blah blah...
- C: ...etc. etc. etc.
- C: .
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-
-E. Other Gateway Issues
-
-In general, gateways between the Internet and other mail systems SHOULD
-attempt to preserve any layering semantics across the boundaries
-between the two mail systems involved. Gateway-translation approaches
-that attempt to take shortcuts by mapping, (such as envelope
-information from one system to the message headers or body of another)
-have generally proven to be inadequate in important ways. Systems
-translating between environments that do not support both envelopes and
-headers and Internet mail must be written with the understanding that
-some information loss is almost inevitable.
-
-
-F. Deprecated Features of RFC 821
-
-A few features of RFC 821 have proven to be problematic and SHOULD NOT
-be used in Internet mail.
-
-F.1 TURN
-
-This command, described in RFC 821, raises important security issues
-since, in the absence of strong authentication of the host requesting
-that the client and server switch roles, it can easily be used to
-divert mail from its correct destination. Its use is deprecated; SMTP
-systems SHOULD NOT use it unless the server can authenticate the client.
-
-F.2 Source Routing
-
-RFC 821 utilized the concept of explicit source routing to get mail
-from one host to another via a series of relays. The requirement to
-utilize source routes in regular mail traffic was eliminated by the
-introduction of the domain name system "MX" record and the last
-significant justification for them was eliminated by the introduction,
-in RFC 1123, of a clear requirement that addresses following an "@"
-must all be fully-qualified domain names. Consequently, the only
-remaining justifications for the use of source routes are support for
-very old SMTP clients or MUAs and in mail system debugging. They can,
-however, still be useful in the latter circumstance and for routing
-mail around serious, but temporary, problems such as problems with the
-relevant DNS records.
-
-SMTP servers MUST continue to accept source route syntax as specified
-in the main body of this document and in RFC 1123. They MAY, if
-necessary, ignore the routes and utilize only the target domain in the
-address. If they do utilize the source route, the message MUST be sent
-to the first domain shown in the address. In particular, a server MUST
-NOT guess at shortcuts within the source route.
-
-Clients SHOULD NOT utilize explicit source routing except under unusual
-circumstances, such as debugging or potentially relaying around
-firewall or mail system configuration errors.
-
-F.3 HELO
-
-As discussed in sections 3.1 and 4.1.1, EHLO is strongly preferred to
-HELO when the server will accept the former. Servers must continue to
-accept and process HELO in order to support older clients.
-
-F.4 #-literals
-
-RFC 821 provided for specifying an Internet address as a decimal
-integer host number prefixed by a pound sign, "#". In practice, that
-form has been obsolete since the introduction of TCP/IP. It is
-deprecated and MUST NOT be used.
-
-F.5 Dates and Years
-
-When dates are inserted into messages by SMTP clients or servers (e.g.,
-in trace fields), four-digit years MUST BE used. Two-digit years are
-deprecated; three-digit years were never permitted in the Internet mail
-system.
-
-F.6 Sending versus Mailing
-
-In addition to specifying a mechanism for delivering messages to user's
-mailboxes, RFC 821 provided additional, optional, commands to deliver
-messages directly to the user's terminal screen. These commands (SEND,
-SAML, SOML) were rarely implemented, and changes in workstation
-technology and the introduction of other protocols may have rendered
-them obsolete even where they are implemented.
-
-Clients SHOULD NOT provide SEND, SAML, or SOML as services. Servers
-MAY implement them. If they are implemented by servers, the
-implementation model specified in RFC 821 MUST be used and the command
-names MUST be published in the response to the EHLO command.
-
-
-X. Change Summary and Loose Ends (Temporary)
-
-X.1 Change summary
-
-X.1.1 Substantive changes between draft-ietf-drums-smtpupd-00.txt and
-draft-ietf-drums-smtpupd-01.txt
-
-(i) Slightly clarified the discussions of rejection and failure of VRFY
-requests and the associated response codes.
-
-(ii) Slightly clarified the discussion of deferred address validation.
-
-(iii) Removed the IPCE terminology and modified the text in section
-4.1.1.2 to explicitly introduce the "mail gateway" terminology and to
-begin to distinguish a mail gateway from a conventional relay.
-
-(iv) Explicitly noted that SMTP clients for things like POP and IMAP
-may send everything to a single relay for further processing, rather
-than resolving final domain names.
-
-(v) Tightened the RSET discussion.
-
-(vi) Deprecation of 251 only for RCPT (still ok for VRFY)
-
-X.1.2. Substantive changes between draft-ietf-drums-smtpupd-01.txt and
-draft-ietf-drums-smtpupd-02.txt.
-
-Incorporated additional RFC 1123 material; reorganized several sections
-for clarity. Added definitions and other previous "loose end" material.
-
-X.1.3. Substantive changes between draft-ietf-drums-smtpupd-02.txt and
-draft-ietf-drums-smtpupd-03.txt.
-
-(i) Eliminated a number of placeholders and tightened some of the
-definitions in section 2. Added a few new placeholders for consistency
-checking against other documents.
-
-(ii) Removed the state diagrams, per direction at IETF Montreal.
-
-(iii) Added new section 6.3, an attempt to summarize WG discussions on
-the "posting" versus "delivery" versus "relay" functions of SMTP and on
-whether "fixups" are appropriate in different cases.
-
-(iv) Inserted section 6.1, a minor rewrite of section 5.3.3 of RFC1123.
-
-(v) Added new text to 3.5.5 to discuss the spammer - EXPN relationship.
-
-(vi) The "ASCII requirement" in 4.1.1.4 has been tightened somewhat.
-
-(v) The remaining miscellaneous changes agreed to in Montreal have been
-incorporated except as noted below.
-
-X.1.4. Substantive changes between draft-ietf-drums-smtpupd-03.txt and
-draft-ietf-drums-smtpupd-04.txt.
-
-Many small changes have been made between these two versions; the list
-that follows is not exhaustive.
-
-(i) To clarify some of the text, definitions have been introduced to
-distinguish among originating, delivery, relay, and gateway SMTP
-systems.
-
-(ii) The role of LF-terminated lines has been clarified.
-
-(iii) Several changes have been made to clarify the principle that, no
-matter what originating and final delivery systems might do, relay
-systems are not permitted to tamper with message content, even to "fix"
-headers that are determined to be invalid. If they deem message
-content to be seriously unacceptable, they are encouraged to reject the
-messages in preference to trying to fix them up, but, in general, the
-theme is "don't look/ don't tell".
-
-(iv) A few more definitions have been added to the terminology section,
-and the separate glossary has been eliminated.
-
-(v) I have taken a shot at text to address some of the controversies
-that have raged on the WG mailing list (e.g., sections 7.4 and 7.5).
-Since there was no consensus on most of those topics, I expect that the
-inserted text will satisfy no one except, perhaps, for agreement that
-saying nothing would have been worse. As a mechanism for moving
-forward, the text in these controversial areas that now appears will be
-considered "base"; alterations will be made only if clear consensus
-emerges.
-
-(vi) Per discussion in Los Angeles, source routes have been further
-deprecated.
-
-(vii) Some of the VRFY/EXPN materials have been moved to "security
-considerations", where they appear to belong, some text has been added,
-and the conformance statements adjusted to reflect what I perceive to
-be WG consensus.
-
-(viii) New MX resolution material has been added to section 5. While
-most of this material is from RFC974, the rules have been further
-tightened to reflect current practice and experience (974 is written in
-a somewhat speculative fashion for a standard). In particular, the
-behavior of trying the target host's A RR when MXs existed but all of
-them were eliminated is now prohibited, which seems necessary if
-another of other ideas being recommended or considered are to be
-feasible.
-
-X.1.5. Substantive changes between draft-ietf-drums-smtpupd-04.txt and
-draft-ietf-drums-smtpupd-05.txt.
-
-(i) All normative references to RFC 1123 have been removed from the
-main body of the text (some still appear in the appendices where they
-will remain).
-
-(ii) Section 3.5 has been renamed slightly to distinguish between
-"debugging of SMTP implementations" and "debugging of addresses".
-Better terminology would be welcome.
-
-(iii) Error conditions resulting from the DATA command have been
-clarified.
-
-(iv) Section 4.2 (SMTP replies) has been revised and tightened to
-reflect reality and recent discussion on the list.
-
-(v) Appendix E has been revised a bit and moved into section 4.2.1.
-Given the importance of the "check only first digit" rule, it has to be
-there.
-
-(vi) Added new text for "no SMTP service supported" to sections 3.1,
-4.2.2, 4.2.3, and 4.3.2. As noted in 3.1, I'd rather add 521 (which
-would work perfectly with the model) rather than overloading 554.
-
-(vii) The Return-path language in section 4.4 has been cleaned up a bit.
-
-(viii) Tightened the "postmaster" language in 4.5.1, requiring a small
-change to 4.1.1.3.
-
-(ix) I have unilaterally (with a little help from my friends),
-increased some of the size limits. 64 was much too short for a domain
-name, and the DNS limit of 255 (?) has now been inserted. That leaves
-the return path much too short, but I haven't fixed it (maybe that will
-cause us to get rid of them). We still have a 64 character limit on
-the local-part, which is also *much* too short. Votes for 128 or longer
-limits accepted. See X.1.6(I)
-
-(x) The text on the "recipients buffer" has been rewritten so that (I
-hope) it makes sense and gives some explicit guidance for how clients
-and servers should proceed if limits are imposed.
-
-X.1.6. Substantive changes between draft-ietf-drums-smtpupd-05.txt and
-draft-ietf-drums-smtpupd-06.txt.
-
-Most of the changes in this revision have been editorial rather than
-substantive. Major substantive changes include:
-
-(i) The language about maximum sizes of SMTP command lines has been
-reworked, per WG mailing list discussion.
-
-(ii) Several instances of "SHOULD" have been promoted to "MUST" when
-the reasons for the weaker rule seemed to have disappeared. In
-particular, the requirement that an SMTP implementation support
-timeouts has become a MUST. Also, conformance to this specification
-requires support of EHLO. Older systems should claim conformance to
-the [to-be-historical] 821, not this specification.
-
-X.1.7. Substantive changes between draft-ietf-drums-smtpupd-06.txt and
-draft-ietf-drums-smtpupd-07.txt.
-
-(i) Removed "implied RSET" text associated with QUIT, as specified at
-the December 1997 IETF.
-
-(ii) Required that servers support EHLO, as specified at the December
-1997 IETF.
-
-X.1.8. Substantive changes between draft-ietf-drums-smtpupd-07.txt and
-draft-ietf-drums-smtpupd-08.txt.
-
-This version involves mostly editorial work and cleanup of loose ends.
-
-(i) New 7.5 added (old one renumbered) to discuss info disclosure
-through Received fields.
-
-(ii) Some character set and minor syntax issues clarified.
-
-(iii) Material on code 571 added (thought this had been done long ago;
-slipped through the cracks)
-
-(iv) Many clarifications added as the result of list discussions and
-suggestions.
-
-(v) Error code presentation has been restructured.
-
-(vi) ABNF conversion done
-
-(vii) IPv6 address format inserted per RFC 1884, since we could not get
-clear agreement on an alternative.
-
-(viii) Trivial, silly, examples removed. Others not yet renumbered.
-
-(ix) 3.5.2 and 4.1.1 altered slightly per Eric Allman's notes. Eric
-may not like the way I've done either of these change very much: the
-first now makes the distinction between returning an address and
-returning other stuff (which was permitted by -06, but the text wasn't
-as clear as it should have been): if it looks like an address, it needs
-to be an address. Similarly, with 4.1.1, Eric wanted to explicitly
-permit/legitimize "DATA <SP> <CRLF>". I see several disadvantages to
-doing that, so have inserted language that encourages receivers to
-tolerate trailing white space, which may have the same practical effect.
-
-
-X.1.9. Substantive changes between draft-ietf-drums-smtpupd-08.txt and
-draft-ietf-drums-smtpupd-09.txt.
-
-The first ten of these reflect, in order, minuted items from the
-Chicago IETF (IETF 42).
-
-(i) Clarification of "MUST", etc., in the context of this document
-(section 2.3).
-
-(ii) Altered VRFY text to make implementation a SHOULD (section 3.5.1)
-and removed VRFY from the mandatory to implement list (section 4.5.1),
-per 42nd IETF (Chicago).
-
-(iii) Clarified that exploders are expected to not purge sender
-addresses from lists (section 3.10). Note that the Chicago conclusion
-was that this should be a "MUST". I could not figure out how to do
-that without absolutely prohibiting removing addresses to prevent
-loops, to guard against spammers, or for similar legitimate purposes.
-So I have written this as a "SHOULD", with additional "strongly
-discouraged" words. If someone still wants a MUST, suggest text.
-
-(iv) Altered text to permit clients that sometimes, or even always,
-initiate sessions with HELO, rather than EHLO, to be fully-conforming
-(section 3.2). [[ Editor's note: I continue to believe that a client
-that does not have any service extension support, even to the extent of
-being able to send EHLO and parse the response without doing anything
-about it, should not be considered fully-conforming to this spec (as
-distinct from 821). Consequently, the new text in 3.2 stops well short
-of encouraging clients that don't need service extensions from
-preferentially using HELO, and the text in 2.2.1 (which specifies that
-the extension mechanisms must be supported) has not been changed.
-
-(v) Per Chicago discussions, the text requiring that QUIT be sent has
-not been changed. The text in 4.1.1.10 requiring that the server wait
-for QUIT has been changed to a SHOULD. However, the text in 4.1.1.5,
-prohibiting close on receipt of RSET and that elsewhere prohibiting
-close as a normal response, has not been changed.
-
-(vi) Text has been inserted in 4.1.1 and the text in 4.3.2 altered
-slightly to clarify the handling of parameters to RSET, DATA, and QUIT
-and to 4.1.1.9 specify semantics for parameters to NOOP. I have
-followed the minutes on this although I personally agree with kre's
-mailing list comments that the "servers SHOULD reject" decision leads
-to silly states. I recommend that the WG review this.
-
-(vii) Per discussion in Chicago, no substantive change has been made to
-the specification about underscore characters in domain names (section
-4.1.2). However, the text has been altered to more accurately reflect
-discussion on the mailing list and the source of the requirement.
-
-(viii) Per discussion in Chicago, no change has been made to the
-preference for local time in Received headers.
-
-(ix) Per discussion in Chicago, code 571 has been removed and policy
-rejection is now reflected i a 550 code (section 3.7 and the response
-code lists).
-
-(x) Per discussion in Chicago, no change has been made to the
-specification of use of raw CR or LF.
-
-(xi) In section 4.3, the text has been changed, per comments from Dan
-Bernstein and others, to require that clients be able to handle replies
-that do not contain text strings. A few other places patched to match.
-
-(xii) In sections 4.1.1.1 and 8, the placeholders have been removed.
-
-(xiii) Per discussion on the mailing list (and specifically James
-Berriman's concerns), the text has been clarified (sections 4.1.1.2 and
-4.1.4) to prohibit MAIL unless no mail transaction is open. This is a
-MUST NOT prohibition -- SHOULD NOT makes no sense if this is the
-direction we are going to go. 503 has also been added to the list of
-valid responses for "MAIL" in 4.3.1 - it can't be issued before
-EHLO/HELO in any event. While it is clear that something should be
-said, this may not be the desired outcome (I selected it because it was
-conservative and easy given the text that was there already); the WG
-should check that the text is as intended.
-
-(xiv) Per discussion on the mailing list, a new section 4.5.5 has been
-added to describe null return paths and their handling (forward pointer
-from 3.7). The text in 4.5.5 is substantially that suggested by
-Norbert Bollow. As with (xiii), there is now clear text, but it may
-not be what the WG desires. Please check.
-
-(xv) "all addresses" substituted for "each...in turn" in 3.10.2.
-
-(xvi) Requirement for "<" and ">" around paths clarified in section 3.3
-(syntax productions were clear and correct, but not this overview
-material).
-
-(xvii) Clarified text in 3.3 to permit post-DATA bounces on policy
-matters.
-
-
-X.1.10. Substantive changes between draft-ietf-drums-smtpupd-09.txt and
-draft-ietf-drums-smtpupd-10.txt.
-
-(i) A large series of typos, most of them caught by Philip Hazel,
-corrected.
-
-(ii) Residual problems with references to mailboxes, forward, and
-reverse paths in 4.1.1.2 and 4.1.1.3 corrected and some text, I hope,
-clarified.
-
-(iii) Text added to 4.2.5 to talk about 5yz errors after DATA. This
-text should be checked carefully -- it is a proposal and may or may not
-reflect WG consensus.
-
-(iv) Upper bound on "seconds" has been changed to 60 (not 61), per list
-discussion. Years are still four-digits and will stay that way unless
-the list discussion converges on something else. The increase to 60
-seconds includes an explicit note about leap seconds.
-
-(v) Text has been inserted to reflect the Orlando consensus about
-"QUIT", i.e., the client MUST send a QUIT command and SHOULD wait for
-the results before closing the connection. Servers are still not
-permitted to close without receiving a QUIT and sending a 221 response
-(except, of course, under the usual "unavoidable circumstances", in
-which case they should get off a 451 if that is feasible).
-
-(vi) The EHLO response specification has been changed back to reflect
-non-advertisement of VRFY and some text implying that VRFY was optional
-to support has been removed (WG consensus seemed to be moving in that
-direction at one point, and the editor reacted prematurely). This
-makes the text compatible with RFC1869 and restores VRFY to its RFC1123
-status.
-
-(vii) The text in section 5 has been clarified with regard to what a
-relay that receives a message because of its designation as an MX can
-do and 3.7 has been slightly modified to point to it.
-
-(viii) New text has been added to 3.7 to clarify the use of "SMTP
-server" relays in "dumb" originating clients.
-
-(viii) Small wording changes inserted into 4.1.4 (e.g., insertion of ",
-if possible," into the first sentence of the fifth paragraph to
-eliminate the apparent conflict with the second sentence).
-
-
-X.1.11. Substantive changes between draft-ietf-drums-smtpupd-10.txt and
-draft-ietf-drums-smtpupd-11.txt. Note that the most significant change
-is the insertion of RFC 2234-conforming ABNF throughout. That material
-should be checked carefully.
-
-(i) Dumb client text revised again, as discussed on the list and using
-the text agreed to there. New text simply notes that the submission
-issues are outside the scope of the spec/standard.
-
-(ii) ABNF updated and replaced (thanks, Chris). Some possible issues/
-questions:
-
- (ii.1) RFC 1869 permits a NUL octet in the greeting (ehlo-greet in
- the syntax). Chris proposes to remove that capability on the
- grounds that it has no obvious value and will probably not
- work with many servers anyway.
-
- (ii.2) Previous drafts have assumed that the tag to indicate what
- is coming in a non-IPv4 address literal will be separated by
- the address itself by a space. Chris proposes to change it to
- a colon, on the theory that this will cause fewer parsing
- problems with existing MTAs and MUAs.
-
- (ii.3) The full IPv6 address syntax has been transposed from
- the prose of RFC2373 into ABNF. It can be left out and 2373
- cited if the WG prefers.
-
-(iii) Added firewall clarification to section 2.3.8.
-
-(iv) Small clarifications and tightenings in several sections, notably
-the end of 3.7, 3.8.3, 4.5.4.2, 7.2, clarifying editorial changes
-elsewhere, slightly improved crossreferences, and some redundant
-sections stripped out. Many thanks to Graham Klyne for extensive
-and specific comments in these areas.
-
-(v) The "TO:" in "RCPT TO:" is part of an argument, not part of the
-command. Similarly for "FROM:" in "MAIL FROM:". All of these are
-believed to be fixed.
-
-(vi)Section 2.3.5 has been changed to make it clear that restrictions
-on the syntax and character set of domain names are part of the mail
-system, not an intrinsic limit of the DNS itself. This, and some
-other text, are not going to be popular with those working to
-internationalize the DNS, but I believe it is important to lay down a
-clear baseline and then start making modifications or extensions,
-rather than trying to delude ourselves with a DNS equivalent of "just
-send 8".
-
-(vii) Clarified the EHLO-> HELO fallback requirement in 3.2. I think
-this is consistent with what the WG wanted; if not, I'm sure I'll hear
-about it.
-
-
-
-
-
-Z. Full Copyright Statement
-
-Copyright (C) The Internet Society (1998-2000). All Rights Reserved.
-
-This document and translations of it may be copied and furnished to
-others, and derivative works that comment on or otherwise explain it or
-assist in its implementation may be prepared, copied, published and
-distributed, in whole or in part, without restriction of any kind,
-provided that the above copyright notice and this paragraph are
-included on all such copies and derivative works. However, this
-document itself may not be modified in any way, such as by removing the
-copyright notice or references to the Internet Society or other
-Internet organizations, except as needed for the purpose of developing
-Internet standards in which case the procedures for copyrights defined
-in the Internet Standards process must be followed, or as required to
-translate it into languages other than English.
-
-The limited permissions granted above are perpetual and will not be
-revoked by the Internet Society or its successors or assigns.
-
-This document and the information contained herein is provided on an
-"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
-TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
-NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL
-NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
-FITNESS FOR A PARTICULAR PURPOSE.
-
-Expires September 9, 2000.
diff --git a/Documentation/en/I-D/draft-ietf-drums-smtpupd-12.txt b/Documentation/en/I-D/draft-ietf-drums-smtpupd-12.txt
deleted file mode 100644
index e57ab185..00000000
--- a/Documentation/en/I-D/draft-ietf-drums-smtpupd-12.txt
+++ /dev/null
@@ -1,4076 +0,0 @@
-INTERNET-DRAFT John C. Klensin, Editor
-Expires December 2000
-July 10, 2000
-
-
- Simple Mail Transfer Protocol
-
- draft-ietf-drums-smtpupd-12.txt
-
-Status of this Memo
-
-This document is an Internet-Draft and is in full conformance with
-all provisions of Section 10 of RFC2026.
-
-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."
-
-The list of current Internet-Drafts can be accessed at
-http://www.ietf.org/ietf/1id-abstracts.txt
-
-The list of Internet-Draft Shadow Directories can be accessed at
-http://www.ietf.org/shadow.html.
-
-[[Appendix X will be removed before the document is submitted to the
-IESG.]]
-
-[[If consensus is reached on this document, it will be forwarded to the
-IESG with the recommendation that it be processed onto the Standards
-track.]]
-
-Copyright Notice
-
-Copyright (C) The Internet Society (2000). All Rights Reserved.
-
- Table of Contents
-
-0. Abstract
-
-1. Introduction
-
-2. The SMTP Model
-2.1 Basic Structure
-2.2 The Extension Model
-2.2.1 Background
-2.2.2 Definition and Registration of Extensions
-2.3 Terminology
-2.3.1 Mail Objects
-2.3.2 Senders and Receivers
-2.3.3 Mail Agents and Message Stores
-2.3.4 Host
-2.3.5 Domain
-2.3.6 Buffer and State Table
-2.3.7 Lines
-2.3.8 Originator, Delivery, Relay, and Gateway Systems
-2.3.9 Message Content and Mail Data
-2.3.10 Mailbox and Address
-2.3.11 Reply
-2.4 General Syntax Principles and Transaction Model
-
-3. The SMTP Procedures: An Overview
-3.1 Session Initiation
-3.2 Client Initiation
-3.3 Mail Transactions
-3.4 Forwarding for Address Correction or Updating
-3.5 Commands for Debugging Addresses
-3.5.1 Overview
-3.5.2 VRFY Normal Response
-3.5.3 Meaning of VRFY or EXPN Success Response
-3.5.4 Semantics and Applications of EXPN
-3.6 Domains
-3.7 Relaying
-3.8 Mail Gatewaying
-3.8.1 Header Fields in Gatewaying
-3.8.2 Received Lines in Gatewaying
-3.8.3 Addresses in Gatewaying
-3.8.4 Other Header Fields in Gatewaying
-3.8.5 Envelopes in Gatewaying
-3.9 Terminating Sessions and Connections
-3.10 Mailing Lists and Aliases
-3.10.1 Alias
-3.10.2 List
-
-4. The SMTP Specifications
-4.1 SMTP Commands
-4.1.1 Command Semantics and Syntax
-4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)
-4.1.1.2 MAIL (MAIL)
-4.1.1.3 RECIPIENT (RCPT)
-4.1.1.4 DATA (DATA)
-4.1.1.5 RESET (RSET)
-4.1.1.6 VERIFY (VRFY)
-4.1.1.7 EXPAND (EXPN)
-4.1.1.8 HELP (HELP)
-4.1.1.9 NOOP (NOOP)
-4.1.1.10 QUIT (QUIT)
-4.1.2 Command Argument Syntax
-4.1.3 Address Literals
-4.1.4 Order of Commands
-4.1.5 Private-use Commands
-4.2 SMTP Replies
-4.2.1 Reply Code Severities and Theory
-4.2.2 Reply Codes by Function Groups
-4.2.3 Reply Codes in Numeric Order
-4.2.4 Reply Code 502
-4.2.5 Reply Codes After DATA and the Subsequent <CRLF>.<CRLF>
-4.3 Sequencing of Commands and Replies
-4.3.1 Sequencing Overview
-4.3.2 Command-Reply Sequences
-4.4 Trace Information
-4.5 Additional Implementation Issues
-4.5.1 Minimum Implementation
-4.5.2 Transparency
-4.5.3 Sizes and Timeouts
-4.5.3.1 Size limits and minimums
-4.5.3.2 Timeouts
-4.5.4 Retry Strategies
-4.5.4.1 Sending Strategy
-4.5.4.2 Receiving Strategy
-4.5.5 Messages with a null reverse-path
-
-5. Address Resolution and Mail Handling
-
-6. Problem Detection and Handling
-6.1 Reliable Delivery and Replies by Email
-6.2 Loop Detection
-6.3 Compensating for Irregularities
-
-7. Security Considerations
-7.1 Mail Security and Spoofing
-7.2 "Blind" Copies
-7.3 VRFY, EXPN, and Security
-7.4 Information Disclosure in Announcements
-7.5 Information Disclosure in Trace Fields
-7.6 Information Disclosure in Message Forwarding
-7.7 Scope of Operation of SMTP Servers
-
-8. IANA Considerations
-
-9. References
-
-10. Editors' Addresses
-
-11. Acknowledgments
-
-Appendices
-A. TCP Transport Service
-B. Generating SMTP Commands from RFC 822 Headers
-C. Source Routes
-D. Scenarios
-E. Other Gateway Issues
-F. Deprecated Features of RFC 821
-X. Change Summary and Loose Ends (Temporary)
-
-
-0. Abstract
-
-This document is a self-contained specification of the basic protocol for
-the Internet electronic mail transport, consolidating and updating:
-
- - the original SMTP specification of RFC 821 [RFC-821],
-
- - domain name system requirements and implications for mail transport from
- RFC 1035 [RFC-DNS] and RFC 974 [RFC-974],
-
- - the clarifications and applicability statements in RFC 1123 [RFC-1123],
- and
-
- - material drawn from the SMTP Extension mechanisms [SMTPEXT].
-
-It replaces RFC 821, RFC 974, and the mail transport materials of RFC
-1123. However, RFC 821 specifies some features that were not in
-significant use in the Internet by the mid-1990s and (in appendices)
-some additional transport models. Those sections are omitted here in
-the interest of clarity and brevity; readers needing them should
-refer to RFC 821.
-
-It also includes some additional material from RFC 1123 that required
-amplification. This material has been identified in multiple ways, mostly
-by tracking flaming on various lists and newsgroups and problems of unusual
-readings or interpretations that have turned up as the SMTP extensions have
-been deployed. Where this specification moves beyond consolidation and
-actually differs from earlier documents, it supersedes them technically as
-well as textually.
-
-Although SMTP was designed as a mail transport and delivery protocol, this
-specification also contains information that is important to its use as a
-'mail submission' protocol, as recommended for POP [RFC-POP2, RFC-POP3]
-and IMAP [RFC-IMAP4]. Additional submission issues are discussed in RFC
-2476 [SUBMIT].
-
-Section 2.3 provides definitions of terms specific to this document. Except
-when the historical terminology is necessary for clarity, this document
-uses the current 'client' and 'server' terminology to identify the sending
-and receiving SMTP processes, respectively.
-
-A companion document [MSGFMT] discusses message headers, message bodies
-and formats and structures for them, and their relationship.
-
-Comments on this draft should be addressed to the IETF DRUMS Working
-Group:
- General Discussion:drums@cs.utk.edu
- To Subscribe: drums-request@cs.utk.edu
- Archive: ftp://cs.utk.edu/pub/drums/mail-archive/
-
-
-
-1. Introduction
-
-The objective of the Simple Mail Transfer Protocol (SMTP) is to transfer
-mail reliably and efficiently.
-
-SMTP is independent of the particular transmission subsystem and requires
-only a reliable ordered data stream channel. While this document
-specifically discusses transport over TCP, other transports are possible.
-Appendices to RFC 821 describe some of them.
-
-An important feature of SMTP is its capability to transport mail across
-networks, usually referred to as "SMTP mail relaying" (see section 3.8).
-A network consists of the mutually-TCP-accessible hosts on the public
-Internet, the mutually-TCP-accessible hosts on a firewall-isolated TCP/IP
-Intranet, or hosts in some other LAN or WAN environment utilizing a
-non-TCP transport-level protocol. Using SMTP, a process can transfer
-mail to another process on the same network or to some other network via
-a relay or gateway process accessible to both networks.
-
-In this way, a mail message may pass through a number of intermediate
-relay or gateway hosts on its path from sender to ultimate recipient.
-The Mail eXchanger mechanisms of the domain name system [RFC-DNS, and
-section 5 of this document] are used to identify the appropriate next-hop
-destination for a message being transported.
-
-
-2. The SMTP Model
-
-2.1 Basic Structure
-
-The SMTP design can be pictured as:
-
- +----------+ +----------+
- +------+ | | | |
- | User |<-->| | SMTP | |
- +------+ | Client- |Commands/Replies| Server- |
- +------+ | SMTP |<-------------->| SMTP | +------+
- | File |<-->| | and Mail | |<-->| File |
- |System| | | | | |System|
- +------+ +----------+ +----------+ +------+
- SMTP client SMTP server
-
-When an SMTP client has a message to transmit, it establishes a two-way
-transmission channel to an SMTP server. The responsibility of an SMTP client is to
-transfer mail messages to one or more SMTP servers, or report its failure
-to do so.
-
-The means by which a mail message is presented to an SMTP client, and how
-that client determines the domain name(s) to which mail messages are to be
-transferred is a local matter, and is not addressed by this document. In
-some cases, the domain name(s) transferred to, or determined by, an SMTP
-client will identify the final destination(s) of the mail message. In other
-cases, common with SMTP clients associated with implementations of the POP
-[RFC-POP2, RFC-POP3] or IMAP [RFC-IMAP4] protocols, or when the SMTP client
-is inside an isolated transport service environment, the domain name
-determined will identify an intermediate destination through which all mail
-messages are to be relayed. SMTP clients that transfer all traffic,
-regardless of the target domain names associated with the individual
-messages, or that do not maintain queues for retrying message transmissions
-that initially cannot be completed, may otherwise conform to this
-specification but are not considered fully-capable. Fully-capable SMTP
-implementations, including the relays used by these less capable ones, and
-their destinations, are expected to support all of the queuing, retrying,
-and alternate address functions discussed in this specification.
-
-The means by which an SMTP client, once it has determined a target domain
-name, determines the identity of an SMTP server to which a copy of a
-message is to be transferred, and then performs that transfer, is covered
-by this document. To effect a mail transfer to an SMTP server, an SMTP
-client establishes a two-way transmission channel to that SMTP server. An
-SMTP client determines the address of an appropriate host running an SMTP
-server by resolving a destination domain name to either an intermediate
-Mail eXchanger host or a final target host.
-
-An SMTP server may be either the ultimate destination or an intermediate
-"relay" (that is, it may assume the role of an SMTP client after receiving
-the message) or "gateway" (that is, it may transport the message further
-using some protocol other than SMTP). SMTP commands are generated by the
-SMTP client and sent to the SMTP server. SMTP replies are sent from the
-SMTP server to the SMTP client in response to the commands.
-
-In other words, message transfer can occur in a single connection between
-the original SMTP-sender and the final SMTP-recipient, or can occur in a
-series of hops through intermediary systems. In either case, a formal
-handoff of responsibility for the message occurs: the protocol requires
-that a server accept responsibility for either delivering a message or
-properly reporting the failure to do so.
-
-Once the transmission channel is established and initial handshaking
-completed, the SMTP client normally initiates a mail transaction. Such a
-transaction consists of a series of commands to specify the originator and
-destination of the mail and transmission of the message content (including
-any headers or other structure) itself. When the same message is sent to
-multiple recipients, this protocol encourages the transmission of only one
-copy of the data for all recipients at the same destination (or
-intermediate relay) host.
-
-The server responds to each command with a reply; replies may indicate that
-the command was accepted, that additional commands are expected, or that a
-temporary or permanent error condition exists. Commands specifying the
-sender or recipients may include server-permitted SMTP service extension
-requests as discussed in section 2.2. The dialog is purposely lock-step,
-one-at-a-time, although this can be modified by mutually-agreed extension
-requests such as in [RFC-Pipeline].
-
-Once a given mail message has been transmitted, the client may either
-request that the connection be shut down or may initiate other mail
-transactions. In addition, an SMTP client may use a connection to an SMTP
-server for ancillary services such as verification of email addresses or
-retrieval of mailing list subscriber addresses.
-
-As suggested above, this protocol provides mechanisms for the transmission
-of mail. This transmission normally occurs directly from the sending
-user's host to the receiving user's host when the two hosts are connected
-to the same transport service. When they are not connected to the same
-transport service, transmission occurs via one or more relay SMTP servers.
-An intermediate host that acts as either an SMTP relay or as a gateway into
-some other transmission environment is usually selected through the use of
-the domain name service (DNS) Mail eXchanger mechanism.
-
-Usually, intermediate hosts are determined via the DNS MX record, not by
-explicit "source" routing (see section 5 and appendices C and F.2).
-
-2.2 The Extension Model
-
-2.2.1 Background
-
-In an effort that started in 1990, approximately a decade after RFC 821 was
-completed, the protocol was modified with a "service extensions" model that
-permits the client and server to agree to utilize shared functionality
-beyond the original SMTP requirements. The SMTP extension mechanism defines
-a means whereby an extended SMTP client and server may recognize each
-other, and the server can inform the client as to the service extensions
-that it supports.
-
-Contemporary SMTP implementations MUST support the basic extension
-mechanisms. For instance, servers MUST support the EHLO command even if
-they do not implement any specific extensions and clients SHOULD
-preferentially utilize EHLO rather than HELO. (However, for compatibility
-with older conforming implementations, SMTP clients and servers MUST
-support the original HELO mechanisms as a fallback.) Unless the different
-characteristics of HELO must be identified for interoperability purposes,
-this document discusses only EHLO.
-
-SMTP is widely deployed and high-quality implementations have proven to be
-very robust. However, the Internet community now considers some services to
-be important that were not anticipated when the protocol was first
-designed. If support for those services is to be added, it must be done in
-a way that permits older implementations to continue working acceptably.
-The extension framework consists of:
-
- - The SMTP command EHLO, superseding the earlier HELO,
-
- - a registry of SMTP service extensions,
-
- - additional parameters to the SMTP MAIL and RCPT commands, and
-
- - optional replacements for commands defined in this protocol, such as for
- DATA (see [RFC-BDAT]).
-
-SMTP's strength comes primarily from its simplicity. Experience with many
-protocols has shown that protocols with few options tend towards ubiquity,
-whereas protocols with many options tend towards obscurity.
-
-Each and every extension, regardless of its benefits, must be carefully
-scrutinized with respect to its implementation, deployment, and
-interoperability costs. In many cases, the cost of extending the SMTP
-service will likely outweigh the benefit.
-
-2.2.2 Definition and Registration of Extensions
-
-The IANA maintains a registry of SMTP service extensions. A corresponding
-EHLO keyword value is associated with each extension. Each service
-extension registered with the IANA must be defined in a formal
-standards-track or IESG-approved experimental protocol document. The
-definition must include:
-
- - the textual name of the SMTP service extension;
-
- - the EHLO keyword value associated with the extension;
-
- - the syntax and possible values of parameters associated with the
- EHLO keyword value;
-
- - any additional SMTP verbs associated with the extension (additional
- verbs will usually be, but are not required to be, the same as the
- EHLO keyword value);
-
- - any new parameters the extension associates with the MAIL or RCPT
- verbs;
-
- - a description of how support for the extension affects the behavior
- of a server and client SMTP; and,
-
- - the increment by which the extension is increasing the maximum
- length of the commands MAIL and/or RCPT, over that specified
- in this standard.
-
-In addition, any EHLO keyword value starting with an upper or lower case
-"X" refers to a local SMTP service extension used exclusively through
-bilateral agreement. Keywords beginning with "X" MUST NOT be used in a
-registered service extension. Conversely, keyword values presented in the
-EHLO response that do not begin with "X" MUST correspond to a standard,
-standards-track, or IESG-approved experimental SMTP service extension
-registered with IANA. A conforming server MUST NOT offer non-"X"-prefixed
-keyword values that are not described in a registered extension.
-
-Additional verbs and parameter names are bound by the same rules as EHLO
-keywords; specifically, verbs beginning with "X" are local extensions that
-may not be registered or standardized. Conversely, verbs not beginning
-with "X" must always be registered.
-
-2.3 Terminology
-
-Most of the terminology in this document is common in the Internet at the
-time of its writing. However, the following terms and concepts are used
-in special ways here, or represent differences in terminology between RFC
-821 and this document, and should be understood before reading further.
-These definitions are normative, that is, they contain specifications to
-which SMTP implementations are required to conform.
-
-The terms "MUST" and "SHOULD" (and "MUST NOT" and "SHOULD NOT") are
-used in the same general sense here as in the Host Requirements
-Standards [RFC-1123]. Specifically, "MUST" or "MUST NOT" identify
-absolute requirements for conformance to this specification.
-Implementations that do not conform to them lie outside the scope of
-this specification and often will not interoperate properly with SMTP
-implementations that do conform. Implementations that are fully
-conforming also adhere to all "SHOULD" and "SHOULD NOT" requirements.
-Implementations that adhere to all "MUST" ("MUST NOT") but not to all
-of these are considered to be partially conforming. Such
-implementations may interoperate properly with fully conforming ones
-and with each other, but this will typically be the case only if great
-care is taken. Consequently, an implementation should violate "SHOULD"
-("SHOULD NOT") requirements only under exceptional and well-understood
-circumstances. "SHOULD" (and sometimes "MUST") requirements are often
-imposed by this specification when experience has shown that following
-such requirements or restrictions leads, in practice, to better
-interoperation, or smoother operation of the Internet email
-infrastructure. As a consequence, some of these statements constitute
-recommended practices, rather than the statistically most common
-practice at the time of this writing. Statements using "MAY" describe
-features or styles of doing things that may be followed, or not, at the
-discretion of the implementation, normally without causing significant
-interoperability problems.
-
-2.3.1 Mail Objects
-
-SMTP transports a mail object. A mail object contains an envelope and
-content.
-
-The SMTP envelope is sent as a series of SMTP protocol units (described
-in section 3). It consists of an originator address (to which error
-reports should be directed); one or more recipient addresses; and optional
-protocol extension material. Historically, variations on the recipient
-address specification command (RCPT TO) could be used to specify alternate
-delivery modes, such as immediate display; those variations have now been
-deprecated (see appendix F, section F.6).
-
-The SMTP content is sent in the SMTP DATA protocol unit and has two
-parts: the headers and the body. If the content conforms to other
-contemporary standards, the headers form a collection of field/value
-pairs structured as described in [MSGFMT]; the body, if structured, is
-defined according to MIME [RFC-MIME]. The content is textual in nature,
-expressed using the US-ASCII repertoire [US-ASCII]. Although SMTP
-extensions (such as [8BitMIME]) may relax this restriction for the
-content body, the content headers are always encoded using the US-ASCII
-repertoire. The algorithm defined in [RFC-INTLHDR] is used to represent
-header values outside the US-ASCII repertoire, while still encoding
-them using the US-ASCII repertoire.
-
-2.3.2 Senders and Receivers
-
-In RFC 821, the two hosts participating in an SMTP transaction were
-described as the "SMTP-sender" and "SMTP-receiver". This document has
-been changed to reflect current industry terminology and hence refers
-to them as the "SMTP client" (or sometimes just "the client") and "SMTP
-server" (or just "the server"), respectively. Since a given host may
-act both as server and client in a relay situation, "receiver" and
-"sender" terminology is still used where needed for clarity.
-
-2.3.3 Mail Agents and Message Stores
-
-Additional mail system terminology became common after RFC 821 was
-published and, where convenient, is used in this specification. In
-particular, SMTP servers and clients provide a mail transport service
-and therefore act as "Mail Transfer Agents" (MTAs). "Mail User Agents"
-(MUAs or UAs) are normally thought of as the sources and targets of
-mail. At the source, an MUA might collect mail to be transmitted from
-a user and hand it off to an MTA; the final ("delivery") MTA would be
-thought of as handing the mail off to an MUA (or at least transferring
-responsibility to it, e.g., by depositing the message in a "message
-store"). However, while these terms are used with at least the
-appearance of great precision in other environments, the implied
-boundaries between MUAs and MTAs often do not accurately match common,
-and conforming, practices with Internet mail. Hence, the reader should
-be cautious about inferring the strong relationships and
-responsibilities that might be implied if these terms were used
-elsewhere.
-
-2.3.4 Host
-
-For the purposes of this specification, a host is a computer system
-attached to the Internet (or, in some cases, to a private TCP/IP
-network) and supporting the SMTP protocol. Hosts are known by names
-(see "domain"); identifying them by numerical address is discouraged.
-
-2.3.5 Domain
-
-A domain (or domain name) consists of one or more dot-separated
-components. These components ("labels" in DNS terminology [RFC-DNS]
-are restricted for SMTP purposes to consist of a sequence of letters,
-digits, and hyphens drawn from the ASCII character set [US-ASCII].
-Domain names are used as names of hosts and of other entities in the
-domain name hierarchy. For example, a domain may refer to an alias
-(label of a CNAME RR) or the label of Mail eXchanger records to be used
-to deliver mail instead of representing a host name. See [RFC-DNS] and
-section 5.
-
-The domain name, as described in this document and in [RFC-DNS], is the
-entire, fully-qualified name (often referred to as an "FQDN"). A
-domain name that is not in FQDN form is no more than a local alias.
-Local aliases MUST NOT appear in any SMTP transaction.
-
-2.3.6 Buffer and State Table
-
-SMTP sessions are stateful, with both parties carefully maintaining a
-common view of the current state. In this document we model this state
-by a virtual "buffer" and a "state table" on the server which may be
-used by the client to, for example, "clear the buffer" or "reset the
-state table," causing the information in the buffer to be discarded and
-the state to be returned to some previous state.
-
-2.3.7 Lines
-
-SMTP commands and, unless altered by a service extension, message data,
-are transmitted in "lines". Lines consist of zero or more data
-characters terminated by the sequence ASCII character "CR" (hex value
-0D) followed immediately by ASCII character "LF" (hex value 0A). This
-termination sequence is denoted as <CRLF> in this document. Conforming
-implementations MUST NOT recognize or generate any other character or
-character sequence as a line terminator. Limits MAY be imposed on line
-lengths by servers (see section 4.5.3).
-
-In addition, the appearance of "bare" "CR" or "LF" characters in text
-(i.e., either without the other) has a long history of causing problems in
-mail implementations and applications that use the mail system as a tool.
-SMTP client implementations MUST NOT transmit these characters except when
-they are intended as line terminators and then MUST, as indicated above,
-transmit them only as a <CRLF> sequence.
-
-2.3.8 Originator, Delivery, Relay, and Gateway Systems
-
-This specification makes a distinction among four types of SMTP
-systems, based on the role those systems play in transmitting
-electronic mail. An "originating" system (sometimes called an SMTP
-originator) introduces mail into the Internet or, more generally, into
-a transport service environment. A "delivery" SMTP system is one that
-receives mail from a transport service environment and passes it to a
-mail user agent or deposits it in a message store which a mail user
-agent is expected to subsequently access. A "relay" SMTP system
-(usually referred to just as a "relay") receives mail from an SMTP
-client and transmits it, without modification to the message data other
-than adding trace information, to another SMTP server for further
-relaying or for delivery.
-
-A "gateway" SMTP system (usually referred to just as a "gateway")
-receives mail from a client system in one transport environment and
-transmits it to a server system in another transport environment.
-Differences in protocols or message semantics between the transport
-environments on either side of a gateway may require that the gateway
-system perform transformations to the message that are not permitted to
-SMTP relay systems. For the purposes of this specification, firewalls
-that rewrite addresses should be considered as gateways, even if SMTP
-is used on both sides of them. (See [IAB-Firewalls].)
-
-2.3.9 Message Content and Mail Data
-
-The terms "message content" and "mail data" are used interchangeably in
-this document to describe the material transmitted after the DATA
-command is accepted and before the end of data indication is
-transmitted. Message content includes message headers and the
-possibly-structured message body. The MIME specification [RFC-MIME]
-provides the standard mechanisms for structured message bodies.
-
-2.3.10 Mailbox and Address
-
-As used in this specification, an "address" is a character string that
-identifies a user to whom mail will be sent or a location into which
-mail will be deposited. The term "mailbox" refers to that depository.
-The two terms are typically used interchangeably unless the distinction
-between the location in which mail is placed (the mailbox) and a
-reference to it (the address) is important. An address normally
-consists of user and domain specifications. The standard mailbox
-naming convention is defined to be "local-part@domain": contemporary
-usage permits a much broader set of applications than simple "user
-names". Consequently, and due to a long history of problems when
-intermediate hosts have attempted to optimize transport by modifying
-them, the local-part MUST be interpreted and assigned semantics only by
-the host specified in the domain part of the address.
-
-2.3.11 Reply
-
-An SMTP reply is an acknowledgment (positive or negative) sent from
-receiver to sender via the transmission channel in response to a
-command. The general form of a reply is a numeric completion code
-(indicating failure or success) usually followed by a text string. The
-codes are for use by programs and the text is usually intended for
-human users. Recent work [RFC-Reply] has specified further structuring
-of the reply strings, including the use of supplemental and more
-specific completion codes.
-
-2.4 General Syntax Principles and Transaction Model
-
-SMTP commands and replies have a rigid syntax. All commands begin with
-a four letter command verb. All Replies begin with a three digit
-numeric code. In some commands and replies, arguments MUST follow the
-verb or reply code. Some commands do not accept arguments (after the
-verb), and some reply codes are followed, sometimes optionally, by free
-form text. In both cases, where text appears, it is separated from the
-verb or reply code by a space character. Complete definitions of
-commands and replies appear in section 4.
-
-Verbs and argument values (e.g., "TO:" or "to:" in the MAIL command and
-extension name keywords) are not case sensitive, with the sole
-exception in this specification of a mailbox local-part (SMTP
-Extensions may explicitly specify case-sensitive elements). That is, a
-command verb, an argument value other than a mailbox local-part, and
-free form text MAY be encoded in upper case, lower case, or any mixture
-of upper and lower case with no impact on its meaning. This is NOT
-true of a mailbox local-part. The local-part of a mailbox MUST BE
-treated as case sensitive. Therefore, SMTP implementations MUST take
-care to preserve the case of mailbox local-parts. Mailbox domains are
-not case sensitive. In particular, for some hosts the user "smith" is
-different from the user "Smith". However, exploiting the case
-sensitivity of mailbox local-parts impedes interoperability and is
-discouraged.
-
-A few SMTP servers, in violation of this specification (and RFC 821)
-require that command verbs be encoded by clients in upper case.
-Implementations MAY wish to employ this encoding to accommodate those
-servers.
-
-The argument field consists of a variable length character string
-ending with the end of the line, i.e., with the character sequence
-<CRLF>. The receiver will take no action until this sequence is
-received.
-
-The syntax for each command is shown with the discussion of that
-command. Common elements and parameters are shown in section 4.1.2.
-
-Commands and replies are composed of characters from the ASCII
-character set [US-ASCII]. When the transport service provides an 8-bit
-byte (octet) transmission channel, each 7-bit character is transmitted
-right justified in an octet with the high order bit cleared to zero.
-More specifically, the unextended SMTP service provides seven bit
-transport only. An originating SMTP client which has not successfully
-negotiated an appropriate extension with a particular server MUST NOT
-transmit messages with information in the high-order bit of octets. If
-such messages are transmitted in violation of this rule, receiving SMTP
-servers MAY clear the high-order bit or reject the message as invalid.
-In general, a relay SMTP SHOULD assume that the message content it has
-received is valid and, assuming that the envelope permits doing so,
-relay it without inspecting that content. Of course, if the content is
-mislabeled and the data path cannot accept the actual content, this may
-result in ultimate delivery of a severely garbled message to the
-recipient. Delivery SMTP systems MAY reject ("bounce") such messages
-rather than deliver them. No sending SMTP system is permitted to send
-envelope commands in any character set other than US-ASCII; receiving
-systems SHOULD reject such commands, normally using "500 syntax error -
-invalid character" replies.
-
-Eight-bit message content transmission MAY be requested of the server
-by a client using extended SMTP facilities, notably the "8BITMIME"
-extension [8BITMIME]. 8BITMIME SHOULD be supported by SMTP servers.
-However, it MUST not be construed as authorization to transmit
-unrestricted eight bit material. 8BITMIME MUST NOT be requested by
-senders for material with the high bit on that is not in MIME format
-with an appropriate content-transfer encoding; servers MAY reject such
-messages.
-
-The metalinguistic notation used in this document corresponds to the
-"Augmented BNF" used in other Internet mail system documents. The
-reader who is not familiar with that syntax should consult [ABNF].
-Metalanguage terms used in running text are surrounded by pointed
-brackets (e.g., <CRLF>) for clarity.
-
-
-3. The SMTP Procedures: An Overview
-
-This section contains descriptions of the procedures used in SMTP:
-session initiation, the mail transaction, forwarding mail, verifying
-mailbox names and expanding mailing lists, and the opening and closing
-exchanges. Comments on relaying, a note on mail domains, and a
-discussion of changing roles are included at the end of this section.
-Several complete scenarios are presented in appendix D.
-
-3.1 Session Initiation
-
-An SMTP session is initiated when a client opens a connection to a
-server and the server responds with an opening message.
-
-SMTP server implementations MAY include identification of their
-software and version information in the connection greeting reply after
-the 220 code, a practice that permits more efficient isolation and
-repair of any problems. Implementations MAY make provision for SMTP
-servers to disable the software and version announcement where it
-causes security concerns. While some systems also identify their
-contact point for mail problems, this is not a substitute for
-maintaining the required "postmaster" address (see section 4.5.1).
-
-The SMTP protocol allows a server to formally reject a transaction
-while still allowing the initial connection as follows: a 554 response
-MAY be given in the initial connection opening message instead of the
-220. A server taking this approach MUST still wait for the client to
-send a QUIT (see section 4.1.1.10) before closing the connection and
-SHOULD respond to any intervening commands with "503 bad sequence of
-commands". Since an attempt to make an SMTP connection to such a
-system is probably in error, a server returning a 554 response on
-connection opening SHOULD provide enough information in the reply text
-to facilitate debugging of the sending system.
-
-3.2 Client Initiation
-
-Once the server has sent the welcoming message and the client has
-received it, the client normally sends the EHLO command to the server,
-indicating the client's identity. In addition to opening the session,
-use of EHLO indicates that the client is able to process service
-extensions and requests that the server provide a list of the
-extensions it supports. Older SMTP systems which are unable to support
-service extensions and contemporary clients which do not require
-service extensions in the mail session being initiated, MAY use HELO
-instead of EHLO. Servers MUST NOT return the extended EHLO-style
-response to a HELO command. For a particular connection attempt, if
-the server returns a "command not recognized" response to EHLO, the
-client SHOULD be able to fall back and send HELO.
-
-In the EHLO command the host sending the command identifies itself; the
-command may be interpreted as saying "Hello, I am <domain>" (and, in
-the case of EHLO, "and I support service extension requests").
-
-3.3 Mail Transactions
-
-There are three steps to SMTP mail transactions. The transaction
-starts with a MAIL command which gives the sender identification. A
-series of one or more RCPT commands follows giving the receiver
-information. Then a DATA command initiates transfer of the mail data
-and is terminated by the "end of mail" data indicator, which also
-confirms the transaction.
-
-The first step in the procedure is the MAIL command.
-
- MAIL FROM:<reverse-path> [SP <mail-parameters> ] <CRLF>
-
-This command tells the SMTP-receiver that a new mail transaction is
-starting and to reset all its state tables and buffers, including any
-recipients or mail data. The <reverse-path> portion of the first or
-only argument contains the source mailbox (between "<" and ">"
-brackets), which can be used to report errors (see section 4.2 for a
-discussion of error reporting). If accepted, the SMTP server returns a
-250 OK reply. If the mailbox specification is not acceptable for some
-reason, the server MUST return a reply indicating whether the failure
-is permanent (i.e., will occur again if the client tries to send the
-same address again) or temporary (i.e., the address might be accepted
-if the client tries again later). Despite the apparent scope of this
-requirement, there are circumstances in which the acceptability of the
-reverse-path may not be determined until one or more forward-paths (in
-RCPT commands) can be examined. In those cases, the server MAY
-reasonably accept the reverse-path (with a 250 reply) and then report
-problems after the forward-paths are received and examined. Normally,
-failures produce 550 or 553 replies.
-
-Historically, the <reverse-path> can contain more than just a mailbox,
-however, contemporary systems SHOULD NOT use source routing (see
-appendix C).
-
-The optional <mail-parameters> are associated with negotiated SMTP
-service extensions (see section 2.2).
-
-The second step in the procedure is the RCPT command.
-
- RCPT TO:<forward-path> [ SP <rcpt-parameters> ] <CRLF>
-
-The first or only argument to this command includes a forward-path
-(normally a mailbox and domain, always surrounded by "<" and ">"
-brackets) identifying one recipient. If accepted, the SMTP server
-returns a 250 OK reply and stores the forward-path. If the recipient
-is known not to be a deliverable address, the SMTP server returns a 550
-reply, typically with a string such as "no such user - " and the
-mailbox name (other circumstances and reply codes are possible). This
-step of the procedure can be repeated any number of times.
-
-The <forward-path> can contain more than just a mailbox. Historically,
-the <forward-path> can be a source routing list of hosts and the
-destination mailbox, however, contemporary SMTP clients SHOULD NOT
-utilize source routes (see appendix C). Servers MUST be prepared to
-encounter a list of source routes in the forward path, but SHOULD
-ignore the routes or MAY decline to support the relaying they imply.
-Similarly, servers MAY decline to accept mail that is destined for
-other hosts or systems. These restrictions make a server useless as a
-relay for clients that do not support full SMTP functionality.
-Consequently, restricted-capability clients MUST NOT assume that any
-SMTP server on the Internet can be used as their mail processing
-(relaying) site. If a RCPT command appears without a previous MAIL
-command, the server MUST return a 503 "Bad sequence of commands"
-response. The optional <rcpt-parameters> are associated with negotiated
-SMTP service extensions (see section 2.2).
-
-The third step in the procedure is the DATA command (or some
-alternative specified in a service extension).
-
- DATA <CRLF>
-
-If accepted, the SMTP server returns a 354 Intermediate reply and
-considers all succeeding lines up to but not including the end of mail
-data indicator to be the message text. When the end of text is
-successfully received and stored the SMTP-receiver sends a 250 OK reply.
-
-Since the mail data is sent on the transmission channel, the end of
-mail data must be indicated so that the command and reply dialog can be
-resumed. SMTP indicates the end of the mail data by sending a line
-containing only a "." (period or full stop). A transparency procedure
-is used to prevent this from interfering with the user's text (see
-section 4.5.2).
-
-The end of mail data indicator also confirms the mail transaction and
-tells the SMTP server to now process the stored recipients and mail
-data. If accepted, the SMTP server returns a 250 OK reply. The DATA
-command can fail at only two points in the protocol exchange:
-
- - If there was no MAIL, or no RCPT, command, or all such commands
- were rejected, the server MAY return a "command out of sequence"
- (503) or "no valid recipients" (554) reply in response to the DATA
- command. If one of those replies (or any other 5yz reply) is
- received, the client MUST NOT send the message data; more generally,
- message data MUST NOT be sent unless a 354 reply is received.
-
- - If the verb is initially accepted and the 354 reply issued, the DATA
- command should fail only if the mail transaction was incomplete (for
- example, no recipients), or if resources were unavailable
- (including, of course, the server unexpectedly becoming
- unavailable), or if the server determines that the message should be
- rejected for policy or other reasons.
-
-However, in practice, some servers do not perform recipient
-verification until after the message text is received. These servers
-SHOULD treat a failure for one or more recipients as a "subsequent
-failure" and return a mail message as discussed in section 6. Using a
-"550 mailbox not found" (or equivalent) reply code after the data are
-accepted makes it difficult or impossible for the client to determine
-which recipients failed.
-
-When RFC 822 format is being used, the mail data include the memo
-header items such as Date, Subject, To, Cc, From [MSGFMT]. Server SMTP
-systems SHOULD NOT reject messages based on perceived defects in the
-RFC 822 or MIME [RFC-MIME] message header or message body. In
-particular, they MUST NOT reject messages in which the numbers of
-Resent- fields do not match or Resent-to appears without Resent-from
-and/or Resent-date.
-
-Mail transaction commands MUST be used in the order discussed above.
-
-
-3.4 Forwarding for Address Correction or Updating
-
-Forwarding support is most often required to consolidate and simplify
-addresses within, or relative to, some enterprise and less frequently to
-establish addresses to link a person's prior address with current one.
-Silent forwarding of messages (without server notification to the sender),
-for security or non-disclosure purposes, is common in the contemporary
-Internet.
-
-In both the enterprise and the "new address" cases, information hiding (and
-sometimes security) considerations argue against exposure of the "final"
-address through the SMTP protocol as a side-effect of the forwarding
-activity. This may be especially important when the final address may not
-even be reachable by the sender. Consequently, the "forwarding" mechanisms
-described in section 3.2 of RFC 821, and especially the 251 (corrected
-destination) and 551 reply codes from RCPT must be evaluated carefully by
-implementers and, when they are available, by those configuring systems.
-
-In particular:
-
-* Servers MAY forward messages when they are aware of an address change.
- When they do so, they MAY either provide address-updating information
- with a 251 code, or may forward "silently" and return a 250 code. But,
- if a 251 code is used, they MUST NOT assume that the client will actually
- update address information or even return that information to the user.
-
-Alternately,
-
-* Servers MAY reject or bounce messages when they are not deliverable when
- addressed. When they do so, they MAY either provide address-updating
- information with a 551 code, or may reject the message as undeliverable
- with a 550 code and no address-specific information. But, if a 551 code
- is used, they MUST NOT assume that the client will actually update
- address information or even return that information to the user.
-
-SMTP server implementations that support the 251 and/or 551 reply codes are
-strongly encouraged to provide configuration mechanisms so that sites which
-conclude that they would undesirably disclose information can disable or
-restrict their use.
-
-
-3.5 Commands for Debugging Addresses
-
-3.5.1 Overview
-
-SMTP provides commands to verify a user name or obtain the content of a
-mailing list. This is done with the VRFY and EXPN commands, which have
-character string arguments. Implementations SHOULD support VRFY and
-EXPN (however, see section 3.5.2 and 7.3).
-
-For the VRFY command, the string is a user name or a user name and
-domain (see below). If a normal (i.e., 250) response is returned, the
-response MAY include the full name of the user and MUST include the
-mailbox of the user. It MUST be in either of the following forms:
-
- User Name <local-part@domain>
- local-part@domain
-
-When a name that is the argument to VRFY could identify more than one
-mailbox, the server MAY either note the ambiguity or identify the
-alternatives. In other words, any of the following are legitimate
-response to VRFY:
-
- 553 User ambiguous
-
-or
-
- 553- Ambiguous; Possibilities are
- 553-Joe Smith <jsmith@foo.com>
- 553-Harry Smith <hsmith@foo.com>
- 553 Melvin Smith <dweep@foo.com>
-
-or
-
- 553-Ambiguous; Possibilities
- 553- <jsmith@foo.com>
- 553- <hsmith@foo.com>
- 553 <dweep@foo.com>
-
-Under normal circumstances, a client receiving a 553 reply would be
-expected to expose the result to the user. Use of exactly the forms
-given, and the "user ambiguous" or "ambiguous" keywords, possibly
-supplemented by extended reply codes such as those described in
-[RFC-REPLY], will facilitate automated translation into other languages
-as needed. Of course, a client that was highly automated or that was
-operating in another language than English, might choose to try to
-translate the response, to return some other indication to the user
-than the literal text of the reply, or to take some automated action
-such as consulting a directory service for additional information
-before reporting to the user.
-
-For the EXPN command, the string identifies a mailing list, and the
-successful (i.e., 250) multiline response MAY include the full name of
-the users and MUST give the mailboxes on the mailing list.
-
-In some hosts the distinction between a mailing list and an alias for a
-single mailbox is a bit fuzzy, since a common data structure may hold
-both types of entries, and it is possible to have mailing lists of one
-mailbox. If a request is made to verify a mailing list, a positive
-response MAY be given if a message so addressed would be delivered to
-everyone on the list, otherwise an error SHOULD be reported (e.g., "550
-That is a mailing list, not a user" or "252 Unable to verify members of
-mailing list"). If a request is made to expand a user name, the server
-MAY return a positive response consisting of a list containing one
-name, or an error MAY be reported (e.g., "550 That is a user name, not
-a mailing list").
-
-In the case of a successful multiline reply (normal for EXPN) exactly
-one mailbox is to be specified on each line of the reply. The case of
-an ambiguous request is discussed above.
-
-"User name" is a fuzzy term and has been used deliberately. An
-implementation of the VRFY or EXPN commands MUST include at least
-recognition of local mailboxes as "user names". However, since current
-Internet practice often results in a single host handling mail for
-multiple domains, hosts, especially hosts that provide this
-functionality, SHOULD accept the "local-part@domain" form as a "user
-name"; hosts MAY also choose to recognize other strings as "user names".
-
-The case of expanding a mailbox list requires a multiline reply, such
-as:
-
- C: EXPN Example-People
- S: 250-Jon Postel <Postel@isi.edu>
- S: 250-Fred Fonebone <Fonebone@physics.foo-u.edu>
- S: 250 Sam Q. Smith <SQSmith@specific.generic.com>
-
-or
-
- C: EXPN Executive-Washroom-List
- S: 550 Access Denied to You.
-
-The character string arguments of the VRFY and EXPN commands cannot be
-further restricted due to the variety of implementations of the user
-name and mailbox list concepts. On some systems it may be appropriate
-for the argument of the EXPN command to be a file name for a file
-containing a mailing list, but again there are a variety of file naming
-conventions in the Internet. Similarly, historical variations in what
-is returned by these commands are such that the response SHOULD be
-interpreted very carefully, if at all, and SHOULD generally only be
-used for diagnostic purposes.
-
-3.5.2 VRFY Normal Response
-
-When normal (2yz or 551) responses are returned from a VRFY or EXPN
-request, the reply normally includes the mailbox name, i.e.,
-"<local-part@domain>", where "domain" is a fully qualified domain name,
-MUST appear in the syntax. In circumstances exceptional enough to justify
-violating the intent of this specification, free-form text MAY be returned.
-In order to facilitate parsing by both computers and people, addresses
-SHOULD appear in pointed brackets. When addresses, rather than free-form
-debugging information, are returned, EXPN and VRFY MUST return only valid
-domain addresses that are usable in SMTP RCPT commands. Consequently, if
-an address implies delivery to a program or other system, the mailbox name
-used to reach that target MUST be given. Paths (explicit source routes)
-MUST NOT be returned by VRFY or EXPN.
-
-Server implementations SHOULD support both VRFY and EXPN. For security
-reasons, implementations MAY provide local installations a way to
-disable either or both of these commands through configuration options
-or the equivalent. When these commands are supported, they are not
-required to work across relays when relaying is supported. Since they
-were both optional in RFC 821, they MUST be listed as service
-extensions in an EHLO response, if they are supported.
-
-3.5.3 Meaning of VRFY or EXPN Success Response
-
-A server MUST NOT return a 220 code in response to a VRFY or EXPN
-command unless it has actually verified the address. In particular, a
-server MUST NOT return 220 if all it has done is to verify that the
-syntax given is valid. In that case, 502 (Command not implemented) or
-500 (Syntax error, command unrecognized) SHOULD be returned. As stated
-elsewhere, implementation (in the sense of actually validating
-addresses and returning information) of VRFY and EXPN are strongly
-recommended. Hence, implementations that return 500 or 502 for VRFY
-are not in full compliance with this specification.
-
-There may be circumstances where an address appears to be valid but cannot
-reasonably be verified in real time, particularly when a server is acting
-as a mail exchanger for another server or domain. "Apparent validity" in
-this case would normally involve at least syntax checking and might involve
-verification that any domains specified were ones to which the host
-expected to be able to relay mail. In these situations, reply code 252
-SHOULD be returned. These cases parallel the discussion of RCPT
-verification discussed in section 2.1. Similarly, the discussion in
-section 3.4 applies to the use of reply codes 251 and 551 with VRFY (and
-EXPN) to indicate addresses that are recognized but that would be forwarded
-or bounced were mail received for them. Implementations generally SHOULD
-be more aggressive about address verification in the case of VRFY than in
-the case of RCPT, even if it takes a little longer to do so.
-
-3.5.4 Semantics and Applications of EXPN
-
-EXPN is often very useful in debugging and understanding problems with
-mailing lists and multiple-target-address aliases. Some systems have
-attempted to use source expansion of mailing lists as a means of
-eliminating duplicates. The propagation of aliasing systems with mail
-on the Internet, for hosts (typically with MX and CNAME DNS records),
-for mailboxes (various types of local host aliases), and in various
-proxying arrangements, has made it nearly impossible for these
-strategies to work, and mail systems SHOULD NOT attempt them.
-
-3.6 Domains
-
-Only resolvable, fully-qualified, domain names (FQDNs) are permitted
-when domain names are used in SMTP. In other words, names that can be
-resolved to MX RRs or A RRs (as discussed in section 5) are permitted,
-as are CNAME RRs whose targets can be resolved, in turn, to MX or A
-RRs. Local nicknames or unqualified names MUST NOT be used. There are
-two exceptions to the rule requiring FQDNs:
-
- - The domain name given in the EHLO command MUST BE either a primary
- host name (a domain name that resolves to an A RR) or, if the host
- has no name, an address literal as described in section 4.1.1.1.
-
- - The reserved mailbox name "postmaster" may be used in a RCPT command
- without domain qualification (see section 4.1.1.3) and MUST be
- accepted if so used.
-
-3.7 Relaying
-
-In general, the availability of Mail eXchanger records in the domain
-name system [RFC-DNS, RFC-974] makes the use of explicit source routes
-in the Internet mail system unnecessary. Many historical problems with
-their interpretation have made their use undesirable. SMTP clients
-SHOULD NOT generate explicit source routes except under unusual
-circumstances. SMTP servers MAY decline to act as mail relays or to
-accept addresses that specify source routes. When route information is
-encountered, SMTP servers are also permitted to ignore the route
-information and simply send to the final destination specified as the
-last element in the route and SHOULD do so. There has been an invalid
-practice of using names that do not appear in the DNS as destination
-names, with the senders counting on the intermediate hosts specified in
-source routing to resolve any problems. If source routes are stripped,
-this practice will cause failures. This is one of several reasons why
-SMTP clients MUST NOT generate invalid source routes or depend on
-serial resolution of names.
-
-When source routes are not used, the process described in RFC 821 for
-constructing a reverse-path from the forward-path is not applicable and
-the reverse-path at the time of delivery will simply be the address
-that appeared in the MAIL command.
-
-A relay SMTP server is usually the target of a DNS MX record that
-designates it, rather than the final delivery system. The relay server
-may accept or reject the task of relaying the mail in the same way it
-accepts or rejects mail for a local user. If it accepts the task, it
-then becomes an SMTP client, establishes a transmission channel to the
-next SMTP server specified in the DNS (according to the rules in
-section 5), and sends it the mail. If it declines to relay mail to a
-particular address for policy reasons, a 550 response SHOULD be
-returned.
-
-Many mail-sending clients exist, especially in conjunction with
-facilities that receive mail via POP3 or IMAP, that have limited
-capability to support some of the requirements of this specification,
-such as the ability to queue messages for subsequent delivery attempts.
-For these clients, it is common practice to make private arrangements
-to send all messages to a single server for processing and subsequent
-distribution. SMTP, as specified here, is not ideally suited for this
-role, and work is underway on standardized mail submission protocols
-that might eventually supercede the current practices. In any event,
-because these arrangements are private and fall outside the scope of
-this specification, they are not described here.
-
-It is important to note that MX records can point to SMTP servers which
-act as gateways into other environments, not just SMTP relays and final
-delivery systems; see sections 3.8 and 5.
-
-If an SMTP server has accepted the task of relaying the mail and later
-finds that the destination is incorrect or that the mail cannot be
-delivered for some other reason, then it MUST construct an
-"undeliverable mail" notification message and send it to the originator
-of the undeliverable mail (as indicated by the reverse-path). Formats
-specified for non-delivery reports by other standards (see, for
-example, [RFC-NOTARY1]) SHOULD be used if possible.
-
-This notification message must be from the SMTP server at the relay
-host or the host that first determines that delivery cannot be
-accomplished. Of course, SMTP servers MUST NOT send notification
-messages about problems transporting notification messages. One way to
-prevent loops in error reporting is to specify a null reverse-path in
-the MAIL command of a notification message. When such a message is
-transmitted the reverse-path MUST be set to null (see section 4.5.5 for
-additional discussion). A MAIL command with a null reverse-path
-appears as follows:
-
- MAIL FROM:<>
-
-As discussed in section 2.4.1, a relay SMTP has no need to inspect or
-act upon the headers or body of the message data and MUST NOT do so
-except to add its own "Received:" header (section 4.4) and, optionally,
-to attempt to detect looping in the mail system (see section 6.2).
-
-3.8 Mail Gatewaying
-
-While the relay function discussed above operates within the Internet
-SMTP transport service environment, MX records or various forms of
-explicit routing may require that an intermediate SMTP server perform a
-translation function between one transport service and another. As
-discussed in section 2.3.8, when such a system is at the boundary
-between two transport service environments, we refer to it as a
-"gateway" or "gateway SMTP".
-
-Gatewaying mail between different mail environments, such as different
-mail formats and protocols, is complex and does not easily yield to
-standardization. However, some general requirements may be given for a
-gateway between the Internet and another mail environment.
-
-3.8.1 Header Fields in Gatewaying
-
-Header fields MAY be rewritten when necessary as messages are gatewayed
-across mail environment boundaries. This may involve inspecting the
-message body or interpreting the local-part of the destination address
-in spite of the prohibitions in section 2.4.1
-
-Other mail systems gatewayed to the Internet often use a subset of
-RFC-822 headers or provide similar functionality with a different
-syntax, but some of these mail systems do not have an equivalent to the
-SMTP envelope. Therefore, when a message leaves the Internet
-environment, it may be necessary to fold the SMTP envelope information
-into the message header. A possible solution would be to create new
-header fields to carry the envelope information (e.g., "X-SMTP-MAIL:"
-and "X-SMTP-RCPT:"); however, this would require changes in mail
-programs in foreign environments and might risk disclosure of private
-information (see section 7.2).
-
-3.8.2 Received Lines in Gatewaying
-
-When forwarding a message into or out of the Internet environment, a
-gateway MUST prepend a Received: line, but it MUST NOT alter in any way
-a Received: line that is already in the header.
-
-"Received:" fields of messages originating from other environments may
-not conform exactly to this specification. However, the most important
-use of Received: lines is for debugging mail faults, and this debugging
-can be severely hampered by well-meaning gateways that try to "fix" a
-Received: line. As another consequence of trace fields arising in
-non-SMTP environments, receiving systems MUST NOT reject mail based on
-the format of a trace field and SHOULD be extremely robust in the light
-of unexpected information or formats in those fields.
-
-The gateway SHOULD indicate the environment and protocol in the "via"
-clauses of Received field(s) that it supplies.
-
-3.8.3 Addresses in Gatewaying
-
->From the Internet side, the gateway SHOULD accept all valid address
-formats in SMTP commands and in RFC-822 headers, and all valid RFC-822
-messages. Addresses and headers generated by gateways MUST conform to
-applicable Internet standards (including this one and RFC-822).
-Gateways are, of course, subject to the same rules for handling source
-routes as those described for other SMTP systems in section 3.3.
-
-3.8.4 Other Header Fields in Gatewaying
-
-The gateway MUST ensure that all header fields of a message that it
-forwards into the Internet mail environment meet the requirements for
-Internet mail. In particular, all addresses in "From:", "To:",
-"Cc:", etc., fields MUST be transformed (if necessary) to satisfy
-RFC-822 syntax, MUST reference only fully-qualified domain names, and
-MUST be effective and useful for sending replies. The translation
-algorithm used to convert mail from the Internet protocols to another
-environment's protocol SHOULD ensure that error messages from the
-foreign mail environment are delivered to the return path from the
-SMTP envelope, not to the sender listed in the "From:" field (or
-other fields) of the RFC-822 message.
-
-3.8.5 Envelopes in Gatewaying
-
-Similarly, when forwarding a message from another environment into the
-Internet, the gateway SHOULD set the envelope return path in accordance
-with an error message return address, if supplied by the foreign
-environment. If the foreign environment has no equivalent concept, the
-gateway must select and use a best approximation, with the message
-originator's address as the default of last resort.
-
-3.9 Terminating Sessions and Connections
-
-An SMTP connection is terminated when the client sends a QUIT command.
-The server responds with a positive reply code, after which it closes
-the connection.
-
-An SMTP server MUST NOT intentionally close the connection except:
-
- - After receiving a QUIT command and responding with a 221 reply.
-
- - After detecting the need to shutdown the SMTP service and returning
- a 421 response code. This response code can be issued after the
- server receives any command or, if necessary, asynchronously from
- command receipt (on the assumption that the client will receive it
- after the next command is issued).
-
-In particular, a server that closes connections in response to commands
-that are not understood is in violation of this specification. Servers
-are expected to be tolerant of unknown commands, issuing a 500 reply
-and awaiting further instructions from the client.
-
-An SMTP server which is forcibly shut down via external means SHOULD
-attempt to send a line containing a 421 response code to the SMTP
-client before exiting. The SMTP client will normally read the 421
-response code after sending its next command.
-
-SMTP clients that experience a connection close, reset, or other
-communications failure due to circumstances not under their control (in
-violation of the intent of this specification but sometimes
-unavoidable) SHOULD, to maintain the robustness of the mail system,
-treat the mail transaction as if a 451 response had been received and
-act accordingly.
-
-3.10 Mailing Lists and Aliases
-
-An SMTP-capable host SHOULD support both the alias and the list models
-of address expansion for multiple delivery. When a message is
-delivered or forwarded to each address of an expanded list form, the
-return address in the envelope ("MAIL FROM:") MUST be changed to be the
-address of a person or other entity who administers the list. However,
-in this case, the message header (see [MSGFMT]) MUST be left unchanged;
-in particular, the "From" field of the message header is unaffected.
-
-An important mail facility is a mechanism for multi-destination
-delivery of a single message, by transforming (or "expanding" or
-"exploding") a pseudo-mailbox address into a list of destination
-mailbox addresses. When a message is sent to such a pseudo-mailbox
-(sometimes called an "exploder"), copies are forwarded or redistributed
-to each mailbox in the expanded list. Servers SHOULD simply utilize
-the addresses on the list; application of heuristics or other matching
-rules to eliminate some addresses, such as that of the originator, is
-strongly discouraged. We classify such a pseudo-mailbox as an "alias"
-or a "list", depending upon the expansion rules.
-
-3.10.1 Alias
-
-To expand an alias, the recipient mailer simply replaces the
-pseudo-mailbox address in the envelope with each of the expanded
-addresses in turn; the rest of the envelope and the message body are
-left unchanged. The message is then delivered or forwarded to each
-expanded address.
-
-3.10.2 List
-
-A mailing list may be said to operate by "redistribution" rather than
-by "forwarding". To expand a list, the recipient mailer replaces the
-pseudo-mailbox address in the envelope with all of the expanded
-addresses. The return address in the envelope is changed so that all
-error messages generated by the final deliveries will be returned to a
-list administrator, not to the message originator, who generally has no
-control over the contents of the list and will typically find error
-messages annoying.
-
-
-4. The SMTP Specifications
-
-4.1 SMTP Commands
-
-4.1.1 Command Semantics and Syntax
-
-The SMTP commands define the mail transfer or the mail system function
-requested by the user. SMTP commands are character strings terminated
-by <CRLF>. The commands themselves are alphabetic characters
-terminated by <SP> if parameters follow and <CRLF> otherwise. (In the
-interest of improved interoperability, SMTP receivers are encouraged to
-tolerate trailing white space before the terminating <CRLF>.) The
-syntax of the local part of a mailbox must conform to receiver site
-conventions and the syntax specified in section 4.1.2. The SMTP
-commands are discussed below. The SMTP replies are discussed in
-section 4.2.
-
-A mail transaction involves several data objects which are communicated
-as arguments to different commands. The reverse-path is the argument
-of the MAIL command, the forward-path is the argument of the RCPT
-command, and the mail data is the argument of the DATA command. These
-arguments or data objects must be transmitted and held pending the
-confirmation communicated by the end of mail data indication which
-finalizes the transaction. The model for this is that distinct buffers
-are provided to hold the types of data objects, that is, there is a
-reverse-path buffer, a forward-path buffer, and a mail data buffer.
-Specific commands cause information to be appended to a specific
-buffer, or cause one or more buffers to be cleared.
-
-Several commands (RSET, DATA, QUIT) are specified as not permitting
-parameters. In the absence of specific extensions offered by the
-server and accepted by the client, clients MUST NOT send such
-parameters and servers SHOULD reject commands containing them as having
-invalid syntax.
-
-4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)
-
-These commands are used to identify the SMTP client to the SMTP server.
-The argument field contains the fully-qualified domain name of the SMTP
-client if one is available. In situations in which the SMTP client
-system does not have a meaningful domain name (e.g., when its address
-is dynamically allocated and no reverse mapping record is available),
-the client SHOULD send an address literal (see section 4.1.3),
-optionally followed by information that will help to identify the
-client system.
-
-The SMTP server identifies itself to the SMTP client in the connection
-greeting reply and in the response to this command.
-
-A client SMTP SHOULD start an SMTP session by issuing the EHLO command.
-If the SMTP server supports the SMTP service extensions it will give a
-successful response, a failure response, or an error response. If the
-SMTP server, in violation of this specification, does not support any
-SMTP service extensions it will generate an error response. Older
-client SMTP systems MAY, as discussed above, use HELO (as specified in
-RFC 821) instead of EHLO, and servers MUST support the HELO command and
-reply properly to it. In any event, a client MUST issue HELO or EHLO
-before starting a mail transaction.
-
-These commands, and a "250 OK" reply to one of them, confirm that both
-the SMTP client and the SMTP server are in the initial state, that is,
-there is no transaction in progress and all state tables and buffers
-are cleared.
-
-Syntax:
- ehlo = "EHLO" SP Domain CRLF
- helo = "HELO" SP Domain CRLF
-
-Normally, the response to EHLO will be a multiline reply. Each line
-of the response contains a keyword and, optionally, one or more
-parameters. Following the normal syntax for multiline replies, these
-keyworks follow the code (250) and a hyphen for all but the last
-line, and the code and a space for the last line. The syntax for a
-positive response, using the ABNF notation and terminal symbols of
-[ABNF], is:
-
- ehlo-ok-rsp = ( "250" domain [ SP ehlo-greet ] CRLF )
- / ( "250-" domain [ SP ehlo-greet ] CRLF
- *( "250-" ehlo-line CRLF )
- "250" SP ehlo-line CRLF )
-
- ehlo-greet = 1*(%d0-9 / %d11-12 / %d14-127)
- ; string of any characters other than CR or LF
-
- ehlo-line = ehlo-keyword *( SP ehlo-param )
-
- ehlo-keyword = (ALPHA / DIGIT) *(ALPHA / DIGIT / "-")
- ; additional syntax of ehlo-params depends on
- ; ehlo-keyword
-
- ehlo-param = 1*(%d33-127)
- ; any CHAR excluding <SP> and all
- ; control characters (US-ASCII 0-31 inclusive)
-
-Although EHLO keywords may be specified in upper, lower, or mixed case,
-they MUST always be recognized and processed in a case-insensitive
-manner. This is simply an extension of practices specified in RFC 821
-and section 2.4.1.
-
-4.1.1.2 MAIL (MAIL)
-
-This command is used to initiate a mail transaction in which the mail
-data is delivered to an SMTP server which may, in turn, deliver it to
-one or more mailboxes or pass it on to another system (possibly using
-SMTP). The argument field contains a reverse-path and may contain
-optional parameters. In general, the MAIL command may be sent only
-when no mail transaction is in progress, see section 4.1.4.
-
-The reverse-path consists of the sender mailbox. Historically, that
-mailbox might optionally have been preceeded by a list of hosts, but that
-behavior is now deprecated (see appendix C). In some types of reporting
-messages for which a reply is likely to cause a mail loop (for example,
-mail delivery and nondelivery notifications), the reverse-path may be null
-(see section 3.7).
-
-This command clears the reverse-path buffer, the forward-path buffer,
-and the mail data buffer; and inserts the reverse-path information from
-this command into the reverse-path buffer.
-
-If service extensions were negotiated, the MAIL command may also carry
-parameters associated with a particular service extension.
-
-Syntax:
-
- "MAIL FROM:" ("<>" / Reverse-Path)
- [SP Mail-parameters] CRLF
-
-4.1.1.3 RECIPIENT (RCPT)
-
-This command is used to identify an individual recipient of the mail
-data; multiple recipients are specified by multiple use of this
-command. The argument field contains a forward-path and may contain
-optional parameters.
-
-The forward-path normally consists of the required destination mailbox.
-Sending systems SHOULD not generate the optional list of hosts known as
-a source route. Receiving systems MUST recognize source route syntax
-but SHOULD strip off the source route specification and utilize the
-domain name associated with the mailbox as if the source route had not
-been provided.
-
-Similarly, relay hosts SHOULD strip or ignore source routes, and names
-MUST NOT be copied into the reverse-path. When mail reaches its
-ultimate destination (the forward-path contains only a destination
-mailbox), the SMTP server inserts it into the destination mailbox in
-accordance with its host mail conventions.
-
-For example, mail received at relay host xyz.com with envelope commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<@hosta.int,@jkl.org:userc@d.bar.org>
-
-will normally be sent directly on to host d.bar.org with envelope
-commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<userc@d.bar.org>
-
-As provided in appendix C, xyz.com MAY also choose to relay the message
-to hosta.int, using the envelope commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<@hosta.int,@jkl.org:userc@d.bar.org>
-
-or to jkl.org, using the envelope commands
-
- MAIL FROM:<userx@y.foo.org>
- RCPT TO:<@jkl.org:userc@d.bar.org>
-
-Of course, since hosts are not required to relay mail at all, xyz.com
-may also reject the message entirely when the RCPT command is received,
-using a 550 code (since this is a "policy reason").
-
-If service extensions were negotiated, the RCPT command may also carry
-parameters associated with a particular service extension offered by
-the server. The client MUST NOT transmit parameters other than those
-associated with a service extension offered by the server in its EHLO
-response.
-
-Syntax:
- "RCPT TO:" ("<Postmaster@" domain ">" / "<Postmaster>" / Forward-Path)
- [SP Rcpt-parameters] CRLF
-
-4.1.1.4 DATA (DATA)
-
-The receiver normally sends a 354 response to DATA, and then treats the
-lines (strings ending in <CRLF> sequences, as described in section 2.3.7)
-following the command as mail data from the sender. This command causes the
-mail data to be appended to the mail data buffer. The mail data may
-contain any of the 128 ASCII character codes, although experience has
-indicated that use of control characters other than SP, HT, CR, and LF may
-cause problems and SHOULD be avoided when possible.
-
-The mail data is terminated by a line containing only a period, that
-is, the character sequence "<CRLF>.<CRLF>" (see section 4.5.2). This
-is the end of mail data indication. Note that the first <CRLF> of this
-terminating sequence is also the <CRLF> that ends the final line of the
-data (message text) or, if there was no data, ends the DATA command
-itself. An extra <CRLF> MUST NOT be added, as that would cause an
-empty line to be added to the message. The only exception to this rule
-would arise if the message body were passed to the originating
-SMTP-sender with a final "line" that did not end in <CRLF>; in that
-case, the originating SMTP system MUST either reject the message as
-invalid or add <CRLF> in order to have the receiving SMTP server
-recognize the "end of data" condition.
-
-The custom of accepting lines ending only in <LF>, as a concession to
-non-conforming behavior on the part of some UNIX systems, has proven to
-cause more interoperability problems than it solves, and SMTP server
-systems MUST NOT do this, even in the name of improved robustness. In
-particular, the sequence "<LF>.<LF>" (bare line feeds, without carriage
-returns) MUST NOT be treated as equivalent to <CRLF>.<CRLF> as the end
-of mail data indication.
-
-Receipt of the end of mail data indication requires the server to process
-the stored mail transaction information. This processing consumes the
-information in the reverse-path buffer, the forward-path buffer, and the
-mail data buffer, and on the completion of this command these buffers are
-cleared. If the processing is successful, the receiver MUST send an OK
-reply. If the processing fails the receiver MUST send a failure reply. The
-SMTP model does not allow for partial failures at this point: either the
-message is accepted by the server for delivery and a positive response is
-returned or it is not accepted and a failure reply is returned. In sending
-a positive completion reply to the end of data indication, the receiver
-takes full responsibility for the message (see section 6.1). Errors that
-are diagnosed subsequently MUST be reported in a mail message, as discussed
-in section 4.4.
-
-When the SMTP server accepts a message either for relaying or for final
-delivery, it inserts a trace record (also referred to interchangeably
-as a "time stamp line" or "Received" line) at the top of the mail data.
-This trace record indicates the identity of the host that sent the
-message, the identity of the host that received the message (and is
-inserting this time stamp), and the date and time the message was
-received. Relayed messages will have multiple time stamp lines.
-Details for formation of these lines, including their syntax, is
-specified in section 4.4.
-
-Additional discussion about the operation of the DATA command appears
-in section 3.3.
-
-Syntax:
- "DATA" CRLF
-
-
-4.1.1.5 RESET (RSET)
-
-This command specifies that the current mail transaction will be aborted.
-Any stored sender, recipients, and mail data MUST be discarded, and all
-buffers and state tables cleared. The receiver MUST send a "250 OK" reply
-to a RSET command with no arguments. A reset command may be issued by the
-client at any time. It is effectively equivalent to a NOOP (i.e., if has
-no effect) if issued immediately after EHLO, before EHLO is issued in the
-session, after an end-of-data indicator has been sent and acknowledged, or
-immediately before a QUIT. In other situations, it restores the state to
-that immediately after the most recent EHLO. An SMTP server MUST NOT close
-the connection as the result of receiving a RSET; that action is reserved
-for QUIT (see section 4.1.1.10).
-
-Since EHLO implies some additional processing and response by the
-server, RSET will normally be more efficient than reissuing that
-command, even though the formal semantics are the same.
-
-There are circumstances, contrary to the intent of this specification,
-in which an SMTP server may receive an indication that the underlying
-TCP connection has been closed or reset. To preserve the robustness of
-the mail system, SMTP servers SHOULD be prepared for this condition and
-SHOULD treat it as if a QUIT had been received before the connection
-disappeared.
-
-Syntax:
- "RSET" CRLF
-
-
-4.1.1.6 VERIFY (VRFY)
-
-This command asks the receiver to confirm that the argument identifies
-a user or mailbox. If it is a user name, information is returned as
-specified in section 3.5.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer.
-
-Syntax:
- "VRFY" SP String CRLF
-
-4.1.1.7 EXPAND (EXPN)
-
-This command asks the receiver to confirm that the argument identifies
-a mailing list, and if so, to return the membership of that list. If
-the command is successful, a reply is returned containing information
-as described in section 3.5. This reply will have multiple lines
-except in the trivial case of a one-member list.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer and may be issued at any time.
-
-Syntax:
- "EXPN" SP String CRLF
-
-4.1.1.8 HELP (HELP)
-
-This command causes the server to send helpful information to the
-client. The command MAY take an argument (e.g., any command name) and
-return more specific information as a response.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer and may be issued at any time.
-
-SMTP servers SHOULD support HELP without arguments and MAY support it
-with arguments.
-
-Syntax:
- "HELP" [ SP String ] CRLF
-
-4.1.1.9 NOOP (NOOP)
-
-This command does not affect any parameters or previously entered
-commands. It specifies no action other than that the receiver send an
-OK reply.
-
-This command has no effect on the reverse-path buffer, the forward-path
-buffer, or the mail data buffer and may be issued at any time. If a
-parameter string is specified, servers SHOULD ignore it.
-
-Syntax:
- "NOOP" [ SP String ] CRLF
-
-
-4.1.1.10 QUIT (QUIT)
-
-This command specifies that the receiver MUST send an OK reply, and
-then close the transmission channel.
-
-The receiver MUST NOT intentionally close the transmission channel
-until it receives and replies to a QUIT command (even if there was an
-error). The sender MUST NOT intentionally close the transmission
-channel until it sends a QUIT command and SHOULD wait until it receives
-the reply (even if there was an error response to a previous command).
-If the connection is closed prematurely due to violations of the above
-or system or network failure, the server MUST cancel any pending
-transaction, but not undo any previously completed transaction, and
-generally MUST act as if the command or transaction in progress had
-received a temporary error (i.e., a 4yz response).
-
-The QUIT command may be issued at any time.
-
-Syntax:
- "QUIT" CRLF
-
-
-4.1.2 Command Argument Syntax
-
-The syntax of the argument fields of the above commands (using the
-syntax specified in [ABNF] where applicable) is given below. Some of
-the productions given below are used only in conjunction with source
-routes as described in appendix C. Terminals not defined in this
-document, such as ALPHA, DIGIT, SP, CR, LF, CRLF, are as defined in the
-"core" syntax (section 6) of [ABNF] or in the syntax of [MSGFMT].
-
- Reverse-path = Path
- Forward-path = Path
- Path = "<" [ A-d-l ":" ] Mailbox ">"
- A-d-l = At-domain *( "," A-d-l )
- ; Note that this form, the so-called "source route",
- ; MUST BE accepted, SHOULD NOT be generated, and SHOULD be
- ; ignored.
- At-domain = "@" domain
- Mail-parameters = esmtp-param *(SP esmtp-param)
- Rcpt-parameters = esmtp-param *(SP esmtp-param)
- esmtp-param = esmtp-keyword ["=" esmtp-value]
- esmtp-keyword = (ALPHA / DIGIT) *(ALPHA / DIGIT / "-")
- esmtp-value = 1*(%d33-60 / %d62-127)
- ; any CHAR excluding "=", SP, and control
- ; characters
- Keyword = Ldh-str
- Argument = Atom
- Domain = (sub-domain 1*("." sub-domain)) / address-literal
- sub-domain = Let-dig [Ldh-str]
-
- address-literal = "[" IPv4-address-literal /
- IPv6-address-literal /
- General-address-literal "]"
- ; See section 4.1.3
-
- Mailbox = Local-part "@" Domain
-
- Local-part = Dot-string / Quoted-string
- ; MAY be case-sensitive
-
- Dot-string = Atom *("." Atom)
-
- Atom = 1*atext
-
- Quoted-string = DQUOTE *qcontent DQUOTE
-
- String = Atom / Quoted-string
-
-
-While the above definition for Local-part is relatively permissive, for
-maximum interoperability, a host that expects to receive mail SHOULD
-avoid defining mailboxes where the Local-part requires (or uses) the
-Quoted-string form or where the Local-part is case-sensitive. For any
-purposes that require generating or comparing Local-parts (e.g., to
-specific mailbox names), all quoted forms MUST be treated as equivalent
-and the sending system SHOULD transmit the form that uses the minimum
-quoting possible.
-
-Systems MUST NOT define mailboxes in such a way as to require the use
-in SMTP of non-ASCII characters (octets with the high order bit set to
-one) or ASCII "control characters" (decimal value 0-31 and 127). These
-characters MUST NOT be used in MAIL or RCPT commands or other commands
-that require mailbox names.
-
-Note that the backslash, "\", is a quote character, which is used to
-indicate that the next character is to be used literally (instead of
-its normal interpretation). For example, "Joe\,Smith" indicates a
-single nine character user field with the comma being the fourth
-character of the field.
-
-To promote interoperability and consistent with long-standing guidance
-about conservative use of the DNS in naming and applications (e.g., see
-section 2.3.1 of the base DNS document [RFC-1015]), characters outside
-the set of alphas, digits, and hyphen MUST NOT appear in domain name
-labels for SMTP clients or servers. In particular, the underscore
-character is not permitted. SMTP servers that receive a command in
-which invalid character codes have been employed, and for which there
-are no other reasons for rejection, MUST reject that command with a 501
-response.
-
-4.1.3 Address Literals
-
-Sometimes a host is not known to the domain name system and
-communication (and, in particular, communication to report and repair
-the error) is blocked. To bypass this barrier a special literal form
-of the address is allowed as an alternative to a domain name. For IPv4
-addresses, this form uses four small decimal integers separated by dots
-and enclosed by brackets such as [123.255.37.2], which indicates an
-(IPv4) Internet Address in sequence-of-octets form. For IPv6 and other
-forms of addressing that might eventually be standardized, the form
-consists of a standardized "tag" that identifies the address syntax, a
-space, and the address itself, in a format specified as part of the
-IPv6 standards [IPv6AddrSpec].
-
-Specifically:
-
- IPv4-address-literal = Snum 3("." Snum)
- IPv6-address-literal = "IPv6:" IPv6-addr
- General-address-literal = Standardized-tag ":" 1*dcontent
- Standardized-tag = Ldh-str
- ; MUST be specified in a standards-track RFC
- ; and registered with IANA
-
- Snum = 1*3DIGIT ; representing a decimal integer
- ; value in the range 0 through 255
- Let-dig = ALPHA / DIGIT
- Ldh-str = *( ALPHA / DIGIT / "-" ) Let-dig
-
- IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp
- IPv6-hex = 1*4HEXDIG
- IPv6-full = IPv6-hex 7(":" IPv6-hex)
- IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":"
- IPv6-hex)]
- ; The "::" represents at least 2 16-bit groups of zeros
- ; No more than 6 groups in addition to the "::" may be
- ; present
- IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal
- IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::"
- [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal
- ; The "::" represents at least 2 16-bit groups of zeros
- ; No more than 4 groups in addition to the "::" and
- ; IPv4-address-literal may be present
-
-
-4.1.4 Order of Commands
-
-There are restrictions on the order in which these commands may be used.
-
-A session that will contain mail transactions MUST first be initialized
-by the use of the EHLO command. An SMTP server SHOULD accept commands
-for non-mail transactions (e.g., VRFY or EXPN) without this
-initialization.
-
-An EHLO command MAY be issued by a client later in the session. If it
-is issued after the session begins, the SMTP server MUST clear all
-buffers and reset the state exactly as if a RSET command had been
-issued. In other words, the sequence of RSET followed immediately by
-EHLO is redundant, but not harmful other than in the performance cost
-of executing unnecessary commands.
-
-If the EHLO command is not acceptable to the SMTP server, 501, 500, or
-502 failure replies MUST be returned as appropriate. The SMTP server
-MUST stay in the same state after transmitting these replies that it
-was in before the EHLO was received.
-
-The SMTP client MUST, if possible, ensure that the domain parameter to
-the EHLO command is a valid principal host name (not a CNAME or MX
-name) for its host. If this is not possible (e.g., when the client's
-address is dynamically assigned and the client does not have an obvious
-name), an address literal SHOULD be substituted for the domain name and
-supplemental information provided that will assist in identifying the
-client.
-
-An SMTP server MAY verify that the domain name parameter in the EHLO
-command actually corresponds to the IP address of the client. However,
-the server MUST NOT refuse to accept a message for this reason if the
-verification fails: the information about verification failure is for
-logging and tracing only.
-
-The NOOP, HELP, EXPN, VRFY, and RSET commands can be used at any time
-during a session, or without previously initializing a session. SMTP
-servers SHOULD process these normally (that is, not return a 503 code)
-even if no EHLO command has yet been received; clients SHOULD open a
-session with EHLO before sending these commands.
-
-If these rules are followed, the example in RFC 821 that shows "550
-access denied to you" in response to an EXPN command is incorrect
-unless an EHLO command precedes the EXPN or the denial of access is
-based on the client's IP address or other authentication or
-authorization-determining mechanisms.
-
-The MAIL command (or the obsolete SEND, SOML, or SAML commands) begins
-a mail transaction. Once started, a mail transaction consists of a
-transaction beginning command, one or more RCPT commands, and a DATA
-command, in that order. A mail transaction may be aborted by the RSET
-(or a new EHLO) command. There may be zero or more transactions in a
-session. MAIL (or SEND, SOML, or SAML) MUST NOT be sent if a mail
-transaction is already open, i.e., it should be sent only if no mail
-transaction had been started in the session, or it the previous one
-successfully concluded with a successful DATA command, or if the
-previous one was aborted with a RSET.
-
-If the transaction beginning command argument is not acceptable, a 501
-failure reply MUST be returned and the SMTP server MUST stay in the
-same state. If the commands in a transaction are out of order to the
-degree that they cannot be processed by the server, a 503 failure reply
-MUST be returned and the SMTP server MUST stay in the same state.
-
-The last command in a session MUST be the QUIT command. The QUIT
-command cannot be used at any other time in a session, but SHOULD be
-used by the client SMTP to request connection closure, even when no
-session opening command was sent and accepted.
-
-4.1.5 Private-use Commands
-
-As specified in section 2.2.2, commands starting in "X" may be used by
-bilateral agreement between the client (sending) and server (receiving)
-SMTP agents. An SMTP server that does not recognize such a command is
-expected to reply with "500 Command not recognized". An extended SMTP
-server MAY list the feature names associated with these private
-commands in the response to the EHLO command.
-
-Commands sent or accepted by SMTP systems that do not start with "X"
-MUST conform to the requirements of section 2.2.2.
-
-
-4.2 SMTP Replies
-
-Replies to SMTP commands serve to ensure the synchronization of
-requests and actions in the process of mail transfer and to guarantee
-that the SMTP client always knows the state of the SMTP server. Every
-command MUST generate exactly one reply.
-
-The details of the command-reply sequence are described in section 4.3.
-
-An SMTP reply consists of a three digit number (transmitted as three
-numeric characters) followed by some text unless specified otherwise in
-this document. The number is for use by automata to determine what state
-to enter next; the text is for the human user. The three digits contain
-enough encoded information that the SMTP client need not examine the text
-and may either discard it or pass it on to the user, as appropriate.
-Exceptions are as noted elsewhere in this document. In particular, the
-220, 221, 251, 421, and 551 reply codes are associated with message text
-that must be parsed and interpreted by machines. In the general case, the
-text may be receiver dependent and context dependent, so there are likely
-to be varying texts for each reply code. A discussion of the theory of
-reply codes is given in section 4.2.1. Formally, a reply is defined to be
-the sequence: a three-digit code, <SP>, one line of text, and <CRLF>, or a
-multiline reply (as defined in section 4.2.1). Since, in violation of this
-specification, the text is sometimes not sent, clients which do not receive
-it SHOULD be prepared to process the code alone (with or without a trailing
-space character). Only the EHLO, EXPN, and HELP commands are expected to
-result in multiline replies in normal circumstances, however, multiline
-replies are allowed for any command.
-
-In ABNF, server responses are:
-
- Greeting = "220 " Domain [ SP text ] CRLF
- Reply-line = Reply-code [ SP text ] CRLF
-
-where "Greeting" appears only in the 220 response that announces that
-the server is opening its part of the connection.
-
-An SMTP server SHOULD send only the reply codes listed in this
-document. An SMTP server SHOULD use the text shown in the examples
-whenever appropriate.
-
-An SMTP client MUST determine its actions only by the reply code, not by
-the text (except for the "change of address" 251 and 551 and, if necessary,
-220, 221, and 421 replies); in the general case, any text, including no
-text at all (although senders SHOULD NOT send bare codes), MUST be
-acceptable. The space (blank) following the reply code is considered part
-of the text. Whenever possible, a receiver-SMTP SHOULD test the first
-digit (severity indication) of the reply code.
-
-The list of codes that appears below MUST NOT be construed as
-permanent. While the addition of new codes should be a rare and
-significant activity, with supplemental information in the textual part
-of the response being preferred, new codes may be added as the result
-of new Standards or Standards-track specifications. Consequently, a
-sender-SMTP MUST be prepared to handle codes not specified in this
-document and MUST do so by interpreting the first digit only.
-
-4.2.1 Reply Code Severities and Theory
-
-The three digits of the reply each have a special significance. The
-first digit denotes whether the response is good, bad or incomplete. An
-unsophisticated SMTP client, or one that receives an unexpected code,
-will be able to determine its next action (proceed as planned, redo,
-retrench, etc.) by examining this first digit. An SMTP client that
-wants to know approximately what kind of error occurred (e.g., mail
-system error, command syntax error) may examine the second digit. The
-third digit and any supplemental information that may be present is
-reserved for the finest gradation of information.
-
-There are five values for the first digit of the reply code:
-
-1yz Positive Preliminary reply
- The command has been accepted, but the requested action is being
- held in abeyance, pending confirmation of the information in this
- reply. The SMTP client should send another command specifying
- whether to continue or abort the action. Note: unextended SMTP does
- not have any commands that allow this type of reply, and so does not
- have continue or abort commands.
-
-2yz Positive Completion reply
- The requested action has been successfully completed. A new request
- may be initiated.
-
-3yz Positive Intermediate reply
- The command has been accepted, but the requested action is being
- held in abeyance, pending receipt of further information. The SMTP
- client should send another command specifying this information.
- This reply is used in command sequence groups (i.e., in DATA).
-
-4yz Transient Negative Completion reply
- The command was not accepted, and the requested action did not
- occur. However, the error condition is temporary and the action may
- be requested again. The sender should return to the beginning of
- the command sequence (if any). It is difficult to assign a meaning
- to "transient" when two different sites (receiver- and sender- SMTP
- agents) must agree on the interpretation. Each reply in this
- category might have a different time value, but the SMTP client is
- encouraged to try again. A rule of thumb to determine whether a
- reply fits into the 4yz or the 5yz category (see below) is that
- replies are 4yz if they can be successful if repeated without any
- change in command form or in properties of the sender or receiver
- (that is, the command is repeated identically and the receiver does
- not put up a new implementation.)
-
-5yz Permanent Negative Completion reply
- The command was not accepted and the requested action did not occur.
- The SMTP client is discouraged from repeating the exact request (in
- the same sequence). Even some "permanent" error conditions can be
- corrected, so the human user may want to direct the SMTP client to
- reinitiate the command sequence by direct action at some point in
- the future (e.g., after the spelling has been changed, or the user
- has altered the account status).
-
-The second digit encodes responses in specific categories:
-
-x0z Syntax: These replies refer to syntax errors, syntactically
- correct commands that do not fit any functional category, and
- unimplemented or superfluous commands.
-
-x1z Information: These are replies to requests for information, such
- as status or help.
-
-x2z Connections: These are replies referring to the transmission
- channel.
-
-x3z Unspecified.
-
-x4z Unspecified.
-
-x5z Mail system: These replies indicate the status of the receiver
- mail system vis-a-vis the requested transfer or other mail system
- action.
-
-The third digit gives a finer gradation of meaning in each category
-specified by the second digit. The list of replies illustrates this.
-Each reply text is recommended rather than mandatory, and may even
-change according to the command with which it is associated. On the
-other hand, the reply codes must strictly follow the specifications in
-this section. Receiver implementations should not invent new codes for
-slightly different situations from the ones described here, but rather
-adapt codes already defined.
-
-For example, a command such as NOOP, whose successful execution does
-not offer the SMTP client any new information, will return a 250 reply.
-The reply is 502 when the command requests an unimplemented
-non-site-specific action. A refinement of that is the 504 reply for a
-command that is implemented, but that requests an unimplemented
-parameter.
-
-The reply text may be longer than a single line; in these cases the
-complete text must be marked so the SMTP client knows when it can stop
-reading the reply. This requires a special format to indicate a
-multiple line reply.
-
-The format for multiline replies requires that every line, except the
-last, begin with the reply code, followed immediately by a hyphen, "-"
-(also known as minus), followed by text. The last line will begin with
-the reply code, followed immediately by <SP>, optionally some text, and
-<CRLF>. As noted above, servers SHOULD send the <SP> if subsequent
-text is not sent, but clients MUST be prepared for it to be omitted.
-
-For example:
- 123-First line
- 123-Second line
- 123-234 text beginning with numbers
- 123 The last line
-
-In many cases the SMTP client then simply needs to search for the reply
-code followed by <SP> at the beginning of a line, and ignore all
-preceding lines. In a few cases, there is important data for the
-client in the reply "text". The client will be able to identify these
-cases from the current context.
-
-4.2.2 Reply Codes by Function Groups
-
- 500 Syntax error, command unrecognized
- (This may include errors such as command line too long)
- 501 Syntax error in parameters or arguments
- 502 Command not implemented (see section 4.2.4)
- 503 Bad sequence of commands
- 504 Command parameter not implemented
-
- 211 System status, or system help reply
- 214 Help message
- (Information on how to use the receiver or the meaning of a
- particular non-standard command; this reply is useful only
- to the human user)
-
- 220 <domain> Service ready
- 221 <domain> Service closing transmission channel
- 421 <domain> Service not available, closing transmission channel
- (This may be a reply to any command if the service knows it
- must shut down)
-
- 250 Requested mail action okay, completed
- 251 User not local; will forward to <forward-path>
- (See section 3.4)
- 252 Cannot VRFY user, but will accept message and attempt
- delivery
- (See section 3.5.3)
- 450 Requested mail action not taken: mailbox unavailable
- (e.g., mailbox busy)
- 550 Requested action not taken: mailbox unavailable
- (e.g., mailbox not found, no access, or command rejected
- for policy reasons)
- 451 Requested action aborted: error in processing
- 551 User not local; please try <forward-path>
- (See section 3.4)
- 452 Requested action not taken: insufficient system storage
- 552 Requested mail action aborted: exceeded storage allocation
- 553 Requested action not taken: mailbox name not allowed
- (e.g., mailbox syntax incorrect)
- 354 Start mail input; end with <CRLF>.<CRLF>
- 554 Transaction failed (Or, in the case of a connection-opening
- response, "No SMTP service here")
-
-4.2.3 Reply Codes in Numeric Order
-
- 211 System status, or system help reply
- 214 Help message
- (Information on how to use the receiver or the meaning of a
- particular non-standard command; this reply is useful only
- to the human user)
- 220 <domain> Service ready
- 221 <domain> Service closing transmission channel
- 250 Requested mail action okay, completed
- 251 User not local; will forward to <forward-path>
- (See section 3.4)
- 252 Cannot VRFY user, but will accept message and attempt
- delivery
- (See section 3.5.3)
-
- 354 Start mail input; end with <CRLF>.<CRLF>
-
- 421 <domain> Service not available, closing transmission channel
- (This may be a reply to any command if the service knows it
- must shut down)
- 450 Requested mail action not taken: mailbox unavailable
- (e.g., mailbox busy)
- 451 Requested action aborted: local error in processing
- 452 Requested action not taken: insufficient system storage
-
- 500 Syntax error, command unrecognized
- (This may include errors such as command line too long)
- 501 Syntax error in parameters or arguments
- 502 Command not implemented (see section 4.2.4)
- 503 Bad sequence of commands
- 504 Command parameter not implemented
- 550 Requested action not taken: mailbox unavailable
- (e.g., mailbox not found, no access, or command rejected
- for policy reasons)
- 551 User not local; please try <forward-path>
- (See section 3.4)
- 552 Requested mail action aborted: exceeded storage allocation
- 553 Requested action not taken: mailbox name not allowed
- (e.g., mailbox syntax incorrect)
- 554 Transaction failed (Or, in the case of a connection-opening
- response, "No SMTP service here")
-
-4.2.4 Reply Code 502
-
-Questions have been raised as to when reply code 502 (Command not
-implemented) SHOULD be returned in preference to other codes. 502
-SHOULD be used when the command is actually recognized by the SMTP
-server, but not implemented. If the command is not recognized, code
-500 SHOULD be returned. Extended SMTP systems MUST NOT list
-capabilities in response to EHLO for which they will return 502 (or
-500) replies.
-
-4.2.5 Reply Codes After DATA and the Subsequent <CRLF>.<CRLF>
-
-When an SMTP server returns a positive completion status (2yz code)
-after the DATA command is completed with <CRLF>.<CRLF>, it accepts
-responsibility for:
-
- - delivering the message (if the recipient mailbox exists), or
-
- - if attempts to deliver the message fail due to transient conditions,
- retrying delivery some reasonable number of times at intervals as
- specified in section 4.5.4.
-
- - if attempts to deliver the message fail due to permanent conditions,
- or if repeated attempts to deliver the message fail due to transient
- conditions, returning appropriate notification to the sender of the
- original message (using the address in the SMTP MAIL command).
-
-When an SMTP server returns a transient error completion status (4yz) code
-after the DATA command is completed with <CRLF>.<CRLF>, it MUST NOT make
-any subsequent attempt to deliver that message. The SMTP client retains
-responsibility for delivery of that message and may either return it to the
-user or requeue it for a subsequent attempt (see section 4.5.4.1).
-
-The user who originated the message SHOULD be able to interpret the return
-of a transient failure status (by mail message or otherwise) as a
-non-delivery indication, just as a permanent failure would be interpreted.
-I.e., if the client SMTP successfully handles these conditions, the user
-will not receive such a reply.
-
-When an SMTP server returns a permanent error status (5yz) code after the
-DATA command is completely with <CRLF>.<CRLF>, it MUST NOT make any
-subsequent attempt to deliver the message. As with temporary error status
-codes, the SMTP client retains responsibility for the message, but SHOULD
-not again attempt delivery to the same server without user review and
-intervention of the message.
-
-4.3 Sequencing of Commands and Replies
-
-4.3.1 Sequencing Overview
-
-The communication between the sender and receiver is an alternating
-dialogue, controlled by the sender. As such, the sender issues a
-command and the receiver responds with a reply. Unless other
-arrangements are negotiated through service extensions, the sender MUST
-wait for this response before sending further commands.
-
-One important reply is the connection greeting. Normally, a receiver
-will send a 220 "Service ready" reply when the connection is completed.
-The sender SHOULD wait for this greeting message before sending any
-commands.
-
-Note: all the greeting-type replies have the official name (the
-fully-qualified primary domain name) of the server host as the first
-word following the reply code. Sometimes the host will have no
-meaningful name. See 4.1.3 for a discussion of alternatives in these
-situations.
-
-For example,
- 220 ISIF.USC.EDU Service ready
-or
- 220 mail.foo.com SuperSMTP v 6.1.2 Service ready
-or
- 220 [10.0.0.1] Clueless host service ready
-
-The table below lists alternative success and failure replies for each
-command. These SHOULD be strictly adhered to: a receiver may
-substitute text in the replies, but the meaning and action implied by
-the code numbers and by the specific command reply sequence cannot be
-altered.
-
-4.3.2 Command-Reply Sequences
-
-Each command is listed with its usual possible replies. The prefixes
-used before the possible replies are "I" for intermediate, "S" for
-success, and "E" for error. Since some servers may generate other
-replies under special circumstances, and to allow for future extension,
-SMTP clients SHOULD, when possible, interpret only the first digit of
-the reply and MUST be prepared to deal with unrecognized reply codes by
-interpreting the first digit only. Unless extended using the
-mechanisms described in section 2.2, SMTP servers MUST NOT transmit
-reply codes to an SMTP client that are other than three digits or that
-do not start in a digit between 2 and 5 inclusive.
-
-These sequencing rules and, in principle, the codes themselves, can be
-extended or modified by SMTP extensions offered by the server and
-accepted (requested) by the client.
-
-In addition to the codes listed below, any SMTP command can return any
-of the following codes if the corresponding unusual circumstances are
-encountered:
-
-500 For the "command line too long" case or if the command name was not
- recognized. Note that producing a "command not recognized" error in
- response to the required subset of these commands is a violation of
- this specification.
-
-501 Syntax error in command or arguments. In order to provide for
- future extensions, commands that are specified in this document as
- not accepting arguments (DATA, RSET, QUIT) SHOULD return a 501
- message if arguments are supplied in the absence of EHLO-advertised
- extensions.
-
-421 Service shutting down and closing transmission channel
-
-Specific sequences are:
-
-CONNECTION ESTABLISHMENT
- S: 220
- E: 554
-EHLO or HELO
- S: 250
- E: 504, 550
-MAIL
- S: 250
- E: 552, 451, 452, 550, 553, 503
-RCPT
- S: 250, 251 (but see section 3.4 for discussion of 251 and 551)
- E: 550, 551, 552, 553, 450, 451, 452, 503, 550
-DATA
- I: 354 -> data -> S: 250
- E: 552, 554, 451, 452
- E: 451, 554, 503
-RSET
- S: 250
-VRFY
- S: 250, 251, 252
- E: 550, 551, 553, 502, 504
-EXPN
- S: 250, 252
- E: 550, 500, 502, 504
-HELP
- S: 211, 214
- E: 502, 504
-NOOP
- S: 250
-QUIT
- S: 221
-
-4.4 Trace Information
-
-When an SMTP server receives a message for delivery or further
-processing, it MUST insert trace ("time stamp" or "Received")
-information at the beginning of the message content, as discussed in
-section 4.1.1.4.
-
-This line MUST be structured as follows:
-
- - The FROM field, which MUST be supplied in an SMTP environment,
- SHOULD contain both (1) the name of the source host as presented in
- the EHLO command and (2) an address literal containing the IP
- address of the source, determined from the TCP connection.
-
- - The ID field MAY contain an "@" as suggested in RFC-822, but this is
- not required.
-
- - The FOR field MAY contain a list of <path> entries when multiple
- RCPT commands have been given. This may raise some security issues
- and is usually not desirable; see section 7.2.
-
-An Internet mail program MUST NOT change a Received: line that was
-previously added to the message header. SMTP servers MUST prepend
-Received lines to messages; they MUST NOT change the order of existing
-lines or insert Received lines in any other location.
-
-As the Internet grows, comparability of Received fields is important
-for detecting problems, especially slow relays. SMTP servers that
-create Received fields SHOULD use explicit offsets in the dates (e.g.,
--0800), rather than time zone names of any type. Local time (with an
-offset) is preferred to UT when feasible. This formulation allows
-slightly more information about local circumstances to be specified.
-If UT is needed, the receiver need merely do some simple arithmetic to
-convert the values. Use of UT loses information about the time
-zone-location of the server. If a time zone name is used, it SHOULD be
-included in a comment.
-
-When the delivery SMTP server makes the "final delivery" of a message,
-it inserts a return-path line at the beginning of the mail data. This
-use of return-path is required; mail systems MUST support it. The
-return-path line preserves the information in the <reverse-path> from
-the MAIL command. Here, final delivery means the message has left the
-SMTP enviroment. Normally, this would mean it had been delivered to
-the destination user or an associated mail drop, but in some cases it
-may be further processed and transmitted by another mail system.
-
-It is possible for the mailbox in the return path to be different from
-the actual sender's mailbox, for example, if error responses are to be
-delivered to a special error handling mailbox rather than to the
-message sender. When mailing lists are involved, this arrangement is
-common and useful as a means of directing errors to the list maintainer
-rather than the message originator.
-
-The text above implies that the final mail data will begin with a
-return path line, followed by one or more time stamp lines. These
-lines will be followed by the mail data headers and body [MSGFMT].
-
-It is sometimes difficult for an SMTP server to determine whether or
-not it is making final delivery since forwarding or other operations
-may occur after the message is accepted for delivery. Consequently,
-any further (forwarding, gateway, or relay) systems MAY remove the
-return path and rebuild the MAIL command as needed to ensure that
-exactly one such line appears in a delivered message.
-
-A message-originating SMTP system SHOULD NOT send a message that
-already contains a Return-path header. SMTP servers performing a relay
-function MUST NOT inspect the message data, and especially not to the
-extent needed to determine if Return-path headers are present. SMTP
-servers making final delivery MAY remove Return-path headers before
-adding their own.
-
-The primary purpose of the Return-path is to designate the address to
-which messages indicating non-delivery or other mail system failures
-are to be sent. For this to be unambiguous, exactly one return path
-SHOULD be present when the message is delivered. Systems using RFC 822
-syntax with non-SMTP transports SHOULD designate an unambiguous
-address, associated with the transport envelope, to which error reports
-(e.g., non-delivery messages) should be sent.
-
-Historical note: Text in RFC 822 that appears to contradict the use of
-the Return-path header (or the envelope reverse path address from the
-MAIL command) as the destination for error messages is not applicable
-on the Internet. The reverse path address (as copied into the
-Return-path) MUST be used as the target of any mail containing delivery
-error messages.
-
-In particular:
-
- - a gateway from SMTP->elsewhere SHOULD insert a return-path header,
- unless it is known that the "elsewhere" transport also uses Internet
- domain addresses and maintains the envelope sender address
- separately.
-
- - a gateway from elsewhere->SMTP SHOULD delete any return-path header
- present in the message, and either copy that information to the SMTP
- envelope or combine it with information present in the envelope of
- the other transport system to construct the reverse path argument to
- the MAIL command in the SMTP envelope.
-
-The server must give special treatment to cases in which the processing
-following the end of mail data indication is only partially successful.
-This could happen if, after accepting several recipients and the mail
-data, the SMTP server finds that the mail data could be successfully
-delivered to some, but not all, of the recipients. In such cases, the
-response to the DATA command MUST be an OK reply. However, the SMTP
-server MUST compose and send an "undeliverable mail" notification
-message to the originator of the message.
-
-A single notification listing all of the failed recipients or separate
-notification messages MUST be sent for each failed recipient. For
-economy of processing by the sender, the former is preferred when
-possible. All undeliverable mail notification messages are sent using
-the MAIL command (even if they result from processing the obsolete
-SEND, SOML, or SAML commands) and use a null return path as discussed
-in section 3.7.
-
-The time stamp line and the return path line are formally defined as
-follows:
-
- Return-path-line = "Return-Path:" FWS Reverse-path <CRLF>
-
- Time-stamp-line = "Received:" FWS Stamp <CRLF>
-
- Stamp = From-domain By-domain Opt-info ";" FWS date-time
-
- ; where "date-time" is as defined in [MSGFMT]
- but the "obs-" forms, especially two-digit
- years, are prohibited in SMTP and MUST NOT be
- used.
-
- From-domain = "FROM" FWS Extended-Domain CFWS
-
- By-domain = "BY" FWS Extended-Domain CFWS
-
- Extended-Domain = Domain /
- ( Domain FWS "(" TCP-info ")" ) /
- ( Address-literal FWS "(" TCP-info ")"
- TCP-info = Address-literal / ( Domain FWS Address-literal )
- ; Information derived by server from TCP connection
- not client EHLO.
-
- Opt-info = [Via] [With] [ID] [For]
-
- Via = "VIA" FWS Link CFWS
-
- With = "WITH" FWS Protocol CFWS
-
- ID = "ID" FWS String / msg-id CFWS
-
- For = "FOR" FWS 1*( Path / Mailbox ) CFWS
-
- Link = "TCP" / Addtl-Link
- Addtl-Link = Atom ; Additional standard names for links are
- registered with the Internet Assigned
- Numbers Authority (IANA). "Via" is
- primarily of value with non-Internet
- transports.
- SMTP servers SHOULD NOT use unregistered
- names.
- Protocol = "ESMTP" / "SMTP" / Attdl-Protocol
- Attdl-Protocol = Atom ; Additional standard names for protocols
- are registered with the Internet Assigned
- Numbers Authority (IANA). SMTP servers
- SHOULD NOT use unregistered names.
-
-
-4.5 Additional Implementation Issues
-
-4.5.1 Minimum Implementation
-
-In order to make SMTP workable, the following minimum implementation is
-required for all receivers. The following commands MUST be supported to
-conform to this specification:
-
- EHLO
- HELO
- MAIL
- RCPT
- DATA
- RSET
- NOOP
- QUIT
- VRFY
-
-Any system that includes an SMTP server supporting mail relaying or
-delivery MUST support the reserved mailbox "postmaster" as a
-case-insensitive local name. This postmaster address is not strictly
-necessary if the server always returns 554 on connection opening (as
-described in section 3.1). The requirement to accept mail for postmaster
-implies that RCPT commands which specify a mailbox for postmaster at any of
-the domains for which the SMTP s erver provides mail service, as well as
-the special case of "RCPT TO:<Postmaster>" (with no domain specification),
-MUST be supported.
-
-SMTP systems are expected to make every reasonable effort to accept mail
-directed to Postmaster from any other system on the Internet. In extreme
-cases --such as to contain a denial of service attack or other breach of
-security-- an SMTP server may block mail directed to Postmaster. However,
-such arrangements SHOULD be narrowly tailored so as to avoid blocking
-messages which are not part of such attacks.
-
-
-4.5.2 Transparency
-
-Without some provision for data transparency, the character sequence
-"<CRLF>.<CRLF>" ends the mail text and cannot be sent by the user. In
-general, users are not aware of such "forbidden" sequences. To allow
-all user composed text to be transmitted transparently, the following
-procedures are used:
-
- - Before sending a line of mail text, the SMTP client checks the first
- character of the line. If it is a period, one additional period is
- inserted at the beginning of the line.
-
- - When a line of mail text is received by the SMTP server, it checks
- the line. If the line is composed of a single period, it is treated
- as the end of mail indicator. If the first character is a period
- and there are other characters on the line, the first character is
- deleted.
-
-The mail data may contain any of the 128 ASCII characters. All characters
-are to be delivered to the recipient's mailbox, including spaces, vertical
-and horizontal tabs, and other control characters. If the transmission
-channel provides an 8-bit byte (octets) data stream, the 7-bit ASCII codes
-are transmitted right justified in the octets, with the high order bits
-cleared to zero. See 3.7 for special treatment of these conditions in SMTP
-systems serving a relay function.
-
-In some systems it may be necessary to transform the data as it is
-received and stored. This may be necessary for hosts that use a
-different character set than ASCII as their local character set, that
-store data in records rather than strings, or which use special
-character sequences as delimiters inside mailboxes. If such
-transformations are necessary, they MUST be reversible, especially if
-they are applied to mail being relayed.
-
-4.5.3 Sizes and Timeouts
-
-4.5.3.1 Size limits and minimums
-
-There are several objects that have required minimum/maximum sizes.
-Every implementation MUST be able to receive objects of at least these
-sizes. Objects larger than these sizes SHOULD be avoided when
-possible. However, some Internet mail constructs such as encoded X.400
-addresses [RFC-X400] will often require larger objects: clients MAY
-attempt to transmit these, but MUST be prepared for a server to reject
-them if they cannot be handled by it. To the maximum extent possible,
-implementation techniques which impose no limits on the length of these
-objects should be used.
-
-local-part
- The maximum total length of a user name or other local-part is 64
- characters.
-
-domain
- The maximum total length of a domain name or number is 255
- characters.
-
-path
- The maximum total length of a reverse-path or forward-path is 256
- characters (including the punctuation and element separators).
-
-command line
- The maximum total length of a command line including the command
- word and the <CRLF> is 512 characters. SMTP extensions may be used
- to increase this limit.
-
-reply line
- The maximum total length of a reply line including the reply code
- and the <CRLF> is 512 characters. More information may be conveyed
- through multiple-line replies.
-
-text line
- The maximum total length of a text line including the <CRLF> is 1000
- characters (not counting the leading dot duplicated for
- transparency). This number may be increased by the use of SMTP
- Service Extensions.
-
-message content
- The maximum total length of a message content (including any message
- headers as well as the message body) MUST BE at least 64K octets.
- Since the introduction of multimedia mail [RFC-MIME], message
- lengths on the Internet have grown dramatically, and message size
- restrictions should be avoided if at all possible. SMTP server
- systems that must impose restrictions SHOULD implement the "SIZE"
- service extension ([RFC-SIZE]), and SMTP client systems that will
- send large messages SHOULD utilize it when possible.
-
-recipients buffer
- The minimum total number of recipients that must be buffered is 100
- recipients. Rejection of messages (for excessive recipients) with
- fewer than 100 RCPT commands is a violation of this specification.
- The general principle that relaying SMTP servers MUST NOT, and
- delivery SMTP servers SHOULD NOT, perform validation tests on
- message headers suggests that rejecting a message based on the total
- number of recipients shown in header fields is to be discouraged. A
- server which imposes a limit on the number of recipients MUST behave
- in an orderly fashion, such as to reject additional addresses over
- its limit rather than silently discarding addresses previously
- accepted. A client that needs to deliver a message containing over
- 100 RCPT commands SHOULD be prepared to transmit in 100-recipient
- "chunks" if the server declines to accept more than 100 recipients
- in a single message.
-
-Errors due to exceeding these limits may be reported by using the reply
-codes. Some examples of reply codes are:
-
- 500 Line too long.
-or
- 501 Path too long
-or
- 452 Too many recipients (see below)
-or
- 552 Too much mail data.
-
-[RFC-821] incorrectly listed the error where an SMTP server exhausts
-its implementation limit on the number of RCPT commands ("too many
-recipients") as having reply code 552. The correct reply code for this
-condition is 452. Clients SHOULD treat a 552 code in this case as a
-temporary, rather than permanent, failure so the logic below works.
-
-When a conforming SMTP server encounters this condition, it has at
-least 100 successful RCPT commands in its recipients buffer. If the
-server is able to accept the message, then at least these 100 addresses
-will be removed from the SMTP client's queue. When the client attempts
-retransmission of those addresses which received 452 responses, at
-least 100 of these will be able to fit in the SMTP server's recipients
-buffer. Each retransmission attempt which is able to deliver anything
-will be able to dispose of at least 100 of these recipients.
-
-If an SMTP server has an implementation limit on the number of RCPT
-commands and this limit is exhausted, it MUST use a response code of 452
-(but the client SHOULD also be prepared for a 552, as noted above). If the
-server has a configured site-policy limitation on the number of RCPT
-commands, it MAY instead use a 5XX response code. This would be most
-appropriate if the policy limitation was intended to apply if the total
-recipient count for a particular message body were enforced even if that
-message body was sent in multiple mail transactions.
-
-4.5.3.2 Timeouts
-
-An SMTP client MUST provide a timeout mechanism. It MUST use
-per-command timeouts rather than somehow trying to time the entire mail
-transaction. Timeouts SHOULD be easily reconfigurable, preferably
-without recompiling the SMTP code. To implement this, a timer is set
-for each SMTP command and for each buffer of the data transfer. The
-latter means that the overall timeout is inherently proportional to the
-size of the message.
-
-Based on extensive experience with busy mail-relay hosts, the minimum
-per-command timeout values SHOULD be as follows:
-
-Initial 220 Message: 5 minutes
- An SMTP client process needs to distinguish between a failed TCP
- connection and a delay in receiving the initial 220 greeting
- message. Many SMTP servers accept a TCP connection but delay
- delivery of the 220 message until their system load permits more
- mail to be processed.
-
-MAIL Command: 5 minutes
-
-RCPT Command: 5 minutes
- A longer timeout is required if processing of mailing lists and
- aliases is not deferred until after the message was accepted.
-
-DATA Initiation: 2 minutes
- This is while awaiting the "354 Start Input" reply to a DATA command.
-
-Data Block: 3 minutes
- This is while awaiting the completion of each TCP SEND call
- transmitting a chunk of data.
-
-DATA Termination: 10 minutes.
- This is while awaiting the "250 OK" reply. When the receiver gets
- the final period terminating the message data, it typically performs
- processing to deliver the message to a user mailbox. A spurious
- timeout at this point would be very wasteful and would typically
- result in delivery of multiple copies of the message, since it has
- been successfully sent and the server has accepted responsibility
- for delivery. See section 6.1 for additional discussion.
-
-An SMTP server SHOULD have a timeout of at least 5 minutes while it is
-awaiting the next command from the sender.
-
-4.5.4 Retry Strategies
-
-The common structure of a host SMTP implementation includes user
-mailboxes, one or more areas for queuing messages in transit, and one
-or more daemon processes for sending and receiving mail. The exact
-structure will vary depending on the needs of the users on the host and
-the number and size of mailing lists supported by the host. We describe
-several optimizations that have proved helpful, particularly for
-mailers supporting high traffic levels.
-
-Any queuing strategy MUST include timeouts on all activities on a
-per-command basis. A queuing strategy MUST NOT send error messages in
-response to error messages under any circumstances.
-
-4.5.4.1 Sending Strategy
-
-The general model for an SMTP client is one or more processes that
-periodically attempt to transmit outgoing mail. In a typical system,
-the program that composes a message has some method for requesting
-immediate attention for a new piece of outgoing mail, while mail that
-cannot be transmitted immediately MUST be queued and periodically
-retried by the sender. A mail queue entry will include not only the
-message itself but also the envelope information.
-
-The sender MUST delay retrying a particular destination after one
-attempt has failed. In general, the retry interval SHOULD be at least
-30 minutes; however, more sophisticated and variable strategies will be
-beneficial when the SMTP client can determine the reason for
-non-delivery.
-
-Retries continue until the message is transmitted or the sender gives
-up; the give-up time generally needs to be at least 4-5 days. The
-parameters to the retry algorithm MUST be configurable.
-
-A client SHOULD keep a list of hosts it cannot reach and corresponding
-connection timeouts, rather than just retrying queued mail items.
-
-Experience suggests that failures are typically transient (the target
-system or its connection has crashed), favoring a policy of two
-connection attempts in the first hour the message is in the queue, and
-then backing off to one every two or three hours.
-
-The SMTP client can shorten the queuing delay in cooperation with the
-SMTP server. For example, if mail is received from a particular
-address, it is likely that mail queued for that host can now be sent.
-Application of this principle may, in many cases, eliminate the
-requirement for an explicit "send queues now" function such as that
-discussed in [RFC-ETRN].
-
-The strategy may be further modified as a result of multiple addresses
-per host (see below) to optimize delivery time vs. resource usage.
-
-An SMTP client may have a large queue of messages for each unavailable
-destination host. If all of these messages were retried in every retry
-cycle, there would be excessive Internet overhead and the sending
-system would be blocked for a long period. Note that an SMTP client
-can generally determine that a delivery attempt has failed only after a
-timeout of several minutes and even a one-minute timeout per connection
-will result in a very large delay if retries are repeated for dozens,
-or even hundreds, of queued messages to the same host.
-
-At the same time, SMTP clients SHOULD use great care in caching
-negative responses from servers. In an extreme case, if EHLO is issued
-multiple times during the same SMTP connection, different answers may
-be returned by the server. More significantly, 5yz responses to the
-MAIL command MUST NOT be cached.
-
-When a mail message is to be delivered to multiple recipients, and the
-SMTP server to which a copy of the message is to be sent is the same
-for multiple recipients, then only one copy of the message SHOULD be
-transmitted. That is, the SMTP client SHOULD use the command sequence:
-MAIL, RCPT, RCPT,... RCPT, DATA instead of the sequence: MAIL, RCPT,
-DATA, ..., MAIL, RCPT, DATA. However, if there are very many
-addresses, a limit on the number of RCPT commands per MAIL command MAY
-be imposed. Implementation of this efficiency feature is strongly
-encouraged.
-
-Similarly, to achieve timely delivery, the SMTP client MAY support
-multiple concurrent outgoing mail transactions. However, some limit
-may be appropriate to protect the host from devoting all its resources
-to mail.
-
-4.5.4.2 Receiving Strategy
-
-The SMTP server SHOULD attempt to keep a pending listen on the SMTP
-port at all times. This requires the support of multiple incoming TCP
-connections for SMTP. Some limit MAY be imposed but servers that
-cannot handle more than one SMTP transaction at a time are not in
-conformance with the intent of this specification.
-
-As discussed above, when the SMTP server receives mail from a
-particular host address, it could notify the SMTP client to retry any
-mail pending for that host address.
-
-4.5.5 Messages with a null reverse-path
-
-There are several types of notification messages which are required by
-existing and proposed standards to be sent with a null reverse path,
-namely non-delivery notifications as discussed in section 3.7, other
-kinds of Delivery Status Notifications (DSNs, see [RFC 1894]) and also
-Message Disposition Notifications (MDNs, see [RFC 2298]). All of these
-kinds of messages are notifications about a previous message, and they
-are sent to the reverse-path of the previous mail message. (If the
-delivery of such a notification message fails, that usually indicates a
-problem with the mail system of the host to which the notification
-message is addressed. For this reason, at some hosts the MTA is set up
-to forward such failed notification messages to someone who is able to
-fix problems with the mail system, e.g. via the postmaster alias.)
-
-All other types of messages (i.e. any message which is not required by
-a standards-track RFC to have a null reverse-path) SHOULD be sent with
-with a valid, non-null reverse-path.
-
-Implementors of automated email processors should be careful to make
-sure that the various kinds of messages with null reverse-path are
-handled correctly, in particular such systems SHOULD NOT reply to
-messages with null reverse-path.
-
-
-
-5. Address Resolution and Mail Handling
-
-Once an SMTP client lexically identifies a domain to which mail will be
-delivered for processing (as described in sections 3.6 and 3.7), a DNS
-lookup MUST be performed to resolve the domain name (see [RFC-DNS]).
-The names are expected to be fully-qualified domain names (FQDNs):
-mechanisms for inferring FQDNs from partial names or local aliases are
-outside of this specification and, due to a history of problems, are
-generally discouraged. The lookup first attempts to locate an MX
-record associated with the name. If a CNAME record is found instead,
-the resulting name is processed as if it were the initial name. If no
-MX records are found, but an A RR is found, the A RR is treated as if
-it was associated with an implicit MX RR, with a preference of 0,
-pointing to that host. If one or more MX RRs are found for a given
-name, SMTP systems MUST NOT utilize any A RRs associated with that name
-unless they are located using the MX RRs; the "implicit MX" rule above
-applies only if there are no MX records present. If MX records are
-present, but none of them are usable, this situation MUST be reported
-as an error.
-
-When the lookup succeeds, the mapping can result in a list of alternative
-delivery addresses rather than a single address, because of multiple MX
-records, multihoming, or both. To provide reliable mail transmission, the
-SMTP client MUST be able to try (and retry) each of the relevant addresses
-in this list in order, until a delivery attempt succeeds. However, there
-MAY also be a configurable limit on the number of alternate addresses that
-can be tried. In any case, the SMTP client SHOULD try at least two
-addresses.
-
-Two types of information is used to rank the host addresses: multiple
-MX records, and multihomed hosts.
-
-Multiple MX records contain a preference indication that MUST be used
-in sorting (see below). Lower numbers are more preferred than higher
-ones. If there are multiple destinations with the same preference and
-there is no clear reason to favor one (e.g., by recognition of an
-easily-reached address), then the sender-SMTP MUST randomize them to
-spread the load across multiple mail exchangers for a specific
-organization.
-
-The destination host (perhaps taken from the preferred MX record) may
-be multihomed, in which case the domain name resolver will return a
-list of alternative IP addresses. It is the responsibility of the
-domain name resolver interface to have ordered this list by decreasing
-preference if necessary, and SMTP MUST try them in the order presented.
-
-Although the capability to try multiple alternative addresses is
-required, specific installations may want to limit or disable the use
-of alternative addresses. The question of whether a sender should
-attempt retries using the different addresses of a multihomed host has
-been controversial. The main argument for using the multiple addresses
-is that it maximizes the probability of timely delivery, and indeed
-sometimes the probability of any delivery; the counter-argument is that
-it may result in unnecessary resource use. Note that resource use is
-also strongly determined by the sending strategy discussed in section
-4.5.4.1.
-
-If an SMTP server receives a message with a destination for which it is a
-designated Mail eXchanger, it MAY relay the message (potentially after
-having rewritten the MAIL FROM and/or RCPT TO addresses), make final
-delivery of the message, or hand it off using some mechanism outside the
-SMTP-provided transport environment. Of course, neither of the latter
-require that the list of MX records be examined further.
-
-If it determines that it should relay the message without rewriting the
-address, it MUST sort the MX records to determine candidates for
-delivery. The records are first ordered by preference, with the
-lowest-numbered records being most preferred. The relay host MUST then
-inspect the list for any of the names or addresses by which it might be
-known in mail transactions. If a matching record is found, all records
-at that preference level and higher-numbered ones MUST be discarded
-from consideration. If there are no records left at that point, it is
-an error condition, and the message MUST be returned as undeliverable.
-If records do remain, they SHOULD be tried, best preference first, as
-described above.
-
-
-6. Problem Detection and Handling
-
-6.1 Reliable Delivery and Replies by Email
-
-When the receiver-SMTP accepts a piece of mail (by sending a "250 OK"
-message in response to DATA), it is accepting responsibility for
-delivering or relaying the message. It must take this responsibility
-seriously. It MUST NOT lose the message for frivolous reasons, such as
-because the host later crashes or because of a predictable resource
-shortage.
-
-If there is a delivery failure after acceptance of a message, the
-receiver-SMTP MUST formulate and mail a notification message. This
-notification MUST be sent using a null ("<>") reverse path in the
-envelope. The recipient of this notification MUST be the address from
-the envelope return path (or the Return-Path: line). However, if this
-address is null ("<>"), the receiver-SMTP MUST NOT send a notification.
-Obviously, nothing in this section can or should prohibit local
-decisions (i.e., as part of the same system environment as the
-receiver-SMTP) to log or otherwise transmit information about null
-address events locally if that is desired. If the address is an
-explicit source route, it MUST be stripped down to its final hop.
-
-For example, suppose that an error notification must be sent for a
-message that arrived with:
-
- MAIL FROM:<@a,@b:user@d>
-
-The notification message MUST be sent using:
-
- RCPT TO:<user@d>
-
-Some delivery failures after the message is accepted by SMTP will be
-unavoidable. For example, it may be impossible for the receiving SMTP
-server to validate all the delivery addresses in RCPT command(s) due to
-a "soft" domain system error, because the target is a mailing list (see
-earlier discussion of RCPT), or because the server is acting as a relay
-and has no immediate access to the delivering system.
-
-To avoid receiving duplicate messages as the result of timeouts, a
-receiver-SMTP MUST seek to minimize the time required to respond to the
-final <CRLF>.<CRLF> end of data indicator. See RFC-1047 [RFC-1047] for
-a discussion of this problem.
-
-6.2 Loop Detection
-
-Simple counting of the number of "Received:" headers in a message has
-proven to be an effective, although rarely optimal, method of detecting
-loops in mail systems. SMTP servers using this technique SHOULD use a
-large rejection threshold, normally at least 100 Received entries.
-Whatever mechanisms are used, servers MUST contain provisions for
-detecting and stopping trivial loops.
-
-6.3 Compensating for Irregularities
-
-Unfortunately, variations, creative interpretations, and outright
-violations of Internet mail protocols do occur; some would suggest that
-they occur quite frequently. The debate as to whether a well-behaved
-SMTP receiver or relay should reject a malformed message, attempt to
-pass it on unchanged, or attempt to repair it to increase the odds of
-successful delivery (or subsequent reply) began almost with the dawn of
-structured network mail and shows no signs of abating. Advocates of
-rejection claim that attempted repairs are rarely completely adequate
-and that rejection of bad messages is the only way to get the offending
-software repaired. Advocates of "repair" or "deliver no matter what"
-argue that users prefer that mail go through it if at all possible and
-that there are significant market pressures in that direction. In
-practice, these market pressures may be more important to particular
-vendors than strict conformance to the standards, regardless of the
-preference of the actual developers.
-
-The problems associated with ill-formed messages were exacerbated by
-the introduction of the split-UA mail reading protocols [RFC-POP2,
-RFC-POP3, RFC-IMAP2, RFC-PCMAIL]. These protocols have encouraged the
-use of SMTP as a posting protocol, and SMTP servers as relay systems
-for these client hosts (which are often only intermittently connected
-to the Internet). Historically, many of those client machines lacked
-some of the mechanisms and information assumed by SMTP (and indeed, by
-the mail format protocol [RFC-822]). Some could not keep adequate
-track of time; others had no concept of time zones; still others could
-not identify their own names or addresses; and, of course, none could
-satisfy the assumptions that underlay RFC-822's conception of
-authenticated addresses.
-
-In response to these weak SMTP clients, many SMTP systems now complete
-messages that are delivered to them in incomplete or incorrect form.
-This strategy is generally considered appropriate when the server can
-identify or authenticate the client, and there are prior agreements
-between them. By contrast, there is at best great concern about fixes
-applied by a relay or delivery SMTP server that has little or no
-knowledge of the user or client machine.
-
-The following changes to a message being processed MAY be applied when
-necessary by an originating SMTP server, or one used as the target of
-SMTP as an initial posting protocol:
-
- - Addition of a message-id field when none appears
-
- - Addition of a date, time or time zone when none appears
-
- - Correction of addresses to proper FQDN format
-
-The less information the server has about the client, the less likely
-these changes are to be correct and the more caution and conservatism
-should be applied when considering whether or not to perform fixes and
-how. These changes MUST NOT be applied by an SMTP server that provides
-an intermediate relay function.
-
-In all cases, properly-operating clients supplying correct information
-are preferred to corrections by the SMTP server. In all cases,
-documentation of actions performed by the servers (in trace fields
-and/or header comments) is strongly encouraged.
-
-
-7. Security Considerations
-
-7.1 Mail Security and Spoofing
-
-SMTP mail is inherently insecure in that it is feasible for even fairly
-casual users to negotiate directly with receiving and relaying SMTP
-servers and create messages that will trick a naive recipient into
-believing that they came from somewhere else. Constructing such a
-message so that the "spoofed" behavior cannot be detected by an expert
-is somewhat more difficult, but not sufficiently so as to be a
-deterrent to someone who is determined and knowledgeable. Consequently,
-as knowledge of Internet mail increases, so does the knowledge that
-SMTP mail inherently cannot be authenticated, or integrity checks
-provided, at the transport level. Real mail security lies only in
-end-to-end methods involving the message bodies, such as those which use
-digital signatures (see [RFC-1847] and, e.g., [RFC-PGP] or [RFC-SMIME]).
-
-Various protocol extensions and configuration options that provide
-authentication at the transport level (e.g., from an SMTP client to an
-SMTP server) improve somewhat on the traditional situation described
-above. However, unless they are accompanied by careful handoffs of
-responsibility in a carefully-designed trust environment, they remain
-inherently weaker than end-to-end mechanisms which use digitally signed
-messages rather than depending on the integrity of the transport system.
-
-Efforts to make it more difficult for users to set envelope return path
-and header "From" fields to point to valid addresses other than their
-own are largely misguided: they frustrate legitimate applications in
-which mail is sent by one user on behalf of another or in which error
-(or normal) replies should be directed to a special address. (Systems
-that provide convenient ways for users to alter these fields on a
-per-message basis should attempt to establish a primary and permanent
-mailbox address for the user so that Sender fields within the message
-data can be generated sensibly.)
-
-This specification does not further address the authentication issues
-associated with SMTP other than to advocate that useful functionality
-not be disabled in the hope of providing some small margin of
-protection against an ignorant user who is trying to fake mail.
-
-7.2 "Blind" Copies
-
-Addresses that do not appear in the message headers may appear in the
-RCPT commands to an SMTP server for a number of reasons. The two most
-common involve the use of a mailing address as a "list exploder" (a
-single address that resolves into multiple addresses) and the
-appearance of "blind copies". Especially when more than one RCPT
-command is present, and in order to avoid defeating some of the purpose
-of these mechanisms, SMTP clients and servers SHOULD NOT copy the full
-set of RCPT command arguments into the headers, either as part of trace
-headers or as informational or private-extension headers. Since this
-rule is often violated in practice, and cannot be enforced, sending
-SMTP systems that are aware of "bcc" use MAY find it helpful to send
-each blind copy as a separate message transaction containing only a
-single RCPT command.
-
-There is no inherent relationship between either "reverse" (from MAIL,
-SAML, etc., commands) or "forward" (RCPT) addresses in the SMTP
-transaction ("envelope") and the addresses in the headers. Receiving
-systems SHOULD NOT attempt to deduce such relationships and use them to
-alter the headers of the message for delivery. The popular
-"Apparently-to" header is a violation of this principle as well as a
-common source of unintended information disclosure and SHOULD NOT be
-used.
-
-7.3 VRFY, EXPN, and Security
-
-As discussed in section 3.5, individual sites may want to disable one
-or both VRFY or EXPN for security reasons. As a corollary to the
-above, implementations that permit this MUST NOT appear to have
-verified addresses that are not, in fact, verified. If a site disables
-these commands for security reasons, the SMTP server MUST return a 252
-response, rather than a code that could be confused with successful or
-unsuccessful verification.
-
-Returning a 250 reply code with the address listed in the VRFY command
-after having checked it only for syntax violates this rule. Of course,
-an implementation that "supports" VRFY by always returning 550 whether
-or not the address is valid is equally not in conformance.
-
-Within the last few years, the contents of mailing lists have become
-popular as an address information source for so-called "spammers." The
-use of EXPN to "harvest" addresses has increased as list administrators
-have installed protections against inappropriate uses of the lists
-themselves. Implementations SHOULD still provide support for EXPN, but
-sites SHOULD carefully evaluate the tradeoffs. As authentication
-mechanisms are introduced into SMTP, some sites may choose to make EXPN
-available only to authenticated requestors.
-
-7.4 Information Disclosure in Announcements
-
-There has been an ongoing debate about the tradeoffs between the
-debugging advantages of announcing server type and version (and,
-sometimes, even server domain name) in the greeting response or in
-response to the HELP command and the disadvantages of exposing useful
-information to potential hostile attack. The utility of the debugging
-information is beyond doubt. Those who argue for making it available
-point out that it is far better to actually secure an SMTP server
-rather than hope that trying to conceal known vulnerabilities by hiding
-the server's precise identity will provide more protection. Sites are
-encouraged to evaluate the tradeoff with that issue in mind;
-implementations are strongly encouraged to minimally provide for making
-type and version information available in some way to other network
-hosts.
-
-7.5 Information Disclosure in Trace Fields
-
-In some circumstances, such as when mail originates from within a LAN
-whose hosts are not directly from the public Internet, trace
-("Received") fields produced in conformance with this specification may
-disclose host names and similar information that would not normally be
-available. This ordinarily does not pose a problem, but sites with
-special concerns about name disclosure should be aware of it. Also,
-the optional FOR clause should be supplied with caution or not at all
-when multiple recipients are involved lest it inadvertently disclose
-the identities of "blind copy" recipients to others.
-
-
-7.6 Information Disclosure in Message Forwarding
-
-As discussed in section 3.4, use of the 251 or 551 reply codes to identify
-the replacement address associated with a mailbox may inadvertently
-disclose sensitive information. Sites that are concerned about those
-issues should ensure that they select and configure servers appropriately.
-
-
-7.7 Scope of Operation of SMTP Servers
-
-It is a well-established principle that an SMTP server may refuse to
-accept mail for any operational or technical reason that makes sense to
-the site providing the server. However, cooperation among sites and
-installations makes the Internet possible. If sites take excessive
-advantage of the right to reject traffic, the ubiquity of email
-availability (one of the strengths of the Internet) will be threatened;
-considerable care should be taken and balance maintained if a site
-decides to be selective about the traffic it will accept and process.
-
-In recent years, use of the relay function through arbitrary sites has
-been used as part of hostile efforts to hide the actual origins of
-mail. Some sites have decided to limit the use of the relay function
-to known or identifiable sources, and implementations SHOULD provide
-the capability to perform this type of filtering. When mail is
-rejected for these or other policy reasons, a 550 code SHOULD be used
-in response to EHLO, MAIL, or RCPT as appropriate.
-
-
-8. IANA Considerations
-
-IANA will maintain three registries in support of this specification.
-The first consists of SMTP service extensions with the associated
-keywords, and, as needed, parameters and verbs. As specified in
-section 2.2.2, no entry may be made in this registry that starts in an
-"X". Entries may be made only for service extensions (and associated
-keywords, parameters, or verbs) that are defined in standards-track or
-experimental RFCs specifically approved by the IESG for this purpose.
-
-The second registry consists of "tags" that identify forms of domain
-literals other than those for IPv4 addresses (specified in RFC 821 and
-in this document) and IPv6 addresses (specified in this document).
-Additional literal types require standardization before being used;
-none are anticipated at this time.
-
-The third, established by RFC 821 and renewed by this specification, is
-a registry of link and protocol identifiers to be used with the "via"
-and "with" subclauses of the time stamp ("Received: header") described
-in section 4.4. Link and protocol identifiers in addition to those
-specified in this document may be registered only by standardization or
-by way of an RFC-documented, IESG-approved, Experimental protocol
-extension.
-
-
-9. References
-
-[US-ASCII] American National Standards Institute (formerly United States of
-America Standards Institute), X3.4, 1968, "USA Code for Information
-Interchange". ANSI X3.4-1968 has been replaced by newer versions with
-slight modifications, but the 1968 version remains definitive for the
-Internet.
-
-[RFC-1123] Braden, R., "Requirements for Internet hosts - application and
-support", 10/01/1989
-
-[RFC-POP2] Butler, M., D. Chase, J. Goldberger, J. Postel, J. Reynolds,
-"Post Office Protocol - version 2", RFC 937, 02/01/1985
-
-[RFC-PGP] Callas, J., L. Donnerhacke, H. Finney, R. Thayer, "OpenPGP
-Message Format", RFC 2440, November 1998.
-
-[RFC-IMAP2] Crispin, M., "Interactive Mail Access Protocol - Version 2", RFC
-1176, 08/20/1990.
-
-[RFC-IMAP4] Crispin, M., "Internet Message Access Protocol - Version 4", RFC
-2060, 12/04/1996.
-
-[RFC-822] Crocker, D., "Standard for the Format of ARPA Internet Text
-Messages", RFC 822, Department of Electrical Engineering, University of
-Delaware, August 1982.
-
-[ABNF] Crocker, D., P. Overell, Eds., "Augmented BNF for Syntax
-Specifications: ABNF", RFC 2234, November 1997.
-
-[RFC-ETRN] De Winter, J., "SMTP Service Extension for Remote Message Queue
-Starting", RFC 1985, 08/14/1996.
-
-[IAB-Firewalls] Freed, N, ed., "Behavior of and Requirements for
-Internet Firewalls", Work in progress, draft-iab-firewall-req-02.txt,
-June 2000.
-
-[RFC-MIME] Freed, N., N. Borenstein, "Multipurpose Internet Mail Extensions
-(MIME) Part One: Format of Internet Message Bodies", RFC 2045, 12/02/1996.
-
-[RFC-PIPELINE] N. Freed, A. Cargille, "SMTP Service Extension for Command
-Pipelining", RFC 1854, 10/04/1995.
-
-[RFC-1847] Galvin, J., S. Murphy, S. Crocker, N. Freed. "Security
-Multiparts for MIME: Multipart/Signed and Multipart/Encrypted", RFC 1847,
-October 1995.
-
-[SUBMIT] R. Gellens, J. Klensin, "Message Submission", RFC 2476, December
-1998.
-
-[RFC-X400] S. Hardcastle-Kille, "Mapping between X.400(1988) / ISO 10021
-and RFC 822", RFC 1327, 05/18/1992.
-
-[IPv6AddrSpec] Hinden, R and S. Deering, Eds. "IP Version 6 Addressing
-Architecture", RFC 1884, December 1995.
-
-[RFC-SIZE] J. Klensin, N. Freed, K. Moore, "SMTP Service Extension for
-Message Size Declaration", RFC 1870, 11/06/1995. (STD 10)
-
-[SMTPEXT] J. Klensin, N. Freed, M. Rose, E. Stefferud, D. Crocker, "SMTP
-Service Extensions", RFC-1869, 11/06/1995. (STD 10)
-
-[8BITMIME] J. Klensin, N. Freed, M. Rose, E. Stefferud, D. Crocker, "SMTP
-Service Extension for 8bit-MIMEtransport", RFC 1652, 07/18/1994.
-
-[RFC-PCMAIL] M. Lambert, "PCMAIL: A distributed mail system for personal
-computers", RFC 1056, 06/01/1988.
-
-[RFC-DNS] Mockapetris, P., "Domain names - implementation and
-specification", RFC 1035 and P. Mockapetris, "Domain names - concepts and
-facilities", RFC 1034. (STD 13)
-
-[RFC-INTLHDR] Moore, K., "MIME (Multipurpose Internet Mail Extensions) Part
-Three: Message Header Extensions for Non-ASCII Text", RFC 2047, 12/02/1996.
-
-[RFC-NOTARY1] Moore, K., "SMTP Service Extension for Delivery Status
-Notifications", RFC 1891, 01/15/1996.
-
-[RFC-NOTARY2] Moore, K., G. Vaudreuil, "An Extensible Message Format for
-Delivery Status Notifications", RFC 1894, 01/15/1996.
-
-[RFC-POP3] Myers, J., M. Rose, "Post Office Protocol - Version 3", RFC 1930,
-5/14/96 (Std 53).
-
-[RFC-974] Partridge, C., "Mail routing and the domain system", RFC 974,
-01/01/1986
-
-[RFC-1047] Partridge, C., "Duplicate messages and SMTP", RFC 1047,
-02/01/1988.
-
-[TCP] Postel, J., ed., "Transmission Control Protocol - DARPA Internet
-Program Protocol Specification", RFC 793, USC/Information Sciences
-Institute, NTIS AD Number A111091, September 1981.
-
-[RFC-821] Postel, J., "Simple Mail Transfer Protocol", RFC 821, August 1,
-1982.
-
-[RFC-SMIME] Ramsdell, B., Ed., "S/MIME Version 3 Message Specification", RFC
-2633, June 1999.
-
-[MSGFMT] Resnick, P., Work in progress, draft-ietf-drums-msg-fmt-08.txt,
-January 2000.
-
-[RFC-BDAT] Vaudreuil, G., "SMTP Service Extensions for Transmission of Large
-and Binary MIME Messages", RFC 1830, 08/16/1995.
-
-[RFC-REPLY] Vaudreuil, G., "Enhanced Mail System Status Codes", RFC 1893,
-01/15/1996.
-
-
-10. Editor's Address
-
-John C. Klensin
-AT&T Laboratories
-Tel: 617-574-3076
-email: klensin@research.att.com
-
-
-
-11. Acknowledgments
-
-Many people worked long and hard on the many iterations of this document.
-There was wide-ranging debate on the mailing list about many technical
-issues, and many contributors helped form the wording in this
-specification. The hundreds of participants in the many discussions since
-RFC 821 was produced are too numerous to mention, but they all helped this
-document become what it is.
-
-
-
-
- APPENDICES
-
-A. TCP Transport Service
-
-The TCP connection supports the transmission of 8-bit bytes. The SMTP
-data is 7-bit ASCII characters. Each character is transmitted as an
-8-bit byte with the high-order bit cleared to zero. Service extensions
-may modify this rule to permit transmission of full 8-bit data bytes as
-part of the message body, but not in SMTP commands or responses.
-
-
-B. Generating SMTP Commands from RFC 822 Headers
-
-Some systems use RFC 822 headers (only) in a mail submission protocol,
-or otherwise generate SMTP commands from RFC 822 headers when such a
-message is handed to an MTA from a UA. While the MTA-UA protocol is a
-private matter, not covered by any Internet Standard, there are
-problems with this approach. For example, there have been repeated
-problems with proper handling of "bcc" copies and redistribution lists
-when information that conceptually belongs to a mail envelopes is not
-separated early in processing from header information (and kept
-separate).
-
-It is recommended that the UA provide its initial MTA with an envelope
-separate from the message itself. However, if the envelope is not
-supplied, SMTP commands SHOULD be generated as follows:
-
-1. Each recipient address from a TO, CC, or BCC header field SHOULD be
- copied to a RCPT command (generating multiple message copies if that
- is required for queuing or delivery). This includes any addresses
- listed in a RFC 822 "group". Any BCC fields SHOULD then be removed
- from the headers. Once this process is completed, the remaining
- headers SHOULD be checked to verify that at least one To:, Cc:, or
- Bcc: header remains. If none do, then a bcc: header with no
- additional information SHOULD be inserted as specified in [MSGFMT].
-
-2. The return address in the MAIL command SHOULD, if possible, be
- derived from the system's identity for the submitting (local) user,
- and the "From:" header field otherwise. If there is a system
- identity available, it SHOULD also be copied to the Sender header
- field if it is different from the address in the From header field.
- (Any Sender field that was already there SHOULD be removed.)
- Systems may provide a way for submitters to override the envelope
- return address, but may want to restrict its use to privileged
- users. This will not prevent mail forgery, but may lessen its
- incidence; see section 7.1.
-
-When an MTA is being used in this way, it bears responsibility for
-ensuring that the message being transmitted is valid. The mechanisms
-for checking that validity, and for handling (or returning) messages
-that are not valid at the time of arrival, are part of the MUA-MTA
-interface and not covered by this specification.
-
-A submission protocol based on Standard RFC 822 information alone MUST
-NOT be used to gateway a message from a foreign (non-SMTP) mail system
-into an SMTP environment. Additional information to construct an
-envelope must come from some source in the other environment, whether
-supplemental headers or the foreign system's envelope.
-
-Attempts to gateway messages using only their header "to" and "cc"
-fields have repeatedly caused mail loops and other behavior adverse to
-the proper functioning of the Internet mail environment. These
-problems have been especially common when the message originates from
-an Internet mailing list and is distributed into the foreign
-environment using envelope information. When these messages are then
-processed by a header-only remailer, loops back to the Internet
-environment (and the mailing list) are almost inevitable.
-
-
-C. Source Routes
-
-The <reverse-path> is a reverse source routing list of hosts and a
-source mailbox. The first host in the <reverse-path> SHOULD be the
-host sending the MAIL command. Similarly, the <forward-path> may be a
-source routing lists of hosts and a destination mailbox. However, in
-general, the <forward-path> SHOULD contain only a mailbox and domain
-name, relying on the domain name system to supply routing information
-if required. The use of source routes is deprecated; while servers
-MUST be prepared to receive and handle them as discussed in section 3.3
-and F.2, clients SHOULD NOT transmit them.
-
-For relay purposes, the forward-path may be a source route of the form
-"@ONE,@TWO:JOE@THREE", where ONE, TWO, and THREE MUST BE
-fully-qualified domain names. This form is used to emphasize the
-distinction between an address and a route. The mailbox is an absolute
-address, and the route is information about how to get there. The two
-concepts should not be confused.
-
-If source routes are used, RFC 821 and the text below should be
-consulted for the mechanisms for constructing and updating the forward-
-and reverse-paths.
-
-The SMTP server transforms the command arguments by moving its own
-identifier (its domain name or that of any domain for which it is
-acting as a mail exchanger), if it appears, from the forward-path to
-the beginning of the reverse-path.
-
-Notice that the forward-path and reverse-path appear in the SMTP
-commands and replies, but not necessarily in the message. That is,
-there is no need for these paths and especially this syntax to appear
-in the "To:" , "From:", "CC:", etc. fields of the message header.
-Conversely, SMTP servers MUST NOT derive final message delivery
-information from message header fields.
-
-When the list of hosts is present, it is a "reverse" source route and
-indicates that the mail was relayed through each host on the list (the
-first host in the list was the most recent relay). This list is used
-as a source route to return non-delivery notices to the sender. As each
-relay host adds itself to the beginning of the list, it MUST use its
-name as known in the transport environment to which it is relaying the
-mail rather than that of the transport environment from which the mail
-came (if they are different).
-
-
-D. Scenarios
-
-This section presents complete scenarios of several types of SMTP
-sessions. In the examples, "C:" indicates what is said by the SMTP
-client, and "S:" indicates what is said by the SMTP server.
-
-D.1 A Typical SMTP Transaction Scenario
-
-This SMTP example shows mail sent by Smith at host bar.com, to Jones,
-Green, and Brown at host foo.com. Here we assume that host bar.com
-contacts host foo.com directly. The mail is accepted for Jones and
-Brown. Green does not have a mailbox at host foo.com.
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: MAIL FROM:<Smith@bar.com>
- S: 250 OK
- C: RCPT TO:<Jones@foo.com>
- S: 250 OK
- C: RCPT TO:<Green@foo.com>
- S: 550 No such user here
- C: RCPT TO:<Brown@foo.com>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Blah blah blah...
- C: ...etc. etc. etc.
- C: .
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-D.2 Aborted SMTP Transaction Scenario
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: MAIL FROM:<Smith@bar.com>
- S: 250 OK
- C: RCPT TO:<Jones@foo.com>
- S: 250 OK
- C: RCPT TO:<Green@foo.com>
- S: 550 No such user here
- C: RSET
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-D.3 Relayed Mail Scenario
-
-Step 1 -- Source Host to Relay Host
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: MAIL FROM:<JQP@bar.com>
- S: 250 OK
- C: RCPT TO:<@foo.com:Jones@XYZ.COM>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Date: Thu, 21 May 1998 05:33:29 -0700
- C: From: John Q. Public <JQP@bar.com>
- C: Subject: The Next Meeting of the Board
- C: To: Jones@xyz.com
- C:
- C: Bill:
- C: The next meeting of the board of directors will be
- C: on Tuesday.
- C: John.
- C: .
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-Step 2 -- Relay Host to Destination Host
-
- S: 220 xyz.com Simple Mail Transfer Service Ready
- C: EHLO foo.com
- S: 250 xyz.com is on the air
- C: MAIL FROM:<@foo.com:JQP@bar.com>
- S: 250 OK
- C: RCPT TO:<Jones@XYZ.COM>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Received: from bar.com by foo.com ; Thu, 21 May 1998
- C: 05:33:29 -0700
- C: Date: Thu, 21 May 1998 05:33:22 -0700
- C: From: John Q. Public <JQP@bar.com>
- C: Subject: The Next Meeting of the Board
- C: To: Jones@xyz.com
- C:
- C: Bill:
- C: The next meeting of the board of directors will be
- C: on Tuesday.
- C: John.
- C: .
- S: 250 OK
-
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-D.4 Verifying and Sending Scenario
-
- S: 220 foo.com Simple Mail Transfer Service Ready
- C: EHLO bar.com
- S: 250-foo.com greets bar.com
- S: 250-8BITMIME
- S: 250-SIZE
- S: 250-DSN
- S: 250 HELP
- C: VRFY Crispin
- S: 250 Mark Crispin <Admin.MRC@foo.com>
- C: SEND FROM:<EAK@bar.com>
- S: 250 OK
- C: RCPT TO:<Admin.MRC@foo.com>
- S: 250 OK
- C: DATA
- S: 354 Start mail input; end with <CRLF>.<CRLF>
- C: Blah blah blah...
- C: ...etc. etc. etc.
- C: .
- S: 250 OK
- C: QUIT
- S: 221 foo.com Service closing transmission channel
-
-
-E. Other Gateway Issues
-
-In general, gateways between the Internet and other mail systems SHOULD
-attempt to preserve any layering semantics across the boundaries
-between the two mail systems involved. Gateway-translation approaches
-that attempt to take shortcuts by mapping, (such as envelope
-information from one system to the message headers or body of another)
-have generally proven to be inadequate in important ways. Systems
-translating between environments that do not support both envelopes and
-headers and Internet mail must be written with the understanding that
-some information loss is almost inevitable.
-
-
-F. Deprecated Features of RFC 821
-
-A few features of RFC 821 have proven to be problematic and SHOULD NOT
-be used in Internet mail.
-
-F.1 TURN
-
-This command, described in RFC 821, raises important security issues
-since, in the absence of strong authentication of the host requesting
-that the client and server switch roles, it can easily be used to
-divert mail from its correct destination. Its use is deprecated; SMTP
-systems SHOULD NOT use it unless the server can authenticate the client.
-
-F.2 Source Routing
-
-RFC 821 utilized the concept of explicit source routing to get mail
-from one host to another via a series of relays. The requirement to
-utilize source routes in regular mail traffic was eliminated by the
-introduction of the domain name system "MX" record and the last
-significant justification for them was eliminated by the introduction,
-in RFC 1123, of a clear requirement that addresses following an "@"
-must all be fully-qualified domain names. Consequently, the only
-remaining justifications for the use of source routes are support for
-very old SMTP clients or MUAs and in mail system debugging. They can,
-however, still be useful in the latter circumstance and for routing
-mail around serious, but temporary, problems such as problems with the
-relevant DNS records.
-
-SMTP servers MUST continue to accept source route syntax as specified
-in the main body of this document and in RFC 1123. They MAY, if
-necessary, ignore the routes and utilize only the target domain in the
-address. If they do utilize the source route, the message MUST be sent
-to the first domain shown in the address. In particular, a server MUST
-NOT guess at shortcuts within the source route.
-
-Clients SHOULD NOT utilize explicit source routing except under unusual
-circumstances, such as debugging or potentially relaying around
-firewall or mail system configuration errors.
-
-F.3 HELO
-
-As discussed in sections 3.1 and 4.1.1, EHLO is strongly preferred to
-HELO when the server will accept the former. Servers must continue to
-accept and process HELO in order to support older clients.
-
-F.4 #-literals
-
-RFC 821 provided for specifying an Internet address as a decimal
-integer host number prefixed by a pound sign, "#". In practice, that
-form has been obsolete since the introduction of TCP/IP. It is
-deprecated and MUST NOT be used.
-
-F.5 Dates and Years
-
-When dates are inserted into messages by SMTP clients or servers (e.g.,
-in trace fields), four-digit years MUST BE used. Two-digit years are
-deprecated; three-digit years were never permitted in the Internet mail
-system.
-
-F.6 Sending versus Mailing
-
-In addition to specifying a mechanism for delivering messages to user's
-mailboxes, RFC 821 provided additional, optional, commands to deliver
-messages directly to the user's terminal screen. These commands (SEND,
-SAML, SOML) were rarely implemented, and changes in workstation
-technology and the introduction of other protocols may have rendered
-them obsolete even where they are implemented.
-
-Clients SHOULD NOT provide SEND, SAML, or SOML as services. Servers
-MAY implement them. If they are implemented by servers, the
-implementation model specified in RFC 821 MUST be used and the command
-names MUST be published in the response to the EHLO command.
-
-
-X. Change Summary and Loose Ends (Temporary)
-
-X.1 Change summary
-
-X.1.1 Substantive changes between draft-ietf-drums-smtpupd-00.txt and
-draft-ietf-drums-smtpupd-01.txt
-
-(i) Slightly clarified the discussions of rejection and failure of VRFY
-requests and the associated response codes.
-
-(ii) Slightly clarified the discussion of deferred address validation.
-
-(iii) Removed the IPCE terminology and modified the text in section
-4.1.1.2 to explicitly introduce the "mail gateway" terminology and to
-begin to distinguish a mail gateway from a conventional relay.
-
-(iv) Explicitly noted that SMTP clients for things like POP and IMAP
-may send everything to a single relay for further processing, rather
-than resolving final domain names.
-
-(v) Tightened the RSET discussion.
-
-(vi) Deprecation of 251 only for RCPT (still ok for VRFY)
-
-X.1.2. Substantive changes between draft-ietf-drums-smtpupd-01.txt and
-draft-ietf-drums-smtpupd-02.txt.
-
-Incorporated additional RFC 1123 material; reorganized several sections
-for clarity. Added definitions and other previous "loose end" material.
-
-X.1.3. Substantive changes between draft-ietf-drums-smtpupd-02.txt and
-draft-ietf-drums-smtpupd-03.txt.
-
-(i) Eliminated a number of placeholders and tightened some of the
-definitions in section 2. Added a few new placeholders for consistency
-checking against other documents.
-
-(ii) Removed the state diagrams, per direction at IETF Montreal.
-
-(iii) Added new section 6.3, an attempt to summarize WG discussions on
-the "posting" versus "delivery" versus "relay" functions of SMTP and on
-whether "fixups" are appropriate in different cases.
-
-(iv) Inserted section 6.1, a minor rewrite of section 5.3.3 of RFC1123.
-
-(v) Added new text to 3.5.5 to discuss the spammer - EXPN relationship.
-
-(vi) The "ASCII requirement" in 4.1.1.4 has been tightened somewhat.
-
-(v) The remaining miscellaneous changes agreed to in Montreal have been
-incorporated except as noted below.
-
-X.1.4. Substantive changes between draft-ietf-drums-smtpupd-03.txt and
-draft-ietf-drums-smtpupd-04.txt.
-
-Many small changes have been made between these two versions; the list
-that follows is not exhaustive.
-
-(i) To clarify some of the text, definitions have been introduced to
-distinguish among originating, delivery, relay, and gateway SMTP
-systems.
-
-(ii) The role of LF-terminated lines has been clarified.
-
-(iii) Several changes have been made to clarify the principle that, no
-matter what originating and final delivery systems might do, relay
-systems are not permitted to tamper with message content, even to "fix"
-headers that are determined to be invalid. If they deem message
-content to be seriously unacceptable, they are encouraged to reject the
-messages in preference to trying to fix them up, but, in general, the
-theme is "don't look/ don't tell".
-
-(iv) A few more definitions have been added to the terminology section,
-and the separate glossary has been eliminated.
-
-(v) I have taken a shot at text to address some of the controversies
-that have raged on the WG mailing list (e.g., sections 7.4 and 7.5).
-Since there was no consensus on most of those topics, I expect that the
-inserted text will satisfy no one except, perhaps, for agreement that
-saying nothing would have been worse. As a mechanism for moving
-forward, the text in these controversial areas that now appears will be
-considered "base"; alterations will be made only if clear consensus
-emerges.
-
-(vi) Per discussion in Los Angeles, source routes have been further
-deprecated.
-
-(vii) Some of the VRFY/EXPN materials have been moved to "security
-considerations", where they appear to belong, some text has been added,
-and the conformance statements adjusted to reflect what I perceive to
-be WG consensus.
-
-(viii) New MX resolution material has been added to section 5. While
-most of this material is from RFC974, the rules have been further
-tightened to reflect current practice and experience (974 is written in
-a somewhat speculative fashion for a standard). In particular, the
-behavior of trying the target host's A RR when MXs existed but all of
-them were eliminated is now prohibited, which seems necessary if
-another of other ideas being recommended or considered are to be
-feasible.
-
-X.1.5. Substantive changes between draft-ietf-drums-smtpupd-04.txt and
-draft-ietf-drums-smtpupd-05.txt.
-
-(i) All normative references to RFC 1123 have been removed from the
-main body of the text (some still appear in the appendices where they
-will remain).
-
-(ii) Section 3.5 has been renamed slightly to distinguish between
-"debugging of SMTP implementations" and "debugging of addresses".
-Better terminology would be welcome.
-
-(iii) Error conditions resulting from the DATA command have been
-clarified.
-
-(iv) Section 4.2 (SMTP replies) has been revised and tightened to
-reflect reality and recent discussion on the list.
-
-(v) Appendix E has been revised a bit and moved into section 4.2.1.
-Given the importance of the "check only first digit" rule, it has to be
-there.
-
-(vi) Added new text for "no SMTP service supported" to sections 3.1,
-4.2.2, 4.2.3, and 4.3.2. As noted in 3.1, I'd rather add 521 (which
-would work perfectly with the model) rather than overloading 554.
-
-(vii) The Return-path language in section 4.4 has been cleaned up a bit.
-
-(viii) Tightened the "postmaster" language in 4.5.1, requiring a small
-change to 4.1.1.3.
-
-(ix) I have unilaterally (with a little help from my friends),
-increased some of the size limits. 64 was much too short for a domain
-name, and the DNS limit of 255 (?) has now been inserted. That leaves
-the return path much too short, but I haven't fixed it (maybe that will
-cause us to get rid of them). We still have a 64 character limit on
-the local-part, which is also *much* too short. Votes for 128 or longer
-limits accepted. See X.1.6(I)
-
-(x) The text on the "recipients buffer" has been rewritten so that (I
-hope) it makes sense and gives some explicit guidance for how clients
-and servers should proceed if limits are imposed.
-
-X.1.6. Substantive changes between draft-ietf-drums-smtpupd-05.txt and
-draft-ietf-drums-smtpupd-06.txt.
-
-Most of the changes in this revision have been editorial rather than
-substantive. Major substantive changes include:
-
-(i) The language about maximum sizes of SMTP command lines has been
-reworked, per WG mailing list discussion.
-
-(ii) Several instances of "SHOULD" have been promoted to "MUST" when
-the reasons for the weaker rule seemed to have disappeared. In
-particular, the requirement that an SMTP implementation support
-timeouts has become a MUST. Also, conformance to this specification
-requires support of EHLO. Older systems should claim conformance to
-the [to-be-historical] 821, not this specification.
-
-X.1.7. Substantive changes between draft-ietf-drums-smtpupd-06.txt and
-draft-ietf-drums-smtpupd-07.txt.
-
-(i) Removed "implied RSET" text associated with QUIT, as specified at
-the December 1997 IETF.
-
-(ii) Required that servers support EHLO, as specified at the December
-1997 IETF.
-
-X.1.8. Substantive changes between draft-ietf-drums-smtpupd-07.txt and
-draft-ietf-drums-smtpupd-08.txt.
-
-This version involves mostly editorial work and cleanup of loose ends.
-
-(i) New 7.5 added (old one renumbered) to discuss info disclosure
-through Received fields.
-
-(ii) Some character set and minor syntax issues clarified.
-
-(iii) Material on code 571 added (thought this had been done long ago;
-slipped through the cracks)
-
-(iv) Many clarifications added as the result of list discussions and
-suggestions.
-
-(v) Error code presentation has been restructured.
-
-(vi) ABNF conversion done
-
-(vii) IPv6 address format inserted per RFC 1884, since we could not get
-clear agreement on an alternative.
-
-(viii) Trivial, silly, examples removed. Others not yet renumbered.
-
-(ix) 3.5.2 and 4.1.1 altered slightly per Eric Allman's notes. Eric
-may not like the way I've done either of these change very much: the
-first now makes the distinction between returning an address and
-returning other stuff (which was permitted by -06, but the text wasn't
-as clear as it should have been): if it looks like an address, it needs
-to be an address. Similarly, with 4.1.1, Eric wanted to explicitly
-permit/legitimize "DATA <SP> <CRLF>". I see several disadvantages to
-doing that, so have inserted language that encourages receivers to
-tolerate trailing white space, which may have the same practical effect.
-
-
-X.1.9. Substantive changes between draft-ietf-drums-smtpupd-08.txt and
-draft-ietf-drums-smtpupd-09.txt.
-
-The first ten of these reflect, in order, minuted items from the
-Chicago IETF (IETF 42).
-
-(i) Clarification of "MUST", etc., in the context of this document
-(section 2.3).
-
-(ii) Altered VRFY text to make implementation a SHOULD (section 3.5.1)
-and removed VRFY from the mandatory to implement list (section 4.5.1),
-per 42nd IETF (Chicago).
-
-(iii) Clarified that exploders are expected to not purge sender
-addresses from lists (section 3.10). Note that the Chicago conclusion
-was that this should be a "MUST". I could not figure out how to do
-that without absolutely prohibiting removing addresses to prevent
-loops, to guard against spammers, or for similar legitimate purposes.
-So I have written this as a "SHOULD", with additional "strongly
-discouraged" words. If someone still wants a MUST, suggest text.
-
-(iv) Altered text to permit clients that sometimes, or even always,
-initiate sessions with HELO, rather than EHLO, to be fully-conforming
-(section 3.2). [[ Editor's note: I continue to believe that a client
-that does not have any service extension support, even to the extent of
-being able to send EHLO and parse the response without doing anything
-about it, should not be considered fully-conforming to this spec (as
-distinct from 821). Consequently, the new text in 3.2 stops well short
-of encouraging clients that don't need service extensions from
-preferentially using HELO, and the text in 2.2.1 (which specifies that
-the extension mechanisms must be supported) has not been changed.
-
-(v) Per Chicago discussions, the text requiring that QUIT be sent has
-not been changed. The text in 4.1.1.10 requiring that the server wait
-for QUIT has been changed to a SHOULD. However, the text in 4.1.1.5,
-prohibiting close on receipt of RSET and that elsewhere prohibiting
-close as a normal response, has not been changed.
-
-(vi) Text has been inserted in 4.1.1 and the text in 4.3.2 altered
-slightly to clarify the handling of parameters to RSET, DATA, and QUIT
-and to 4.1.1.9 specify semantics for parameters to NOOP. I have
-followed the minutes on this although I personally agree with kre's
-mailing list comments that the "servers SHOULD reject" decision leads
-to silly states. I recommend that the WG review this.
-
-(vii) Per discussion in Chicago, no substantive change has been made to
-the specification about underscore characters in domain names (section
-4.1.2). However, the text has been altered to more accurately reflect
-discussion on the mailing list and the source of the requirement.
-
-(viii) Per discussion in Chicago, no change has been made to the
-preference for local time in Received headers.
-
-(ix) Per discussion in Chicago, code 571 has been removed and policy
-rejection is now reflected i a 550 code (section 3.7 and the response
-code lists).
-
-(x) Per discussion in Chicago, no change has been made to the
-specification of use of raw CR or LF.
-
-(xi) In section 4.3, the text has been changed, per comments from Dan
-Bernstein and others, to require that clients be able to handle replies
-that do not contain text strings. A few other places patched to match.
-
-(xii) In sections 4.1.1.1 and 8, the placeholders have been removed.
-
-(xiii) Per discussion on the mailing list (and specifically James
-Berriman's concerns), the text has been clarified (sections 4.1.1.2 and
-4.1.4) to prohibit MAIL unless no mail transaction is open. This is a
-MUST NOT prohibition -- SHOULD NOT makes no sense if this is the
-direction we are going to go. 503 has also been added to the list of
-valid responses for "MAIL" in 4.3.1 - it can't be issued before
-EHLO/HELO in any event. While it is clear that something should be
-said, this may not be the desired outcome (I selected it because it was
-conservative and easy given the text that was there already); the WG
-should check that the text is as intended.
-
-(xiv) Per discussion on the mailing list, a new section 4.5.5 has been
-added to describe null return paths and their handling (forward pointer
-from 3.7). The text in 4.5.5 is substantially that suggested by
-Norbert Bollow. As with (xiii), there is now clear text, but it may
-not be what the WG desires. Please check.
-
-(xv) "all addresses" substituted for "each...in turn" in 3.10.2.
-
-(xvi) Requirement for "<" and ">" around paths clarified in section 3.3
-(syntax productions were clear and correct, but not this overview
-material).
-
-(xvii) Clarified text in 3.3 to permit post-DATA bounces on policy
-matters.
-
-
-X.1.10. Substantive changes between draft-ietf-drums-smtpupd-09.txt and
-draft-ietf-drums-smtpupd-10.txt.
-
-(i) A large series of typos, most of them caught by Philip Hazel,
-corrected.
-
-(ii) Residual problems with references to mailboxes, forward, and
-reverse paths in 4.1.1.2 and 4.1.1.3 corrected and some text, I hope,
-clarified.
-
-(iii) Text added to 4.2.5 to talk about 5yz errors after DATA. This
-text should be checked carefully -- it is a proposal and may or may not
-reflect WG consensus.
-
-(iv) Upper bound on "seconds" has been changed to 60 (not 61), per list
-discussion. Years are still four-digits and will stay that way unless
-the list discussion converges on something else. The increase to 60
-seconds includes an explicit note about leap seconds.
-
-(v) Text has been inserted to reflect the Orlando consensus about
-"QUIT", i.e., the client MUST send a QUIT command and SHOULD wait for
-the results before closing the connection. Servers are still not
-permitted to close without receiving a QUIT and sending a 221 response
-(except, of course, under the usual "unavoidable circumstances", in
-which case they should get off a 451 if that is feasible).
-
-(vi) The EHLO response specification has been changed back to reflect
-non-advertisement of VRFY and some text implying that VRFY was optional
-to support has been removed (WG consensus seemed to be moving in that
-direction at one point, and the editor reacted prematurely). This
-makes the text compatible with RFC1869 and restores VRFY to its RFC1123
-status.
-
-(vii) The text in section 5 has been clarified with regard to what a
-relay that receives a message because of its designation as an MX can
-do and 3.7 has been slightly modified to point to it.
-
-(viii) New text has been added to 3.7 to clarify the use of "SMTP
-server" relays in "dumb" originating clients.
-
-(viii) Small wording changes inserted into 4.1.4 (e.g., insertion of ",
-if possible," into the first sentence of the fifth paragraph to
-eliminate the apparent conflict with the second sentence).
-
-
-X.1.11. Substantive changes between draft-ietf-drums-smtpupd-10.txt and
-draft-ietf-drums-smtpupd-11.txt. Note that the most significant change
-is the insertion of RFC 2234-conforming ABNF throughout. That material
-should be checked carefully.
-
-(i) Dumb client text revised again, as discussed on the list and using
-the text agreed to there. New text simply notes that the submission
-issues are outside the scope of the spec/standard.
-
-(ii) ABNF updated and replaced (thanks, Chris). Some possible issues/
-questions:
-
- (ii.1) RFC 1869 permits a NUL octet in the greeting (ehlo-greet in
- the syntax). Chris proposes to remove that capability on the
- grounds that it has no obvious value and will probably not
- work with many servers anyway.
-
- (ii.2) Previous drafts have assumed that the tag to indicate what
- is coming in a non-IPv4 address literal will be separated by
- the address itself by a space. Chris proposes to change it to
- a colon, on the theory that this will cause fewer parsing
- problems with existing MTAs and MUAs.
-
- (ii.3) The full IPv6 address syntax has been transposed from
- the prose of RFC2373 into ABNF. It can be left out and 2373
- cited if the WG prefers.
-
-(iii) Added firewall clarification to section 2.3.8.
-
-(iv) Small clarifications and tightenings in several sections, notably
-the end of 3.7, 3.8.3, 4.5.4.2, 7.2, clarifying editorial changes
-elsewhere, slightly improved crossreferences, and some redundant
-sections stripped out. Many thanks to Graham Klyne for extensive
-and specific comments in these areas.
-
-(v) The "TO:" in "RCPT TO:" is part of an argument, not part of the
-command. Similarly for "FROM:" in "MAIL FROM:". All of these are
-believed to be fixed.
-
-(vi)Section 2.3.5 has been changed to make it clear that restrictions
-on the syntax and character set of domain names are part of the mail
-system, not an intrinsic limit of the DNS itself. This, and some
-other text, are not going to be popular with those working to
-internationalize the DNS, but I believe it is important to lay down a
-clear baseline and then start making modifications or extensions,
-rather than trying to delude ourselves with a DNS equivalent of "just
-send 8".
-
-(vii) Clarified the EHLO-> HELO fallback requirement in 3.2. I think
-this is consistent with what the WG wanted; if not, I'm sure I'll hear
-about it.
-
-
-X.1.12. Substantive changes between draft-ietf-drums-smtpupd-11.txt and
-draft-ietf-drums-smtpupd-12.txt.
-
-(i) DATA failure text in section 3.3 has been corrected and clarified.
-
-(ii) "Daytime" and supporting productions removed and replaced by a
-reference to 822bis. The new text prohibits use of the "obs-" forms in
-822bis, which have been deprecated in SMTP since RFC1123. Note that
-this change creates what I think is the first substantive normative
-reference between the two documents in order to gain consistency. We
-had earlier tried to not bind the two of them together in this way, but
-probably it is worth it.
-
-(iii) Conditions under which mail to Postmaster may be dropped or bounced
-have been clarified in section 4.5.1.
-
-(iv) Revised the treatment of 251 and 551. Both are now permitted (again),
-but the text has been revised to clarify the restritions and clarifications
-on using them. See section 3.4.
-
-(v) A lot of small editorial improvements have been made, including
-changing of some section titles for clarity and removal of a few more
-redundant paragraphs.
-
-
-Z. Full Copyright Statement
-
-Copyright (C) The Internet Society (1998-2000). All Rights Reserved.
-
-This document and translations of it may be copied and furnished to
-others, and derivative works that comment on or otherwise explain it or
-assist in its implementation may be prepared, copied, published and
-distributed, in whole or in part, without restriction of any kind,
-provided that the above copyright notice and this paragraph are
-included on all such copies and derivative works. However, this
-document itself may not be modified in any way, such as by removing the
-copyright notice or references to the Internet Society or other
-Internet organizations, except as needed for the purpose of developing
-Internet standards in which case the procedures for copyrights defined
-in the Internet Standards process must be followed, or as required to
-translate it into languages other than English.
-
-The limited permissions granted above are perpetual and will not be
-revoked by the Internet Society or its successors or assigns.
-
-This document and the information contained herein is provided on an
-"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
-TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
-NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL
-NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR
-FITNESS FOR A PARTICULAR PURPOSE.
-
-Expires December 2000.
diff --git a/Documentation/en/I-D/draft-ietf-ngtrans-ipv6-smtp-requirement-00.txt b/Documentation/en/I-D/draft-ietf-ngtrans-ipv6-smtp-requirement-00.txt
deleted file mode 100644
index 9aef36f2..00000000
--- a/Documentation/en/I-D/draft-ietf-ngtrans-ipv6-smtp-requirement-00.txt
+++ /dev/null
@@ -1,354 +0,0 @@
-Internet Engineering Task Force Motonori Nakamura
-INTERNET-DRAFT Kyoto University
-Expires: October 11, 2001 Jun-ichiro itojun Hagino
- IIJ Research Laboratory
- April 11, 2001
-
-
- IPv6 SMTP operational requirements
- draft-ietf-ngtrans-ipv6-smtp-requirement-00.txt
-
-Status of this Memo
-
-
-This document is an Internet-Draft and is in full conformance with all
-provisions of Section 10 of RFC2026.
-
-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.''
-
- The list of current Internet-Drafts can be accessed at
- http://www.ietf.org/1id-abstracts.html
-
- The list of Internet-Draft Shadow Directories can be accessed at
- http://www.ietf.org/shadow.html.
-
-Distribution of this memo is unlimited.
-
-The internet-draft will expire in 6 months. The date of expiration will
-be October 11, 2001.
-
-
-Abstract
-
-The memo lists operational requirements for IPv6 SMTP, and IPv6-capable
-MX DNS records. As we deploy IPv6 SMTP servers, it became apparent that
-we need certain configuration in IPv6-capable MX DNS record, for stable
-dual-stack (IPv4 and IPv6) SMTP operations. The document tries to
-clarify the problems we have in transition period between IPv4 SMTP and
-IPv6 SMTP, and operational requirements for stable IPv4/v6 SMTP
-operation.
-
-The document does not try to define any new protocol.
-
-
-1. Summary of IPv4 MX operation
-
-For reference purpose, the section outlines how mail message delivery is
-performed in IPv4-only environment [Partridge, 1986] .
-
-
-
-NAKAMURA, HAGINO Expires: October 11, 2001 [Page 1]
-
-
-DRAFT IPv6 SMTP operational requirements April 2001
-
-In IPv4 SMTP operation, we register MX records like below, for
-"sample.org." domain:
-
- sample.org. IN MX 1 mx1.sample.org.
- IN MX 10 mx10.sample.org.
- mx1.sample.org. IN A 1.0.0.1
- mx10.sample.org. IN A 1.0.0.2
-
-When an MTA delivers a message to a particular destination (say it is to
-foo@sample.org), the MTA would send DNS queries to lookup DNS database
-in the following order:
-
-o Lookup MX record for "sample.org.".
-
- o If an MX record is returned, try to lookup A record on the righthand
- side of the MX record.
-
- o If a CNAME record is returned, try to chase the CNAME chain.
- Eventually we will reach some A record.
-
- o If MX lookup failed with NO_DATA, it means that there is no MX
- record but there can be other record for "sample.org.". Lookup A
- record for "sample.org.".
-
- o If MX lookup failed with HOST_NOT_FOUND, it means that there is no
- record at all for "sample.org.". This means a delivery failure.
-
-
-2. MX records and IPv6 SMTP operation
-
-The following sections talk about how to make IPv4 SMTP and IPv6 SMTP
-coexist, under dual-stack environment during the transition period
-between IPv4 to IPv6. In the future, when we have completely migrated
-to IPv6-only network, we can forget about IPv4/v6 SMTP interaction.
-
-As IPv6 DNS lookup RFCs [Thomson, 1995; Crawford, 2000] use IN class for
-both IPv4 and IPv6, we will use IN MX records for both IPv4 and IPv6.
-
-For simplicity, the document lists DNS records for IPv6 address as AAAA
-records, not as A6 records [Crawford, 2000] . In reality, we can use a
-chain of A6 records, instead of AAAA records.
-
-There are couple of technologies defined for IPv4 and IPv6 transition.
-The document concentrates on issues with dual stack environment.
-Translators do not need special consideration from SMTP point of view;
-If we have SMTP traffic from IPv6 MTA to IPv4 MTA over an IPv6-to-IPv4
-translator, the traffic will be considered as a normal IPv4 SMTP
-traffic, from the IPv4 MTA point of view. We may, however, need some
-consideration on translators for protocols like IDENT [StJohns, 1993] .
-
-
-
-
-
-NAKAMURA, HAGINO Expires: October 11, 2001 [Page 2]
-
-
-DRAFT IPv6 SMTP operational requirements April 2001
-
-3. SMTP sender algorithm in dual stack environment
-
-When we lookup MX records for the domain in IPv4/v6 dual stack
-environment, we will see records like below:
-
- sample.org. IN MX 1 mx1.sample.org.
- IN MX 10 mx10.sample.org.
- mx1.sample.org. IN A 1.0.0.1 ; IPv4/v6 dual stack
- IN AAAA 3ffe:501:ffff::1
- mx10.sample.org. IN AAAA 3ffe:501:ffff::2 ; IPv6 only
-
-For single MX record, we have many possibility for the final lookup
-result, including: (a) single, or multiple A records for IPv4
-destination, (b) single, or multiple AAAA records for IPv6 destination,
-(c) mixture of A and AAAA records. As we can define multiple MX records
-with different preference value, we also need to go through multiple
-addresses based on multiple MXes. We need to cope with domains without
-MX records, and failure recovery cases too.
-
-The algorithm for a SMTP sender would be like this.
-
-(1) Lookup MX record for the destination domain. If a CNAME record is
- returned, go back to step (1) with the queried result. If MX
- records are returned, go to step (2) with the result. If NO_DATA
- is returned, go to step (3) as there is no MX record. If
- HOST_NOT_FOUND is returned, there is no domain, raise permanent
- email delivery failure (finish).
-
-(2) We have multiple MX records with us. Loop steps from (3) to (8),
- based on MX preference values, in ascending order.
-
-(3) If the source MTA has IPv4 capability, lookup A record. Keep the
- resulting address till step (5).
-
-(4) If the source MTA has IPv6 capability, lookup AAAA record.
-
-(5) Reorder queried result based on implementation-dependent preference
- between A and AAAA records.
-
-(6) Loop steps from (7) to (8), for all the addresses (or part of the
- list of addresses) we have. If no reachable destination is found,
- and if we are going through a list of MX records, go back to (3)
- and try the next MX record. If we do not have a list of MX
- records, or we have reached the end of the list of MX records,
- raise temporary delivery failure (finish).
-
-(7) Try to make a TCP connection to the destination. If it fails, try
- the next address we have. If it succeeds, go to step (8).
-
-(8) Try a SMTP protocol negotiation. If SMTP protocol negotiation
- fails with TEMPFAIL (4xx), go back to (3) and try the next MX
- record. If it succeeds, SMTP delivery was successful (finish).
-
-
-NAKAMURA, HAGINO Expires: October 11, 2001 [Page 3]
-
-
-DRAFT IPv6 SMTP operational requirements April 2001
-
-4. MX configuration in receipient domain
-
-4.1. Ensuring reachability for both protocol versions
-
-If a site has IPv4/v6 dual stack reachability, the site SHOULD configure
-both A and AAAA records onto its MX hosts. It will help both IPv4 and
-IPv6 senders to reach the site efficienlty.
-
-4.2. Reachability between primary and secondary MX
-
-When we configure MX records onto DNS database in dual-stack
-environment, we need to be careful about reachability between MX hosts.
-Suppose we try to gather all inbound email to primary MX host,
-mx1.sample.org.
-
- sample.org. IN MX 1 mx1.sample.org.
- IN MX 10 mx10.sample.org.
- IN MX 100 mx100.sample.org.
-
-If mx1.sample.org is an IPv6 only node and the rest are IPv4 only node,
-we have no reachability between primary MX host and the rest. Once an
-email reaches one of secondary MX host, the email will never reach the
-primary MX.
-
- ; the configuration is troublesome.
- ; no secondary MX can reach mx1.sample.org.
- sample.org. IN MX 1 mx1.sample.org. ; IPv6 only
- IN MX 10 mx10.sample.org. ; IPv4 only
- IN MX 100 mx100.sample.org. ; IPv4 only
-
-The easiest possible configuration is to configure the primary MX host
-as an IPv4/v6 dual stack node. By doing so, secondaries will have no
-problem reaching the primary MX host.
-
- ; the configuration works just fine.
- ; emails reaches from secondary MX to primary with no trouble.
- sample.org. IN MX 1 mx1.sample.org. ; IPv4/v6 dual stack
- IN MX 10 mx10.sample.org. ; IPv4 only
- IN MX 100 mx100.sample.org. ; IPv6 only
-
-There are many other ways to ensure the reachability between secondary
-MX and primary MX. For example, we could configure secondary MX to
-route emails statically, without considering DNS MX configuration. Or
-we could estalish alternative email routing path (i.e. UUCP, or via
-IPv4/v6 translator) between secondary MX and the primary MX.
-
-
-5. Open issues
-
-o How to interpret scoped address on MTAs. As we relay emails between
- MTAs, interpretation of scoped address can be different between MTAs,
- as intermediate MTAs may be in different scope zone as the originator.
-
-
-NAKAMURA, HAGINO Expires: October 11, 2001 [Page 4]
-
-
-DRAFT IPv6 SMTP operational requirements April 2001
-
- If we get scoped IPv6 address as a result of DNS lookups, how MTAs
- should behave? If we consider scoped address in ``route-addr''
- specification [Crocker, 1982] like
-
- <itojun@kame.net@[fec0::1]@itojun.org>
-
- it gets more trickier.
-
-
-6. Security consideration
-
-As presented in ``Open issues'' section, it could be problematical if
-route-addr email address format is used across multiple scope zones.
-MTAs would need to reject emails with improper route-addr email address
-formats.
-
-
-References
-
-Partridge, 1986.
-C. Partridge, "Mail routing and the domain system" in RFC974 (January
-1986). ftp://ftp.isi.edu/in-notes/rfc974.txt.
-
-Thomson, 1995.
-S. Thomson and C. Huitema, "DNS Extensions to support IP version 6" in
-RFC1886 (December 1995). ftp://ftp.isi.edu/in-notes/rfc1886.txt.
-
-Crawford, 2000.
-M. Crawford, C. Huitema, and S. Thomson, "DNS Extensions to Support IPv6
-Address Aggregation and Renumbering" in RFC2874 (July 2000).
-ftp://ftp.isi.edu/in-notes/rfc2874.txt.
-
-StJohns, 1993.
-M. StJohns, "Identification Protocol" in RFC1413 (January 1993).
-ftp://ftp.isi.edu/in-notes/rfc1413.txt.
-
-Crocker, 1982.
-D. Crocker, "Standard for the format of ARPA Internet text messages" in
-RFC822 (August 1982). ftp://ftp.isi.edu/in-notes/rfc822.txt.
-
-
-Change history
-
-None.
-
-
-Acknowledgements
-
-The draft was written based on discussions with Japanese IPv6 users, and
-help from WIDE research group.
-
-
-
-
-NAKAMURA, HAGINO Expires: October 11, 2001 [Page 5]
-
-
-DRAFT IPv6 SMTP operational requirements April 2001
-
-Author's address
-
- Motonori NAKAMURA
- Center for Information and Multimedia Studies, Kyoto University
- Yoshida-nihonmatsu-cho, Sakyo, Kyoto 606-8501, JAPAN
- Tel: +81-75-753-9063
- Fax: +81-75-753-9056
- Email: motonori@media.kyoto-u.ac.jp
-
- Jun-ichiro itojun HAGINO
- Research Laboratory, Internet Initiative Japan Inc.
- Takebashi Yasuda Bldg.,
- 3-13 Kanda Nishiki-cho,
- Chiyoda-ku,Tokyo 101-0054, JAPAN
- Tel: +81-3-5259-6350
- Fax: +81-3-5259-6351
- Email: itojun@iijlab.net
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-NAKAMURA, HAGINO Expires: October 11, 2001 [Page 6]
-
diff --git a/Documentation/en/I-D/draft-varshavchik-verp-smtpext-01.txt b/Documentation/en/I-D/draft-varshavchik-verp-smtpext-01.txt
deleted file mode 100644
index 4185755d..00000000
--- a/Documentation/en/I-D/draft-varshavchik-verp-smtpext-01.txt
+++ /dev/null
@@ -1,538 +0,0 @@
-INTERNET-DRAFT S. Varshavchik
-Expires Jan 26, 2000 Double Precision, Inc.
- Jul 26, 1999
-
- Variable Envelope Return Path SMTP Extension
- draft-varshavchik-verp-smtpext-01.txt
-
-Status Of This Memo
-
- This document is an Internet-Draft and is in full conformance with
- all provisions of Section 10 of RFC2026.
-
- 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."
-
- The list of current Internet-Drafts can be accessed at
-
- http://www.ietf.org/ietf/1id-abstracts.txt
-
- The list of Internet-Draft Shadow Directories can be accessed at
- http://www.ietf.org/shadow.html.
-
-0. Revision history
-
- 01 - added additional comments on DSNs not being very successful in
- automatically handling mailing list functions. Additional section
- added with comments regarding vacation autoresponders.
-
-1. Abstract
-
- This document describes an extension to the SMTP service [1], called
- Variable Envelope Return Path (VERP). The VERP extension implements
- a way of automatically identifying undeliverable mail recipients,
- even when non-delivery reports originate from mail systems that do
- not implement delivery status notifications, as specified in [2] and
- [3].
-
-2. Introduction
-
- All E-mail software can expect to deal with undeliverable mail. [2]
- and [3] specify a machine-readable format for delivery status
-
-S. Varshavchik Expires Jan 26, 2000 [Page 1]
-
-VERP SMTP Extension S. Varshavchik Jul 26, 2000
-
- notifications (DSNs, or non-delivery reports). DSNs allow
- undeliverable mail to be handled in a totally automatic fashion,
- without requiring manual intervention. For example, mailing list
- managers can automatically identify addresses that are no longer
- deliverable, and remove them from the mailing list.
-
- Although [2] and [3] are now widely implemented, there are still many
- systems that do not use them. This makes it impractical to
- completely rely on DSNs for automatic mailing list management.
- Undeliverable addresses accumulate quickly even from a very small
- percentage of non-DSN systems. This results in a non-trivial amount
- of manual work to identify undeliverable addresses and purge them
- from the mailing list.
-
- Mailing list software began to use VERPs (the acronym stands for
- Variable Envelope Return Path) after DSNs were found to be
- impractical for totally automatic mailing list management. VERPs are
- an alternative way to handle non-delivery notices. The advantage of
- VERPs is that they can be made to work automatically, even when non-
- delivery notices are not in the format specified by [2].
-
- Unfortunately, VERPs require much more bandwidth and network
- resources than DSNs because VERPs cannot be used to send one copy of
- a mailing list message addressed to all the recipients in the same E-
- mail domain.
-
- This SMTP service extension allows E-mail software to send a single
- VERP message to all addresses in the same mail domain, for as long as
- mail servers, which relay the message, support the VERP SMTP
- extension.
-
- The VERP message may be eventually relayed to a mail server that does
- not support this extension. Separate messages - with variable
- envelope return paths - will be sent when this happens.
-
- So the worst case scenario results in the same situation where
- traditional VERPs are used right from the start. The best case
- scenario results in significant savings of network resources and
- bandwidth, from eliminating hundreds (or more) copies of the same
- message.
-
- Essentially, the VERP extension postpones the generation of multiple
- messages with different return paths as much as possible, until it is
- absolutely required.
-
-2.1 VERP overview
-
- The traditional VERP message encodes the recipient address as a
-
-S. Varshavchik Expires Jan 26, 2000 [Page 2]
-
-VERP SMTP Extension S. Varshavchik Jul 26, 2000
-
- portion of the return address. When undeliverable mail comes back,
- the mail software decodes the return address (now the recipient
- address) and obtains the address responsible for the non-delivery
- notice.
-
- For example: mail sent by a mailing list manager to the address
- <john@example.org> carries a return address of <mlist-return-
- john=example.org@domain.com>. The mailing list software at
- domain.com handles all mail with the local portion of the address
- starting with "mlist-return-". If a non-delivery notice is generated
- because the address is not deliverable, the mailing list software
- takes the address where the non-delivery report was sent, retrieves
- the remaining portion of the local address, "john=example.org", and
- determines that the undeliverable address was <john@example.org>.
-
- This does not rely on RFC 1894, and will work for all non-delivery
- notices.
-
-3. Framework for the VERP SMTP transport extension
-
- This SMTP transport extension [1] is laid out as follows.
-
- (1) The name of the SMTP transport extension defined here is
- Variable Envelope Return Path.
-
- (2) The EHLO keyword associated with this extension is VERP.
-
- (3) The VERP EHLO keyword takes no parameters.
-
- (4) One optional ESMTP keyword VERP is associated with the MAIL
- FROM command. This parameter takes no values.
-
- (5) No additional ESMTP verbs are defined by this extension.
-
- (6) The next section specifies how support for this extension
- affects the behavior of a server and client SMTP.
-
-4. The VERP SMTP extension
-
- When a VERP keyword is present in the MAIL FROM command, [4], some
- additional restrictions are imposed on the RFC 822 address [5],
- specified by that MAIL FROM command, and on all RFC 822 addresses in
- the subsequent RCPT TO commands that refer to the same message (that
- is, until the next DATA, RSET, or QUIT command). The term "VERP
- message" refers to any E-mail message whose MAIL FROM command
- includes the VERP keyword. The term "VERP-compliant server" refers
- to any E-mail server that supports the Variable Envelope Return Path
- SMTP extension. When a VERP keyword is present in the MAIL FROM
-
-S. Varshavchik Expires Jan 26, 2000 [Page 3]
-
-VERP SMTP Extension S. Varshavchik Jul 26, 2000
-
- command:
-
- (1) The address specified by the MAIL FROM verb MUST contain at
- least one @ character.
-
- (2) The address in every RCPT TO verb referring to the same
- message MUST contain at least one @ character.
-
- (3) The domain portion of the address in the MAIL FROM and RCPT
- TO verbs MUST be compliant with the definition of <domain> in
- [6]. That is, it MUST contain only letters, digits, hyphens,
- and periods. The domain portion of the address is the one
- that follows the last @ character,
-
-4.1 Delivery failures
-
- When a VERP-compliant server is unable to deliver a VERP message to
- one or more recipients, the VERP server MUST do one of the following:
-
- 1) Return an RFC 1891 delivery status notification to the return
- address, or:
-
- 2) Transmit a separate non-delivery notice for each failed
- recipient. The return address for each non-delivery notice
- MUST be the address that's formed by applying the procedure
- described in section 7 of this document to the return address
- of the message and the failed recipient's address. If more
- than one recipient was undeliverable a separate notice MUST
- be sent for each undeliverable address.
-
-5. Final delivery
-
- Section 4.3.1 of [5] specifies that the mail server performing final
- delivery of a message will generate a Return-Path: header containing
- the return address of the message.
-
- This return address MUST be formed by applying the procedure
- described in section 7 of this document to the return address and the
- recipient's address.
-
- This also applies if the mail server invokes some other external
- process to handle final delivery, instead of placing the message into
- the recipient's mailbox. In all cases, the return address specified
- by the mail server to any external environment or process MUST be
- derived by applying the procedure in section 7 to the return address
- and the recipient's address.
-
-6. Relaying
-
-S. Varshavchik Expires Jan 26, 2000 [Page 4]
-
-VERP SMTP Extension S. Varshavchik Jul 26, 2000
-
- When a VERP-compliant server determines that a recipient of a VERP
- message is not a local mailbox, and the message must be relayed to
- another server, the VERP-compliant server MUST:
-
- (1) If the VERP-compliant server's local policies require the
- return and/or recipient addresses MUST comply with the
- restrictions specified in section 4 of this document.
-
- (2) If the VERP-compliant server determines that the remote
- server is also a VERP compliant server, the VERP keyword MUST
- be included in the MAIL FROM command used to relay the VERP
- message to the remote server.
-
- (3) If the remote server is not a VERP compliant server, The VERP
- compliant server SHOULD send a separate copy of the message
- for every recipient. The return address of each copy of the
- message MUST be formed by applying the procedure described in
- section 7 of this document to the original return address,
- and the address of each individual recipient. Although the
- message SHOULD NOT be returned as undeliverable, if it is
- then the rules defined in section 4.1 MUST be applied.
-
- These rules also apply if the SMTP-compliant server
- determines that the VERP message must be forwarded via some
- other protocol to a non-SMTP gateway, unless the non-SMTP
- protocol has equivalent features that are completely
- identical in function to Variable Envelope Return Path SMTP
- service extension (including any translations of E-mail
- addresses to and from the non-RFC822 format).
-
-7. Variable envelope return path encoding
-
- This encoding method starts with a return address and one recipient
- address. As mentioned previously, both addresses MUST be valid
- RFC822 addresses, [5], and MUST contain at least one @ character.
- The portion of each address following the last @ character MUST be
- compliant with [6].
-
- Let "sdomain" represent the portion of the return address that
- follows the last @ character.
-
- Let "slocal" represent the portion of the return address that
- precedes the last @ character.
-
- Let "rdomain" represent the portion of the recipient address that
- follows the last @ character.
-
- Let "rlocal" represent the portion of the recipient address that
-
-S. Varshavchik Expires Jan 26, 2000 [Page 5]
-
-VERP SMTP Extension S. Varshavchik Jul 26, 2000
-
- precedes the last @ character.
-
- To encode the recipient address within the envelope sender address,
- create an address of the following form:
-
- slocal-encodedrlocal=rdomain@sdomain
-
- Where "encodedrlocal" is formed by taking rlocal and encoding it as
- follows:
-
- 1) Each @, :, %, !, and + character in rlocal is replaced by a
- single '+' character followed by two uppercase hexadecimal
- characters whose value is the ASCII code of the replaced
- character.
-
- 2) All other characters are unchanged. Other characters MAY,
- but SHOULD NOT be also encoded in the same fashion.
-
- This can be represented using BNF as follows:
-
- encodedverp: slocal "-" encodedrlocal "=" rdomain "@" sdomain
-
- encodedrlocal: * (char-literal / char-encoded )
-
- char-literal: any character valid in an RFC821 address [4],
- except @, :, %, !, and +
-
- char-encoded: "+" hexdigit hexdigit
-
- hexdigit: ("0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" /
- "9" / "A" / "B" / "C" / "D" / "E" / "F" )
-
-8. Variable envelope return path decoding
-
- Non-delivery notices for VERP messages will be sent to either the
- original address, <slocal@sdomain>, or to the VERP-encoded address,
- <slocal-encodedrlocal=rdomain@sdomain>.
-
- Messages sent to <slocal@sdomain> will be RFC 1891-compliant delivery
- status notifications. These messages will be machine-readable, and
- the mail software will be able to identify failed addresses from the
- RFC 1891 delivery report.
-
- Non-delivery notices will also be sent to the VERP-encoded address,
- and the mail software will be able to reconstruct the failed address
- from the VERP-encoded address by simply reversing the steps used in
- encoding:
-
-S. Varshavchik Expires Jan 26, 2000 [Page 6]
-
-VERP SMTP Extension S. Varshavchik Jul 26, 2000
-
- 1) Extracting encodedrlocal and rdomain from the recipient
- address. There will be at least one = character in the
- encoded portion of the return address. encodedrlocal is
- everything up to the last = character. Everything following
- the last = character is rdomain.
-
- 2) Replacing all occurrences of "+" followed by two hexadecimal
- digits in encodedrlocal with the equivalent ASCII character.
-
- 3) Using the decoded rlocal, @, then rdomain.
-
-9. Examples
-
- Suppose that a VERP-compliant server named "example.com" receives a
- message via the following SMTP conversation (for brevity, non-
- relevant headers have been omitted):
-
- 250 example.com ESMTP
- EHLO domain.com
- 250-example.com ESMTP
- 250-SIZE
- 250-DSN
- 250-VERP
- 250 HELP
- MAIL FROM:<itny-out@domain.com> VERP SIZE=100
- 250 Ok
- RCPT TO:<alex@example.com>
- 250 Ok
- RCPT TO:<node42!ann@old.example.com>
- 250 Ok
- RCPT TO:<tom@old.example.com>
- 250 Ok
- RCPT TO:<lisa@new.example.com>
- 250 Ok
- RCPT TO:<dave+priority@new.example.com>
- 250 Ok
- DATA
- 250 Ok
- From: "John" <john@domain.com>
- Date: Thu, 16 Jan 1997 14:49:31 -0500 (EST)
- Subject: Meeting canceled.
-
- Today's 2pm meeting has been rescheduled for tomorrow, 9am, due
- to a scheduling conflict.
- .
-
- The message is delivered to the local mailbox for <alex@example.com>.
- The message looks like this:
-
-S. Varshavchik Expires Jan 26, 2000 [Page 7]
-
-VERP SMTP Extension S. Varshavchik Jul 26, 2000
-
- Return-Path: <itny-out-alex=example.com@domain.com>
- From: "John" <john@domain.com>
- Date: Thu, 16 Jan 1997 14:49:31 -0500 (EST)
- Subject: Meeting canceled.
-
- Today's 2pm meeting has been rescheduled for tomorrow, 9am, due
- to a scheduling conflict.
-
- The VERP-compliant server at example.com connects to the mail server
- for old.example.com. old.example.com does not support the Variable
- Envelope Return Path extension. Therefore, old.example.com receives
- two messages. The SMTP conversation for the first message is as
- follows:
-
- 250 old.example.com ESMTP
- EHLO example.com
- 250-old.example.com ESMTP
- 250-SIZE
- 250-DSN
- 250 HELP
- MAIL FROM:<itny-out-node42+21ann=old.example.com@domain.com>
- 250 Ok
- RCPT TO:<node42!ann@old.example.com>
- 250 Ok
- DATA
- 250 Ok
- From: "John" <john@domain.com>
- Date: Thu, 16 Jan 1997 14:49:31 -0500 (EST)
- Subject: Meeting canceled.
-
- Today's 2pm meeting has been rescheduled for tomorrow, 9am, due
- to a scheduling conflict.
- .
-
- The SMTP conversation for the second message is as follows:
-
- MAIL FROM:<itny-out-tom=old.example.com@domain.com>
- 250 Ok
- RCPT TO:<tom@old.example.com>
- 250 Ok
- DATA
- 250 Ok
- From: "John" <john@domain.com>
- Date: Thu, 16 Jan 1997 14:49:31 -0500 (EST)
- Subject: Meeting canceled.
-
- Today's 2pm meeting has been rescheduled for tomorrow, 9am, due
- to a scheduling conflict.
-
-S. Varshavchik Expires Jan 26, 2000 [Page 8]
-
-VERP SMTP Extension S. Varshavchik Jul 26, 2000
-
- .
-
- example.com connects to new.example.com and determines that
- new.example.com runs a modern ESMTP server that supports the VERP
- keyword. The SMTP conversation then goes like this:
-
- 250 new.example.com ESMTP
- EHLO example.com
- 250-new.example.com ESMTP
- 250-SIZE
- 250-DSN
- 250-VERP
- 250 HELP
- MAIL FROM:<itny-out@domain.com> VERP SIZE=100
- 250 Ok
- RCPT TO:<lisa@new.example.com>
- 250 Ok
- RCPT TO:<dave+priority@new.example.com>
- 250 Ok
- DATA
- 250 Ok
- From: "John" <john@domain.com>
- Date: Thu, 16 Jan 1997 14:49:31 -0500 (EST)
- Subject: Meeting canceled.
-
- Today's 2pm meeting has been rescheduled for tomorrow, 9am, due
- to a scheduling conflict.
- .
-
-10. Security concerns
-
- All the usual security considerations applicable to SMTP are also
- applicable to this extension. Relay of VERP messages to non-VERP
- servers requires a single message with many recipients to be exploded
- into many messages with one recipient. In all cases, however, there
- will never be any additional overhead beyond the resources that are
- required when VERPs are manually implemented by the mail sender,
- instead of the VERP SMTP extension.
-
- Mail systems which support the VERP extension SHOULD have adequate
- security measures, including blocks against unauthorized access and
- relaying.
-
-10.1 Vacation programs, and other autoresponders
-
- "Vacation" type autoresponders are often used in practice. A
- vacation autoresponder is a program that automatically replies to
- every message, informing the sender that the recipient is on
-
-S. Varshavchik Expires Jan 26, 2000 [Page 9]
-
-VERP SMTP Extension S. Varshavchik Jul 26, 2000
-
- vacation, or is generally unavailable at this time.
-
- Vacation autoresponders MUST NOT generate autoresponses to mailing
- list messages, but people often forget to do set them up to do so.
- Because autoresponses are sent to the same address that's used to
- receive non-delivery reports, malfunctioning autoresponders result in
- the recipient being removed from mailing lists.
-
- Advanced autoresponders send automatic replies in the format
- specified by [2], as a "delayed" notification. DSN-aware software
- will not remove addresses from mailing lists due to delayed
- notifications.
-
- Section 5 of this document specifies that the mail server MUST
- replace the original return address with a VERP-modified address when
- delivering the message to a mailbox or an external process.
-
- Therefore it is possible that RFC 1891 reports may also be sent to a
- VERP-encoded address, as specified by sections 5 and 7 of this
- document. Mail software SHOULD ignore any RFC 1891 "delayed" or
- "success" reports that sent to a VERP-encoded address. If it is a
- "failed" report, note that the VERP address will be more reliable
- than the address specified in the report itself.
-
-S. Varshavchik Expires Jan 26, 2000 [Page 10]
-
-VERP SMTP Extension S. Varshavchik Jul 26, 2000
-
-11. References
-
- [1] Klensin, J., Freed, N., Rose, M., Stefferud, E., Crocker, D.
- "SMTP Service Extensions", RFC 1425, United Nations
- University, Innosoft International, Inc., Dover Beach
- Consulting, Inc., Network Management Associates, Inc., The
- Branch Office, February 1993
-
- [2] Moore, K., and G. Vaudreuil, "An Extensible Message Format
- for Delivery Status Notifications", RFC 1894, University of
- Tennessee, Octel Network Services, January 1996.
-
- [3] Moore, K. "SMTP Service Extension for Delivery Status
- Notifications", RFC 1891, University of Tennessee, January
- 1996.
-
- [4] Postel, J., "Simple Mail Transfer Protocol", STD 10, RFC 821,
- USC/Information Sciences Institute, August 1982.
-
- [5] Crocker, D., "Standard for the Format of ARPA Internet Text
- Messages", STD 11, RFC 822, UDEL, August 1982.
-
- [6] Mockapetris, P., "Domain Names - Implementation and
- Specification", RFC 1035, ISI, November 1987
-
-12. Author's address
-
- Sam Varshavchik
- Double Precision, Inc.
- PO Box 668
- Greenwood Lake, NY 10925
- <mrsam@concentric.net>
-
-S. Varshavchik Expires Jan 26, 2000 [Page 11]
diff --git a/Documentation/en/I-D/draft-vaudreuil-esmtp-binary2-00.txt b/Documentation/en/I-D/draft-vaudreuil-esmtp-binary2-00.txt
deleted file mode 100644
index ca632b75..00000000
--- a/Documentation/en/I-D/draft-vaudreuil-esmtp-binary2-00.txt
+++ /dev/null
@@ -1,679 +0,0 @@
- Internet Draft Greg Vaudreuil
- Expires in six months Lucent Technologies
- December 1, 1999
-
-
- SMTP Service Extensions
- for Transmission of Large
- and Binary MIME Messages
-
- draft-vaudreuil-esmtp-binary2-00.txt
-
-
-
- Status of this Memo
-
- This document is an Internet-Draft and is in full conformance with all
- provisions of Section 10 of RFC 2026.
-
- 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 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 a "work in progress".
-
- The list of current Internet-Drafts can be accessed at
- http://www.ietf.org/ietf/1id-abstracts.txt
-
- The list of Internet-Draft Shadow Directories can be accessed at
- http://www.ietf.org/shadow.html.
-
-
- 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).
-
-
-
- Copyright Notice
-
- Copyright (C) The Internet Society (1999). All Rights Reserved.
-
- This Internet-Draft is in conformance with Section 10 of RFC 2026.
-
- Abstract
-
- This memo defines two extensions to the SMTP service. The first
- service enables a SMTP client and server to negotiate the use of an
- alternative to the DATA command, called "BDAT" for efficiently sending
- large MIME messages. The second extension takes advantage of the BDAT
- command to permit the negotiated sending of binary contents wrapped in
- MIME but without a transport encoding. This document is intended to
- update and obsolete RFC1830.
-
-
-
- Internet Draft Binary ESMTP December 1, 1999
-
-
- Working Group Summary
-
- This protocol is not the product of an IETF working group, however the
- specification resulted from discussions within the ESMTP working
- group. The resulting protocol documented in RFC1830 was classified as
- experimental at that time due to questions about the robustness of the
- Binary Content-Transport-Encoding deployed in then existent MIME
- implementations. As MIME has matured and other uses of the Binary
- Content-Transport-Encoding have been deployed, these concerns have
- been allayed. With this document, Binary ESMTP is expected to become
- standards-track.
-
- Table of Contents
-
- 1. OVERVIEW ..........................................................2
- 2. FRAMEWORK FOR THE LARGE MESSAGE EXTENSIONS ........................3
- 3. FRAMEWORK FOR THE BINARY SERVICE EXTENSION ........................5
- 4. EXAMPLES ..........................................................7
- 4.1 Simple Chunking .................................................7
- 4.2 Pipelining Binarymime ...........................................8
- 5. SECURITY CONSIDERATIONS ...........................................9
- 6. ACKNOWLEDGMENTS ...................................................9
- 7. REFERENCES ........................................................9
- 8. COPYRIGHT NOTICE ..................................................9
- 9. AUTHOR'S ADDRESS .................................................10
- 10. APPENDIX A - CHANGES FROM RFC1830 ................................11
-
-
- 1. Overview
-
- The MIME extensions to the Internet message protocol provides for the
- transmission of many kinds of data that was previously unsupported in
- Internet mail. Anticipating the need to more efficiently transport
- the new media made possible with MIME, the SMTP protocol has been
- extended to provide transport for new message types. RFC 1426 defines
- one such extension for the transmission of unencoded 8-bit MIME
- messages [8BIT]. This service extension permits the receiver SMTP to
- declare support for 8-bit body parts and the sender to request 8-bit
- transmission of a particular message.
-
- One expected result of the use of MIME is that the Internet mail
- system will be expected to carry very large mail messages. In such
- transactions, there is a performance-based desire to eliminate the
- requirement that the message be scanned for "CR LF . CR LF" sequences
- upon sending and receiving to detect the end of message.
-
- Independent of the need to send large messages, Internet mail is
- increasingly multi-media. There is a need to avoid the overhead of
- base64 and quoted-printable encoding of binary objects sent using the
- MIME message format over SMTP between hosts that support binary
- message processing.
-
- This memo uses the mechanism defined in [ESMTP] to define two
- extensions to the SMTP service whereby a client ("sender-SMTP") may
-
- Vaudreuil Expires 5/1/00 [Page 2]
-
-
-
- Internet Draft Binary ESMTP December 1, 1999
-
-
- declare support for the message chunking transmission mode and support
- for the receiption of Binary messages.
-
- 2. Framework for the Large Message Extensions
-
- The following service extension is hereby defined:
-
- The name of the data chunking service extension is "CHUNKING".
-
- The EHLO keyword value associated with this extension is "CHUNKING".
-
- A new SMTP verb is defined "BDAT" as an alternative to the "DATA"
- command of [RFC821]. The BDAT verb takes two arguments. The first
- argument indicates the length, in octets, of the binary data chunk.
- The second optional argument indicates that the data packet is the
- last.
-
- bdat-cmd ::= "BDAT" SP chunk-size [ SP end-marker ] CR LF
- chunk-size ::= 1*DIGIT
- end-marker ::= "LAST"
-
- The CHUNKING service extension enables the use of the BDAT alternative
- to the DATA command. This extension can be used for any message,
- whether 7 bit, 8BITMIME or BINARYMIME.
-
- When a client SMTP wishes to submit (using the MAIL command) a large
- message using the CHUNKING extension, it first issues the EHLO command
- to the server SMTP. If the server SMTP responds with code 250 to the
- EHLO command and the response includes the EHLO keyword value
- CHUNKING, then the server SMTP is indicating that it supports the BDAT
- command and will accept the sending of messages in chunks.
-
- After all MAIL FROM and RCPT TO responses are collected and processed,
- the message is sent using a series of BDAT commands. The BDAT command
- takes one required argument, the exact length of the data segment in
- octets. The message data is sent immediately after the trailing <CR>
- <LF> of the BDAT command line. Once the receiver-SMTP receives the
- specified number of octets, it will return a 250 reply code.
-
- The optional LAST parameter on the BDAT command indicates that this is
- the last chunk of message data to be sent. Any BDAT command sent
- after the BDAT LAST is illegal and must be replied to with a 503 "Bad
- sequence of commands" reply code. The state resulting from this error
- is indeterminate. A RSET command must be sent to clear the
- transaction before continuing.
-
- A 250 response should be sent to each BDAT data block. If a failure
- ocures after a BDAT command is received, the receiver-SMTP must accept
- and discard the associated message data before sending the 5XX code.
- If a 5XX code is received by the sender-SMTP in response to a BDAT
- chunk, the message should be considered failed and the sender SMTP
- must not send any additional BDAT segments. If the receiver-SMTP has
- declared support for streaming, the receiver SMTP must be prepared to
-
-
- Vaudreuil Expires 5/1/00 [Page 3]
-
-
-
- Internet Draft Binary ESMTP December 1, 1999
-
-
- accept and discard additional BDAT chunks already in the pipeline
- after the failed BDAT.
-
- Note: An error on the receiver-SMTP such as disk full or imminent
- shutdown can only be reported after the BDAT segment has been
- received. It is therefore important to choose a reasonable chunk
- size given the expected end-to-end bandwidth.
-
- Note: Because the receiver-SMTP does not acknowledge the BDAT
- command before the messafge data is sent, it is important to send
- the BDAT only to systems that have declared their capability to
- accept BDAT commands. Illegally sending a BDAT command and
- associated message data to a non-chunking capable system will
- result in the receiver-SMTP parsing the associated message data
- as if it were a potentially very long, binary-data containing
- E/SMTP command line.
-
- The resulting state from a failed BDAT command is indeterminate. A
- RSET command must be issued to clear the transaction before additional
- commands may be sent. The RSET command, when issued after the first
- BDAT and before the BDAT LAST, clears all segments sent during that
- transaction and resets the session.
-
- DATA and BDAT commands cannot be used in the same transaction. If a
- DATA statement is issued after a BDAT for the current transaction, a
- 503 "Bad sequence of commands" must be issued. The state resulting
- from this error is indeterminate. A RSET command must be sent to
- clear the transaction before continuing. There is no prohibition on
- using DATA and BDAT in the same session, so long as they are not mixed
- in the same transaction.
-
- The local storage size of a message may not accurately reflect the
- actual size of the message sent due to local storage conventions. In
- particular, text messages sent with the BDAT command MUST be sent in
- the canonical MIME format with lines delimited with a <CR><LF>. It
- may not be possible to convert the entire message to the canonical
- format at once. Chunking provides a mechanism to convert the message
- to canonical form, accurately count the bytes, and send the message a
- single chunk at a time.
-
- Note that correct byte counting is essential. If the sender
- SMTP indicates a chunk-size larger than the actual chunnk-size,
- the receiver SMTP will continue to wait for the remainder of the
- data or when using streaming, will read the subsequent command
- as additional message data. In the case where a portion of the
- previous command was read as data, the parser will return a
- syntax error when the incomplete command is read.
-
- If the sender SMTP indicates a chunk-size smaller than the
- actual chunk-size, the receiver SMTP will interpret the
- remainder of the message data as invalid commands. Note that
- the remainder of the message data may be binary and as such
- lexicographical parsers must be prepared to receive, process,
- and reject lines of arbitrary octets.
-
- Vaudreuil Expires 5/1/00 [Page 4]
-
-
-
- Internet Draft Binary ESMTP December 1, 1999
-
-
- 3. Framework for the Binary Service Extension
-
- The following service extension is hereby defined:
-
- 1) The name of the binary service extension is "BINARYMIME".
-
- 2) The EHLO keyword value associated with this extension is
- "BINARYMIME".
-
- 3) The BINARYMIME service extension can only be used with the
- "CHUNKING" service extension.
-
- 4) No parameter is used with the BINARYMIME keyword.
-
- 5) [8BIT] defines the BODY parameter for the MAIL command. This
- extension defines an additional value for the BODY parameter,
- "BINARYMIME". The value "BINARYMIME" associated with this parameter
- indicates that this message is a Binary MIME message (in strict
- compliance with [MIME]) with arbitrary octet content being sent. The
- revised syntax of the value is as follows, using the ABNF notation of
- [RFC822]:
-
- body-value ::= "7BIT" / "8BITMIME" / "BINARYMIME"
-
- 6) No new verbs are defined for the BINARYMIME extension.
-
- A sender SMTP may request that a binary MIME message be sent without
- transport encoding by sending a BINARYMIME parameter with the MAIL
- command. When the receiver SMTP accepts a MAIL FROM command with the
- BINARYMIME body type requested, it agrees to preserve all bits in each
- octet passed using the BDAT command.
-
- BINARYMIME cannot be used with the DATA command. If a DATA command is
- issued after a MAIL command containing the body-value of "BINARYMIME",
- a 501 response should be sent. The resulting state from this error
- condition is indeterminate and the transaction should be reset with
- the RSET command.
-
- It is important to note that when using BINARYMIME, it is especially
- important to ensure that the MIME message itself is properly formed.
- In particular, it is essential that text be canonically encoded with
- each line properly terminated with <CR> <LF>. Any transformation of
- text into non-canonical MIME to observe local storage conventions must
- be reversed before sending as BINARYMIME. Some line-oriented
- shortcuts will break if used with BINARYMIME.
-
- The syntax of the extended MAIL command is identical to the MAIL
- command in [RFC821], except that a BODY parameter must appear after
- the address. The complete syntax of this extended command is defined
- in [ESMTP]. The ESMTP-keyword is BODY and the syntax for ESMTP-value
- is given by the syntax for body-value in [ESMTP].
-
-
-
-
- Vaudreuil Expires 5/1/00 [Page 5]
-
-
-
- Internet Draft Binary ESMTP December 1, 1999
-
-
- If a receiver-SMTP does not indicate support the BINARYMIME message
- format then the client SMTP must not, under any circumstances, send
- binary data using the BDAT command.
-
- If the receiver-SMTP does not support BINARYMIME and the message
- content is a MIME object with a binary encoding, a client SMTP has two
- options with which to forward the message. First, it may implement a
- gateway transformation to convert the message into valid 7bit-encoded
- MIME. Second, it may treat this as a permanent error and handle it in
- the usual manner for delivery failures. The specifics of the
- transformation from Binary MIME to 7bit MIME are not described by this
- RFC; the conversion is nevertheless constrained in the following ways:
-
- 1. The conversion must cause no loss of information; MIME transport
- encodings must be employed as needed to insure this is the case.
-
- 2. The resulting message must be valid 7bit MIME. In particular, the
- transformation may not result in nested Base-64 or Quoted-Printable
- content-transfer-encodings.
-
- As of present there are no mechanisms for converting a binary MIME
- object into an 8-bit MIME object. Such a transformation will require
- the specification of a new MIME content-transfer-encoding, the
- standardization of which is discouraged by [MIME].
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Vaudreuil Expires 5/1/00 [Page 6]
-
-
-
- Internet Draft Binary ESMTP December 1, 1999
-
-
- 4. Examples
-
- 4.1 Simple Chunking
-
- The following simple dialogue illustrates the use of the large message
- extension to send a short psudo-RFC822 message to one recipient using
- the CHUNKING extension:
-
- R: <wait for connection on TCP port 25>
- S: <open connection to server>
- R: 220 cnri.reston.va.us SMTP service ready
- S: EHLO ymir.claremont.edu
- R: 250-cnri.reston.va.us says hello
- R: 250 CHUNKING
- S: MAIL FROM:<Sam@Random.com>
- R: 250 <Sam@Random.com> Sender ok
- S: RCPT TO:<Susan@Random.com>
- R: 250 <Susan@random.com> Recipient ok
- S: BDAT 86 LAST
- S: To: Susan@random.com<CR><LF>
- S: From: Sam@random.com<CR><LF>
- S: Subject: This is a bodyless test message<CR><LF>
- R: 250 Message OK, 86 octets received
- S: QUIT
- R: 221 Goodbye
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Vaudreuil Expires 5/1/00 [Page 7]
-
-
-
- Internet Draft Binary ESMTP December 1, 1999
-
-
- 4.2 Pipelining Binarymime
-
- The following dialogue illustrates the use of the large message
- extension to send a BINARYMIME object to two recipients using the
- CHUNKING and PIPELINING extensions:
-
- R: <wait for connection on TCP port
- S: <open connection to server>
- R: 220 cnri.reston.va.us SMTP service ready
- S: EHLO ymir.claremont.edu
- R: 250-cnri.reston.va.us says hello
- R: 250-PIPELINING
- R: 250-BINARYMIME
- R: 250 CHUNKING
- S: MAIL FROM:<ned@ymir.claremont.edu> BODY=BINARYMIME
- S: RCPT TO:<gvaudre@cnri.reston.va.us>
- S: RCPT TO:<jstewart@cnri.reston.va.us>
- R: 250 <ned@ymir.claremont.edu>... Sender and BINARYMIME ok
- R: 250 <gvaudre@cnri.reston.va.us>... Recipient ok
- R: 250 <jstewart@cnri.reston.va.us>... Recipient ok
- S: BDAT 100000
- S: (First 10000 octets of canonical MIME message data)
- S: BDAT 324 LAST
- S: (Remaining 324 octets of canonical MIME message data)
- R: 250 100000 bytes received
- R: 250 Message OK, 100324 octets received
- S: QUIT
- R: 221 Goodbye
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Vaudreuil Expires 5/1/00 [Page 8]
-
-
-
- Internet Draft Binary ESMTP December 1, 1999
-
-
- 5. Security Considerations
-
- This extension is not known to present any security issues already
- endemic in electronic mail and present in fully conforming
- implementations of [RFC821], or otherwise made possible by [MIME].
-
- 6. Acknowledgments
-
- This protocol is the result of numerous discussions in the IETF SMTP
- Extensions Working Group and in particular due to the continued
- advocacy of "chunking" by Neil Katin.
-
- 7. References
-
- [BINARY] Vaudreuil, G, " SMTP Service Extensions for Transmission of
- Large and Binary MIME Messages", RFC 1830, August 1995.
-
- [RFC821] Postel, J., "Simple Mail Transfer Protocol", STD 10, RFC 821,
- USC/Information Sciences Institute, August 1982.
-
- [RFC822] Crocker, D., "Standard for the Format of ARPA Internet Text
- Messages", STD 11, RFC 822, UDEL, August 1982.
-
- [MIME] Borenstein, N., and N. Freed, "Multipurpose Internet Mail
- Extensions (MIME) Part One: Format of Internet Message Bodies", RFC
- 2045, Bellcore, Innosoft, November 1996.
-
- [ESMTP] Klensin, J., WG Chair, Freed, N., Editor, Rose, M., Stefferud,
- E., and D. Crocker, "SMTP Service Extensions" RFC 1869, United Nations
- University, Innosoft International, Inc., Dover Beach Consulting,
- Inc., Network Management Associates, Inc., The Branch Office, November
- 1995.
-
- [8BIT] Klensin, J., WG Chair, Freed, N., Editor, Rose, M., Stefferud,
- E., and D. Crocker, "SMTP Service Extension for 8bit-MIMEtransport"
- RFC 1652, United Nations University, Innosoft International, Inc.,
- Dover Beach Consulting, Inc., Network Management Associates, Inc., The
- Branch Office, July 1994.
-
- [PIPE] Freed, N., "SMTP Service Extensions for Command Pipelining",
- RFC 1854, Innosoft International, October 1995.
-
- 8. Copyright Notice
-
- "Copyright (C) The Internet Society (1999). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published and
- distributed, in whole or in part, without restriction of any kind,
- provided that the above copyright notice and this paragraph are
- included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
-
- Vaudreuil Expires 5/1/00 [Page 9]
-
-
-
- Internet Draft Binary ESMTP December 1, 1999
-
-
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be followed,
- or as required to translate it into languages other than English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
- NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN
- WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."
-
- 9. Author's Address
-
- Gregory M. Vaudreuil
- Lucent Technologies
- Communications Application Group
- 17080 Dallas Parkway
- Dallas, TX 75248-1905
- Voice/Fax: +1-972-733-2722
-
- GregV@Lucent.com
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Vaudreuil Expires 5/1/00 [Page 10]
-
-
-
- Internet Draft Binary ESMTP December 1, 1999
-
-
- 10. Appendix A - Changes from RFC1830
-
- Numerous editorial changes including required intellectual property
- boilerplate and revised authors contact information
-
- Corrected the simple chunking example to use the correct number of
- bytes.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Vaudreuil Expires 5/1/00 [Page 11]
- \ No newline at end of file
diff --git a/Documentation/en/I-D/draft-ward-esmtp-slide-03.txt b/Documentation/en/I-D/draft-ward-esmtp-slide-03.txt
deleted file mode 100644
index 065f9c60..00000000
--- a/Documentation/en/I-D/draft-ward-esmtp-slide-03.txt
+++ /dev/null
@@ -1,563 +0,0 @@
-
-
-
-
-
-
- A. Ward
-INTERNET-DRAFT
-Category: Experimental 15 June 2000
-draft-ward-esmtp-slide-03.txt Exprires: 15 December 2000
-
-
-
- SMTP Service Extension for Slightly Differing
- Multicast Messages (SLIDE)
-
-
-
-Status of this Memo
-
- This document is an Internet-Draft and is in full conformance with
- all provisions of Section 10 of RFC2026.
-
- 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."
-
- The list of current Internet-Drafts can be accessed at
- http://www.ietf.org/ietf/1id-abstracts.txt
-
- The list of Internet-Draft Shadow Directories can be accessed at
- http://www.ietf.org/shadow.html.
-
-i. Revision History
-
- The first version (-00) of this document was unleashed on 9 March
- 2000.
-
- (-01) Added section (5.1), regarding the impact of the SLIDE
- extension to signed or encrypted messages. Modified the first
- example in section (4.) to make the impact of SLIDE more explicit. (7
- April 2000)
-
- (-02) Added examples to section (5.1.1) and section (5.1.2). (4 May
- 2000)
-
- (-03) Minor formatting changes to comply with RFC 2223. (15 June
- 2000)
-
-
-
-Ward [Page 1]
-
-INTERNET-DRAFT SMTP Service Extension SLIDE 15 June 2000
-
-
-Abstract
-
- This memo defines an extension to the SMTP service [Klensin, et al
- 1995] to realize efficiency improvements in the relaying and delivery
- of slightly differing messages bound for more than one recipient, as
- specified by multiple RCPT TO commands [Postel 1982].
-
-0. Conventions Used in this Document
-
- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
- document are to be interpreted as described in RFC 2119 [Bradner
- 1997].
-
-1. Introduction
-
- SMTP is an Internet message protocol that is used to send messages to
- one or more recipients. To realize any efficiency when sending a
- message to multiple recipients, the message body and all headers must
- be identical. It is desirable, under some circumstances, to send
- messages to multiple recipients that differ only slightly in their
- body and/or headers.
-
- Under SMTP [Postel 1982] such a scenario would result in a different
- message being sent from the initial client SMTP through each relay
- server until the final server SMTP is reached. In situations where
- more that one of the multiple recipients have mail handled by the
- same server SMTP, a significant bandwidth reduction can be realized
- with the SLIDE service extension.
-
-2. Framework for the Slightly Differing Multicast Message Extension
-
- The slightly differing multicast message extension is as follows:
-
- (1) the name of the SMTP service extension defined here is slightly-
- differing-multicast-message;
-
- (2) the EHLO keyword value associated with the extension is SLIDE;
-
- (3) no parameter is used with the SLIDE EHLO keyword;
-
- (4) no additional SMTP verbs are defined by this extension
-
- (5) one optional parameter using the keyword SLIDERANGE is added to
- the RCPT TO command. The value associated with this parameter is a
- comma-delimited list of octet ranges indicating which pieces of the
- overall message SHOULD be delivered to the specified recipient. The
- syntax for the value follows, using the ABNF notation of [Crocker
-
-
-
-Ward [Page 2]
-
-INTERNET-DRAFT SMTP Service Extension SLIDE 15 June 2000
-
-
- 1982]:
-
- sliderange-value ::= octet-range *( "," octet-range )
-
- octet-range ::= octet-address [ "-" octet-address ]
-
- octet-address ::= DIGIT *(DIGIT)
-
- DIGIT ::= <any one of the 10 numeric characters (0 through 9)>
-
- (6) the next section specifies how support for the extension affects
- the behaviour of a server and client SMTP; and,
-
- (7) the maximum length of a RCPT TO command line is increased by 256
- characters by the possible addition of the SLIDERANGE keyword and
- value. Of course, since the value could conceivably be longer than
- 256 characters, implementations are welcome to allot more space for
- this purpose.
-
-3. The slightly-differing-multicast-message Service Extension
-
- 3.1 Effects on the Client SMTP
-
- When a client SMTP wishes to submit (using the MAIL command)
- messages with slightly different content to recipients at the same
- server SMTP, it first issues the EHLO command to the server SMTP.
- If the server SMTP responds with code 250 to the EHLO command, and
- the response includes the EHLO keyword value SLIDE, then the
- server SMTP is indicating that it supports the extended RCPT
- command. Such a server SMTP will accept a message containing the
- combined contents of the slightly differing messages addressed to
- all of the recipients for delivery. The method for combining the
- various message bodies (and interpreting combined message bodies)
- is described in the next section.
-
- The extended RCPT command is issued by a client SMTP when it
- wishes to transmit part of a combined message body to the
- specified recipient. The syntax for this command is identical to
- the RCPT command in [Postel 1982], except that a SLIDERANGE
- parameter must appear after the address. Multiple SLIDERANGE
- parameters may be used in a single RCPT command; however, in such
- a case, the values of the several parameters SHOULD be combined
- into a single, continuous, comma-delimited list of octet ranges.
-
- The value associated with the SLIDERANGE parameter lists which
- octets in the impending DATA command are to be sent to the
- specified recipient.
-
-
-
-
-Ward [Page 3]
-
-INTERNET-DRAFT SMTP Service Extension SLIDE 15 June 2000
-
-
- 3.2 Effects on the Server SMTP
-
- A server SMTP which supports the slightly differing multicast
- message service extension SHOULD relay only those octets bound for
- recipients at a particular domain to the mail exchange for that
- domain. If this suggested message trimming occurs, the octets
- specified in the SLIDERANGE parameter for each recipient MUST be
- adjusted to correspond with the changes to the message DATA.
-
- The final 5 octets of the message DATA (<CR><LF>.<CR><LF>) MUST
- always be relayed, even if not explicitly specified in the
- SLIDERANGE parameter value.
-
- Once a server SMTP supporting the slightly differing multicast
- message service extension accepts a message for which any
- recipient has a non-trivial SLIDERANGE parameter value, the server
- SMTP MUST deliver or relay the message in such a way as to ensure
- that only the octets specified for a particular recipient will be
- received by that recipient. As well, when the server SMTP is
- relaying the message, it SHOULD attempt to minimize the number of
- octets that are relayed to each downstream server SMTP.
-
-4. Usage Examples
-
- The following dialogue illustrates the use of the slightly differing
- multicast message service extension:
-
- S: <wait for connection>
- C: <open connection to server>
- S: 220 anstruther.elsewhere.com SMTP ready
- C: EHLO burleigh.uwaterloo.ca
- S: 250-hello burleigh.uwaterloo.ca
- S: 250 SLIDE
- C: MAIL FROM:<andrew@burleigh.uwaterloo.ca>
- S: 250 <andrew@burleigh.uwaterloo.ca>... sender okay
- C: RCPT TO:<ed@elsewhere.com> SLIDERANGE=0-148,180-322
- S: 250 <ed@elsewhere.com>... recipient and SLIDERANGE okay
- C: RCPT TO:<doug@elsewhere.com> SLIDERANGE=0-121,149-272,320-322
- S: 250 <doug@elsewhere.com>... recipient and SLIDERANGE okay
- C: DATA
- S: 354 octets beyond 323 will not be relayed, end with CRLF.CRLF
- C: Message-ID: <1234.abcd@uwaterloo.ca>
- C: Date: Mon, 03 Apr 2000 12:05:10 -0400
- C: From: Andrew <andrew@burleigh.uwaterloo.ca>
- C: To: Ed <ed@elsewhere.com>
- C: To: Doug <doug@elsewhere.com>
- C: Subject: special message
- C:
-
-
-
-Ward [Page 4]
-
-INTERNET-DRAFT SMTP Service Extension SLIDE 15 June 2000
-
-
- C: this is the message body for a special message
- C:
- C: enjoy, andrew
- C:
- C: ps. this is a secret that Doug doesn't know
- C: .
- S: 250 okay
- C: QUIT
- S: 250 bye bye
-
- This transaction would result in ed@elsewhere.com receiving the
- message:
-
- Message-ID: <1234.abcd@uwaterloo.ca>
- Date: Mon, 03 Apr 2000 12:05:10 -0400
- From: Andrew <andrew@burleigh.uwaterloo.ca>
- To: Ed <ed@elsewhere.com>
- Subject: special message
-
- this is the message body for a special message
-
- enjoy, andrew
-
- ps. this is a secret that Doug doesn't know
- .
-
- while doug@elsewhere.com would receive:
-
- Message-ID: <1234.abcd@uwaterloo.ca>
- Date: Mon, 03 Apr 2000 12:05:10 -0400
- From: Andrew <andrew@burleigh.uwaterloo.ca>
- To: Doug <doug@elsewhere.com>
- Subject: special message
-
- this is the message body for a special message
-
- enjoy, andrew
- .
-
- The following dialogue illustrates the efficiencies that can be
- realized in a relaying scenario:
-
- S1: 220 one.there.com SMTP ready
- C0: EHLO zero.here.com
- S1: 250-hello zero.here.com
- S1: 250 SLIDE
- C0: MAIL FROM:<me@here.com>
- S1: 250 <me@here.com>... sender okay
-
-
-
-Ward [Page 5]
-
-INTERNET-DRAFT SMTP Service Extension SLIDE 15 June 2000
-
-
- C0: RCPT TO:<ed@everywhere.com> SLIDERANGE=0-150,200-250
- S1: 250 <ed@everywhere.com>... recipient and SLIDERANGE okay
- C0: RCPT TO:<doug@everywhere.com> SLIDERANGE=0-199
- S1: 250 <doug@everywhere.com>... recipient and SLIDERANGE okay
- C0: RCPT TO:<laurene@everywhere.com> SLIDERANGE=0-250
- S1: 250 <laurene@everywhere.com>... recipient and SLIDERANGE okay
- C0: RCPT TO:<rachael@elsewhere.com>
- S1: 250 <rachael@elsewhere.com>... recipient okay
- C0: DATA
- S1: 354 okay, send message body, end with CRLF.CRLF
- C0: ...<1000 octets of message>...
- C0: .
- S1: 250 okay
- C0: QUIT
- S1: 250 bye bye
- ...
- S2: 220 two.everywhere.com SMTP ready
- C1: EHLO one.there.com
- S2: 250-hello one.there.com
- S2: 250 SLIDE
- C1: MAIL FROM:<me@here.com>
- S2: 250 <me@here.com>... sender okay
- C1: RCPT TO:<ed@everywhere.com> SLIDERANGE=0-150,200-250
- S2: 250 <ed@everywhere.com>... recipient and SLIDERANGE okay
- C1: RCPT TO:<doug@everywhere.com> SLIDERANGE=0-199
- S2: 250 <doug@everywhere.com>... recipient and SLIDERANGE okay
- C1: RCPT TO:<laurene@everywhere.com>
- S2: 250 <laurene@everywhere.com>... recipient okay
- C1: DATA
- S2: 354 okay, send message body, end with CRLF.CRLF
- C1: ...<octets 0 to 250 of message>...
- C1: .
- S2: 250 okay
- C1: QUIT
- S2: 250 bye bye
- ...
- S3: 220 three.elsewhere.com SMTP ready
- C1: EHLO one.there.com
- S3: 250-hello one.there.com
- S3: 250 SLIDE
- C1: MAIL FROM:<me@here.com>
- S3: 250 <me@here.com>... sender okay
- C1: RCPT TO:<rachael@elsewhere.com>
- S3: 250 <rachael@elsewhere.com>... recipient okay
- C1: DATA
- S3: 354 okay, send message body, end with CRLF.CRLF
- C1: ...<all octets of message>...
- C1: .
-
-
-
-Ward [Page 6]
-
-INTERNET-DRAFT SMTP Service Extension SLIDE 15 June 2000
-
-
- S3: 250 okay
- C1: QUIT
- S3: 250 bye bye
-
-5. Security Considerations
-
- This extension takes some of the "final control" over the message
- body out of the hands of the client, and places it on the server
- SMTPs that are charged with relaying and delivering the message.
- While any server SMTP has access to change the content of a message
- that it relays or delivers, a server SMTP that supports the slightly
- differing multicast message service extension is obliged to be able
- to alter a message that takes advantage of this extension. As a
- result of the increased handling by the server SMTP, there is more
- room for error in the message transmission.
-
- 5.1 Impact on Signed and Encrypted Messages
-
- Messages that are transferred between a client SMTP and a server
- SMTP over a secure channel such as SSL or TLS should not be
- adversely affected by the SLIDE extension.
-
- Things get messy when it comes to signing or encrypting the
- message data (all or part of the information sent to the server
- SMTP following a 354 response to the DATA command). Two
- alternatives are suggested in section (5.1.1) and section (5.1.2).
- A client SMTP may implement either method, as both methods can be
- used transparently to all other nodes in the chain of relays
- (including the final server SMTP node).
-
- 5.1.1 Piecewise Signing and Encryption
-
- With this method, the initial client SMTP may sign or encrypt
- each separate range of bytes (or part thereof), as defined by
- the various SLIDERANGE values.
-
- As an example, consider the piecewise approach as applied to
- the first usage example presented in section 4.
-
- S: <wait for connection>
- C: <open connection to server>
- S: 220 anstruther.elsewhere.com SMTP ready
- C: EHLO burleigh.uwaterloo.ca
- S: 250-hello burleigh.uwaterloo.ca
- S: 250 SLIDE
- C: MAIL FROM:<andrew@burleigh.uwaterloo.ca>
- S: 250 <andrew@burleigh.uwaterloo.ca>... sender okay
- C: RCPT TO:<ed@elsewhere.com> SLIDERANGE=0-148,180-727
-
-
-
-Ward [Page 7]
-
-INTERNET-DRAFT SMTP Service Extension SLIDE 15 June 2000
-
-
- S: 250 <ed@elsewhere.com>... recipient and SLIDERANGE okay
- C: RCPT TO:<doug@elsewhere.com> SLIDERANGE=0-121,149-483,725-727
- S: 250 <doug@elsewhere.com>... recipient and SLIDERANGE okay
- C: DATA
- S: 354 octets beyond 728 will not be relayed, end with CRLF.CRLF
- C: Message-ID: <1234.abcd@uwaterloo.ca>
- C: Date: Mon, 03 Apr 2000 12:05:10 -0400
- C: From: Andrew <andrew@burleigh.uwaterloo.ca>
- C: To: Ed <ed@elsewhere.com>
- C: To: Doug <doug@elsewhere.com>
- C: Subject: special message
- C:
- C: -----BEGIN PGP SIGNED MESSAGE-----
- C: Hash: SHA1
- C:
- C: this is the message body for a special message
- C:
- C: enjoy, andrew
- C: -----BEGIN PGP SIGNATURE-----
- C: Version: fakePGP v0.0
- C:
- C: aefiuh98ar7ehfpo34h9q83h4fp9q34h9a8efha9348hao
- C: 98h5nbq3rub9a08ahfoi4no34=
- C: -----END PGP SIGNATURE-----
- C:
- C: -----BEGIN PGP SIGNED MESSAGE-----
- C: Hash: SHA1
- C:
- C: ps. this is a secret that Doug doesn't know
- C: -----BEGIN PGP SIGNATURE-----
- C: Version: fakePGP v0.0
- C:
- C: 98sdu9bd9fu4eiob3iovb9eb93buiou908fhv9sf
- C: jlknsdfi0h93un=
- C: -----END PGP SIGNATURE-----
- C: .
- S: 250 okay
- C: QUIT
- S: 250 bye bye
-
-
- 5.1.2 Component Message Signing
-
- This method creates a single signature for each distinct
- message contained in a set of messages encoded using the SLIDE
- extension. During encoding of the SLIDE message, each
- component message that needs to be signed can have a signature
- generated for it before the component messages are SLIDE
-
-
-
-Ward [Page 8]
-
-INTERNET-DRAFT SMTP Service Extension SLIDE 15 June 2000
-
-
- encoded.
-
- It is important to note that in most (if not all) cases this
- will not work for encryption, as the same text in the
- unencrypted component messages will not generate the same
- encrypted group of octets.
-
- As an example, consider the component message approach as
- applied to the first usage example presented in section 4.
-
- S: <wait for connection>
- C: <open connection to server>
- S: 220 anstruther.elsewhere.com SMTP ready
- C: EHLO burleigh.uwaterloo.ca
- S: 250-hello burleigh.uwaterloo.ca
- S: 250 SLIDE
- C: MAIL FROM:<andrew@burleigh.uwaterloo.ca>
- S: 250 <andrew@burleigh.uwaterloo.ca>... sender okay
- C: RCPT TO:<ed@elsewhere.com> SLIDERANGE=0-148,180-322,484-677
- S: 250 <ed@elsewhere.com>... recipient and SLIDERANGE okay
- C: RCPT TO:<doug@elsewhere.com> SLIDERANGE=0-121,149-483,675-677
- S: 250 <doug@elsewhere.com>... recipient and SLIDERANGE okay
- C: DATA
- S: 354 octets beyond 678 will not be relayed, end with CRLF.CRLF
- C: Message-ID: <1234.abcd@uwaterloo.ca>
- C: Date: Mon, 03 Apr 2000 12:05:10 -0400
- C: From: Andrew <andrew@burleigh.uwaterloo.ca>
- C: To: Ed <ed@elsewhere.com>
- C: To: Doug <doug@elsewhere.com>
- C: Subject: special message
- C:
- C: -----BEGIN PGP SIGNED MESSAGE-----
- C: Hash: SHA1
- C:
- C: this is the message body for a special message
- C:
- C: enjoy, andrew
- C: -----BEGIN PGP SIGNATURE-----
- C: Version: fakePGP v0.0
- C:
- C: nsdf9n934nioq3j4un9ua9fvuerh98h43n9ae8u85
- C: 34kjfbna9ea9e8rb8d9sd0ge3=
- C: -----END PGP SIGNATURE-----
- C:
- C: ps. this is a secret that Doug doesn't know
- C: -----BEGIN PGP SIGNATURE-----
- C: Version: fakePGP v0.0
- C:
-
-
-
-Ward [Page 9]
-
-INTERNET-DRAFT SMTP Service Extension SLIDE 15 June 2000
-
-
- C: ikbdfv98u4bka8rhi34ubkq3828756bkjai7rf7
- C: 1kj3k4jnkj3kjk3=
- C: -----END PGP SIGNATURE-----
- C: .
- S: 250 okay
- C: QUIT
- S: 250 bye bye
-
-
-6. Acknowledgements
-
- Thanks to Ed, Doug, Laurene and Rachael for their (unwilling)
- participation in the usage examples. Thanks to Dan Wing for his
- suggested improvements in usage examples and security considerations.
-
-7. References
-
- [Bradner 1997] Bradner, S. "Key words for use in RFCs to Indicate
- Requirement Levels", BCP 14, RFC 2119. March 1997.
-
- [Crocker 1982] Crocker, D. "Standard for the Format of ARPA
- Internet Text Messages", STD 11, RFC 822. UDEL, August 1982.
-
- [Klensin, et al 1995] Klensin, J., N. Freed, M. Rose, E. Stefferud,
- and D. Crocker. "SMTP Service Extensions", STD 10, RFC 1869.
- November 1995.
-
- [Postel 1982] Postel, J. "Simple Mail Transfer Protocol", STD 10,
- RFC 821. USC/Information Sciences Institute, August 1982.
-
-8. Author's Address
-
- Andrew Ward
- 70 Gruhn Street
- Kitchener, ON N2G 1S6
- CANADA
-
- Phone: +1 519 581 1201
- EMail: amward@uwaterloo.ca
-
-
-
- EXPIRES: 15 December 2000
-
-
-
-
-
-
-
-
-Ward [Page 10]
-