| < draft-ietf-drums-msg-fmt | rfc2822.txt | |||
|---|---|---|---|---|
| Network Working Group P. Resnick, Editor | ||||
| INTERNET-DRAFT QUALCOMM Incorporated | ||||
| <draft-ietf-drums-msg-fmt-08.txt> January 26, 2000 | ||||
| Internet Message Format | ||||
| 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 | Network Working Group P. Resnick, Editor | |||
| Force (IETF), its areas, and its working groups. Note that other groups | Request for Comments: 2822 QUALCOMM Incorporated | |||
| may also distribute working documents as Internet-Drafts. | Obsoletes: 822 April 2001 | |||
| Category: Standards Track | ||||
| 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 | Internet Message Format | |||
| http://www.ietf.org/shadow.html. | ||||
| Note: Though this document uses the word "standard" in both the title | Status of this Memo | |||
| and the body of the text, it is of course still an Internet Draft and is | ||||
| NOT actually a standard until it has been approved and published as an | ||||
| RFC. | ||||
| This document expires July 26, 2000. | This document specifies an Internet standards track protocol for the | |||
| Internet community, and requests discussion and suggestions for | ||||
| improvements. Please refer to the current edition of the "Internet | ||||
| Official Protocol Standards" (STD 1) for the standardization state | ||||
| and status of this protocol. Distribution of this memo is unlimited. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (C) The Internet Society (2000). All Rights Reserved. See | Copyright (C) The Internet Society (2001). All Rights Reserved. | |||
| Appendix C for further information. | ||||
| Abstract | Abstract | |||
| This standard specifies a syntax for text messages that are sent between | This standard specifies a syntax for text messages that are sent | |||
| computer users, within the framework of "electronic mail" messages. This | between computer users, within the framework of "electronic mail" | |||
| standard supersedes the one specified in Request For Comments 822, | messages. This standard supersedes the one specified in Request For | |||
| "Standard for the Format of ARPA Internet Text Messages" [RFC-822], | Comments (RFC) 822, "Standard for the Format of ARPA Internet Text | |||
| updating it to reflect current practice and incorporating incremental | Messages", updating it to reflect current practice and incorporating | |||
| changes that were specified in other RFCs [STD-3]. | incremental changes that were specified in other RFCs. | |||
| Table of contents | Table of Contents | |||
| [TBD] | 1. Introduction ............................................... 3 | |||
| 1.1. Scope .................................................... 3 | ||||
| 1.2. Notational conventions ................................... 4 | ||||
| 1.2.1. Requirements notation .................................. 4 | ||||
| 1.2.2. Syntactic notation ..................................... 4 | ||||
| 1.3. Structure of this document ............................... 4 | ||||
| 2. Lexical Analysis of Messages ............................... 5 | ||||
| 2.1. General Description ...................................... 5 | ||||
| 2.1.1. Line Length Limits ..................................... 6 | ||||
| 2.2. Header Fields ............................................ 7 | ||||
| 2.2.1. Unstructured Header Field Bodies ....................... 7 | ||||
| 2.2.2. Structured Header Field Bodies ......................... 7 | ||||
| 2.2.3. Long Header Fields ..................................... 7 | ||||
| 2.3. Body ..................................................... 8 | ||||
| 3. Syntax ..................................................... 9 | ||||
| 3.1. Introduction ............................................. 9 | ||||
| 3.2. Lexical Tokens ........................................... 9 | ||||
| 3.2.1. Primitive Tokens ....................................... 9 | ||||
| 3.2.2. Quoted characters ......................................10 | ||||
| 3.2.3. Folding white space and comments .......................11 | ||||
| 3.2.4. Atom ...................................................12 | ||||
| 3.2.5. Quoted strings .........................................13 | ||||
| 3.2.6. Miscellaneous tokens ...................................13 | ||||
| 3.3. Date and Time Specification ..............................14 | ||||
| 3.4. Address Specification ....................................15 | ||||
| 3.4.1. Addr-spec specification ................................16 | ||||
| 3.5 Overall message syntax ....................................17 | ||||
| 3.6. Field definitions ........................................18 | ||||
| 3.6.1. The origination date field .............................20 | ||||
| 3.6.2. Originator fields ......................................21 | ||||
| 3.6.3. Destination address fields .............................22 | ||||
| 3.6.4. Identification fields ..................................23 | ||||
| 3.6.5. Informational fields ...................................26 | ||||
| 3.6.6. Resent fields ..........................................26 | ||||
| 3.6.7. Trace fields ...........................................28 | ||||
| 3.6.8. Optional fields ........................................29 | ||||
| 4. Obsolete Syntax ............................................29 | ||||
| 4.1. Miscellaneous obsolete tokens ............................30 | ||||
| 4.2. Obsolete folding white space .............................31 | ||||
| 4.3. Obsolete Date and Time ...................................31 | ||||
| 4.4. Obsolete Addressing ......................................33 | ||||
| 4.5. Obsolete header fields ...................................33 | ||||
| 4.5.1. Obsolete origination date field ........................34 | ||||
| 4.5.2. Obsolete originator fields .............................34 | ||||
| 4.5.3. Obsolete destination address fields ....................34 | ||||
| 4.5.4. Obsolete identification fields .........................35 | ||||
| 4.5.5. Obsolete informational fields ..........................35 | ||||
| 4.5.6. Obsolete resent fields .................................35 | ||||
| 4.5.7. Obsolete trace fields ..................................36 | ||||
| 4.5.8. Obsolete optional fields ...............................36 | ||||
| 5. Security Considerations ....................................36 | ||||
| 6. Bibliography ...............................................37 | ||||
| 7. Editor's Address ...........................................38 | ||||
| 8. Acknowledgements ...........................................39 | ||||
| Appendix A. Example messages ..................................41 | ||||
| A.1. Addressing examples ......................................41 | ||||
| A.1.1. A message from one person to another with simple | ||||
| addressing .............................................41 | ||||
| A.1.2. Different types of mailboxes ...........................42 | ||||
| A.1.3. Group addresses ........................................43 | ||||
| A.2. Reply messages ...........................................43 | ||||
| A.3. Resent messages ..........................................44 | ||||
| A.4. Messages with trace fields ...............................46 | ||||
| A.5. White space, comments, and other oddities ................47 | ||||
| A.6. Obsoleted forms ..........................................47 | ||||
| A.6.1. Obsolete addressing ....................................48 | ||||
| A.6.2. Obsolete dates .........................................48 | ||||
| A.6.3. Obsolete white space and comments ......................48 | ||||
| Appendix B. Differences from earlier standards ................49 | ||||
| Appendix C. Notices ...........................................50 | ||||
| Full Copyright Statement ......................................51 | ||||
| 1. Introduction | 1. Introduction | |||
| 1.1. Scope | 1.1. Scope | |||
| This standard specifies a syntax for text messages that are sent between | This standard specifies a syntax for text messages that are sent | |||
| computer users, within the framework of "electronic mail" messages. This | between computer users, within the framework of "electronic mail" | |||
| standard supersedes the one specified in Request For Comments 822, | messages. This standard supersedes the one specified in Request For | |||
| "Standard for the Format of ARPA Internet Text Messages" [RFC-822], | Comments (RFC) 822, "Standard for the Format of ARPA Internet Text | |||
| updating it to reflect current practice and incorporating incremental | Messages" [RFC822], updating it to reflect current practice and | |||
| changes that were specified in other RFCs [STD-3]. | incorporating incremental changes that were specified in other RFCs | |||
| [STD3]. | ||||
| This standard specifies a syntax only for text messages. In particular, | This standard specifies a syntax only for text messages. In | |||
| it makes no provision for the transmission of images, audio, or other | particular, it makes no provision for the transmission of images, | |||
| sorts of structured data in electronic mail messages. There are several | audio, or other sorts of structured data in electronic mail messages. | |||
| extensions published, such as the MIME document series [RFC-2045, RFC- | There are several extensions published, such as the MIME document | |||
| 2046, RFC-2049], which describe mechanisms for the transmission of such | series [RFC2045, RFC2046, RFC2049], which describe mechanisms for the | |||
| data through electronic mail, either by extending the syntax provided | transmission of such data through electronic mail, either by | |||
| here or by structuring such messages to conform to this syntax. Those | extending the syntax provided here or by structuring such messages to | |||
| mechanisms are outside of the scope of this standard. | conform to this syntax. Those mechanisms are outside of the scope of | |||
| this standard. | ||||
| In the context of electronic mail, messages are viewed as having an | In the context of electronic mail, messages are viewed as having an | |||
| envelope and contents. The envelope contains whatever information is | envelope and contents. The envelope contains whatever information is | |||
| needed to accomplish transmission and delivery. (See [SMTP] for a | needed to accomplish transmission and delivery. (See [RFC2821] for a | |||
| discussion of the envelope.) The contents comprise the object to be | discussion of the envelope.) The contents comprise the object to be | |||
| delivered to the recipient. This standard applies only to the format and | delivered to the recipient. This standard applies only to the format | |||
| some of the semantics of message contents. It contains no specification | and some of the semantics of message contents. It contains no | |||
| of the information in the envelope. | specification of the information in the envelope. | |||
| However, some message systems may use information from the contents to | However, some message systems may use information from the contents | |||
| create the envelope. It is intended that this standard facilitate the | to create the envelope. It is intended that this standard facilitate | |||
| acquisition of such information by programs. | the acquisition of such information by programs. | |||
| This specification is intended as a definition of what message content | This specification is intended as a definition of what message | |||
| format is to be passed between systems. Though some message systems | content format is to be passed between systems. Though some message | |||
| locally store messages in this format (which eliminates the need for | systems locally store messages in this format (which eliminates the | |||
| translation between formats) and others use formats that differ from the | need for translation between formats) and others use formats that | |||
| one specified in this standard, local storage is outside of the scope of | differ from the one specified in this standard, local storage is | |||
| this standard. | outside of the scope of this standard. | |||
| Note: This standard is not intended to dictate the internal formats used | Note: This standard is not intended to dictate the internal formats | |||
| by sites, the specific message system features that they are expected to | used by sites, the specific message system features that they are | |||
| support, or any of the characteristics of user interface programs that | expected to support, or any of the characteristics of user interface | |||
| create or read messages. In addition, this standard does not specify an | programs that create or read messages. In addition, this standard | |||
| encoding of the characters for either transport or storage; that is, it | does not specify an encoding of the characters for either transport | |||
| does not specify the number of bits used or how those bits are | or storage; that is, it does not specify the number of bits used or | |||
| specifically transferred over the wire or stored on disk. | how those bits are specifically transferred over the wire or stored | |||
| on disk. | ||||
| 1.2. Notational conventions | 1.2. Notational conventions | |||
| 1.2.1. Requirements notation | 1.2.1. Requirements notation | |||
| This document occasionally uses terms that appear in capital letters. | This document occasionally uses terms that appear in capital letters. | |||
| When the terms "MUST", "SHOULD", "RECOMMENDED", "MUST NOT", "SHOULD | When the terms "MUST", "SHOULD", "RECOMMENDED", "MUST NOT", "SHOULD | |||
| NOT", and "MAY" appear capitalized, they are being used to indicate | NOT", and "MAY" appear capitalized, they are being used to indicate | |||
| particular requirements of this specification. A discussion of the | particular requirements of this specification. A discussion of the | |||
| meanings of these terms appears in [RFC-2119]. | meanings of these terms appears in [RFC2119]. | |||
| 1.2.2. Syntactic notation | 1.2.2. Syntactic notation | |||
| This standard uses the Augmented Backus-Naur Form (ABNF) notation | This standard uses the Augmented Backus-Naur Form (ABNF) notation | |||
| specified in [RFC-2234] for the formal definitions of the syntax of | specified in [RFC2234] for the formal definitions of the syntax of | |||
| messages. Characters will be specified either by a decimal value (e.g., | messages. Characters will be specified either by a decimal value | |||
| the value %d65 for uppercase A and %d97 for lowercase A) or by a case- | (e.g., the value %d65 for uppercase A and %d97 for lowercase A) or by | |||
| insensitive literal value enclosed in quotation marks (e.g., "A" for | a case-insensitive literal value enclosed in quotation marks (e.g., | |||
| either uppercase or lowercase A). See [RFC-2234] for the full | "A" for either uppercase or lowercase A). See [RFC2234] for the full | |||
| description of the notation. | description of the notation. | |||
| 1.3. Structure of this document | 1.3. Structure of this document | |||
| This document is divided into several sections. | This document is divided into several sections. | |||
| This section, section 1, is a short introduction to the document. | This section, section 1, is a short introduction to the document. | |||
| Section 2 will lay out the general description of a message and its | Section 2 lays out the general description of a message and its | |||
| constituent parts. This is an overview to help the reader understand | constituent parts. This is an overview to help the reader understand | |||
| some of the general principles used in the later portions of this | some of the general principles used in the later portions of this | |||
| document. Any examples in this section MUST NOT be taken as | document. Any examples in this section MUST NOT be taken as | |||
| specification of the formal syntax of any part of a message. | specification of the formal syntax of any part of a message. | |||
| Section 3 will specify formal ABNF rules for the structure of each part | Section 3 specifies formal ABNF rules for the structure of each part | |||
| of a message (syntax) and describe the relationship between those parts | of a message (the syntax) and describes the relationship between | |||
| and their meaning in the context of a message (the semantics). That is, | those parts and their meaning in the context of a message (the | |||
| it will describe the actual rules for the structure of each part of a | semantics). That is, it describes the actual rules for the structure | |||
| message (the syntax) as well as a description of the parts and | of each part of a message (the syntax) as well as a description of | |||
| instructions on how they ought to be interpreted (the semantics). This | the parts and instructions on how they ought to be interpreted (the | |||
| will include analysis of the syntax and semantics of subparts of | semantics). This includes analysis of the syntax and semantics of | |||
| messages that have specific structure. The syntax included in section 3 | subparts of messages that have specific structure. The syntax | |||
| represents messages as they MUST be created. There are also notes in | included in section 3 represents messages as they MUST be created. | |||
| section 3 to indicate if any of the options specified in the syntax | There are also notes in section 3 to indicate if any of the options | |||
| SHOULD be used over any of the others. | specified in the syntax SHOULD be used over any of the others. | |||
| Both sections 2 and 3 describe messages that are legal to generate for | Both sections 2 and 3 describe messages that are legal to generate | |||
| purposes of this standard. | for purposes of this standard. | |||
| Section 4 of this document specifies an "obsolete" syntax. There are | Section 4 of this document specifies an "obsolete" syntax. There are | |||
| references in section 3 to these obsolete syntactic elements. The rules | references in section 3 to these obsolete syntactic elements. The | |||
| of the obsolete syntax are elements that have appeared in earlier | rules of the obsolete syntax are elements that have appeared in | |||
| revisions of this standard or have previously been widely used in | earlier revisions of this standard or have previously been widely | |||
| Internet messages. As such, these elements MUST be interpreted by | used in Internet messages. As such, these elements MUST be | |||
| parsers of messages in order to be conformant to this standard. However, | interpreted by parsers of messages in order to be conformant to this | |||
| since items in this syntax have been determined to be non-interoperable | standard. However, since items in this syntax have been determined | |||
| or to cause significant problems for recipients of messages, they MUST | to be non-interoperable or to cause significant problems for | |||
| NOT be generated by creators of conformant messages. | recipients of messages, they MUST NOT be generated by creators of | |||
| conformant messages. | ||||
| Section 5 details security considerations to take into account when | Section 5 details security considerations to take into account when | |||
| implementing this standard. | implementing this standard. | |||
| Section 6 is a bibliography of references in this document. | Section 6 is a bibliography of references in this document. | |||
| Section 7 contains the author's address and instructions on where to | Section 7 contains the editor's address. | |||
| send comments. | ||||
| Section 8 contains acknowledgements. | Section 8 contains acknowledgements. | |||
| Appendix A lists examples of different sorts of messages. These examples | Appendix A lists examples of different sorts of messages. These | |||
| are not exhaustive of the types of messages that appear on the Internet, | examples are not exhaustive of the types of messages that appear on | |||
| but give a broad overview of certain syntactic forms. | the Internet, but give a broad overview of certain syntactic forms. | |||
| Appendix B lists the differences between this standard and earlier | Appendix B lists the differences between this standard and earlier | |||
| standards for Internet messages. | standards for Internet messages. | |||
| Appendix C has copyright and intellectual property notices. | Appendix C has copyright and intellectual property notices. | |||
| 2. Lexical Analysis of Messages | 2. Lexical Analysis of Messages | |||
| 2.1. General Description | 2.1. General Description | |||
| At the most basic level, a message is a series of characters. A message | At the most basic level, a message is a series of characters. A | |||
| that is conformant with this standard is comprised of characters with | message that is conformant with this standard is comprised of | |||
| values in the range 1 through 127 and interpreted as US-ASCII characters | characters with values in the range 1 through 127 and interpreted as | |||
| [ASCII]. For brevity, this document sometimes refers to this range of | US-ASCII characters [ASCII]. For brevity, this document sometimes | |||
| characters as simply "US-ASCII characters". | refers to this range of characters as simply "US-ASCII characters". | |||
| Note: This standard specifies that messages are made up of characters in | Note: This standard specifies that messages are made up of characters | |||
| the US-ASCII range of 1 through 127. There are other documents, | in the US-ASCII range of 1 through 127. There are other documents, | |||
| specifically the MIME document series [RFC-2045, RFC-2046, RFC-2047, | specifically the MIME document series [RFC2045, RFC2046, RFC2047, | |||
| RFC-2048, RFC-2049], that extend this standard to allow for values | RFC2048, RFC2049], that extend this standard to allow for values | |||
| outside of that range. Discussion of those mechanisms is not within the | outside of that range. Discussion of those mechanisms is not within | |||
| scope of this standard. | the scope of this standard. | |||
| Messages are divided into lines of characters. A line is a series of | Messages are divided into lines of characters. A line is a series of | |||
| characters that is delimited with the two characters carriage-return and | characters that is delimited with the two characters carriage-return | |||
| line-feed; that is, the carriage return (CR) character (ASCII value 13) | and line-feed; that is, the carriage return (CR) character (ASCII | |||
| followed immediately by the line feed (LF) character (ASCII value 10). | value 13) followed immediately by the line feed (LF) character (ASCII | |||
| (The carriage-return/line-feed pair is usually written in this document | value 10). (The carriage-return/line-feed pair is usually written in | |||
| as "CRLF".) Each line of characters MUST be limited to 998 characters, | this document as "CRLF".) | |||
| and SHOULD be limited to 78 characters, excluding the CRLF. | ||||
| Note: The 998 character limit is due to limitations in many | A message consists of header fields (collectively called "the header | |||
| implementations which send, receive, or store Internet Message Format | of the message") followed, optionally, by a body. The header is a | |||
| messages that simply cannot handle more than 998 characters on a line. | sequence of lines of characters with special syntax as defined in | |||
| The 78 character recommendation is due to limitations in many | this standard. The body is simply a sequence of characters that | |||
| implementations that display these messages which may truncate the | follows the header and is separated from the header by an empty line | |||
| display of more than 78 characters per line. Of course, even though | (i.e., a line with nothing preceding the CRLF). | |||
| these limitations are put on messages, interpreters of messages would do | ||||
| well to handle an arbitrarily large number of characters in a line, | ||||
| including for display, for robustness' sake. | ||||
| A message consists of header fields (collectively called "the header of | 2.1.1. Line Length Limits | |||
| the message") followed, optionally, by a body. The header is a sequence | ||||
| of lines of characters with special syntax as defined in this standard. | There are two limits that this standard places on the number of | |||
| The body is simply a sequence of characters that follows the header and | characters in a line. Each line of characters MUST be no more than | |||
| is separated from the header by an empty line (i.e., a line with nothing | 998 characters, and SHOULD be no more than 78 characters, excluding | |||
| preceding the CRLF). | the CRLF. | |||
| The 998 character limit is due to limitations in many implementations | ||||
| which send, receive, or store Internet Message Format messages that | ||||
| simply cannot handle more than 998 characters on a line. Receiving | ||||
| implementations would do well to handle an arbitrarily large number | ||||
| of characters in a line for robustness sake. However, there are so | ||||
| many implementations which (in compliance with the transport | ||||
| requirements of [RFC2821]) do not accept messages containing more | ||||
| than 1000 character including the CR and LF per line, it is important | ||||
| for implementations not to create such messages. | ||||
| The more conservative 78 character recommendation is to accommodate | ||||
| the many implementations of user interfaces that display these | ||||
| messages which may truncate, or disastrously wrap, the display of | ||||
| more than 78 characters per line, in spite of the fact that such | ||||
| implementations are non-conformant to the intent of this | ||||
| specification (and that of [RFC2821] if they actually cause | ||||
| information to be lost). Again, even though this limitation is put on | ||||
| messages, it is encumbant upon implementations which display messages | ||||
| to handle an arbitrarily large number of characters in a line | ||||
| (certainly at least up to the 998 character limit) for the sake of | ||||
| robustness. | ||||
| 2.2. Header Fields | 2.2. Header Fields | |||
| Header fields are lines composed of a field name, followed by a colon | Header fields are lines composed of a field name, followed by a colon | |||
| (":"), followed by a field body, and terminated by CRLF. A field name | (":"), followed by a field body, and terminated by CRLF. A field | |||
| MUST be composed of printable US-ASCII characters (i.e., characters that | name MUST be composed of printable US-ASCII characters (i.e., | |||
| have values between 33 and 126, inclusive), except colon. A field body | characters that have values between 33 and 126, inclusive), except | |||
| may be composed of any US-ASCII characters, except for CR and LF. | colon. A field body may be composed of any US-ASCII characters, | |||
| However, a field body may contain CRLF when used in header "folding" and | except for CR and LF. However, a field body may contain CRLF when | |||
| "unfolding" as described in section 2.2.3. All field bodies MUST conform | used in header "folding" and "unfolding" as described in section | |||
| to the syntax described in sections 3 and 4 of this standard. | 2.2.3. All field bodies MUST conform to the syntax described in | |||
| sections 3 and 4 of this standard. | ||||
| 2.2.1. Unstructured Header Field Bodies | 2.2.1. Unstructured Header Field Bodies | |||
| Some field bodies in this standard are defined simply as "unstructured" | Some field bodies in this standard are defined simply as | |||
| (which is specified below as any US-ASCII characters, except for CR and | "unstructured" (which is specified below as any US-ASCII characters, | |||
| LF) with no further restrictions. These are referred to as unstructured | except for CR and LF) with no further restrictions. These are | |||
| field bodies. Semantically, unstructured field bodies are simply to be | referred to as unstructured field bodies. Semantically, unstructured | |||
| treated as a single line of characters with no further processing | field bodies are simply to be treated as a single line of characters | |||
| (except for header "folding" and "unfolding" as described in section | with no further processing (except for header "folding" and | |||
| 2.2.3). | "unfolding" as described in section 2.2.3). | |||
| 2.2.2. Structured Header Field Bodies | 2.2.2. Structured Header Field Bodies | |||
| Some field bodies in this standard have specific syntactical structure | Some field bodies in this standard have specific syntactical | |||
| more restrictive than the unstructured field bodies described above. | structure more restrictive than the unstructured field bodies | |||
| These are referred to as "structured" field bodies. Structured field | described above. These are referred to as "structured" field bodies. | |||
| bodies are sequences of specific lexical tokens as described in sections | Structured field bodies are sequences of specific lexical tokens as | |||
| 3 and 4 of this standard. Many of these tokens are allowed (according to | described in sections 3 and 4 of this standard. Many of these tokens | |||
| their syntax) to be introduced or end with comments (as described in | are allowed (according to their syntax) to be introduced or end with | |||
| section 3.2.3) as well as the space (SP, ASCII value 32) and horizontal | comments (as described in section 3.2.3) as well as the space (SP, | |||
| tab (HTAB, ASCII value 9) characters (together known as the white space | ASCII value 32) and horizontal tab (HTAB, ASCII value 9) characters | |||
| characters, WSP), and those WSP characters are subject to header | (together known as the white space characters, WSP), and those WSP | |||
| "folding" and "unfolding" as described in section 2.2.3. Semantic | characters are subject to header "folding" and "unfolding" as | |||
| analysis of structured field bodies is given along with their syntax. | described in section 2.2.3. Semantic analysis of structured field | |||
| bodies is given along with their syntax. | ||||
| 2.2.3. Long Header Fields | 2.2.3. Long Header Fields | |||
| Each header field is logically a single line of characters comprising | Each header field is logically a single line of characters comprising | |||
| the field name, the colon, and the field body. For convenience however, | the field name, the colon, and the field body. For convenience | |||
| and to deal with the 998/78 character limitations per line, the field | however, and to deal with the 998/78 character limitations per line, | |||
| body portion of a header field can be split into a multiple line | the field body portion of a header field can be split into a multiple | |||
| representation; this is called "folding". The general rule is that | line representation; this is called "folding". The general rule is | |||
| wherever this standard allows for folding white space (not simply WSP | that wherever this standard allows for folding white space (not | |||
| characters), a CRLF may be inserted before any WSP. For example, the | simply WSP characters), a CRLF may be inserted before any WSP. For | |||
| header field: | example, the header field: | |||
| Subject: This is a test | Subject: This is a test | |||
| can be represented as: | can be represented as: | |||
| Subject: This | Subject: This | |||
| is a test | is a test | |||
| Note: Though structured field bodies are defined in such a way that | Note: Though structured field bodies are defined in such a way that | |||
| folding can take place between many of the lexical tokens (and even | folding can take place between many of the lexical tokens (and even | |||
| within some of the lexical tokens), folding SHOULD be limited to placing | within some of the lexical tokens), folding SHOULD be limited to | |||
| the CRLF at higher-level syntactic breaks. For instance, if a field body | placing the CRLF at higher-level syntactic breaks. For instance, if | |||
| is defined as comma-separated values, it is recommended that folding | a field body is defined as comma-separated values, it is recommended | |||
| occur after the comma separating the structured items in preference to | that folding occur after the comma separating the structured items in | |||
| other places where the field could be folded, even if it is allowed | preference to other places where the field could be folded, even if | |||
| elsewhere. | it is allowed elsewhere. | |||
| The process of moving from this folded multiple-line representation of a | The process of moving from this folded multiple-line representation | |||
| header field to its single line representation is called "unfolding". | of a header field to its single line representation is called | |||
| Unfolding is accomplished by simply removing any CRLF that is | "unfolding". Unfolding is accomplished by simply removing any CRLF | |||
| immediately followed by WSP. Each header field should be treated in its | that is immediately followed by WSP. Each header field should be | |||
| unfolded form for further syntactic and semantic evaluation. | treated in its unfolded form for further syntactic and semantic | |||
| evaluation. | ||||
| 2.3. Body | 2.3. Body | |||
| The body of a message is simply lines of US-ASCII characters. The only | The body of a message is simply lines of US-ASCII characters. The | |||
| two limitations on the body are as follows: | only two limitations on the body are as follows: | |||
| - CR and LF MUST only occur together as CRLF; they MUST NOT appear | - CR and LF MUST only occur together as CRLF; they MUST NOT appear | |||
| independently in the body. | independently in the body. | |||
| - Lines of characters in the body MUST be limited to 998 characters, and | - Lines of characters in the body MUST be limited to 998 characters, | |||
| SHOULD be limited to 78 characters, excluding the CRLF. | and SHOULD be limited to 78 characters, excluding the CRLF. | |||
| Note: As was stated earlier, there are other standards documents, | Note: As was stated earlier, there are other standards documents, | |||
| specifically the MIME documents [RFC-2045, RFC-2046, RFC-2048, RFC-2049] | specifically the MIME documents [RFC2045, RFC2046, RFC2048, RFC2049] | |||
| that extend this standard to allow for different sorts of message | that extend this standard to allow for different sorts of message | |||
| bodies. Again, these mechanisms are beyond the scope of this document. | bodies. Again, these mechanisms are beyond the scope of this | |||
| document. | ||||
| 3. Syntax | 3. Syntax | |||
| 3.1. Introduction | 3.1. Introduction | |||
| The syntax as given in this section defines the legal syntax of Internet | The syntax as given in this section defines the legal syntax of | |||
| messages. Messages that are conformant to this standard MUST conform to | Internet messages. Messages that are conformant to this standard | |||
| the syntax in this section. If there are options in this section where | MUST conform to the syntax in this section. If there are options in | |||
| one option SHOULD be generated, that is indicated either in the prose or | this section where one option SHOULD be generated, that is indicated | |||
| in a comment next to the syntax. | either in the prose or in a comment next to the syntax. | |||
| For the defined expressions, a short description of the syntax and use | For the defined expressions, a short description of the syntax and | |||
| is given, followed by the syntax in ABNF, followed by a semantic | use is given, followed by the syntax in ABNF, followed by a semantic | |||
| analysis. Primitive tokens that are used but otherwise unspecified come | analysis. Primitive tokens that are used but otherwise unspecified | |||
| from [RFC-2234]. | come from [RFC2234]. | |||
| In some of the definitions, there will be nonterminals whose names start | In some of the definitions, there will be nonterminals whose names | |||
| with "obs-". These "obs-" elements refer to tokens defined in the | start with "obs-". These "obs-" elements refer to tokens defined in | |||
| obsolete syntax in section 4. In all cases, these productions are to be | the obsolete syntax in section 4. In all cases, these productions | |||
| ignored for the purposes of generating legal Internet messages and MUST | are to be ignored for the purposes of generating legal Internet | |||
| NOT be used as part of such a message. However, when interpreting | messages and MUST NOT be used as part of such a message. However, | |||
| messages, these tokens MUST be honored as part of the legal syntax. In | when interpreting messages, these tokens MUST be honored as part of | |||
| this sense, section 3 defines a grammar for generation of messages, with | the legal syntax. In this sense, section 3 defines a grammar for | |||
| "obs-" elements that are to be ignored, while section 4 adds grammar for | generation of messages, with "obs-" elements that are to be ignored, | |||
| interpretation of messages. | while section 4 adds grammar for interpretation of messages. | |||
| 3.2. Lexical Tokens | 3.2. Lexical Tokens | |||
| The following rules are used to define an underlying lexical analyzer, | The following rules are used to define an underlying lexical | |||
| which feeds tokens to the higher-level parsers. This section defines the | analyzer, which feeds tokens to the higher-level parsers. This | |||
| tokens used in structured header field bodies. | section defines the tokens used in structured header field bodies. | |||
| Note: Readers of this standard need to pay special attention to how | Note: Readers of this standard need to pay special attention to how | |||
| these lexical tokens are used in both the lower-level and higher-level | these lexical tokens are used in both the lower-level and | |||
| syntax later in the document. Particularly, the white space tokens and | higher-level syntax later in the document. Particularly, the white | |||
| the comment tokens defined in section 3.2.3 get used in the lower-level | space tokens and the comment tokens defined in section 3.2.3 get used | |||
| tokens defined here, and those lower-level tokens are in turn used as | in the lower-level tokens defined here, and those lower-level tokens | |||
| parts of the higher-level tokens defined later. Therefore, the white | are in turn used as parts of the higher-level tokens defined later. | |||
| space and comments may be allowed in the higher-level tokens even though | Therefore, the white space and comments may be allowed in the | |||
| they may not explicitly appear in a particular definition. | higher-level tokens even though they may not explicitly appear in a | |||
| particular definition. | ||||
| 3.2.1. Primitive Tokens | 3.2.1. Primitive Tokens | |||
| The following are primitive tokens referred to elsewhere in this | The following are primitive tokens referred to elsewhere in this | |||
| standard, but not otherwise defined in [RFC-2234]. Some of them will not | standard, but not otherwise defined in [RFC2234]. Some of them will | |||
| appear anywhere else in the syntax, but they are convenient to refer to | not appear anywhere else in the syntax, but they are convenient to | |||
| in other parts of this document. | refer to in other parts of this document. | |||
| Note: The "specials" below are just such an example. Though the specials | Note: The "specials" below are just such an example. Though the | |||
| token does not appear anywhere else in this standard, it is useful for | specials token does not appear anywhere else in this standard, it is | |||
| implementers who use tools that lexically analyze messages. Each of the | useful for implementers who use tools that lexically analyze | |||
| characters in specials can be used to indicate a tokenization point in | messages. Each of the characters in specials can be used to indicate | |||
| lexical analysis. | a tokenization point in lexical analysis. | |||
| NO-WS-CTL = %d1-8 / ; US-ASCII control characters | NO-WS-CTL = %d1-8 / ; US-ASCII control characters | |||
| %d11 / ; that do not include the | %d11 / ; that do not include the | |||
| %d12 / ; carriage return, line feed, | %d12 / ; carriage return, line feed, | |||
| %d14-31 / ; and white space characters | %d14-31 / ; and white space characters | |||
| %d127 | %d127 | |||
| text = %d1-9 / ; Characters excluding CR and LF | text = %d1-9 / ; Characters excluding CR and LF | |||
| %d11-12 / | %d11 / | |||
| %d12 / | ||||
| %d14-127 / | %d14-127 / | |||
| obs-text | obs-text | |||
| specials = "(" / ")" / ; Special characters used in | specials = "(" / ")" / ; Special characters used in | |||
| "<" / ">" / ; other parts of the syntax | "<" / ">" / ; other parts of the syntax | |||
| "[" / "]" / | "[" / "]" / | |||
| ":" / ";" / | ":" / ";" / | |||
| "@" / "\" / | "@" / "\" / | |||
| "," / "." / | "," / "." / | |||
| DQUOTE | DQUOTE | |||
| No special semantics are attached to these tokens. They are simply | No special semantics are attached to these tokens. They are simply | |||
| single characters. | single characters. | |||
| 3.2.2. Quoted characters | 3.2.2. Quoted characters | |||
| Some characters are reserved for special interpretation, such as | Some characters are reserved for special interpretation, such as | |||
| delimiting lexical tokens. To permit use of these characters as | delimiting lexical tokens. To permit use of these characters as | |||
| uninterpreted data, a quoting mechanism is provided. | uninterpreted data, a quoting mechanism is provided. | |||
| quoted-pair = ("\" text) / obs-qp | quoted-pair = ("\" text) / obs-qp | |||
| Where any quoted-pair appears, it is to be interpreted as the text | Where any quoted-pair appears, it is to be interpreted as the text | |||
| character alone. That is to say, the "\" character that appears as part | character alone. That is to say, the "\" character that appears as | |||
| of a quoted-pair is semantically "invisible". | part of a quoted-pair is semantically "invisible". | |||
| Note: The "\" character may appear in a message where it is not part of | Note: The "\" character may appear in a message where it is not part | |||
| a quoted-pair. A "\" character that does not appear in a quoted-pair is | of a quoted-pair. A "\" character that does not appear in a | |||
| not semantically invisible. The only places in this standard where | quoted-pair is not semantically invisible. The only places in this | |||
| quoted-pair currently appears are ccontent, qcontent, dcontent, no-fold- | standard where quoted-pair currently appears are ccontent, qcontent, | |||
| quote, and no-fold-literal. | dcontent, no-fold-quote, and no-fold-literal. | |||
| 3.2.3. Folding white space and comments | 3.2.3. Folding white space and comments | |||
| White space characters, including white space used in folding (described | White space characters, including white space used in folding | |||
| in section 2.2.3), may appear between many elements in header field | (described in section 2.2.3), may appear between many elements in | |||
| bodies. Also, strings of characters that are treated as comments may be | header field bodies. Also, strings of characters that are treated as | |||
| included in structured field bodies as characters enclosed in | comments may be included in structured field bodies as characters | |||
| parenthesis. The following defines the folding white space (FWS) and | enclosed in parentheses. The following defines the folding white | |||
| comment contructs. | space (FWS) and comment constructs. | |||
| Strings of characters enclosed in parentheses are considered comments so | Strings of characters enclosed in parentheses are considered comments | |||
| long as they do not appear within a "quoted-string", as defined in | so long as they do not appear within a "quoted-string", as defined in | |||
| section 3.2.5. Comments may nest. | section 3.2.5. Comments may nest. | |||
| There are several places in this standard where comments and FWS may be | There are several places in this standard where comments and FWS may | |||
| freely inserted. To accommodate that syntax, an additional token for | be freely inserted. To accommodate that syntax, an additional token | |||
| "CFWS" is defined for places where comments and/or FWS can occur. | for "CFWS" is defined for places where comments and/or FWS can occur. | |||
| However, where CFWS occurs in this standard, it MUST NOT be inserted in | However, where CFWS occurs in this standard, it MUST NOT be inserted | |||
| such a way that any line of a folded header field is made up entirely of | in such a way that any line of a folded header field is made up | |||
| WSP characters and nothing else. | entirely of WSP characters and nothing else. | |||
| FWS = ([*WSP CRLF] 1*WSP) / ; Folding white space | FWS = ([*WSP CRLF] 1*WSP) / ; Folding white space | |||
| obs-FWS | obs-FWS | |||
| ctext = NO-WS-CTL / ; Non white space controls | ctext = NO-WS-CTL / ; Non white space controls | |||
| %d33-39 / ; The rest of the US-ASCII | %d33-39 / ; The rest of the US-ASCII | |||
| %d42-91 / ; characters not including "(", | %d42-91 / ; characters not including "(", | |||
| %d93-126 ; ")", or "\" | %d93-126 ; ")", or "\" | |||
| ccontent = ctext / quoted-pair / comment | ccontent = ctext / quoted-pair / comment | |||
| comment = "(" *([FWS] ccontent) [FWS] ")" | comment = "(" *([FWS] ccontent) [FWS] ")" | |||
| CFWS = *([FWS] comment) [FWS] | CFWS = *([FWS] comment) (([FWS] comment) / FWS) | |||
| Throughout this standard, where FWS (the folding white space token) | Throughout this standard, where FWS (the folding white space token) | |||
| appears, it indicates a place where header folding, as discussed in | appears, it indicates a place where header folding, as discussed in | |||
| section 2.2.3, may take place. Wherever header folding appears in a | section 2.2.3, may take place. Wherever header folding appears in a | |||
| message (that is, a header field body containing a CRLF followed by any | message (that is, a header field body containing a CRLF followed by | |||
| WSP), header unfolding (removal of the CRLF) is performed before any | any WSP), header unfolding (removal of the CRLF) is performed before | |||
| further lexical analysis is performed on that header field according to | any further lexical analysis is performed on that header field | |||
| this standard. That is to say, any CRLF that appears in FWS is | according to this standard. That is to say, any CRLF that appears in | |||
| semantically "invisible." | FWS is semantically "invisible." | |||
| A comment is normally used in a structured field body to provide some | A comment is normally used in a structured field body to provide some | |||
| human readable informational text. Since a comment is allowed to contain | human readable informational text. Since a comment is allowed to | |||
| FWS, folding is permitted within the comment. Also note that since | contain FWS, folding is permitted within the comment. Also note that | |||
| quoted-pair is allowed in a comment, the parentheses and backslash | since quoted-pair is allowed in a comment, the parentheses and | |||
| characters may appear in a comment so long as they appear as a quoted- | backslash characters may appear in a comment so long as they appear | |||
| pair. Semantically, the enclosing parentheses are not part of the | as a quoted-pair. Semantically, the enclosing parentheses are not | |||
| comment; the comment is what is contained between the two parentheses. | part of the comment; the comment is what is contained between the two | |||
| As stated earlier, the "\" in any quoted-pair and the CRLF in any FWS | parentheses. As stated earlier, the "\" in any quoted-pair and the | |||
| that appears within the comment are semantically "invisible" and | CRLF in any FWS that appears within the comment are semantically | |||
| therefore not part of the comment either. | "invisible" and therefore not part of the comment either. | |||
| Runs of FWS, comment or CFWS that occur between lexical tokens in a | Runs of FWS, comment or CFWS that occur between lexical tokens in a | |||
| structured field header are semantically interpreted as a single space | structured field header are semantically interpreted as a single | |||
| character. | space character. | |||
| 3.2.4. Atom | 3.2.4. Atom | |||
| Several productions in structured header field bodies are simply strings | Several productions in structured header field bodies are simply | |||
| of certain basic characters. Such productions are called atoms. | strings of certain basic characters. Such productions are called | |||
| atoms. | ||||
| Some of the structured header field bodies also allow the period | Some of the structured header field bodies also allow the period | |||
| character (".", ASCII value 46) within runs of atext. An additional | character (".", ASCII value 46) within runs of atext. An additional | |||
| "dot-atom" token is defined for those purposes. | "dot-atom" token is defined for those purposes. | |||
| atext = ALPHA / DIGIT / ; Any character except controls, | atext = ALPHA / DIGIT / ; Any character except controls, | |||
| "!" / "#" / ; SP, and specials. | "!" / "#" / ; SP, and specials. | |||
| "$" / "%" / ; Used for atoms | "$" / "%" / ; Used for atoms | |||
| "&" / "'" / | "&" / "'" / | |||
| "*" / "+" / | "*" / "+" / | |||
| "-" / "/" / | "-" / "/" / | |||
| "=" / "?" / | "=" / "?" / | |||
| "^" / "_" / | "^" / "_" / | |||
| "`" / "{" / | "`" / "{" / | |||
| "|" / "}" / | "|" / "}" / | |||
| "~" | "~" | |||
| atom = [CFWS] 1*atext [CFWS] | atom = [CFWS] 1*atext [CFWS] | |||
| dot-atom = [CFWS] dot-atom-text [CFWS] | dot-atom = [CFWS] dot-atom-text [CFWS] | |||
| dot-atom-text = 1*atext *("." 1*atext) | dot-atom-text = 1*atext *("." 1*atext) | |||
| Both atom and dot-atom are interpreted as a single unit, comprised of | Both atom and dot-atom are interpreted as a single unit, comprised of | |||
| the string of characters that make it up. Semantically, the optional | the string of characters that make it up. Semantically, the optional | |||
| comments and FWS surrounding the rest of the characters are not part of | comments and FWS surrounding the rest of the characters are not part | |||
| the atom; the atom is only the run of atext characters in an atom, or | of the atom; the atom is only the run of atext characters in an atom, | |||
| the atext and "." characters in a dot-atom. | or the atext and "." characters in a dot-atom. | |||
| 3.2.5. Quoted strings | 3.2.5. Quoted strings | |||
| Strings of characters that include characters other than those allowed | Strings of characters that include characters other than those | |||
| in atoms may be represented in a quoted string format, where the | allowed in atoms may be represented in a quoted string format, where | |||
| characters are surrounded by quote (DQUOTE, ASCII value 34) characters. | the characters are surrounded by quote (DQUOTE, ASCII value 34) | |||
| characters. | ||||
| qtext = NO-WS-CTL / ; Non white space controls | qtext = NO-WS-CTL / ; Non white space controls | |||
| %d33 / ; The rest of the US-ASCII | %d33 / ; The rest of the US-ASCII | |||
| %d35-91 / ; characters not including "\" | %d35-91 / ; characters not including "\" | |||
| %d93-126 ; or the quote character | %d93-126 ; or the quote character | |||
| qcontent = qtext / quoted-pair | qcontent = qtext / quoted-pair | |||
| quoted-string = [CFWS] | quoted-string = [CFWS] | |||
| DQUOTE *([FWS] qcontent) [FWS] DQUOTE | DQUOTE *([FWS] qcontent) [FWS] DQUOTE | |||
| [CFWS] | [CFWS] | |||
| A quoted-string is treated as a unit. That is, quoted-string is | A quoted-string is treated as a unit. That is, quoted-string is | |||
| identical to atom, semantically. Since a quoted-string is allowed to | identical to atom, semantically. Since a quoted-string is allowed to | |||
| contain FWS, folding is permitted. Also note that since quoted-pair is | contain FWS, folding is permitted. Also note that since quoted-pair | |||
| allowed in a quoted-string, the quote and backslash characters may | is allowed in a quoted-string, the quote and backslash characters may | |||
| appear in a quoted-string so long as they appear as a quoted-pair. | appear in a quoted-string so long as they appear as a quoted-pair. | |||
| Semantically, neither the optional CFWS outside of the quote characters | Semantically, neither the optional CFWS outside of the quote | |||
| nor the quote characters themselves are part of the quoted-string; the | characters nor the quote characters themselves are part of the | |||
| quoted-string is what is contained between the two quote characters. As | quoted-string; the quoted-string is what is contained between the two | |||
| stated earlier, the "\" in any quoted-pair and the CRLF in any FWS/CFWS | quote characters. As stated earlier, the "\" in any quoted-pair and | |||
| that appears within the quoted-string are semantically "invisible" and | the CRLF in any FWS/CFWS that appears within the quoted-string are | |||
| therefore not part of the quoted-string either. | semantically "invisible" and therefore not part of the quoted-string | |||
| either. | ||||
| 3.2.6. Miscellaneous tokens | 3.2.6. Miscellaneous tokens | |||
| Three additional tokens are defined, word and phrase for combinations of | Three additional tokens are defined, word and phrase for combinations | |||
| atoms and/or quoted-strings, and unstructured for use in unstructured | of atoms and/or quoted-strings, and unstructured for use in | |||
| header fields and in some places within structured header fields. | unstructured header fields and in some places within structured | |||
| header fields. | ||||
| word = atom / quoted-string | word = atom / quoted-string | |||
| phrase = 1*word / obs-phrase | phrase = 1*word / obs-phrase | |||
| utext = NO-WS-CTL / ; Non white space controls | utext = NO-WS-CTL / ; Non white space controls | |||
| %d33-126 / ; The rest of US-ASCII | %d33-126 / ; The rest of US-ASCII | |||
| obs-utext | obs-utext | |||
| unstructured = *([FWS] utext) [FWS] | unstructured = *([FWS] utext) [FWS] | |||
| 3.3. Date and Time Specification | 3.3. Date and Time Specification | |||
| Date and time occur in several header fields. This section specifies the | Date and time occur in several header fields. This section specifies | |||
| syntax for a full date and time specification. Though folding white | the syntax for a full date and time specification. Though folding | |||
| space is permitted throughout the date-time specification, it is | white space is permitted throughout the date-time specification, it | |||
| recommended that only a single space be used where FWS is required and | is RECOMMENDED that a single space be used in each place that FWS | |||
| no space be used where FWS is optional in the date-time specification; | appears (whether it is required or optional); some older | |||
| some older implementations may not interpret other occurrences of | implementations may not interpret other occurrences of folding white | |||
| folding white space correctly. | space correctly. | |||
| date-time = [ day-of-week "," ] date FWS time [CFWS] | date-time = [ day-of-week "," ] date FWS time [CFWS] | |||
| day-of-week = ([FWS] day-name) / obs-day-of-week | day-of-week = ([FWS] day-name) / obs-day-of-week | |||
| day-name = "Mon" / "Tue" / "Wed" / "Thu" / | day-name = "Mon" / "Tue" / "Wed" / "Thu" / | |||
| "Fri" / "Sat" / "Sun" | "Fri" / "Sat" / "Sun" | |||
| date = day month year | date = day month year | |||
| skipping to change at line 573 ¶ | skipping to change at page 15, line 4 ¶ | |||
| time-of-day = hour ":" minute [ ":" second ] | time-of-day = hour ":" minute [ ":" second ] | |||
| hour = 2DIGIT / obs-hour | hour = 2DIGIT / obs-hour | |||
| minute = 2DIGIT / obs-minute | minute = 2DIGIT / obs-minute | |||
| second = 2DIGIT / obs-second | second = 2DIGIT / obs-second | |||
| zone = (( "+" / "-" ) 4DIGIT) / obs-zone | zone = (( "+" / "-" ) 4DIGIT) / obs-zone | |||
| The day is the numeric day of the month. The year is any numeric | ||||
| year 1900 or later. | ||||
| The day is the numeric day of the month. The year is any numeric year | The time-of-day specifies the number of hours, minutes, and | |||
| 1900 or later. | optionally seconds since midnight of the date indicated. | |||
| The time-of-day specifies the number of hours, minutes, and optionally | ||||
| seconds since midnight of the date indicated. | ||||
| The date and time-of-day SHOULD express local time. | The date and time-of-day SHOULD express local time. | |||
| The zone specifies the offset from Coordinated Universal Time (UTC, | The zone specifies the offset from Coordinated Universal Time (UTC, | |||
| formerly referred to as "Greenwich Mean Time") that the date and time- | formerly referred to as "Greenwich Mean Time") that the date and | |||
| of-day represent. The "+" or "-" indicates whether the time-of-day is | time-of-day represent. The "+" or "-" indicates whether the | |||
| ahead of (i.e., east of) or behind (i.e., west of) Universal Time. The | time-of-day is ahead of (i.e., east of) or behind (i.e., west of) | |||
| first two digits indicate the number of hours difference from Universal | Universal Time. The first two digits indicate the number of hours | |||
| Time, and the last two digits indicate the number of minutes difference | difference from Universal Time, and the last two digits indicate the | |||
| from Universal Time. (Hence, +hhmm means +(hh * 60 + mm) minutes, and - | number of minutes difference from Universal Time. (Hence, +hhmm | |||
| hhmm means -(hh * 60 + mm) minutes). The form "+0000" SHOULD be used to | means +(hh * 60 + mm) minutes, and -hhmm means -(hh * 60 + mm) | |||
| indicate a time zone at Universal Time. Though "-0000" also indicates | minutes). The form "+0000" SHOULD be used to indicate a time zone at | |||
| Universal Time, it is used to indicate that the time was generated on a | Universal Time. Though "-0000" also indicates Universal Time, it is | |||
| system that may be in a local time zone other than Universal Time and | used to indicate that the time was generated on a system that may be | |||
| therefore indicates that the date-time contains no information about the | in a local time zone other than Universal Time and therefore | |||
| local time zone. | indicates that the date-time contains no information about the local | |||
| time zone. | ||||
| A date-time specification MUST be semantically valid. That is, the day- | A date-time specification MUST be semantically valid. That is, the | |||
| of-the week (if included) MUST be the day implied by the date, the | day-of-the-week (if included) MUST be the day implied by the date, | |||
| numeric day-of-month MUST be between 1 and the number of days allowed | the numeric day-of-month MUST be between 1 and the number of days | |||
| for the specified month (in the specified year), the time-of-day MUST be | allowed for the specified month (in the specified year), the | |||
| in the range 00:00:00 through 23:59:60 (the number of seconds allowing | time-of-day MUST be in the range 00:00:00 through 23:59:60 (the | |||
| for a leap second; see [STD-12]), and the zone MUST be within the range | number of seconds allowing for a leap second; see [STD12]), and the | |||
| -9959 through +9959. | zone MUST be within the range -9959 through +9959. | |||
| 3.4. Address Specification | 3.4. Address Specification | |||
| Addresses occur in several message header fields to indicate senders and | Addresses occur in several message header fields to indicate senders | |||
| recipients of messages. An address may either be an individual mailbox, | and recipients of messages. An address may either be an individual | |||
| or a group of mailboxes. | mailbox, or a group of mailboxes. | |||
| address = mailbox / group | address = mailbox / group | |||
| mailbox = name-addr / addr-spec / obs-mailbox | mailbox = name-addr / addr-spec | |||
| name-addr = [display-name] [CFWS] "<" addr-spec ">" [CFWS] | name-addr = [display-name] angle-addr | |||
| angle-addr = [CFWS] "<" addr-spec ">" [CFWS] / obs-angle-addr | ||||
| group = display-name ":" [mailbox-list / CFWS] ";" | group = display-name ":" [mailbox-list / CFWS] ";" | |||
| [CFWS] | [CFWS] | |||
| display-name = phrase | display-name = phrase | |||
| mailbox-list = (mailbox *("," mailbox)) / obs-mbox-list | mailbox-list = (mailbox *("," mailbox)) / obs-mbox-list | |||
| address-list = address *("," address) / obs-addr-list | address-list = (address *("," address)) / obs-addr-list | |||
| A mailbox receives mail. It is a conceptual entity which does not | A mailbox receives mail. It is a conceptual entity which does not | |||
| necessarily pertain to file storage. For example, some sites may choose | necessarily pertain to file storage. For example, some sites may | |||
| to print mail on a printer and deliver the output to the addressee's | choose to print mail on a printer and deliver the output to the | |||
| desk. Normally, a mailbox is comprised of two parts: (1) an optional | addressee's desk. Normally, a mailbox is comprised of two parts: (1) | |||
| display name that indicates the name of the recipient (which could be a | an optional display name that indicates the name of the recipient | |||
| person or a system) that could be displayed to the user of a mail | (which could be a person or a system) that could be displayed to the | |||
| application, and (2) an addr-spec address enclosed in angle brackets | user of a mail application, and (2) an addr-spec address enclosed in | |||
| ("<" and ">"). There is also an alternate simple form of a mailbox where | angle brackets ("<" and ">"). There is also an alternate simple form | |||
| the addr-spec address appears alone, without the recipient's name or the | of a mailbox where the addr-spec address appears alone, without the | |||
| angle brackets. The Internet addr-spec address is described in section | recipient's name or the angle brackets. The Internet addr-spec | |||
| 3.4.1. | address is described in section 3.4.1. | |||
| Note: Some legacy implementations used the simple form where the addr- | Note: Some legacy implementations used the simple form where the | |||
| spec appears without the angle brackets, but included the name of the | addr-spec appears without the angle brackets, but included the name | |||
| recipient in parentheses as a comment following the addr-spec. Since the | of the recipient in parentheses as a comment following the addr-spec. | |||
| meaning of the information in a comment is unspecified, implementations | Since the meaning of the information in a comment is unspecified, | |||
| SHOULD use the full name-addr for of the mailbox, instead of the legacy | implementations SHOULD use the full name-addr form of the mailbox, | |||
| form, to specify the display name associated with a mailbox. Also, | instead of the legacy form, to specify the display name associated | |||
| because some legacy implementations interpret the comment, comments | with a mailbox. Also, because some legacy implementations interpret | |||
| generally SHOULD NOT be used in address fields to avoid confusing such | the comment, comments generally SHOULD NOT be used in address fields | |||
| implementations. | to avoid confusing such implementations. | |||
| When it is desirable to treat several mailboxes as a single unit (i.e., | When it is desirable to treat several mailboxes as a single unit | |||
| in a distribution list), the group construct can be used. The group | (i.e., in a distribution list), the group construct can be used. The | |||
| construct allows the sender to indicate a named group of recipients. | group construct allows the sender to indicate a named group of | |||
| This is done by giving a display name for the group, followed by a | recipients. This is done by giving a display name for the group, | |||
| colon, followed by a comma separated list of any number of mailboxes | followed by a colon, followed by a comma separated list of any number | |||
| (including zero and one), and ending with a semicolon. Because the list | of mailboxes (including zero and one), and ending with a semicolon. | |||
| of mailboxes can be empty, using the group construct is also a simple | Because the list of mailboxes can be empty, using the group construct | |||
| way to communicate to recipients that the message was sent to one or | is also a simple way to communicate to recipients that the message | |||
| more named sets of recipients, without actually providing the individual | was sent to one or more named sets of recipients, without actually | |||
| mailbox address for each of those recipients. | providing the individual mailbox address for each of those | |||
| recipients. | ||||
| 3.4.1. Addr-spec specification | 3.4.1. Addr-spec specification | |||
| An addr-spec is a specific Internet identifier that contains a locally | An addr-spec is a specific Internet identifier that contains a | |||
| interpreted string followed by the at-sign character ("@", ASCII value | locally interpreted string followed by the at-sign character ("@", | |||
| 64) followed by an Internet domain. The locally interpreted string is | ASCII value 64) followed by an Internet domain. The locally | |||
| either a quoted-string or a dot-atom. If the string can be represented | interpreted string is either a quoted-string or a dot-atom. If the | |||
| as a dot-atom (that is, it contains no characters other than atext | string can be represented as a dot-atom (that is, it contains no | |||
| characters or "." surrounded by atext characters), then the dot-atom | characters other than atext characters or "." surrounded by atext | |||
| form SHOULD be used and the quoted-string form SHOULD NOT be used. | characters), then the dot-atom form SHOULD be used and the | |||
| Comments and folding white space SHOULD NOT be used around the "@" in | quoted-string form SHOULD NOT be used. Comments and folding white | |||
| the addr-spec. | space SHOULD NOT be used around the "@" in the addr-spec. | |||
| addr-spec = local-part "@" domain | addr-spec = local-part "@" domain | |||
| local-part = dot-atom / quoted-string / obs-local-part | local-part = dot-atom / quoted-string / obs-local-part | |||
| domain = dot-atom / domain-literal / obs-domain | domain = dot-atom / domain-literal / obs-domain | |||
| domain-literal = [CFWS] "[" *([FWS] dcontent) [FWS] "]" [CFWS] | domain-literal = [CFWS] "[" *([FWS] dcontent) [FWS] "]" [CFWS] | |||
| dcontent = dtext / quoted-pair | dcontent = dtext / quoted-pair | |||
| dtext = NO-WS-CTL / ; Non white space controls | dtext = NO-WS-CTL / ; Non white space controls | |||
| %d33-90 / ; The rest of the US-ASCII | %d33-90 / ; The rest of the US-ASCII | |||
| %d94-126 ; characters not including "[", | %d94-126 ; characters not including "[", | |||
| ; "]", or "\" | ; "]", or "\" | |||
| The domain portion identifies the point to which the mail is delivered. | The domain portion identifies the point to which the mail is | |||
| In the dot-atom form, this is interpreted as an Internet domain name | delivered. In the dot-atom form, this is interpreted as an Internet | |||
| (either a host name or a mail exchanger name) as described in [STD-3, | domain name (either a host name or a mail exchanger name) as | |||
| STD-13, STD-14]. In the domain-literal form, the domain is interpreted | described in [STD3, STD13, STD14]. In the domain-literal form, the | |||
| as the literal Internet address of the particular host. In both cases, | domain is interpreted as the literal Internet address of the | |||
| how addressing is used and how messages are transported to a particular | particular host. In both cases, how addressing is used and how | |||
| host is covered in the mail transport document [SMTP]. These mechanisms | messages are transported to a particular host is covered in the mail | |||
| are outside of the scope of this document. | transport document [RFC2821]. These mechanisms are outside of the | |||
| scope of this document. | ||||
| The local-part portion is a domain dependent string. In addresses, it is | The local-part portion is a domain dependent string. In addresses, | |||
| simply interpreted on the particular host as a name of a particular | it is simply interpreted on the particular host as a name of a | |||
| mailbox. | particular mailbox. | |||
| 3.5 Overall message syntax | 3.5 Overall message syntax | |||
| A message consists of header fields, optionally followed by a message | A message consists of header fields, optionally followed by a message | |||
| body. Lines in a message MUST be a maximum of 998 characters excluding | body. Lines in a message MUST be a maximum of 998 characters | |||
| the CRLF, but it is RECOMMENDED that lines be limited to 78 characters | excluding the CRLF, but it is RECOMMENDED that lines be limited to 78 | |||
| excluding the CRLF. (See the note in section 2.1 for explanation.) In a | characters excluding the CRLF. (See section 2.1.1 for explanation.) | |||
| message body, though all of the characters listed in the text rule MAY | In a message body, though all of the characters listed in the text | |||
| be used, the use of US-ASCII control characters (values 1 through 8, 11, | rule MAY be used, the use of US-ASCII control characters (values 1 | |||
| 12, and 14 through 31) is discouraged since their interpretation by | through 8, 11, 12, and 14 through 31) is discouraged since their | |||
| receivers for display is not guaranteed. | interpretation by receivers for display is not guaranteed. | |||
| message = (fields / obs-fields) | message = (fields / obs-fields) | |||
| [CRLF body] | [CRLF body] | |||
| body = *(*998text CRLF) *998text | body = *(*998text CRLF) *998text | |||
| The header fields carry most of the semantic information and are defined | The header fields carry most of the semantic information and are | |||
| in section 3.6. The body is simply a series of lines of text which are | defined in section 3.6. The body is simply a series of lines of text | |||
| uninterpreted for the purposes of this standard. | which are uninterpreted for the purposes of this standard. | |||
| 3.6. Field definitions | 3.6. Field definitions | |||
| The header fields of a message are defined here. All header fields have | The header fields of a message are defined here. All header fields | |||
| the same general syntactic structure: A field name, followed by a colon, | have the same general syntactic structure: A field name, followed by | |||
| followed by the field body. The specific syntax for each header field is | a colon, followed by the field body. The specific syntax for each | |||
| defined in the subsequent sections. | header field is defined in the subsequent sections. | |||
| Note: In the ABNF syntax for each field in subsequent sections, each | Note: In the ABNF syntax for each field in subsequent sections, each | |||
| field name is followed by the required colon. However, for brevity | field name is followed by the required colon. However, for brevity | |||
| sometimes the colon is not referred to in the textual description of the | sometimes the colon is not referred to in the textual description of | |||
| syntax. It is, nonetheless, required. | the syntax. It is, nonetheless, required. | |||
| It is important to note that the header fields are not guaranteed to be | It is important to note that the header fields are not guaranteed to | |||
| in a particular order. They may appear in any order, and they have been | be in a particular order. They may appear in any order, and they | |||
| known to be reordered occasionally when transported over the Internet. | have been known to be reordered occasionally when transported over | |||
| However, for the purposes of this standard, header fields SHOULD NOT be | the Internet. However, for the purposes of this standard, header | |||
| reordered when a message is transported or transformed. More | fields SHOULD NOT be reordered when a message is transported or | |||
| importantly, the trace header fields and resent header fields MUST NOT | transformed. More importantly, the trace header fields and resent | |||
| be reordered, and SHOULD be kept in blocks prepended to the message. See | header fields MUST NOT be reordered, and SHOULD be kept in blocks | |||
| sections 3.6.6 and 3.6.7 for more information. | prepended to the message. See sections 3.6.6 and 3.6.7 for more | |||
| information. | ||||
| The only required header fields are the origination date field and the | The only required header fields are the origination date field and | |||
| originator address field(s). All other header fields are syntactically | the originator address field(s). All other header fields are | |||
| optional. More information is contained in the table following this | syntactically optional. More information is contained in the table | |||
| definition. | following this definition. | |||
| fields = *(trace | fields = *(trace | |||
| *(resent-date / | *(resent-date / | |||
| resent-from / | resent-from / | |||
| resent-sender / | resent-sender / | |||
| resent-to / | resent-to / | |||
| resent-cc / | resent-cc / | |||
| resent-bcc / | resent-bcc / | |||
| resent-msg-id)) | resent-msg-id)) | |||
| *(orig-date / | *(orig-date / | |||
| skipping to change at line 768 ¶ | skipping to change at page 19, line 15 ¶ | |||
| cc / | cc / | |||
| bcc / | bcc / | |||
| message-id / | message-id / | |||
| in-reply-to / | in-reply-to / | |||
| references / | references / | |||
| subject / | subject / | |||
| comments / | comments / | |||
| keywords / | keywords / | |||
| optional-field) | optional-field) | |||
| The following table indicates limits on the number of times each field | The following table indicates limits on the number of times each | |||
| may occur in a message header as well as any special limitations on the | field may occur in a message header as well as any special | |||
| use of those fields. An asterisk next to a value in the minimum or | limitations on the use of those fields. An asterisk next to a value | |||
| maximum column indicates that a special restriction appears in the Notes | in the minimum or maximum column indicates that a special restriction | |||
| column. | appears in the Notes column. | |||
| Field Min number Max number Notes | Field Min number Max number Notes | |||
| trace 0 unlimited Block prepended - see | trace 0 unlimited Block prepended - see | |||
| 3.6.7 | 3.6.7 | |||
| resent-date 0* unlimited* One per block, required | resent-date 0* unlimited* One per block, required | |||
| if other resent fields | if other resent fields | |||
| present - see 3.6.6 | present - see 3.6.6 | |||
| resent-from 0 unlimited* One per block - see | resent-from 0 unlimited* One per block - see | |||
| 3.6.6 | 3.6.6 | |||
| resent-sender 0* unlimited* One per block, MUST | resent-sender 0* unlimited* One per block, MUST | |||
| occur with multi-address | occur with multi-address | |||
| resent-from - see 3.6.6 | resent-from - see 3.6.6 | |||
| resent-to 0 unlimited* One per block - see | resent-to 0 unlimited* One per block - see | |||
| 3.6.6 | 3.6.6 | |||
| resent-cc 0 unlimited* One per block - see | resent-cc 0 unlimited* One per block - see | |||
| 3.6.6 | 3.6.6 | |||
| resent-bcc 0 unlimited* One per block - see | resent-bcc 0 unlimited* One per block - see | |||
| 3.6.6 | 3.6.6 | |||
| skipping to change at line 834 ¶ | skipping to change at page 20, line 32 ¶ | |||
| replies - see 3.6.4 | replies - see 3.6.4 | |||
| subject 0 1 | subject 0 1 | |||
| comments 0 unlimited | comments 0 unlimited | |||
| keywords 0 unlimited | keywords 0 unlimited | |||
| optional-field 0 unlimited | optional-field 0 unlimited | |||
| The exact interpretation of each field is described in subsequent | The exact interpretation of each field is described in subsequent | |||
| sections. | sections. | |||
| 3.6.1. The origination date field | 3.6.1. The origination date field | |||
| The origination date field consists of the field name "Date" followed by | The origination date field consists of the field name "Date" followed | |||
| a date-time specification. | by a date-time specification. | |||
| orig-date = "Date:" date-time CRLF | orig-date = "Date:" date-time CRLF | |||
| The origination date specifies the date and time at which the creator of | The origination date specifies the date and time at which the creator | |||
| the message indicated that the message was complete and ready to enter | of the message indicated that the message was complete and ready to | |||
| the mail delivery system. For instance, this might be the time that a | enter the mail delivery system. For instance, this might be the time | |||
| user pushes the "send" or "submit" button in an application program. In | that a user pushes the "send" or "submit" button in an application | |||
| any case, it is specifically not intended to convey the time that the | program. In any case, it is specifically not intended to convey the | |||
| message is actually transported, but rather the time at which the human | time that the message is actually transported, but rather the time at | |||
| or other creator of the message has put the message into its final form, | which the human or other creator of the message has put the message | |||
| ready for transport. (For example, a portable computer user who is not | into its final form, ready for transport. (For example, a portable | |||
| connected to a network might queue a message for delivery. The | computer user who is not connected to a network might queue a message | |||
| origination date is intended to contain the date and time that the user | for delivery. The origination date is intended to contain the date | |||
| queued the message, not the time when the user connected to the network | and time that the user queued the message, not the time when the user | |||
| to send the message.) | connected to the network to send the message.) | |||
| 3.6.2. Originator fields | 3.6.2. Originator fields | |||
| The originator fields of a message consist of the from field, the sender | The originator fields of a message consist of the from field, the | |||
| field (when applicable) and optionally the reply-to field. The from | sender field (when applicable), and optionally the reply-to field. | |||
| field consists of the field name "From" and a comma-separated list of | The from field consists of the field name "From" and a | |||
| one or more mailbox specifications. If the from field contains more than | comma-separated list of one or more mailbox specifications. If the | |||
| one mailbox specification in the mailbox-list, then the sender field, | from field contains more than one mailbox specification in the | |||
| containing the field name "Sender" and a single mailbox specification, | mailbox-list, then the sender field, containing the field name | |||
| MUST appear in the message. In either case, an optional reply-to field | "Sender" and a single mailbox specification, MUST appear in the | |||
| MAY also be included, which contains the field name "Reply-To" and a | message. In either case, an optional reply-to field MAY also be | |||
| comma-separated list of one or more addresses. | included, which contains the field name "Reply-To" and a | |||
| comma-separated list of one or more addresses. | ||||
| from = "From:" mailbox-list CRLF | from = "From:" mailbox-list CRLF | |||
| sender = "Sender:" mailbox CRLF | sender = "Sender:" mailbox CRLF | |||
| reply-to = "Reply-To:" address-list CRLF | reply-to = "Reply-To:" address-list CRLF | |||
| The originator fields indicate the mailbox(es) of the source of the | The originator fields indicate the mailbox(es) of the source of the | |||
| message. The "From:" field specifies the author(s) of the message, that | message. The "From:" field specifies the author(s) of the message, | |||
| is, the mailbox(es) of the person(s) or system(s) responsible for the | that is, the mailbox(es) of the person(s) or system(s) responsible | |||
| writing of the message. The "Sender:" field specifies the mailbox of the | for the writing of the message. The "Sender:" field specifies the | |||
| agent responsible for the actual transmission of the message. For | mailbox of the agent responsible for the actual transmission of the | |||
| example, if a secretary were to send a message for another person, the | message. For example, if a secretary were to send a message for | |||
| mailbox of the secretary would appear in the "Sender:" field and the | another person, the mailbox of the secretary would appear in the | |||
| mailbox of the actual author would appear in the "From:" field. If the | "Sender:" field and the mailbox of the actual author would appear in | |||
| originator of the message can be indicated by a single mailbox and the | the "From:" field. If the originator of the message can be indicated | |||
| author and transmitter are identical, the "Sender:" field SHOULD NOT be | by a single mailbox and the author and transmitter are identical, the | |||
| used. Otherwise, both fields SHOULD appear. | "Sender:" field SHOULD NOT be used. Otherwise, both fields SHOULD | |||
| appear. | ||||
| The originator fields also provide the information required when | The originator fields also provide the information required when | |||
| replying to a message. When the "Reply-To:" field is present, it | replying to a message. When the "Reply-To:" field is present, it | |||
| indicates the mailbox(es) to which the author of the message suggests | indicates the mailbox(es) to which the author of the message suggests | |||
| that replies be sent. In the absence of the "Reply-To:" field, replies | that replies be sent. In the absence of the "Reply-To:" field, | |||
| SHOULD by default be sent to the mailbox(es) specified in the "From:" | replies SHOULD by default be sent to the mailbox(es) specified in the | |||
| field unless otherwise specified by the person composing the reply. | "From:" field unless otherwise specified by the person composing the | |||
| reply. | ||||
| In all cases, the "From:" field SHOULD NOT contain any mailbox that does | In all cases, the "From:" field SHOULD NOT contain any mailbox that | |||
| not belong to the author(s) of the message. See also section 3.6.3 for | does not belong to the author(s) of the message. See also section | |||
| more information on forming the destination addresses for a reply. | 3.6.3 for more information on forming the destination addresses for a | |||
| reply. | ||||
| 3.6.3. Destination address fields | 3.6.3. Destination address fields | |||
| The destination fields of a message consist of three possible fields, | The destination fields of a message consist of three possible fields, | |||
| each of the same form: The field name, which is either "To", "Cc", or | each of the same form: The field name, which is either "To", "Cc", or | |||
| "Bcc", followed by a comma-separated list of one or more addresses | "Bcc", followed by a comma-separated list of one or more addresses | |||
| (either mailbox or group syntax). | (either mailbox or group syntax). | |||
| to = "To:" address-list CRLF | to = "To:" address-list CRLF | |||
| cc = "Cc:" address-list CRLF | cc = "Cc:" address-list CRLF | |||
| bcc = "Bcc:" (address-list / [CFWS]) CRLF | bcc = "Bcc:" (address-list / [CFWS]) CRLF | |||
| The destination fields specify the recipients of the message. Each | The destination fields specify the recipients of the message. Each | |||
| destination field may have one or more addresses, and each of the | destination field may have one or more addresses, and each of the | |||
| addresses indicate the intended recipients of the message. The only | addresses indicate the intended recipients of the message. The only | |||
| difference between the three fields is how each is used. | difference between the three fields is how each is used. | |||
| The "To:" field contains the address(es) of the primary recipient(s) of | The "To:" field contains the address(es) of the primary recipient(s) | |||
| the message. | of the message. | |||
| The "Cc:" field (where the "Cc" means "Carbon Copy" in the sense of | The "Cc:" field (where the "Cc" means "Carbon Copy" in the sense of | |||
| making a copy on a typewriter using carbon paper) contains the addresses | making a copy on a typewriter using carbon paper) contains the | |||
| of others who are to receive the message, though the content of the | addresses of others who are to receive the message, though the | |||
| message may not be directed at them. | content of the message may not be directed at them. | |||
| The "Bcc:" field (where the "Bcc" means "Blind Carbon Copy") contains | The "Bcc:" field (where the "Bcc" means "Blind Carbon Copy") contains | |||
| addresses of recipients of the message whose addresses are not to be | addresses of recipients of the message whose addresses are not to be | |||
| revealed to other recipients of the message. There are three ways in | revealed to other recipients of the message. There are three ways in | |||
| which the "Bcc:" field is used. In the first case, when a message | which the "Bcc:" field is used. In the first case, when a message | |||
| containing a "Bcc:" field is prepared to be sent, the "Bcc:" line is | containing a "Bcc:" field is prepared to be sent, the "Bcc:" line is | |||
| removed even though all of the recipients (including those specified in | removed even though all of the recipients (including those specified | |||
| the "Bcc:" field) are sent a copy of the message. In the second case, | in the "Bcc:" field) are sent a copy of the message. In the second | |||
| recipients specified in the "To:" and "Cc:" lines each are sent a copy | case, recipients specified in the "To:" and "Cc:" lines each are sent | |||
| of the message with the "Bcc:" line removed as above, but the recipients | a copy of the message with the "Bcc:" line removed as above, but the | |||
| on the "Bcc:" line get a separate copy of the message containing a | recipients on the "Bcc:" line get a separate copy of the message | |||
| "Bcc:" line. (When there are multiple recipient addresses in the "Bcc:" | containing a "Bcc:" line. (When there are multiple recipient | |||
| field, some implementations actually send a separate copy of the message | addresses in the "Bcc:" field, some implementations actually send a | |||
| to each recipient with a "Bcc:" containing only the address of that | separate copy of the message to each recipient with a "Bcc:" | |||
| particular recipient.) Finally, since a "Bcc:" field may contain no | containing only the address of that particular recipient.) Finally, | |||
| addresses, a "Bcc:" field can be sent without any addresses indicating | since a "Bcc:" field may contain no addresses, a "Bcc:" field can be | |||
| to the recipients that blind copies were sent to someone. Which method | sent without any addresses indicating to the recipients that blind | |||
| to use with "Bcc:" fields is implementation dependent, but refer to the | copies were sent to someone. Which method to use with "Bcc:" fields | |||
| "Security Considerations" section of this document for a discussion of | is implementation dependent, but refer to the "Security | |||
| each. | Considerations" section of this document for a discussion of each. | |||
| When a message is a reply to another message, the mailboxes of the | When a message is a reply to another message, the mailboxes of the | |||
| authors of the original message (the mailboxes in the "From:" field) or | authors of the original message (the mailboxes in the "From:" field) | |||
| mailboxes specified in the "Reply-To:" field (if it exists) MAY appear | or mailboxes specified in the "Reply-To:" field (if it exists) MAY | |||
| in the "To:" field of the reply, since these would normally be the | appear in the "To:" field of the reply since these would normally be | |||
| primary recipients of the reply. If a reply is sent to a message that | the primary recipients of the reply. If a reply is sent to a message | |||
| has destination fields, it is often desirable to send a copy of the | that has destination fields, it is often desirable to send a copy of | |||
| reply to all of the recipients of the message, in addition to the | the reply to all of the recipients of the message, in addition to the | |||
| author. When such a reply is formed, addresses in the "To:" and "Cc:" | author. When such a reply is formed, addresses in the "To:" and | |||
| fields of the original message MAY appear in the "Cc:" field of the | "Cc:" fields of the original message MAY appear in the "Cc:" field of | |||
| reply, since these are normally secondary recipients of the reply. If a | the reply, since these are normally secondary recipients of the | |||
| "Bcc:" field is present in the original message, addresses in that field | reply. If a "Bcc:" field is present in the original message, | |||
| MAY appear in the "Bcc:" field of the reply, but SHOULD NOT appear in | addresses in that field MAY appear in the "Bcc:" field of the reply, | |||
| the "To:" or "Cc:" fields. | but SHOULD NOT appear in the "To:" or "Cc:" fields. | |||
| Note: Some mail applications have automatic reply commands that include | Note: Some mail applications have automatic reply commands that | |||
| the destination addresses of the original message in the destination | include the destination addresses of the original message in the | |||
| addresses of the reply. How those reply commands behave is | destination addresses of the reply. How those reply commands behave | |||
| implementation dependent and is beyond the scope of this document. In | is implementation dependent and is beyond the scope of this document. | |||
| particular, whether or not to include the original destination addresses | In particular, whether or not to include the original destination | |||
| when the original message had a "Reply-To:" field is not addressed here. | addresses when the original message had a "Reply-To:" field is not | |||
| addressed here. | ||||
| 3.6.4. Identification fields | 3.6.4. Identification fields | |||
| Though optional, every message SHOULD have a "Message-ID:" field. | Though optional, every message SHOULD have a "Message-ID:" field. | |||
| Furthermore, reply messages SHOULD have "In-Reply-To:" and "References:" | Furthermore, reply messages SHOULD have "In-Reply-To:" and | |||
| fields as appropriate, as described below. | "References:" fields as appropriate, as described below. | |||
| The "Message-ID:" field contains a single unique message identifier. The | The "Message-ID:" field contains a single unique message identifier. | |||
| "References:" and "In-Reply-To:" field each contain one or more unique | The "References:" and "In-Reply-To:" field each contain one or more | |||
| message identifiers, optionally separated by CFWS. | unique message identifiers, optionally separated by CFWS. | |||
| The message identifier (msg-id) is similar in syntax to an addr-spec | The message identifier (msg-id) is similar in syntax to an angle-addr | |||
| construct enclosed in the angle bracket characters, "<" and ">", without | construct without the internal CFWS. | |||
| the internal CFWS. | ||||
| message-id = "Message-ID:" msg-id CRLF | message-id = "Message-ID:" msg-id CRLF | |||
| in-reply-to = "In-Reply-To:" 1*msg-id CRLF | in-reply-to = "In-Reply-To:" 1*msg-id CRLF | |||
| references = "References:" 1*msg-id CRLF | references = "References:" 1*msg-id CRLF | |||
| msg-id = [CFWS] "<" id-left "@" id-right ">" [CFWS] | msg-id = [CFWS] "<" id-left "@" id-right ">" [CFWS] | |||
| id-left = dot-atom-text / no-fold-quote / obs-id-left | id-left = dot-atom-text / no-fold-quote / obs-id-left | |||
| skipping to change at line 992 ¶ | skipping to change at page 24, line 4 ¶ | |||
| references = "References:" 1*msg-id CRLF | references = "References:" 1*msg-id CRLF | |||
| msg-id = [CFWS] "<" id-left "@" id-right ">" [CFWS] | msg-id = [CFWS] "<" id-left "@" id-right ">" [CFWS] | |||
| id-left = dot-atom-text / no-fold-quote / obs-id-left | id-left = dot-atom-text / no-fold-quote / obs-id-left | |||
| id-right = dot-atom-text / no-fold-literal / obs-id-right | id-right = dot-atom-text / no-fold-literal / obs-id-right | |||
| no-fold-quote = DQUOTE *(qtext / quoted-pair) DQUOTE | no-fold-quote = DQUOTE *(qtext / quoted-pair) DQUOTE | |||
| no-fold-literal = "[" *(dtext / quoted-pair) "]" | no-fold-literal = "[" *(dtext / quoted-pair) "]" | |||
| The "Message-ID:" field provides a unique message identifier that refers | The "Message-ID:" field provides a unique message identifier that | |||
| to a particular version of a particular message. The uniqueness of the | refers to a particular version of a particular message. The | |||
| message identifier is guaranteed by the host that generates it (see | uniqueness of the message identifier is guaranteed by the host that | |||
| below). This message identifier is intended to be machine readable and | generates it (see below). This message identifier is intended to be | |||
| not necessarily meaningful to humans. A message identifier pertains to | machine readable and not necessarily meaningful to humans. A message | |||
| exactly one instantiation of a particular message; subsequent revisions | identifier pertains to exactly one instantiation of a particular | |||
| to the message each receive new message identifiers. | message; subsequent revisions to the message each receive new message | |||
| identifiers. | ||||
| Note: There are many instances when messages are "changed", but those | Note: There are many instances when messages are "changed", but those | |||
| changes do not constitute a new instantiation of that message, and | changes do not constitute a new instantiation of that message, and | |||
| therefore the message would not get a new message identifier. For | therefore the message would not get a new message identifier. For | |||
| example, when messages are introduced into the transport system, they | example, when messages are introduced into the transport system, they | |||
| are often prepended with additional header fields such as trace fields | are often prepended with additional header fields such as trace | |||
| (described in section 3.6.7) and resent fields (described in section | fields (described in section 3.6.7) and resent fields (described in | |||
| 3.6.6). The addition of such header fields does not change the identity | section 3.6.6). The addition of such header fields does not change | |||
| of the message and therefore the original "Message-ID:" field is | the identity of the message and therefore the original "Message-ID:" | |||
| retained. In all cases, it is the meaning that the sender of the message | field is retained. In all cases, it is the meaning that the sender | |||
| wishes to convey (i.e., whether this is the same message or a different | of the message wishes to convey (i.e., whether this is the same | |||
| message) that determines whether or not the "Message-ID:" field changes, | message or a different message) that determines whether or not the | |||
| not any particular syntactic difference that appears (or does not | "Message-ID:" field changes, not any particular syntactic difference | |||
| appear) in the message. | that appears (or does not appear) in the message. | |||
| The "In-Reply-To:" and "References:" fields are used when creating a | The "In-Reply-To:" and "References:" fields are used when creating a | |||
| reply to a message. They hold the message identifier of the original | reply to a message. They hold the message identifier of the original | |||
| message and the message identifiers of other messages (for example, in | message and the message identifiers of other messages (for example, | |||
| the case of a reply to a message which was itself a reply). The "In- | in the case of a reply to a message which was itself a reply). The | |||
| Reply-To:" field may be used to identify the message (or messages) to | "In-Reply-To:" field may be used to identify the message (or | |||
| which the new message is a reply, while the "References:" field may be | messages) to which the new message is a reply, while the | |||
| used to identify a "thread" of conversation. | "References:" field may be used to identify a "thread" of | |||
| conversation. | ||||
| When creating a reply to a message, the "In-Reply-To:" and "References:" | When creating a reply to a message, the "In-Reply-To:" and | |||
| fields of the resultant message are constructed as follows: | "References:" fields of the resultant message are constructed as | |||
| follows: | ||||
| The "In-Reply-To:" field will contain the contents of the "Message-ID:" | The "In-Reply-To:" field will contain the contents of the "Message- | |||
| field of the message to which this one is a reply (the "parent | ID:" field of the message to which this one is a reply (the "parent | |||
| message"). If there is more than one parent message, then the "In-Reply- | message"). If there is more than one parent message, then the "In- | |||
| To:" field will contain the contents of all of the parents' "Message- | Reply-To:" field will contain the contents of all of the parents' | |||
| ID:" fields. If there is no "Message-ID:" field in any of the parent | "Message-ID:" fields. If there is no "Message-ID:" field in any of | |||
| messages, then the new message will have no "In-Reply-To:" field. | the parent messages, then the new message will have no "In-Reply-To:" | |||
| field. | ||||
| The "References:" field will contain the contents of the parent's | The "References:" field will contain the contents of the parent's | |||
| "References:" field (if any) followed by the contents of the parent's | "References:" field (if any) followed by the contents of the parent's | |||
| "Message-ID:" field (if any). If the parent message does not contain a | "Message-ID:" field (if any). If the parent message does not contain | |||
| "References:" field but does have an "In-Reply-To:" field containing a | a "References:" field but does have an "In-Reply-To:" field | |||
| single message identifier, then the "References:" field will contain the | containing a single message identifier, then the "References:" field | |||
| contents of the parent's "In-Reply-To:" field followed by the contents | will contain the contents of the parent's "In-Reply-To:" field | |||
| of the parent's "Message-ID:" field (if any). If the parent has none of | followed by the contents of the parent's "Message-ID:" field (if | |||
| the "References:", "In-Reply-To:", or "Message-ID:" fields, then the new | any). If the parent has none of the "References:", "In-Reply-To:", | |||
| message will have no "References:" field. | or "Message-ID:" fields, then the new message will have no | |||
| "References:" field. | ||||
| Note: Some implementations parse the "References:" field to display the | Note: Some implementations parse the "References:" field to display | |||
| "thread of the discussion". These implementations assume that each new | the "thread of the discussion". These implementations assume that | |||
| message is a reply to a single parent and hence that they can walk | each new message is a reply to a single parent and hence that they | |||
| backwards through the "References:" field to find the parent of each | can walk backwards through the "References:" field to find the parent | |||
| message listed there. Therefore, trying to form a "References:" field | of each message listed there. Therefore, trying to form a | |||
| for a reply that has multiple parents is discouraged. | "References:" field for a reply that has multiple parents is | |||
| discouraged and how to do so is not defined in this document. | ||||
| The message identifier (msg-id) itself MUST be a globally unique | The message identifier (msg-id) itself MUST be a globally unique | |||
| identifier for a message. The generator of the message identifier MUST | identifier for a message. The generator of the message identifier | |||
| guarantee that the msg-id is unique. There are several algorithms that | MUST guarantee that the msg-id is unique. There are several | |||
| can be used to accomplish this. Since the msg-id has an similar syntax | algorithms that can be used to accomplish this. Since the msg-id has | |||
| to addr-spec (identical except that comments and folding white space are | a similar syntax to angle-addr (identical except that comments and | |||
| not allowed), a good method is to put the domain name (or a domain | folding white space are not allowed), a good method is to put the | |||
| literal IP address) of the host on which the message identifier was | domain name (or a domain literal IP address) of the host on which the | |||
| created on the right hand side of the "@", and put a combination of the | message identifier was created on the right hand side of the "@", and | |||
| current absolute date and time along with some other currently unique | put a combination of the current absolute date and time along with | |||
| (perhaps sequential) identifier available on the system (for example, a | some other currently unique (perhaps sequential) identifier available | |||
| process id number) on the left hand side. Using a date on the left hand | on the system (for example, a process id number) on the left hand | |||
| side and a domain name or domain literal on the right hand side makes it | side. Using a date on the left hand side and a domain name or domain | |||
| possible to guarantee uniqueness since no two hosts use the same domain | literal on the right hand side makes it possible to guarantee | |||
| name or IP address at the same time. Though other algorithms will work, | uniqueness since no two hosts use the same domain name or IP address | |||
| it is RECOMMENDED that the right hand side contain some domain | at the same time. Though other algorithms will work, it is | |||
| identifier (either of the host itself or otherwise) such that the | RECOMMENDED that the right hand side contain some domain identifier | |||
| generator of the message identifier can guarantee the uniqueness of the | (either of the host itself or otherwise) such that the generator of | |||
| left hand side within the scope of that domain. | the message identifier can guarantee the uniqueness of the left hand | |||
| side within the scope of that domain. | ||||
| Semantically, the angle bracket characters are not part of the msg-id; | Semantically, the angle bracket characters are not part of the | |||
| the msg-id is what is contained between the two angle bracket | msg-id; the msg-id is what is contained between the two angle bracket | |||
| characters. | characters. | |||
| 3.6.5. Informational fields | 3.6.5. Informational fields | |||
| The informational fields are all optional. The "Keywords:" field | The informational fields are all optional. The "Keywords:" field | |||
| contains a comma-separated list of one or more words or quoted-strings. | contains a comma-separated list of one or more words or | |||
| The "Subject:" and "Comments:" fields are unstructured fields as defined | quoted-strings. The "Subject:" and "Comments:" fields are | |||
| in section 2.2.1, and therefore may contain text or folding white space. | unstructured fields as defined in section 2.2.1, and therefore may | |||
| contain text or folding white space. | ||||
| subject = "Subject:" unstructured CRLF | subject = "Subject:" unstructured CRLF | |||
| comments = "Comments:" unstructured CRLF | comments = "Comments:" unstructured CRLF | |||
| keywords = "Keywords:" phrase *("," phrase) CRLF | keywords = "Keywords:" phrase *("," phrase) CRLF | |||
| These three fields are intended to have only human-readable content with | These three fields are intended to have only human-readable content | |||
| information about the message. The "Subject:" field is the most common | with information about the message. The "Subject:" field is the most | |||
| and contains a short string identifying the topic of the message. When | common and contains a short string identifying the topic of the | |||
| used in a reply, the field body MAY start with the string "Re: " (from | message. When used in a reply, the field body MAY start with the | |||
| the Latin "res", in the matter of) followed by the contents of the | string "Re: " (from the Latin "res", in the matter of) followed by | |||
| "Subject:" field body of the original message. If this is done, only one | the contents of the "Subject:" field body of the original message. | |||
| instance of the literal string "Re: " ought to be used since use of | If this is done, only one instance of the literal string "Re: " ought | |||
| other strings or more than one instance can lead to undesirable | to be used since use of other strings or more than one instance can | |||
| consequences. The "Comments:" field contains any additional comments on | lead to undesirable consequences. The "Comments:" field contains any | |||
| the text of the body of the message. The "Keywords:" field contains a | additional comments on the text of the body of the message. The | |||
| comma-separated list of important words and phrases that might be useful | "Keywords:" field contains a comma-separated list of important words | |||
| for the recipient. | and phrases that might be useful for the recipient. | |||
| 3.6.6. Resent fields | 3.6.6. Resent fields | |||
| Resent fields SHOULD be added to any message that is reintroduced by a | Resent fields SHOULD be added to any message that is reintroduced by | |||
| user into the transport system. A separate set of resent fields SHOULD | a user into the transport system. A separate set of resent fields | |||
| be added each time this is done. All of the resent fields corresponding | SHOULD be added each time this is done. All of the resent fields | |||
| to a particular resending of the message SHOULD be together. Each new | corresponding to a particular resending of the message SHOULD be | |||
| set of resent fields is prepended to the message; that is, the most | together. Each new set of resent fields is prepended to the message; | |||
| recent set of resent fields appear earlier in the message. No other | that is, the most recent set of resent fields appear earlier in the | |||
| fields in the message are changed when resent fields are added. | message. No other fields in the message are changed when resent | |||
| fields are added. | ||||
| Each of the resent fields corresponds to a particular field elsewhere in | Each of the resent fields corresponds to a particular field elsewhere | |||
| the syntax. For instance, the "Resent-Date:" field corresponds to the | in the syntax. For instance, the "Resent-Date:" field corresponds to | |||
| "Date:" field and the "Resent-To:" field corresponds to the "To:" field. | the "Date:" field and the "Resent-To:" field corresponds to the "To:" | |||
| In each case, the syntax for the field body is identical to the syntax | field. In each case, the syntax for the field body is identical to | |||
| given previously for the corresponding field. | the syntax given previously for the corresponding field. | |||
| When resent fields are used, the "Resent-From:" and "Resent-Date:" | When resent fields are used, the "Resent-From:" and "Resent-Date:" | |||
| fields MUST be sent. The "Resent-Message-ID:" field SHOULD be sent. | fields MUST be sent. The "Resent-Message-ID:" field SHOULD be sent. | |||
| "Resent-Sender:" SHOULD NOT be used if "Resent-Sender:" would be | "Resent-Sender:" SHOULD NOT be used if "Resent-Sender:" would be | |||
| identical to "Resent-From:". | identical to "Resent-From:". | |||
| resent-date = "Resent-Date:" date-time CRLF | resent-date = "Resent-Date:" date-time CRLF | |||
| resent-from = "Resent-From:" mailbox-list CRLF | resent-from = "Resent-From:" mailbox-list CRLF | |||
| resent-sender = "Resent-Sender:" mailbox CRLF | resent-sender = "Resent-Sender:" mailbox CRLF | |||
| resent-to = "Resent-To:" address-list CRLF | resent-to = "Resent-To:" address-list CRLF | |||
| resent-cc = "Resent-Cc:" address-list CRLF | resent-cc = "Resent-Cc:" address-list CRLF | |||
| resent-bcc = "Resent-Bcc:" (address-list / [CFWS]) CRLF | resent-bcc = "Resent-Bcc:" (address-list / [CFWS]) CRLF | |||
| resent-msg-id = "Resent-Message-ID:" msg-id CRLF | resent-msg-id = "Resent-Message-ID:" msg-id CRLF | |||
| Resent fields are used to identify a message as having been reintroduced | Resent fields are used to identify a message as having been | |||
| into the transport system by a user. The purpose of using resent fields | reintroduced into the transport system by a user. The purpose of | |||
| is to have the message appear to the final recipient as if it were sent | using resent fields is to have the message appear to the final | |||
| directly by the original sender, with all of the original fields | recipient as if it were sent directly by the original sender, with | |||
| remaining the same. Each set of resent fields correspond to a particular | all of the original fields remaining the same. Each set of resent | |||
| resending event. That is, if a message is resent multiple times, each | fields correspond to a particular resending event. That is, if a | |||
| set of resent fields gives identifying information for each individual | message is resent multiple times, each set of resent fields gives | |||
| time. Resent fields are strictly informational. They MUST NOT be used in | identifying information for each individual time. Resent fields are | |||
| the normal processing of replies or other such automatic actions on | strictly informational. They MUST NOT be used in the normal | |||
| messages. | processing of replies or other such automatic actions on messages. | |||
| Note: Reintroducing a message into the transport system and using resent | Note: Reintroducing a message into the transport system and using | |||
| fields is a different operation from "forwarding". Forwarding has two | resent fields is a different operation from "forwarding". | |||
| meanings: First, there is a sense of forwarding in that a mail reading | "Forwarding" has two meanings: One sense of forwarding is that a mail | |||
| program can be told by the user to forward a copy of the message to | reading program can be told by a user to forward a copy of a message | |||
| another person is to make a message the body of a new message. A | to another person, making the forwarded message the body of the new | |||
| forwarded message in this sense does not appear to have come from the | message. A forwarded message in this sense does not appear to have | |||
| original sender, but is an entirely new message from the forwarder of | come from the original sender, but is an entirely new message from | |||
| the message. Second, forwarding is also used to mean when a mail | the forwarder of the message. On the other hand, forwarding is also | |||
| transport program gets a message and forwards it on to a different | used to mean when a mail transport program gets a message and | |||
| destination for final delivery. Resent header fields are not intended | forwards it on to a different destination for final delivery. Resent | |||
| for use with either type of forwarding. | header fields are not intended for use with either type of | |||
| forwarding. | ||||
| The resent originator fields indicate the mailbox of the person(s) or | The resent originator fields indicate the mailbox of the person(s) or | |||
| system(s) that resent the message. As with the regular originator | system(s) that resent the message. As with the regular originator | |||
| fields, there are two forms: a simple "Resent-From:" form which contains | fields, there are two forms: a simple "Resent-From:" form which | |||
| the mailbox of the individual doing the resending, and the more complex | contains the mailbox of the individual doing the resending, and the | |||
| form, when one individual (identified in the "Resent-Sender:" field) | more complex form, when one individual (identified in the | |||
| resends a message on behalf of one or more others (identified in the | "Resent-Sender:" field) resends a message on behalf of one or more | |||
| "Resent-From:" field). | others (identified in the "Resent-From:" field). | |||
| Note: When replying to a resent message, replies behave just as they | Note: When replying to a resent message, replies behave just as they | |||
| would with any other message, using the original "From:", "Reply-To:", | would with any other message, using the original "From:", | |||
| "Message-ID:", and other fields. The resent fields are only | "Reply-To:", "Message-ID:", and other fields. The resent fields are | |||
| informational and MUST NOT be used in the normal processing of replies. | only informational and MUST NOT be used in the normal processing of | |||
| replies. | ||||
| The "Resent-Date:" indicates the date and time at which the resent | The "Resent-Date:" indicates the date and time at which the resent | |||
| message is dispatched by the resender of the message. Like the "Date:" | message is dispatched by the resender of the message. Like the | |||
| field, it is not the date and time that the message was actually | "Date:" field, it is not the date and time that the message was | |||
| transported. | actually transported. | |||
| The "Resent-To:", "Resent-Cc:", and "Resent-Bcc:" fields function | The "Resent-To:", "Resent-Cc:", and "Resent-Bcc:" fields function | |||
| identically to the "To:", "Cc:", and "Bcc:" fields respectively, except | identically to the "To:", "Cc:", and "Bcc:" fields respectively, | |||
| that they indicate the recipients of the resent message, not the | except that they indicate the recipients of the resent message, not | |||
| recipients of the original message. | the recipients of the original message. | |||
| The "Resent-Message-ID:" field provides a unique identifier for the | The "Resent-Message-ID:" field provides a unique identifier for the | |||
| resent message. | resent message. | |||
| 3.6.7. Trace fields | 3.6.7. Trace fields | |||
| The trace fields are a group of header fields consisting of an optional | The trace fields are a group of header fields consisting of an | |||
| "Return-Path:" field, and one or more "Received:" fields. The "Return- | optional "Return-Path:" field, and one or more "Received:" fields. | |||
| Path:" header field contains a pair of angle brackets that enclose an | The "Return-Path:" header field contains a pair of angle brackets | |||
| optional addr-spec. The "Received:" field contains a (possibly empty) | that enclose an optional addr-spec. The "Received:" field contains a | |||
| list of name/value pairs followed by a semicolon and a date-time | (possibly empty) list of name/value pairs followed by a semicolon and | |||
| specification. The first item of the name/value pair is defined by item- | a date-time specification. The first item of the name/value pair is | |||
| name, and the second item is either an addr-spec, an atom, a domain, or | defined by item-name, and the second item is either an addr-spec, an | |||
| a msg-id. Further restrictions may be applied to the syntax of the trace | atom, a domain, or a msg-id. Further restrictions may be applied to | |||
| fields by standards that provide for their use, such as [SMTP]. | the syntax of the trace fields by standards that provide for their | |||
| use, such as [RFC2821]. | ||||
| trace = [return] | trace = [return] | |||
| 1*received | 1*received | |||
| return = "Return-Path:" path CRLF | return = "Return-Path:" path CRLF | |||
| path = ([CFWS] "<" ([CFWS] / addr-spec) ">" [CFWS]) / | path = ([CFWS] "<" ([CFWS] / addr-spec) ">" [CFWS]) / | |||
| obs-path | obs-path | |||
| received = "Received:" name-val-list ";" date-time CRLF | received = "Received:" name-val-list ";" date-time CRLF | |||
| name-val-list = [CFWS] [name-val-pair *(CFWS name-val-pair)] | name-val-list = [CFWS] [name-val-pair *(CFWS name-val-pair)] | |||
| name-val-pair = item-name CFWS item-value | name-val-pair = item-name CFWS item-value | |||
| item-name = ALPHA *(["-"] (ALPHA / DIGIT)) | item-name = ALPHA *(["-"] (ALPHA / DIGIT)) | |||
| item-value = addr-spec / atom / domain / msg-id | item-value = 1*angle-addr / addr-spec / | |||
| atom / domain / msg-id | ||||
| A full discussion of the Internet mail use of trace fields is contained | A full discussion of the Internet mail use of trace fields is | |||
| in [SMTP]. For the purposes of this standard, the trace fields are | contained in [RFC2821]. For the purposes of this standard, the trace | |||
| strictly informational, and any formal interpretation of them is outside | fields are strictly informational, and any formal interpretation of | |||
| of the scope of this document. | them is outside of the scope of this document. | |||
| 3.6.8. Optional fields | 3.6.8. Optional fields | |||
| Fields may appear in messages that are otherwise unspecified in this | Fields may appear in messages that are otherwise unspecified in this | |||
| standard. They MUST conform to the syntax of an optional-field. This is | standard. They MUST conform to the syntax of an optional-field. | |||
| a field name, made up of the printable US-ASCII characters except SP and | This is a field name, made up of the printable US-ASCII characters | |||
| colon, followed by a colon, followed by any text which conforms to | except SP and colon, followed by a colon, followed by any text which | |||
| unstructured. | conforms to unstructured. | |||
| The field names of any optional-field MUST NOT be identical to any field | The field names of any optional-field MUST NOT be identical to any | |||
| name specified elsewhere in this standard. | field name specified elsewhere in this standard. | |||
| optional-field = field-name ":" unstructured CRLF | optional-field = field-name ":" unstructured CRLF | |||
| field-name = 1*ftext | field-name = 1*ftext | |||
| ftext = %d33-57 / ; Any character except | ftext = %d33-57 / ; Any character except | |||
| %d59-126 ; controls, SP, and | %d59-126 ; controls, SP, and | |||
| ; ":". | ; ":". | |||
| For the purposes of this standard, any optional field is uninterpreted. | For the purposes of this standard, any optional field is | |||
| uninterpreted. | ||||
| 4. Obsolete Syntax | 4. Obsolete Syntax | |||
| Earlier versions of this standard allowed for different (usually more | Earlier versions of this standard allowed for different (usually more | |||
| liberal) syntax than is allowed in this version. Also, there have been | liberal) syntax than is allowed in this version. Also, there have | |||
| syntactic elements used in messages on the Internet whose interpretation | been syntactic elements used in messages on the Internet whose | |||
| have never been documented. Though some of these syntactic forms MUST | interpretation have never been documented. Though some of these | |||
| NOT be generated according to the grammar in section 3, they MUST be | syntactic forms MUST NOT be generated according to the grammar in | |||
| accepted and parsed by a conformant receiver. This section documents | section 3, they MUST be accepted and parsed by a conformant receiver. | |||
| many of these syntactic elements. Taking the grammar in section 3 and | This section documents many of these syntactic elements. Taking the | |||
| adding the definitions presented in this section will result in the | grammar in section 3 and adding the definitions presented in this | |||
| grammar to use for interpretation of messages. | section will result in the grammar to use for interpretation of | |||
| messages. | ||||
| Note: This section identifies syntactic forms that any implementation | Note: This section identifies syntactic forms that any implementation | |||
| MUST reasonably interpret. However, there are certainly Internet | MUST reasonably interpret. However, there are certainly Internet | |||
| messages which do not conform to even the additional syntax given in | messages which do not conform to even the additional syntax given in | |||
| this section. The fact that a particular form does not appear in any | this section. The fact that a particular form does not appear in any | |||
| section of this document is not justification for computer programs to | section of this document is not justification for computer programs | |||
| crash or for malformed data to be irretrievably lost by any | to crash or for malformed data to be irretrievably lost by any | |||
| implementation. To repeat an example, though this document requires | implementation. To repeat an example, though this document requires | |||
| lines in messages to be no longer than 998 characters, silently | lines in messages to be no longer than 998 characters, silently | |||
| discarding the 999th and subsequent characters in a line without warning | discarding the 999th and subsequent characters in a line without | |||
| would still be bad behavior for an implementation. It is up to the | warning would still be bad behavior for an implementation. It is up | |||
| implementation to deal with messages robustly. | to the implementation to deal with messages robustly. | |||
| One important difference between the obsolete (interpreting) and the | One important difference between the obsolete (interpreting) and the | |||
| current (generating) syntax is that in structured header field bodies | current (generating) syntax is that in structured header field bodies | |||
| (i.e., between the colon and the CRLF of any structured header field), | (i.e., between the colon and the CRLF of any structured header | |||
| white space characters, including folding white space, and comments | field), white space characters, including folding white space, and | |||
| could be freely inserted between any syntactic tokens. This allowed many | comments can be freely inserted between any syntactic tokens. This | |||
| complex forms that have proven difficult for some implementations to | allows many complex forms that have proven difficult for some | |||
| parse. | implementations to parse. | |||
| Another key difference between the obsolete and the current syntax is | Another key difference between the obsolete and the current syntax is | |||
| that the rule in section 3.2.3 regarding lines composed entirely of | that the rule in section 3.2.3 regarding lines composed entirely of | |||
| white space in comments and folding white space does not apply. See the | white space in comments and folding white space does not apply. See | |||
| discussion of folding white space in section 4.2 below. | the discussion of folding white space in section 4.2 below. | |||
| Finally, certain characters that were formerly allowed in messages | Finally, certain characters that were formerly allowed in messages | |||
| appear in this section. The NUL character (ASCII value 0) was once | appear in this section. The NUL character (ASCII value 0) was once | |||
| allowed, but is no longer for compatibility reasons. CR and LF were | allowed, but is no longer for compatibility reasons. CR and LF were | |||
| allowed to appear in messages other than as CRLF; this use is also shown | allowed to appear in messages other than as CRLF; this use is also | |||
| here. | shown here. | |||
| Other differences in syntax and semantics are noted in the following | Other differences in syntax and semantics are noted in the following | |||
| sections. | sections. | |||
| 4.1. Miscellaneous obsolete tokens | 4.1. Miscellaneous obsolete tokens | |||
| These syntactic elements are used elsewhere in the obsolete syntax or in | These syntactic elements are used elsewhere in the obsolete syntax or | |||
| the main syntax. The obs-char and obs-qp elements each add ASCII value | in the main syntax. The obs-char and obs-qp elements each add ASCII | |||
| 0. Bare CR and bare LF are added to obs-text and obs-utext. The period | value 0. Bare CR and bare LF are added to obs-text and obs-utext. | |||
| character is added to obs-phrase. | The period character is added to obs-phrase. The obs-phrase-list | |||
| provides for "empty" elements in a comma-separated list of phrases. | ||||
| Note: The "period" (or "full stop") character (".") in obs-phrase is not | Note: The "period" (or "full stop") character (".") in obs-phrase is | |||
| a form that was allowed in earlier versions of this or any other | not a form that was allowed in earlier versions of this or any other | |||
| standard. Period (nor any other character from specials) was not allowed | standard. Period (nor any other character from specials) was not | |||
| in phrase because it introduced a parsing difficulty distinguishing | allowed in phrase because it introduced a parsing difficulty | |||
| between phrases and portions of an addr-spec (see section 4.4). It | distinguishing between phrases and portions of an addr-spec (see | |||
| appears here because the period character is currently used in many | section 4.4). It appears here because the period character is | |||
| messages in the display-name portion of addresses, especially for | currently used in many messages in the display-name portion of | |||
| initials in names, and therefore must be interpreted properly. In the | addresses, especially for initials in names, and therefore must be | |||
| future, period may appear in the regular syntax of phrase. | interpreted properly. In the future, period may appear in the | |||
| regular syntax of phrase. | ||||
| obs-qp = "\" (%d0-127) | obs-qp = "\" (%d0-127) | |||
| obs-text = *LF *CR *(obs-char *LF *CR) | obs-text = *LF *CR *(obs-char *LF *CR) | |||
| obs-char = %d0-9 / %d11 / ; %d0-127 except CR and | obs-char = %d0-9 / %d11 / ; %d0-127 except CR and | |||
| %d12 / %d14-127 ; LF | %d12 / %d14-127 ; LF | |||
| obs-utext = obs-text | obs-utext = obs-text | |||
| obs-phrase = word *(word / "." / CFWS) | obs-phrase = word *(word / "." / CFWS) | |||
| Bare CR and bare LF appear in messages with two different meanings. In | obs-phrase-list = phrase / 1*([phrase] [CFWS] "," [CFWS]) [phrase] | |||
| many cases, bare CR or bare LF are used improperly instead of CRLF to | ||||
| indicate line separators. In other case, bare CR and bare LF are used | Bare CR and bare LF appear in messages with two different meanings. | |||
| simply as ASCII control characters with their traditional ASCII | In many cases, bare CR or bare LF are used improperly instead of CRLF | |||
| meanings. | to indicate line separators. In other cases, bare CR and bare LF are | |||
| used simply as ASCII control characters with their traditional ASCII | ||||
| meanings. | ||||
| 4.2. Obsolete folding white space | 4.2. Obsolete folding white space | |||
| In the obsolete syntax, any amount of folding white space MAY be | In the obsolete syntax, any amount of folding white space MAY be | |||
| inserted where the obs-FWS rule is allowed. This creates the possibility | inserted where the obs-FWS rule is allowed. This creates the | |||
| of having two consecutive "folds" in a line, and therefore the | possibility of having two consecutive "folds" in a line, and | |||
| possibility that a line which makes up a folded header field could be | therefore the possibility that a line which makes up a folded header | |||
| composed entirely of white space. | field could be composed entirely of white space. | |||
| obs-FWS = 1*WSP *(CRLF 1*WSP) | obs-FWS = 1*WSP *(CRLF 1*WSP) | |||
| 4.3. Obsolete Date and Time | 4.3. Obsolete Date and Time | |||
| The syntax for the obsolete date format allows a 2 digit year in the | The syntax for the obsolete date format allows a 2 digit year in the | |||
| date field and allows for a list of alphabetic time zone specifications | date field and allows for a list of alphabetic time zone | |||
| that were used in earlier versions of this standard. It also permits | specifications that were used in earlier versions of this standard. | |||
| comments and folding white space between many of the tokens. | It also permits comments and folding white space between many of the | |||
| tokens. | ||||
| obs-day-of-week = [CFWS] day-name [CFWS] | obs-day-of-week = [CFWS] day-name [CFWS] | |||
| obs-year = [CFWS] 2*DIGIT [CFWS] | obs-year = [CFWS] 2*DIGIT [CFWS] | |||
| obs-month = CFWS month-name CFWS | obs-month = CFWS month-name CFWS | |||
| obs-day = [CFWS] 1*2DIGIT [CFWS] | obs-day = [CFWS] 1*2DIGIT [CFWS] | |||
| obs-hour = [CFWS] 2DIGIT [CFWS] | obs-hour = [CFWS] 2DIGIT [CFWS] | |||
| skipping to change at line 1365 ¶ | skipping to change at page 32, line 16 ¶ | |||
| "EST" / "EDT" / ; Eastern: - 5/ - 4 | "EST" / "EDT" / ; Eastern: - 5/ - 4 | |||
| "CST" / "CDT" / ; Central: - 6/ - 5 | "CST" / "CDT" / ; Central: - 6/ - 5 | |||
| "MST" / "MDT" / ; Mountain: - 7/ - 6 | "MST" / "MDT" / ; Mountain: - 7/ - 6 | |||
| "PST" / "PDT" / ; Pacific: - 8/ - 7 | "PST" / "PDT" / ; Pacific: - 8/ - 7 | |||
| %d65-73 / ; Military zones - "A" | %d65-73 / ; Military zones - "A" | |||
| %d75-90 / ; through "I" and "K" | %d75-90 / ; through "I" and "K" | |||
| %d97-105 / ; through "Z", both | %d97-105 / ; through "Z", both | |||
| %d107-122 ; upper and lower case | %d107-122 ; upper and lower case | |||
| Where a two or three digit year occurs in a date, the year is to be | Where a two or three digit year occurs in a date, the year is to be | |||
| interpreted as follows: If a two digit year is encountered whose value | interpreted as follows: If a two digit year is encountered whose | |||
| is between 00 and 49, the year is interpreted by adding 2000, ending up | value is between 00 and 49, the year is interpreted by adding 2000, | |||
| with a value between 2000 and 2049. If a two digit year is encountered | ending up with a value between 2000 and 2049. If a two digit year is | |||
| with a value between 50 and 99, or any three digit year is encountered, | encountered with a value between 50 and 99, or any three digit year | |||
| the year is interpreted by adding 1900. | is encountered, the year is interpreted by adding 1900. | |||
| In the obsolete time zone, "UT" and "GMT" are indications of "Universal | In the obsolete time zone, "UT" and "GMT" are indications of | |||
| Time" and "Greenwich Mean Time" respectively and are both semantically | "Universal Time" and "Greenwich Mean Time" respectively and are both | |||
| identical to "+0000". | semantically identical to "+0000". | |||
| The remaining three character zones are the US time zones. The first | The remaining three character zones are the US time zones. The first | |||
| letter, "E", "C", "M", or "P" stands for "Eastern", "Central", | letter, "E", "C", "M", or "P" stands for "Eastern", "Central", | |||
| "Mountain" and "Pacific". The second letter is either "S" for "Standard" | "Mountain" and "Pacific". The second letter is either "S" for | |||
| time, or "D" for "Daylight" (or summer) time. Their interpretations are | "Standard" time, or "D" for "Daylight" (or summer) time. Their | |||
| as follows: | interpretations are as follows: | |||
| EDT is semantically equivalent to -0400 | EDT is semantically equivalent to -0400 | |||
| EST is semantically equivalent to -0500 | EST is semantically equivalent to -0500 | |||
| CDT is semantically equivalent to -0500 | CDT is semantically equivalent to -0500 | |||
| CST is semantically equivalent to -0600 | CST is semantically equivalent to -0600 | |||
| MDT is semantically equivalent to -0600 | MDT is semantically equivalent to -0600 | |||
| MST is semantically equivalent to -0700 | MST is semantically equivalent to -0700 | |||
| PDT is semantically equivalent to -0700 | PDT is semantically equivalent to -0700 | |||
| PST is semantically equivalent to -0800 | PST is semantically equivalent to -0800 | |||
| The 1 character military time zones were defined in a non-standard way | The 1 character military time zones were defined in a non-standard | |||
| in [RFC-822] and are therefore unpredictable in their meaning. The | way in [RFC822] and are therefore unpredictable in their meaning. | |||
| original definitions of the military zones "A" through "I" are | The original definitions of the military zones "A" through "I" are | |||
| equivalent to "+0100" through "+0900" respectively; "K", "L", and "M" | equivalent to "+0100" through "+0900" respectively; "K", "L", and "M" | |||
| are equivalent to "+1000", "+1100", and "+1200" respectively; "N" | are equivalent to "+1000", "+1100", and "+1200" respectively; "N" | |||
| through "Y" are equivalent to "-0100" through "-1200" respectively; and | through "Y" are equivalent to "-0100" through "-1200" respectively; | |||
| "Z" is equivalent to "+0000". However, because of the error in [RFC- | and "Z" is equivalent to "+0000". However, because of the error in | |||
| 822], they SHOULD all be considered equivalent to "-0000" unless there | [RFC822], they SHOULD all be considered equivalent to "-0000" unless | |||
| is out-of-band information confirming their meaning. | there is out-of-band information confirming their meaning. | |||
| Other multi-character (usually between 3 and 5) alphabetic time zones | Other multi-character (usually between 3 and 5) alphabetic time zones | |||
| have been used in Internet messages. Any such time zone whose meaning is | have been used in Internet messages. Any such time zone whose | |||
| not known SHOULD be considered equivalent to "-0000" unless there is | meaning is not known SHOULD be considered equivalent to "-0000" | |||
| out-of-band information confirming their meaning. | unless there is out-of-band information confirming their meaning. | |||
| 4.4. Obsolete Addressing | 4.4. Obsolete Addressing | |||
| There are three primary differences in addressing. First, mailbox | There are three primary differences in addressing. First, mailbox | |||
| addresses were allowed to have a route portion before the addr-spec when | addresses were allowed to have a route portion before the addr-spec | |||
| enclosed in "<" and ">". The route is simply a comma-separated list of | when enclosed in "<" and ">". The route is simply a comma-separated | |||
| domain names, each preceded by "@", and the list terminated by a colon. | list of domain names, each preceded by "@", and the list terminated | |||
| Second, CFWS were allowed between the period-separated elements of | by a colon. Second, CFWS were allowed between the period-separated | |||
| local-part and domain (i.e., dot-atom was not used). In addition, local- | elements of local-part and domain (i.e., dot-atom was not used). In | |||
| part is allowed to contain quoted-string in addition to just atom. | addition, local-part is allowed to contain quoted-string in addition | |||
| Finally, mailbox-list and address-list were allowed to have "null" | to just atom. Finally, mailbox-list and address-list were allowed to | |||
| members. That is, there could be two or more commas in such a list with | have "null" members. That is, there could be two or more commas in | |||
| nothing in between them. | such a list with nothing in between them. | |||
| obs-mailbox = addr-spec / [display-name] obs-route-addr | ||||
| obs-route-addr = [CFWS] "<" [obs-route] addr-spec ">" [CFWS] | obs-angle-addr = [CFWS] "<" [obs-route] addr-spec ">" [CFWS] | |||
| obs-route = [CFWS] obs-domain-list ":" [CFWS] | obs-route = [CFWS] obs-domain-list ":" [CFWS] | |||
| obs-domain-list = "@" domain *(*(CFWS / "," ) [CFWS] "@" domain) | obs-domain-list = "@" domain *(*(CFWS / "," ) [CFWS] "@" domain) | |||
| obs-local-part = word *("." word) | obs-local-part = word *("." word) | |||
| obs-domain = atom *("." atom) | obs-domain = atom *("." atom) | |||
| obs-mbox-list = *([mailbox] [CFWS] "," [CFWS]) | obs-mbox-list = 1*([mailbox] [CFWS] "," [CFWS]) [mailbox] | |||
| obs-addr-list = *([address] [CFWS] "," [CFWS]) | obs-addr-list = 1*([address] [CFWS] "," [CFWS]) [address] | |||
| When interpreting addresses, the route portion SHOULD be ignored. | When interpreting addresses, the route portion SHOULD be ignored. | |||
| 4.5. Obsolete header fields | 4.5. Obsolete header fields | |||
| Syntactically, the primary difference in the obsolete field syntax is | Syntactically, the primary difference in the obsolete field syntax is | |||
| that it allows multiple occurrences of any of the fields and they may | that it allows multiple occurrences of any of the fields and they may | |||
| occur in any order. Also, any amount of white space is allowed before | occur in any order. Also, any amount of white space is allowed | |||
| the ":" at the end of the field name. | before the ":" at the end of the field name. | |||
| obs-fields = *(obs-return / | obs-fields = *(obs-return / | |||
| obs-received / | obs-received / | |||
| obs-orig-date / | obs-orig-date / | |||
| obs-from / | obs-from / | |||
| obs-sender / | obs-sender / | |||
| obs-reply-to / | obs-reply-to / | |||
| obs-to / | obs-to / | |||
| obs-cc / | obs-cc / | |||
| obs-bcc / | obs-bcc / | |||
| obs-message-id / | obs-message-id / | |||
| obs-in-reply-to / | obs-in-reply-to / | |||
| obs-references / | obs-references / | |||
| obs-subject / | obs-subject / | |||
| obs-comments / | obs-comments / | |||
| obs-keywords / | obs-keywords / | |||
| obs-resent-date / | ||||
| obs-resent-from / | obs-resent-from / | |||
| obs-resent-send / | obs-resent-send / | |||
| obs-resent-rply / | obs-resent-rply / | |||
| obs-resent-to / | obs-resent-to / | |||
| obs-resent-cc / | obs-resent-cc / | |||
| obs-resent-bcc / | obs-resent-bcc / | |||
| obs-resent-mid / | obs-resent-mid / | |||
| obs-optional) | obs-optional) | |||
| Except for destination address fields (described in section 4.5.3), the | Except for destination address fields (described in section 4.5.3), | |||
| interpretation of multiple occurrences of fields is unspecified. Also, | the interpretation of multiple occurrences of fields is unspecified. | |||
| the interpretation of trace fields and resent fields which do not occur | Also, the interpretation of trace fields and resent fields which do | |||
| in blocks prepended to the message is unspecified as well. Unless | not occur in blocks prepended to the message is unspecified as well. | |||
| otherwise noted in the following sections, interpretation of other | Unless otherwise noted in the following sections, interpretation of | |||
| fields is identical to the interpretation of their non-obsolete | other fields is identical to the interpretation of their non-obsolete | |||
| counterparts in section 3. | counterparts in section 3. | |||
| 4.5.1. Obsolete origination date field | 4.5.1. Obsolete origination date field | |||
| obs-orig-date = "Date" *WSP ":" date-time CRLF | obs-orig-date = "Date" *WSP ":" date-time CRLF | |||
| 4.5.2. Obsolete originator fields | 4.5.2. Obsolete originator fields | |||
| obs-from = "From" *WSP ":" mailbox-list CRLF | obs-from = "From" *WSP ":" mailbox-list CRLF | |||
| obs-sender = "Sender" *WSP ":" mailbox CRLF | obs-sender = "Sender" *WSP ":" mailbox CRLF | |||
| obs-reply-to = "Reply-To" *WSP ":" mailbox-list CRLF | obs-reply-to = "Reply-To" *WSP ":" mailbox-list CRLF | |||
| 4.5.3. Obsolete destination address fields | 4.5.3. Obsolete destination address fields | |||
| obs-to = "To" *WSP ":" address-list CRLF | obs-to = "To" *WSP ":" address-list CRLF | |||
| obs-cc = "Cc" *WSP ":" address-list CRLF | obs-cc = "Cc" *WSP ":" address-list CRLF | |||
| obs-bcc = "Bcc" *WSP ":" (address-list / [CFWS]) CRLF | obs-bcc = "Bcc" *WSP ":" (address-list / [CFWS]) CRLF | |||
| When multiple occurrences of destination address fields occur in a | ||||
| When multiple occurrences of destination address fields occur in a | message, they SHOULD be treated as if the address-list in the first | |||
| message, they SHOULD be treated as if the address-list in the first | occurrence of the field is combined with the address lists of the | |||
| occurrence of the field is combined with the address lists of the | subsequent occurrences by adding a comma and concatenating. | |||
| subsequent occurrences by adding a comma and concatenating. | ||||
| 4.5.4. Obsolete identification fields | 4.5.4. Obsolete identification fields | |||
| The obsolete "In-Reply-To:" and "References:" fields differ from the | The obsolete "In-Reply-To:" and "References:" fields differ from the | |||
| current syntax in that they allow phrase (words or quoted strings) to | current syntax in that they allow phrase (words or quoted strings) to | |||
| appear. The obsolete forms of the left and right sides of msg-id allow | appear. The obsolete forms of the left and right sides of msg-id | |||
| interspersed CFWS, making them syntactically identical to local-part and | allow interspersed CFWS, making them syntactically identical to | |||
| domain respectively. | local-part and domain respectively. | |||
| obs-message-id = "Message-ID" *WSP ":" msg-id CRLF | obs-message-id = "Message-ID" *WSP ":" msg-id CRLF | |||
| obs-in-reply-to = "In-Reply-To" *WSP ":" *(phrase / msg-id) CRLF | obs-in-reply-to = "In-Reply-To" *WSP ":" *(phrase / msg-id) CRLF | |||
| obs-references = "References" *WSP ":" *(phrase / msg-id) CRLF | obs-references = "References" *WSP ":" *(phrase / msg-id) CRLF | |||
| obs-id-left = local-part | obs-id-left = local-part | |||
| obs-id-right = domain | obs-id-right = domain | |||
| For purposes of interpretation, the phrases in the "In-Reply-To:" and | For purposes of interpretation, the phrases in the "In-Reply-To:" and | |||
| "References:" fields are ignored. | "References:" fields are ignored. | |||
| Semantically, none of the optional CFWS surrounding the local-part and | Semantically, none of the optional CFWS surrounding the local-part | |||
| the domain are part of the obs-id-left and obs-id-right respectively. | and the domain are part of the obs-id-left and obs-id-right | |||
| respectively. | ||||
| 4.5.5. Obsolete informational fields | 4.5.5. Obsolete informational fields | |||
| obs-subject = "Subject" *WSP ":" unstructured CRLF | obs-subject = "Subject" *WSP ":" unstructured CRLF | |||
| obs-comments = "Comments" *WSP ":" unstructured CRLF | obs-comments = "Comments" *WSP ":" unstructured CRLF | |||
| obs-keywords = "Keywords" *WSP ":" *([phrase] ",") CRLF | obs-keywords = "Keywords" *WSP ":" obs-phrase-list CRLF | |||
| 4.5.6. Obsolete resent fields | 4.5.6. Obsolete resent fields | |||
| The obsolete syntax adds a "Resent-Reply-To:" field, which consists of | The obsolete syntax adds a "Resent-Reply-To:" field, which consists | |||
| the field name, the optional comments and folding white space, the | of the field name, the optional comments and folding white space, the | |||
| colon, and a comma separated list of addresses. | colon, and a comma separated list of addresses. | |||
| obs-resent-from = "Resent-From" *WSP ":" mailbox-list CRLF | obs-resent-from = "Resent-From" *WSP ":" mailbox-list CRLF | |||
| obs-resent-send = "Resent-Sender" *WSP ":" mailbox CRLF | obs-resent-send = "Resent-Sender" *WSP ":" mailbox CRLF | |||
| obs-resent-date = "Resent-Date" *WSP ":" date-time CRLF | obs-resent-date = "Resent-Date" *WSP ":" date-time CRLF | |||
| obs-resent-to = "Resent-To" *WSP ":" address-list CRLF | obs-resent-to = "Resent-To" *WSP ":" address-list CRLF | |||
| obs-resent-cc = "Resent-Cc" *WSP ":" address-list CRLF | obs-resent-cc = "Resent-Cc" *WSP ":" address-list CRLF | |||
| obs-resent-bcc = "Resent-Bcc" *WSP ":" | obs-resent-bcc = "Resent-Bcc" *WSP ":" | |||
| (address-list / [CFWS]) CRLF | (address-list / [CFWS]) CRLF | |||
| obs-resent-mid = "Resent-Message-ID" *WSP ":" msg-id CRLF | obs-resent-mid = "Resent-Message-ID" *WSP ":" msg-id CRLF | |||
| skipping to change at line 1556 ¶ | skipping to change at page 36, line 17 ¶ | |||
| obs-resent-cc = "Resent-Cc" *WSP ":" address-list CRLF | obs-resent-cc = "Resent-Cc" *WSP ":" address-list CRLF | |||
| obs-resent-bcc = "Resent-Bcc" *WSP ":" | obs-resent-bcc = "Resent-Bcc" *WSP ":" | |||
| (address-list / [CFWS]) CRLF | (address-list / [CFWS]) CRLF | |||
| obs-resent-mid = "Resent-Message-ID" *WSP ":" msg-id CRLF | obs-resent-mid = "Resent-Message-ID" *WSP ":" msg-id CRLF | |||
| obs-resent-rply = "Resent-Reply-To" *WSP ":" address-list CRLF | obs-resent-rply = "Resent-Reply-To" *WSP ":" address-list CRLF | |||
| As with other resent fields, the "Resent-Reply-To:" field is to be | As with other resent fields, the "Resent-Reply-To:" field is to be | |||
| treated as trace information only. | treated as trace information only. | |||
| 4.5.7. Obsolete trace fields | 4.5.7. Obsolete trace fields | |||
| The obs-return and obs-received are again given here as template | The obs-return and obs-received are again given here as template | |||
| definitions, just as return and received are in section 3. Their full | definitions, just as return and received are in section 3. Their | |||
| syntax is given in [SMTP]. | full syntax is given in [RFC2821]. | |||
| obs-return = "Return-Path" *WSP ":" path CRLF | obs-return = "Return-Path" *WSP ":" path CRLF | |||
| obs-received = "Received" *WSP ":" name-val-list CRLF | obs-received = "Received" *WSP ":" name-val-list CRLF | |||
| obs-path = obs-route-addr | obs-path = obs-angle-addr | |||
| 4.5.8. Obsolete optional fields | 4.5.8. Obsolete optional fields | |||
| obs-optional = field-name *WSP ":" unstructured CRLF | obs-optional = field-name *WSP ":" unstructured CRLF | |||
| 5. Security Considerations | 5. Security Considerations | |||
| Care needs to be taken when displaying messages on a terminal or | Care needs to be taken when displaying messages on a terminal or | |||
| terminal emulator. Powerful terminals may act on escape sequences and | terminal emulator. Powerful terminals may act on escape sequences | |||
| other combinations of ASCII control characters with a variety of | and other combinations of ASCII control characters with a variety of | |||
| consequences. They can remap the keyboard or permit other modifications | consequences. They can remap the keyboard or permit other | |||
| to the terminal which could lead to denial of service or even damaged | modifications to the terminal which could lead to denial of service | |||
| data. They can trigger (sometimes programmable) answerback messages | or even damaged data. They can trigger (sometimes programmable) | |||
| which can allow a message to cause commands to be issued on the | answerback messages which can allow a message to cause commands to be | |||
| recipient's behalf. They can also effect the operation of terminal | issued on the recipient's behalf. They can also effect the operation | |||
| attached devices such as printers. Message viewers may wish to strip | of terminal attached devices such as printers. Message viewers may | |||
| potentially dangerous terminal escape sequences from the message prior | wish to strip potentially dangerous terminal escape sequences from | |||
| to display. However, other escape sequences appear in messages for | the message prior to display. However, other escape sequences appear | |||
| useful purposes (cf. [RFC-2045, RFC-2046, RFC-2047, RFC-2048, RFC-2049], | in messages for useful purposes (cf. [RFC2045, RFC2046, RFC2047, | |||
| [ISO-2022]) and therefore should not be stripped indiscriminately. | RFC2048, RFC2049, ISO2022]) and therefore should not be stripped | |||
| indiscriminately. | ||||
| Transmission of non-text objects in messages raises additional security | Transmission of non-text objects in messages raises additional | |||
| issues. These issues are discussed in [RFC-2045, RFC-2046, RFC-2047, | security issues. These issues are discussed in [RFC2045, RFC2046, | |||
| RFC-2048, RFC-2049]. | RFC2047, RFC2048, RFC2049]. | |||
| Many implementations use the "Bcc:" (blind carbon copy) field described | Many implementations use the "Bcc:" (blind carbon copy) field | |||
| in section 3.6.3 to facilitate sending messages to recipients without | described in section 3.6.3 to facilitate sending messages to | |||
| revealing the addresses of one or more of the addressees to the other | recipients without revealing the addresses of one or more of the | |||
| recipients. Mishandling this use of "Bcc:" has implications for | addressees to the other recipients. Mishandling this use of "Bcc:" | |||
| confidential information that might be revealed, which could eventually | has implications for confidential information that might be revealed, | |||
| lead to security problems through knowledge of even the existence of a | which could eventually lead to security problems through knowledge of | |||
| particular mail address. For example, if using the first method | even the existence of a particular mail address. For example, if | |||
| described in section 3.6.3, where the "Bcc:" line is removed from the | using the first method described in section 3.6.3, where the "Bcc:" | |||
| message, blind recipients have no explicit indication that they have | line is removed from the message, blind recipients have no explicit | |||
| been sent a blind copy, except insofar as their address does not appear | indication that they have been sent a blind copy, except insofar as | |||
| in the message header. Because of this, one of the blind addressees | their address does not appear in the message header. Because of | |||
| could potentially send a reply to all of the shown recipients and | this, one of the blind addressees could potentially send a reply to | |||
| accidentally reveal that the message went to the blind recipient. When | all of the shown recipients and accidentally reveal that the message | |||
| the second method from section 3.6.3 is used, the blind recipient's | went to the blind recipient. When the second method from section | |||
| address appears in the "Bcc:" field of a separate copy of the message. | 3.6.3 is used, the blind recipient's address appears in the "Bcc:" | |||
| If the "Bcc:" field sent contains all of the blind addressees, all of | field of a separate copy of the message. If the "Bcc:" field sent | |||
| the "Bcc:" recipients will be seen by each "Bcc:" recipient. Even if a | contains all of the blind addressees, all of the "Bcc:" recipients | |||
| separate message is sent to each "Bcc:" recipient with only the | will be seen by each "Bcc:" recipient. Even if a separate message is | |||
| individual's address, implementations still need to be careful to | sent to each "Bcc:" recipient with only the individual's address, | |||
| process replies to the message as per section 3.6.3 so as not to | implementations still need to be careful to process replies to the | |||
| accidentally reveal the blind recipient to other recipients. | message as per section 3.6.3 so as not to accidentally reveal the | |||
| blind recipient to other recipients. | ||||
| 6. Bibliography | 6. Bibliography | |||
| [ASCII] American National Standards Institute (ANSI), Coded Character | [ASCII] American National Standards Institute (ANSI), Coded | |||
| Set - 7-Bit American National Standard Code for Information Interchange, | Character Set - 7-Bit American National Standard Code for | |||
| ANSI X3.4, 1986. | Information Interchange, ANSI X3.4, 1986. | |||
| [ISO-2022] International Organization for Standardization (ISO), | [ISO2022] International Organization for Standardization (ISO), | |||
| Information processing - ISO 7-bit and 8-bit coded character sets - Code | Information processing - ISO 7-bit and 8-bit coded | |||
| extension techniques, Third edition - 1986-05-01, ISO 2022, 1986. | character sets - Code extension techniques, Third edition | |||
| - 1986-05-01, ISO 2022, 1986. | ||||
| [RFC-822] Crocker, D., Standard for the Format of ARPA Internet Text | [RFC822] Crocker, D., "Standard for the Format of ARPA Internet | |||
| Messages. STD 11, RFC 822. August 1982. | Text Messages", RFC 822, August 1982. | |||
| [RFC-2045] Freed, N. and Borenstein, N., Multipurpose Internet Mail | [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | |||
| Extensions (MIME) Part One: Format of Internet Message Bodies, RFC 2045, | Extensions (MIME) Part One: Format of Internet Message | |||
| November 1996. | Bodies", RFC 2045, November 1996. | |||
| [RFC-2046] Freed, N. and Borenstein, N., Multipurpose Internet Mail | [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | |||
| Extensions (MIME) Part Two: Media Types, RFC 2046, November 1996. | Extensions (MIME) Part Two: Media Types", RFC 2046, | |||
| November 1996. | ||||
| [RFC-2047] Moore, K., Multipurpose Internet Mail Extensions (MIME) Part | [RFC2047] Moore, K., "Multipurpose Internet Mail Extensions (MIME) | |||
| Three: Message Header Extensions for Non-ASCII Text, RFC 2047, November | Part Three: Message Header Extensions for Non-ASCII Text", | |||
| 1996. | RFC 2047, November 1996. | |||
| [RFC-2048] Freed, N., Klensin, J., and Postel, J., Multipurpose Internet | [RFC2048] Freed, N., Klensin, J. and J. Postel, "Multipurpose | |||
| Mail Extensions (MIME) Part Four: Format of Internet Message Bodies, RFC | Internet Mail Extensions (MIME) Part Four: Format of | |||
| 2048, November 1996. | Internet Message Bodies", RFC 2048, November 1996. | |||
| [RFC-2049] Freed, N. and Borenstein, N., Multipurpose Internet Mail | [RFC2049] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | |||
| Extensions (MIME) Part Five: Conformance Criteria and Examples, RFC | Extensions (MIME) Part Five: Conformance Criteria and | |||
| 2049, November 1996. | Examples", RFC 2049, November 1996. | |||
| [RFC-2119] Bradner, S., Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels, BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC-2234] Crocker, D., Editor, and Overell, P., Augmented BNF for | [RFC2234] Crocker, D., Editor, and P. Overell, "Augmented BNF for | |||
| Syntax Specifications: ABNF, November 1997. | Syntax Specifications: ABNF", RFC 2234, November 1997. | |||
| [SMTP] Klensin, J., Editor, Simple Mail Transfer Protocol, Work In | [RFC2821] Klensin, J., Editor, "Simple Mail Transfer Protocol", RFC | |||
| Progress. | 2821, March 2001. | |||
| [STD-3] Braden, R., Host Requirements, STD 3, RFC 1122 and RFC 1123, | [STD3] Braden, R., "Host Requirements", STD 3, RFC 1122 and RFC | |||
| October 1989. | 1123, October 1989. | |||
| [STD-12] Mills, D., Network Time Protocol, STD 12, RFC 1119, September | [STD12] Mills, D., "Network Time Protocol", STD 12, RFC 1119, | |||
| 1989. | September 1989. | |||
| [STD-13] Mockapetris, P., Domain Name System, STD 13, RFC 1034 and RFC | [STD13] Mockapetris, P., "Domain Name System", STD 13, RFC 1034 | |||
| 1035 November 1987. | and RFC 1035, November 1987. | |||
| [STD-14] Partridge, C., Mail Routing and the Domain System, STD 14, RFC | [STD14] Partridge, C., "Mail Routing and the Domain System", STD | |||
| 974, January 1986. | 14, RFC 974, January 1986. | |||
| 7. Editor's Address | 7. Editor's Address | |||
| Peter W. Resnick | Peter W. Resnick | |||
| QUALCOMM Incorporated | QUALCOMM Incorporated | |||
| 5775 Morehouse Drive | 5775 Morehouse Drive | |||
| San Diego, CA 92121-1714 | San Diego, CA 92121-1714 | |||
| USA | USA | |||
| Phone: +1 858 651 4478 | ||||
| FAX: +1 858 651 1102 | ||||
| e-mail: [email protected] | ||||
| [Editor's note: Grammar and syntax comments are welcome sent directly to | Phone: +1 858 651 4478 | |||
| the editor. Substantive comments on this document should be directed to | Fax: +1 858 651 1102 | |||
| the DRUMS working group. The subscription address is | EMail: [email protected] | |||
| <[email protected]>.] | ||||
| 8. Acknowledgements | 8. Acknowledgements | |||
| [TBD] | Many people contributed to this document. They included folks who | |||
| participated in the Detailed Revision and Update of Messaging | ||||
| Standards (DRUMS) Working Group of the Internet Engineering Task | ||||
| Force (IETF), the chair of DRUMS, the Area Directors of the IETF, and | ||||
| people who simply sent their comments in via e-mail. The editor is | ||||
| deeply indebted to them all and thanks them sincerely. The below | ||||
| list includes everyone who sent e-mail concerning this document. | ||||
| Hopefully, everyone who contributed is named here: | ||||
| Appendix A. Examples messages | Matti Aarnio Barry Finkel Larry Masinter | |||
| Tanaka Akira Erik Forsberg Denis McKeon | ||||
| Russ Allbery Chuck Foster William P McQuillan | ||||
| Eric Allman Paul Fox Alexey Melnikov | ||||
| Harald Tveit Alvestrand Klaus M. Frank Perry E. Metzger | ||||
| Ran Atkinson Ned Freed Steven Miller | ||||
| Jos Backus Jochen Friedrich Keith Moore | ||||
| Bruce Balden Randall C. Gellens John Gardiner Myers | ||||
| Dave Barr Sukvinder Singh Gill Chris Newman | ||||
| Alan Barrett Tim Goodwin John W. Noerenberg | ||||
| John Beck Philip Guenther Eric Norman | ||||
| J. Robert von Behren Tony Hansen Mike O'Dell | ||||
| Jos den Bekker John Hawkinson Larry Osterman | ||||
| D. J. Bernstein Philip Hazel Paul Overell | ||||
| James Berriman Kai Henningsen Jacob Palme | ||||
| Norbert Bollow Robert Herriot Michael A. Patton | ||||
| Raj Bose Paul Hethmon Uzi Paz | ||||
| Antony Bowesman Jim Hill Michael A. Quinlan | ||||
| Scott Bradner Paul E. Hoffman Eric S. Raymond | ||||
| Randy Bush Steve Hole Sam Roberts | ||||
| Tom Byrer Kari Hurtta Hugh Sasse | ||||
| Bruce Campbell Marco S. Hyman Bart Schaefer | ||||
| Larry Campbell Ofer Inbar Tom Scola | ||||
| W. J. Carpenter Olle Jarnefors Wolfgang Segmuller | ||||
| Michael Chapman Kevin Johnson Nick Shelness | ||||
| Richard Clayton Sudish Joseph John Stanley | ||||
| Maurizio Codogno Maynard Kang Einar Stefferud | ||||
| Jim Conklin Prabhat Keni Jeff Stephenson | ||||
| R. Kelley Cook John C. Klensin Bernard Stern | ||||
| Steve Coya Graham Klyne Peter Sylvester | ||||
| Mark Crispin Brad Knowles Mark Symons | ||||
| Dave Crocker Shuhei Kobayashi Eric Thomas | ||||
| Matt Curtin Peter Koch Lee Thompson | ||||
| Michael D'Errico Dan Kohn Karel De Vriendt | ||||
| Cyrus Daboo Christian Kuhtz Matthew Wall | ||||
| Jutta Degener Anand Kumria Rolf Weber | ||||
| Mark Delany Steen Larsen Brent B. Welch | ||||
| Steve Dorner Eliot Lear Dan Wing | ||||
| Harold A. Driscoll Barry Leiba Jack De Winter | ||||
| Michael Elkins Jay Levitt Gregory J. Woodhouse | ||||
| Robert Elz Lars-Johan Liman Greg A. Woods | ||||
| Johnny Eriksson Charles Lindsey Kazu Yamamoto | ||||
| Erik E. Fair Pete Loshin Alain Zahm | ||||
| Roger Fajman Simon Lyall Jamie Zawinski | ||||
| Patrik Faltstrom Bill Manning Timothy S. Zurcher | ||||
| Claus Andre Farber John Martin | ||||
| This section presents a selection of messages. These are intended to | Appendix A. Example messages | |||
| assist in the implementation of this standard, but should not be taken | ||||
| as normative; that is to say, although the examples in this section were | ||||
| carefully reviewed, if there happens to be a conflict between these | ||||
| examples and the syntax described in sections 3 and 4 of this document, | ||||
| the syntax in those sections is to be taken as correct. | ||||
| Messages are delimited in this section between lines of "----". The | This section presents a selection of messages. These are intended to | |||
| "----" lines are not part of the message itself. | assist in the implementation of this standard, but should not be | |||
| taken as normative; that is to say, although the examples in this | ||||
| section were carefully reviewed, if there happens to be a conflict | ||||
| between these examples and the syntax described in sections 3 and 4 | ||||
| of this document, the syntax in those sections is to be taken as | ||||
| correct. | ||||
| Messages are delimited in this section between lines of "----". The | ||||
| "----" lines are not part of the message itself. | ||||
| A.1. Addressing examples | A.1. Addressing examples | |||
| The following are examples of messages that might be sent between two | The following are examples of messages that might be sent between two | |||
| individuals. | individuals. | |||
| A.1.1. A message from one person to another with simple addressing | A.1.1. A message from one person to another with simple addressing | |||
| This could be called a canonical message. It has a single author, John | This could be called a canonical message. It has a single author, | |||
| Doe, a single recipient, Mary Smith, a subject, the date, a message | John Doe, a single recipient, Mary Smith, a subject, the date, a | |||
| identifier, and a textual message in the body. | message identifier, and a textual message in the body. | |||
| ---- | ---- | |||
| From: John Doe <[email protected]> | From: John Doe <[email protected]> | |||
| To: Mary Smith <[email protected]> | To: Mary Smith <[email protected]> | |||
| Subject: Saying Hello | Subject: Saying Hello | |||
| Date: Fri, 21 Nov 1997 09:55:06 -0600 | Date: Fri, 21 Nov 1997 09:55:06 -0600 | |||
| Message-ID: <[email protected]> | Message-ID: <[email protected]> | |||
| This is a message just to say hello. | This is a message just to say hello. | |||
| So, "Hello". | So, "Hello". | |||
| ---- | ---- | |||
| If John's secretary Michael actually sent the message, though John | ||||
| If John's secretary Michael actually sent the message, though John was | was the author and replies to this message should go back to him, the | |||
| the author and replies to this message should go back to him, the sender | sender field would be used: | |||
| field would be used: | ||||
| ---- | ---- | |||
| From: John Doe <[email protected]> | From: John Doe <[email protected]> | |||
| Sender: Michael Jones <[email protected]> | Sender: Michael Jones <[email protected]> | |||
| To: Mary Smith <[email protected]> | To: Mary Smith <[email protected]> | |||
| Subject: Saying Hello | Subject: Saying Hello | |||
| Date: Fri, 21 Nov 1997 09:55:06 -0600 | Date: Fri, 21 Nov 1997 09:55:06 -0600 | |||
| Message-ID: <[email protected]> | Message-ID: <[email protected]> | |||
| This is a message just to say hello. | This is a message just to say hello. | |||
| So, "Hello". | So, "Hello". | |||
| ---- | ---- | |||
| A.1.2. Different types of mailboxes | A.1.2. Different types of mailboxes | |||
| This message includes multiple addresses in the destination fields and | This message includes multiple addresses in the destination fields | |||
| also uses several different forms of addresses. | and also uses several different forms of addresses. | |||
| ---- | ---- | |||
| From: "Joe Q. Public" <[email protected]> | From: "Joe Q. Public" <[email protected]> | |||
| To: Mary Smith <[email protected]>, [email protected], Who? <[email protected]> | To: Mary Smith <[email protected]>, [email protected], Who? <[email protected]> | |||
| Cc: <[email protected]>, "Gaint; \"Big\" Box" <[email protected]> | Cc: <[email protected]>, "Giant; \"Big\" Box" <[email protected]> | |||
| Date: Tue, 1 Jul 2003 10:52:37 +0200 | Date: Tue, 1 Jul 2003 10:52:37 +0200 | |||
| Message-ID: <[email protected]> | Message-ID: <[email protected]> | |||
| Hi everyone. | Hi everyone. | |||
| ---- | ---- | |||
| Note that the display names for Joe Q. Public and Giant; "Big" Box | Note that the display names for Joe Q. Public and Giant; "Big" Box | |||
| needed to be enclosed in double-quotes because the former contains the | needed to be enclosed in double-quotes because the former contains | |||
| period and the latter contains both semicolon and double-quote | the period and the latter contains both semicolon and double-quote | |||
| characters (the double-quote characters appearing as quoted-pair | characters (the double-quote characters appearing as quoted-pair | |||
| construct). Conversely, the display name for Who? could appear without | construct). Conversely, the display name for Who? could appear | |||
| them because the question mark is legal in an atom. Notice also that | without them because the question mark is legal in an atom. Notice | |||
| [email protected] and [email protected] have no display names associated with | also that [email protected] and [email protected] have no display names | |||
| them at all, and [email protected] uses the simpler address form without | associated with them at all, and [email protected] uses the simpler | |||
| the angle brackets. | address form without the angle brackets. | |||
| A.1.3. Group addresses | A.1.3. Group addresses | |||
| ---- | ---- | |||
| From: Pete <[email protected]> | From: Pete <[email protected]> | |||
| To: A Group:Chris Jones <[email protected]>,[email protected],John <[email protected]>; | To: A Group:Chris Jones <[email protected]>,[email protected],John <[email protected]>; | |||
| Cc: Undisclosed recipients:; | Cc: Undisclosed recipients:; | |||
| Date: Thu, 13 Feb 1969 23:32:54 -0330 | Date: Thu, 13 Feb 1969 23:32:54 -0330 | |||
| Message-ID: <[email protected]> | Message-ID: <[email protected]> | |||
| Testing. | Testing. | |||
| ---- | ---- | |||
| In this message, the "To:" field has a single group recipient named A | In this message, the "To:" field has a single group recipient named A | |||
| Group which contains 3 addresses, and a "Cc:" field with an empty group | Group which contains 3 addresses, and a "Cc:" field with an empty | |||
| recipient named Undisclosed recipients. | group recipient named Undisclosed recipients. | |||
| A.2. Reply messages | A.2. Reply messages | |||
| The following is a series of three messages that make up a conversation | The following is a series of three messages that make up a | |||
| thread between John and Mary. John firsts sends a message to Mary, Mary | conversation thread between John and Mary. John firsts sends a | |||
| then replies to John's message, and then John replies to Mary's reply | message to Mary, Mary then replies to John's message, and then John | |||
| message. | replies to Mary's reply message. | |||
| Note especially the "Message-ID:", "References:", and "In-Reply-To:" | Note especially the "Message-ID:", "References:", and "In-Reply-To:" | |||
| fields in each message. | fields in each message. | |||
| ---- | ---- | |||
| From: John Doe <[email protected]> | From: John Doe <[email protected]> | |||
| To: Mary Smith <[email protected]> | To: Mary Smith <[email protected]> | |||
| Subject: Saying Hello | Subject: Saying Hello | |||
| Date: Fri, 21 Nov 1997 09:55:06 -0600 | Date: Fri, 21 Nov 1997 09:55:06 -0600 | |||
| Message-ID: <[email protected]> | Message-ID: <[email protected]> | |||
| This is a message just to say hello. | This is a message just to say hello. | |||
| So, "Hello". | So, "Hello". | |||
| ---- | ---- | |||
| When sending replies, the Subject field is often retained, though | ||||
| When sending replies, the Subject field is often retained, though | prepended with "Re: " as described in section 3.6.5. | |||
| prepended with "Re: " as described in section 3.6.5. | ||||
| ---- | ---- | |||
| From: Mary Smith <[email protected]> | From: Mary Smith <[email protected]> | |||
| To: John Doe <[email protected]> | To: John Doe <[email protected]> | |||
| Reply-To: "Mary Smith: Personal Account" <[email protected]> | Reply-To: "Mary Smith: Personal Account" <[email protected]> | |||
| Subject: Re: Saying Hello | Subject: Re: Saying Hello | |||
| Date: Fri, 21 Nov 1997 10:01:10 -0600 | Date: Fri, 21 Nov 1997 10:01:10 -0600 | |||
| Message-ID: <[email protected]> | Message-ID: <[email protected]> | |||
| In-Reply-To: <[email protected]> | In-Reply-To: <[email protected]> | |||
| References: <[email protected]> | References: <[email protected]> | |||
| This is a reply to your hello. | This is a reply to your hello. | |||
| ---- | ---- | |||
| Note the "Reply-To:" field in the above message. When John replies to | Note the "Reply-To:" field in the above message. When John replies | |||
| Mary's message above, the reply should go to the address in the "Reply- | to Mary's message above, the reply should go to the address in the | |||
| To:" field instead of the address in the "From:" field. | "Reply-To:" field instead of the address in the "From:" field. | |||
| ---- | ---- | |||
| To: "Mary Smith: Personal Account" <[email protected]> | To: "Mary Smith: Personal Account" <[email protected]> | |||
| From: John Doe <[email protected]> | From: John Doe <[email protected]> | |||
| Subject: Re: Saying Hello | Subject: Re: Saying Hello | |||
| Date: Fri, 21 Nov 1997 11:00:00 -0600 | Date: Fri, 21 Nov 1997 11:00:00 -0600 | |||
| Message-ID: <[email protected]> | Message-ID: <[email protected]> | |||
| In-Reply-To: <[email protected]> | In-Reply-To: <[email protected]> | |||
| References: <[email protected]> <[email protected]> | References: <[email protected]> <[email protected]> | |||
| This is a reply to your reply. | This is a reply to your reply. | |||
| ---- | ---- | |||
| A.3. Resent messages | A.3. Resent messages | |||
| Start with the message that has been used as an example several times: | Start with the message that has been used as an example several | |||
| times: | ||||
| ---- | ---- | |||
| From: John Doe <[email protected]> | From: John Doe <[email protected]> | |||
| To: Mary Smith <[email protected]> | To: Mary Smith <[email protected]> | |||
| Subject: Saying Hello | Subject: Saying Hello | |||
| Date: Fri, 21 Nov 1997 09:55:06 -0600 | Date: Fri, 21 Nov 1997 09:55:06 -0600 | |||
| Message-ID: <[email protected]> | Message-ID: <[email protected]> | |||
| This is a message just to say hello. | This is a message just to say hello. | |||
| So, "Hello". | So, "Hello". | |||
| ---- | ---- | |||
| Say that Mary, upon receiving this message, wishes to send a copy of | ||||
| Say that Mary, upon receiving this message, wishes to send a copy of the | the message to Jane such that (a) the message would appear to have | |||
| message to Jane such that (a) the message would appear to have come | come straight from John; (b) if Jane replies to the message, the | |||
| straight from John; (b) if Jane replies to the message, the reply should | reply should go back to John; and (c) all of the original | |||
| go back to John; and (c) all of the original information, like the date | information, like the date the message was originally sent to Mary, | |||
| the message was originally sent to Mary, the message identifier, and the | the message identifier, and the original addressee, is preserved. In | |||
| original addressee, is preserved. In this case, resent fields are | this case, resent fields are prepended to the message: | |||
| prepended to the message: | ||||
| ---- | ---- | |||
| Resent-From: Mary Smith <[email protected]> | Resent-From: Mary Smith <[email protected]> | |||
| Resent-To: Jane Brown <[email protected]> | Resent-To: Jane Brown <[email protected]> | |||
| Resent-Date: Mon, 24 Nov 1997 14:22:01 -0800 | Resent-Date: Mon, 24 Nov 1997 14:22:01 -0800 | |||
| Resent-Message-ID: <[email protected]> | Resent-Message-ID: <[email protected]> | |||
| From: John Doe <[email protected]> | From: John Doe <[email protected]> | |||
| To: Mary Smith <[email protected]> | To: Mary Smith <[email protected]> | |||
| Subject: Saying Hello | Subject: Saying Hello | |||
| Date: Fri, 21 Nov 1997 09:55:06 -0600 | Date: Fri, 21 Nov 1997 09:55:06 -0600 | |||
| Message-ID: <[email protected]> | Message-ID: <[email protected]> | |||
| This is a message just to say hello. | This is a message just to say hello. | |||
| So, "Hello". | So, "Hello". | |||
| ---- | ---- | |||
| If Jane, in turn, wished to resend this message to another person, she | If Jane, in turn, wished to resend this message to another person, | |||
| would prepend her own set of resent header fields to the above and send | she would prepend her own set of resent header fields to the above | |||
| that. | and send that. | |||
| A.4. Messages with trace fields | A.4. Messages with trace fields | |||
| As messages are sent through the transport system as described in | As messages are sent through the transport system as described in | |||
| [SMTP], trace fields are prepended to the message. The following is an | [RFC2821], trace fields are prepended to the message. The following | |||
| example of what those trace fields might look like. Note that there is | is an example of what those trace fields might look like. Note that | |||
| some folding white space in the first one since these lines can be long. | there is some folding white space in the first one since these lines | |||
| can be long. | ||||
| ---- | ---- | |||
| Received: from x.y.test | Received: from x.y.test | |||
| by example.net | by example.net | |||
| via TCP | via TCP | |||
| with ESMTP | with ESMTP | |||
| id ABC12345 | id ABC12345 | |||
| for <[email protected]>; 21 Nov 1997 10:05:43 -0600 | for <[email protected]>; 21 Nov 1997 10:05:43 -0600 | |||
| Received: from machine.example by x.y.test; 21 Nov 1997 10:01:22 -0600 | Received: from machine.example by x.y.test; 21 Nov 1997 10:01:22 -0600 | |||
| From: John Doe <[email protected]> | From: John Doe <[email protected]> | |||
| skipping to change at line 1900 ¶ | skipping to change at page 47, line 4 ¶ | |||
| Received: from machine.example by x.y.test; 21 Nov 1997 10:01:22 -0600 | Received: from machine.example by x.y.test; 21 Nov 1997 10:01:22 -0600 | |||
| From: John Doe <[email protected]> | From: John Doe <[email protected]> | |||
| To: Mary Smith <[email protected]> | To: Mary Smith <[email protected]> | |||
| Subject: Saying Hello | Subject: Saying Hello | |||
| Date: Fri, 21 Nov 1997 09:55:06 -0600 | Date: Fri, 21 Nov 1997 09:55:06 -0600 | |||
| Message-ID: <[email protected]> | Message-ID: <[email protected]> | |||
| This is a message just to say hello. | This is a message just to say hello. | |||
| So, "Hello". | So, "Hello". | |||
| ---- | ---- | |||
| A.5. White space, comments, and other oddities | A.5. White space, comments, and other oddities | |||
| White space, including folding white space, and comments can be inserted | White space, including folding white space, and comments can be | |||
| between many of the tokens of fields. Taking the example from A.1.3, | inserted between many of the tokens of fields. Taking the example | |||
| white space and comments can be inserted into all of the fields. | from A.1.3, white space and comments can be inserted into all of the | |||
| fields. | ||||
| ---- | ---- | |||
| From: Pete(A wonderful \) chap) <pete(his account)@silly.test(his host)> | From: Pete(A wonderful \) chap) <pete(his account)@silly.test(his host)> | |||
| To:A Group(Some people) | To:A Group(Some people) | |||
| :Chris Jones <c@(Chris's host.)public.example>, | :Chris Jones <c@(Chris's host.)public.example>, | |||
| [email protected], | [email protected], | |||
| John <[email protected]> (my dear friend); (the end of the group) | John <[email protected]> (my dear friend); (the end of the group) | |||
| Cc:(Empty list)(start)Undisclosed recipients :(nobody(that I know)) ; | Cc:(Empty list)(start)Undisclosed recipients :(nobody(that I know)) ; | |||
| Date: Thu, | Date: Thu, | |||
| 13 | 13 | |||
| Feb | Feb | |||
| 1969 | 1969 | |||
| 23:32 | 23:32 | |||
| -0330 (Newfoundland Time) | -0330 (Newfoundland Time) | |||
| Message-ID: <[email protected]> | Message-ID: <[email protected]> | |||
| Testing. | Testing. | |||
| ---- | ---- | |||
| The above example is aesthetically displeasing, but perfectly legal. | The above example is aesthetically displeasing, but perfectly legal. | |||
| Note particularly (1) the comments in the "From:" field (including one | Note particularly (1) the comments in the "From:" field (including | |||
| that has a ")" character appearing as part of a quoted-pair); (2) the | one that has a ")" character appearing as part of a quoted-pair); (2) | |||
| white space absent after the ":" in the "To:" field as well as the | the white space absent after the ":" in the "To:" field as well as | |||
| comment and folding white space after the group name, the special | the comment and folding white space after the group name, the special | |||
| character (".") in the comment in Chris Jones's address, and the folding | character (".") in the comment in Chris Jones's address, and the | |||
| white space before and after "[email protected],"; (3) the multiple and | folding white space before and after "[email protected],"; (3) the | |||
| nested comments in the "Cc:" field as well as the comment immediately | multiple and nested comments in the "Cc:" field as well as the | |||
| following the ":" after "Cc"; (4) the folding white space (but no | comment immediately following the ":" after "Cc"; (4) the folding | |||
| comments except at the end) and the missing seconds in the time of the | white space (but no comments except at the end) and the missing | |||
| date field; and (5) the white space before (but not within) the | seconds in the time of the date field; and (5) the white space before | |||
| identifier in the "Message-ID:" field. | (but not within) the identifier in the "Message-ID:" field. | |||
| A.6. Obsoleted forms | A.6. Obsoleted forms | |||
| The following are examples of obsolete (that is, the "MUST NOT | The following are examples of obsolete (that is, the "MUST NOT | |||
| generate") syntactic elements described in section 4 of this document. | generate") syntactic elements described in section 4 of this | |||
| document. | ||||
| A.6.1. Obsolete addressing | A.6.1. Obsolete addressing | |||
| Note in the below example the lack of quotes around Joe Q. Public, the | Note in the below example the lack of quotes around Joe Q. Public, | |||
| route that appears in the address for Mary Smith, the two commas that | the route that appears in the address for Mary Smith, the two commas | |||
| appear in the "To:" field, and the spaces that appear around the "." in | that appear in the "To:" field, and the spaces that appear around the | |||
| the jdoe address. | "." in the jdoe address. | |||
| ---- | ---- | |||
| From: Joe Q. Public <[email protected]> | From: Joe Q. Public <[email protected]> | |||
| To: Mary Smith <@machine.tld:[email protected]>, , jdoe@test . example | To: Mary Smith <@machine.tld:[email protected]>, , jdoe@test . example | |||
| Date: Tue, 1 Jul 2003 10:52:37 +0200 | Date: Tue, 1 Jul 2003 10:52:37 +0200 | |||
| Message-ID: <[email protected]> | Message-ID: <[email protected]> | |||
| Hi everyone. | Hi everyone. | |||
| ---- | ---- | |||
| A.6.2. Obsolete dates | A.6.2. Obsolete dates | |||
| The following message uses an obsolete date format, including a non- | The following message uses an obsolete date format, including a non- | |||
| numeric time zone and a two digit year. Note that although the day-of- | numeric time zone and a two digit year. Note that although the | |||
| week is missing, that is not specific to the obsolete syntax; it is | day-of-week is missing, that is not specific to the obsolete syntax; | |||
| optional in the current syntax as well. | it is optional in the current syntax as well. | |||
| ---- | ---- | |||
| From: John Doe <[email protected]> | From: John Doe <[email protected]> | |||
| To: Mary Smith <[email protected]> | To: Mary Smith <[email protected]> | |||
| Subject: Saying Hello | Subject: Saying Hello | |||
| Date: 21 Nov 97 09:55:06 GMT | Date: 21 Nov 97 09:55:06 GMT | |||
| Message-ID: <[email protected]> | Message-ID: <[email protected]> | |||
| This is a message just to say hello. | This is a message just to say hello. | |||
| So, "Hello". | So, "Hello". | |||
| ---- | ---- | |||
| A.6.3. Obsolete white space and comments | A.6.3. Obsolete white space and comments | |||
| White space and comments can appear between many more elements than in | White space and comments can appear between many more elements than | |||
| the current syntax. Also, folding lines that are made up entirely of | in the current syntax. Also, folding lines that are made up entirely | |||
| white space are legal. | of white space are legal. | |||
| ---- | ---- | |||
| >From : John Doe <jdoe@machine(comment). example> | From : John Doe <jdoe@machine(comment). example> | |||
| To : Mary Smith | To : Mary Smith | |||
| __ | ||||
| <[email protected]> | <[email protected]> | |||
| Subject : Saying Hello | Subject : Saying Hello | |||
| Date : Fri, 21 Nov 1997 09(comment): 55 : 06 -0600 | Date : Fri, 21 Nov 1997 09(comment): 55 : 06 -0600 | |||
| Message-ID : <1234 @ local(blah) .machine .example> | Message-ID : <1234 @ local(blah) .machine .example> | |||
| This is a message just to say hello. | This is a message just to say hello. | |||
| So, "Hello". | So, "Hello". | |||
| ---- | ---- | |||
| Note especially the second line of the "To:" field. It starts with two | Note especially the second line of the "To:" field. It starts with | |||
| space characters. Therefore, it is considered part of the folding as | two space characters. (Note that "__" represent blank spaces.) | |||
| described in section 4.2. Also, the comments and white space throughout | Therefore, it is considered part of the folding as described in | |||
| addresses, dates, and message identifiers are all part of the obsolete | section 4.2. Also, the comments and white space throughout | |||
| syntax. | addresses, dates, and message identifiers are all part of the | |||
| obsolete syntax. | ||||
| Appendix B. Differences from earlier standards | Appendix B. Differences from earlier standards | |||
| This appendix contains a list of changes that have been made in the | This appendix contains a list of changes that have been made in the | |||
| Internet Message Format from earlier standards, specifically [RFC-822] | Internet Message Format from earlier standards, specifically [RFC822] | |||
| and [STD-3]. Items marked with an asterisk (*) below are items which | and [STD3]. Items marked with an asterisk (*) below are items which | |||
| appear in section 4 of this document and therefore can no longer be | appear in section 4 of this document and therefore can no longer be | |||
| generated. | generated. | |||
| 1. Period allowed in obsolete form of phrase. | 1. Period allowed in obsolete form of phrase. | |||
| 2. ABNF moved out of document to [ABNF]. | 2. ABNF moved out of document to [RFC2234]. | |||
| 3. Four or more digits allowed for year. | 3. Four or more digits allowed for year. | |||
| 4. Header field ordering (and lack thereof) made explicit. | 4. Header field ordering (and lack thereof) made explicit. | |||
| 5. Encrypted header field removed. | 5. Encrypted header field removed. | |||
| 6. Received syntax loosened to allow any token/value pair. | 6. Received syntax loosened to allow any token/value pair. | |||
| 7. Specifically allow and give meaning to "-0000" time zone. | 7. Specifically allow and give meaning to "-0000" time zone. | |||
| 8. Folding white space is not allowed between every token. | 8. Folding white space is not allowed between every token. | |||
| 9. Requirement for destinations removed. | 9. Requirement for destinations removed. | |||
| 10. Forwarding and resending redefined. | 10. Forwarding and resending redefined. | |||
| 11. Extension header fields no longer specifically called out. | 11. Extension header fields no longer specifically called out. | |||
| 12. ASCII 0 (null) removed.* | 12. ASCII 0 (null) removed.* | |||
| 13. Folding continuation lines cannot contain only white space.* | 13. Folding continuation lines cannot contain only white space.* | |||
| 14. Free insertion of comments not allowed in date.* | 14. Free insertion of comments not allowed in date.* | |||
| 15. Non-numeric time zones not allowed.* | 15. Non-numeric time zones not allowed.* | |||
| 16. Two digit years not allowed.* | 16. Two digit years not allowed.* | |||
| 17. Three digit years interpreted, but not allowed for generation. | 17. Three digit years interpreted, but not allowed for generation. | |||
| 18. Routes in addresses not allowed.* | 18. Routes in addresses not allowed.* | |||
| 19. CFWS within local-parts and domains not allowed.* | 19. CFWS within local-parts and domains not allowed.* | |||
| 20. Empty members of address lists not allowed.* | 20. Empty members of address lists not allowed.* | |||
| 21. Folding white space between field name and colon not allowed.* | 21. Folding white space between field name and colon not allowed.* | |||
| 22. Comments between field name and colon not allowed. | 22. Comments between field name and colon not allowed. | |||
| 23. Tightened syntax of in-reply-to and references.* | 23. Tightened syntax of in-reply-to and references.* | |||
| 24. CFWS within msg-id not allowed.* | 24. CFWS within msg-id not allowed.* | |||
| 25. Tightened semantics of resent fields as informational only. | 25. Tightened semantics of resent fields as informational only. | |||
| 26. Resent-Reply-To not allowed.* | 26. Resent-Reply-To not allowed.* | |||
| 27. No multiple occurrences of fields (except resent and received).* | 27. No multiple occurrences of fields (except resent and received).* | |||
| 28. Free CR and LF not allowed.* | 28. Free CR and LF not allowed.* | |||
| 29. Routes in return path not allowed.* | 29. Routes in return path not allowed.* | |||
| 30. Line length limits specified. | 30. Line length limits specified. | |||
| 31. Bcc more clearly specified. | 31. Bcc more clearly specified. | |||
| Appendix C. Notices | Appendix C. Notices | |||
| Full Copyright Statement | Intellectual Property | |||
| Copyright (C) The Internet Society (2000). All Rights Reserved. | The IETF takes no position regarding the validity or scope of any | |||
| intellectual property or other rights that might be claimed to | ||||
| pertain to the implementation or use of the technology described in | ||||
| this document or the extent to which any license under such rights | ||||
| might or might not be available; neither does it represent that it | ||||
| has made any effort to identify any such rights. Information on the | ||||
| IETF's procedures with respect to rights in standards-track and | ||||
| standards-related documentation can be found in BCP-11. Copies of | ||||
| claims of rights made available for publication and any assurances of | ||||
| licenses to be made available, or the result of an attempt made to | ||||
| obtain a general license or permission for the use of such | ||||
| proprietary rights by implementors or users of this specification can | ||||
| be obtained from the IETF Secretariat. | ||||
| This document and translations of it may be copied and furnished to | Full Copyright Statement | |||
| 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 | Copyright (C) The Internet Society (2001). All Rights Reserved. | |||
| revoked by the Internet Society or its successors or assigns. | ||||
| This document and the information contained herein is provided on an "AS | This document and translations of it may be copied and furnished to | |||
| IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK | others, and derivative works that comment on or otherwise explain it | |||
| FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT | or assist in its implementation may be prepared, copied, published | |||
| LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT | and distributed, in whole or in part, without restriction of any | |||
| INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR | kind, provided that the above copyright notice and this paragraph are | |||
| FITNESS FOR A PARTICULAR PURPOSE. | 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. | ||||
| Intellectual Property | The limited permissions granted above are perpetual and will not be | |||
| revoked by the Internet Society or its successors or assigns. | ||||
| The IETF takes no position regarding the validity or scope of any | This document and the information contained herein is provided on an | |||
| intellectual property or other rights that might be claimed to pertain | "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | |||
| to the implementation or use of the technology described in this | TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | |||
| document or the extent to which any license under such rights might or | BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | |||
| might not be available; neither does it represent that it has made any | HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | |||
| effort to identify any such rights. Information on the IETF's procedures | MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |||
| with respect to rights in standards-track and standards-related | ||||
| documentation can be found in BCP-11. Copies of claims of rights made | ||||
| available for publication and any assurances of licenses to be made | ||||
| available, or the result of an attempt made to obtain a general license | ||||
| or permission for the use of such proprietary rights by implementors or | ||||
| users of this specification can be obtained from the IETF Secretariat. | ||||
| This document expires July 26, 2000. | Acknowledgement | |||
| Funding for the RFC Editor function is currently provided by the | ||||
| Internet Society. | ||||
| End of changes. 240 change blocks. | ||||
| 1147 lines changed or deleted | 1312 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||