メインコンテンツまでスキップ

4. 廃止された構文

本仕様の以前の版は、この版で許されるものとは異なる (通常はより自由な) 構文を許していました。また、インターネット上のメッセージで使用されてきたが、その解釈がこれまで文書化されたことのない構文要素もあります。これらの構文形式は、セクション 3 の文法に従って生成されてはなりません (MUST NOT) が、適合する受信者によって受け入れられ、解析されなければなりません (MUST)。本節は、これらの構文要素の多くを文書化します。セクション 3 の文法に、本節で示される定義を加えると、メッセージの解釈に使用すべき文法が得られます。

注意: 本節は、いかなる実装も合理的に解釈しなければならない (MUST) 構文形式を識別します。しかし、本節で与えられた追加の構文にさえ適合しないインターネットメッセージも確かに存在します。特定の形式が本文書のどの節にも現れないことは、コンピュータプログラムがクラッシュしたり、不正なデータがいずれかの実装によって取り返しのつかない形で失われたりする正当な理由にはなりません。メッセージを堅牢に扱うことは実装次第です。

廃止された (解釈用の) 構文と現在の (生成用の) 構文の 1 つの重要な違いは、構造化ヘッダーフィールド本体 (すなわち、任意の構造化ヘッダーフィールドのコロンと CRLF の間) では、空白文字 (折り返し空白を含む) とコメントを任意の構文トークンの間に自由に挿入できたことです。これにより、一部の実装にとって解析が困難であることが判明した多くの複雑な形式が許されていました。

廃止された構文と現在の構文のもう 1 つの重要な違いは、コメントと折り返し空白における空白だけからなる行に関するセクション 3.2.2 の規則が適用されないことです。以下のセクション 4.2 における折り返し空白の議論を参照してください。

最後に、以前はメッセージで許されていた特定の文字が本節に現れます。NUL 文字 (ASCII 値 0) はかつて許されていましたが、互換性の理由から現在は許されていません。同様に、CR、LF、SP、および HTAB 以外の US-ASCII 制御文字 (ASCII 値 1 から 8、11、12、14 から 31、および 127) は、ヘッダーフィールド本体に現れることが許されていました。CR と LF は、CRLF 以外の形でメッセージに現れることが許されていました。この使用法もここに示します。

構文と意味論における他の違いは、以降の節に記されています。

4.1. その他の廃止されたトークン​

これらの構文要素は、廃止された構文の他の箇所か、主要な構文で使用されます。単独の CR、単独の LF、および NUL が obs-qp、obs-body、および obs-unstruct に追加されます。US-ASCII 制御文字が obs-qp、obs-unstruct、obs-ctext、および obs-qtext に追加されます。ピリオド文字が obs-phrase に追加されます。obs-phrase-list は、(空である可能性のある) フレーズのカンマ区切りリストを提供し、それには「null」要素が含まれることがあります。すなわち、そのようなリストにおいて、間に何もない 2 つ以上のカンマが存在したり、リストの先頭または末尾にカンマが存在したりすることがあります。

注意: obs-phrase における「ピリオド (period)」(または「終止符 (full stop)」) 文字 (".") は、これまたは他のあらゆる仕様の以前の版で許されていた形式ではありません。ピリオド (および specials の他のいかなる文字) は、フレーズと addr-spec の部分とを区別する解析上の困難をもたらしたため、phrase では許されていませんでした (セクション 4.4 を参照してください)。それがここに現れるのは、ピリオド文字が現在、多くのメッセージのアドレスの表示名部分、特に名前のイニシャルで使用されているためであり、したがって適切に解釈されなければなりません。

obs-NO-WS-CTL   =   %d1-8 /            ; US-ASCII control
%d11 / ; characters that do not
%d12 / ; include the carriage
%d14-31 / ; return, line feed, and
%d127 ; white space characters

obs-ctext = obs-NO-WS-CTL

obs-qtext = obs-NO-WS-CTL

obs-utext = %d0 / obs-NO-WS-CTL / VCHAR

obs-qp = "\" (%d0 / obs-NO-WS-CTL / LF / CR)

obs-body = *((*LF *CR *((%d0 / text) *LF *CR)) / CRLF)

obs-unstruct = *((*LF *CR *(obs-utext *LF *CR)) / FWS)

obs-phrase = word *(word / "." / CFWS)

obs-phrase-list = [phrase / CFWS] *("," [phrase / CFWS])

単独の CR と単独の LF は、2 つの異なる意味でメッセージに現れます。多くの場合、単独の CR または単独の LF は、行区切りを示すために CRLF の代わりに不適切に使用されています。他の場合では、単独の CR と単独の LF は、それらの伝統的な ASCII の意味を持つ US-ASCII 制御文字として単に使用されています。

4.2. 廃止された折り返し空白​

廃止された構文では、obs-FWS 規則が許される箇所に、任意の量の折り返し空白を挿入してもよい (MAY) です。これにより、1 行に 2 つの連続する「折り返し」が存在する可能性、したがって、折り返されたヘッダーフィールドを構成する 1 行が完全に空白から構成される可能性が生じます。

obs-FWS         =   1*WSP *(CRLF 1*WSP)

4.3. 廃止された日付と時刻​

廃止された日付形式の構文は、date フィールドで 2 桁の年を許し、本仕様の以前の版で使用されていたアルファベットのタイムゾーン指定子のリストを許します。また、多くのトークンの間でのコメントと折り返し空白も許します。

obs-day-of-week =   [CFWS] day-name [CFWS]

obs-day = [CFWS] 1*2DIGIT [CFWS]

obs-year = [CFWS] 2*DIGIT [CFWS]

obs-hour = [CFWS] 2DIGIT [CFWS]

obs-minute = [CFWS] 2DIGIT [CFWS]

obs-second = [CFWS] 2DIGIT [CFWS]

obs-zone = "UT" / "GMT" / ; Universal Time
; North American UT
; offsets
"EST" / "EDT" / ; Eastern: - 5/ - 4
"CST" / "CDT" / ; Central: - 6/ - 5
"MST" / "MDT" / ; Mountain: - 7/ - 6
"PST" / "PDT" / ; Pacific: - 8/ - 7
;
%d65-73 / ; Military zones - "A"
%d75-90 / ; through "I" and "K"
%d97-105 / ; through "Z", both
%d107-122 ; upper and lower case

日付に 2 桁または 3 桁の年が現れる場合、その年は次のように解釈されます。値が 00 から 49 の間である 2 桁の年が現れた場合、その年は 2000 を加えて解釈され、2000 から 2049 の間の値になります。値が 50 から 99 の間である 2 桁の年が現れた場合、または任意の 3 桁の年が現れた場合、その年は 1900 を加えて解釈されます。

廃止されたタイムゾーンでは、"UT" と "GMT" はそれぞれ "Universal Time" と "Greenwich Mean Time" の表示であり、どちらも意味論的には "+0000" と同一です。

残りの 3 文字のゾーンは米国のタイムゾーンです。最初の文字 "E"、"C"、"M"、または "P" は、それぞれ "Eastern"、"Central"、"Mountain"、および "Pacific" を表します。2 番目の文字は、"Standard" 時の "S" か、"Daylight Savings" (または夏) 時の "D" のいずれかです。それらの解釈は次のとおりです。

EDT は意味論的に -0400 と等価です EST は意味論的に -0500 と等価です CDT は意味論的に -0500 と等価です CST は意味論的に -0600 と等価です MDT は意味論的に -0600 と等価です MST は意味論的に -0700 と等価です PDT は意味論的に -0700 と等価です PST は意味論的に -0800 と等価です

1 文字の軍用タイムゾーンは [RFC0822] で非標準的な方法で定義されており、したがってその意味は予測できません。軍用ゾーン "A" から "I" の元の定義は、それぞれ "+0100" から "+0900" と等価であり、"K"、"L"、および "M" はそれぞれ "+1000"、"+1100"、および "+1200" と等価であり、"N" から "Y" はそれぞれ "-0100" から "-1200" と等価であり、"Z" は "+0000" と等価です。しかし、[RFC0822] の誤りにより、それらの意味を裏付ける帯域外の情報がない限り、それらはすべて "-0000" と等価であると見なすべきです (SHOULD)。

他の複数文字の (通常は 3 から 5 文字の) アルファベットのタイムゾーンがインターネットメッセージで使用されてきました。そのような意味が知られていないタイムゾーンは、その意味を裏付ける帯域外の情報がない限り、"-0000" と等価であると見なすべきです (SHOULD)。

4.4. 廃止されたアドレス指定​

アドレス指定には 4 つの主要な違いがあります。第 1 に、メールボックスアドレスは、山括弧 "<" と ">" で囲まれた場合、addr-spec の前にルート部分を持つことが許されていました。ルートは単に、各要素の前に "@" が付けられたドメイン名のカンマ区切りリストであり、リストはコロンで終端されます。第 2 に、local-part と domain のピリオドで区切られた要素の間に CFWS が許されていました (すなわち、dot-atom は使用されませんでした)。さらに、local-part は、単なる atom に加えて、quoted-string を含むことが許されていました。第 3 に、mailbox-list と address-list は「null」メンバーを持つことが許されていました。すなわち、そのようなリストにおいて、間に何もない 2 つ以上のカンマが存在したり、リストの先頭または末尾にカンマが存在したりすることがあります。最後に、US-ASCII 制御文字と quoted-pair が domain-literal で許されており、ここに追加されます。

obs-angle-addr  =   [CFWS] "<" obs-route addr-spec ">" [CFWS]

obs-route = obs-domain-list ":"

obs-domain-list = *(CFWS / ",") "@" domain
*("," [CFWS] ["@" domain])

obs-mbox-list = *([CFWS] ",") mailbox *("," [mailbox / CFWS])

obs-addr-list = *([CFWS] ",") address *("," [address / CFWS])

obs-group-list = 1*([CFWS] ",") [CFWS]

obs-local-part = word *("." word)

obs-domain = atom *("." atom)

obs-dtext = obs-NO-WS-CTL / quoted-pair

アドレスを解釈するとき、ルート部分は無視すべきです (SHOULD)。

4.5. 廃止されたヘッダーフィールド​

構文的には、廃止されたフィールド構文の主要な違いは、いずれのフィールドの複数回の出現も許し、それらが任意の順序で現れてよいことです。また、フィールド名の末尾の ":" の前に任意の量の空白が許されます。

obs-fields      =   *(obs-return /
obs-received /
obs-orig-date /
obs-from /
obs-sender /
obs-reply-to /
obs-to /
obs-cc /
obs-bcc /
obs-message-id /
obs-in-reply-to /
obs-references /
obs-subject /
obs-comments /
obs-keywords /
obs-resent-date /
obs-resent-from /
obs-resent-send /
obs-resent-rply /
obs-resent-to /
obs-resent-cc /
obs-resent-bcc /
obs-resent-mid /
obs-optional)

宛先アドレスフィールド (セクション 4.5.3 で記述) を除き、フィールドの複数回の出現の解釈は規定されていません。また、メッセージの先頭に付加されたブロックに現れないトレースフィールドおよび再送フィールドの解釈も規定されていません。以降の節で別途注記されない限り、他のフィールドの解釈は、セクション 3 におけるそれらの非廃止の対応物の解釈と同一です。

4.5.1. 廃止された作成日フィールド​

obs-orig-date   =   "Date" *WSP ":" date-time CRLF

4.5.2. 廃止された発信者フィールド​

obs-from        =   "From" *WSP ":" mailbox-list CRLF

obs-sender = "Sender" *WSP ":" mailbox CRLF

obs-reply-to = "Reply-To" *WSP ":" address-list CRLF

4.5.3. 廃止された宛先アドレスフィールド​

obs-to          =   "To" *WSP ":" address-list CRLF

obs-cc = "Cc" *WSP ":" address-list CRLF

obs-bcc = "Bcc" *WSP ":"
(address-list / (*([CFWS] ",") [CFWS])) CRLF

宛先アドレスフィールドの複数回の出現がメッセージに現れる場合、それらは、そのフィールドの最初の出現におけるアドレスリストに、後続の出現のアドレスリストをカンマを加えて連結することによって結合したものとして扱うべきです (SHOULD)。

4.5.4. 廃止された識別フィールド​

廃止された "In-Reply-To:" および "References:" フィールドは、現在の構文とは、phrase (word または引用文字列) が現れることを許す点で異なります。msg-id の左辺と右辺の廃止された形式は、CFWS が点在することを許し、それらをそれぞれ local-part および domain と構文的に同一にします。

obs-message-id  =   "Message-ID" *WSP ":" msg-id CRLF

obs-in-reply-to = "In-Reply-To" *WSP ":" *(phrase / msg-id) CRLF

obs-references = "References" *WSP ":" *(phrase / msg-id) CRLF

obs-id-left = local-part

obs-id-right = domain

解釈の目的においては、"In-Reply-To:" および "References:" フィールドにおける phrase は無視されます。

意味論的には、local-part および domain における任意の CFWS は、それぞれ obs-id-left および obs-id-right の一部ではありません。

4.5.5. 廃止された情報フィールド​

obs-subject     =   "Subject" *WSP ":" unstructured CRLF

obs-comments = "Comments" *WSP ":" unstructured CRLF

obs-keywords = "Keywords" *WSP ":" obs-phrase-list CRLF

4.5.6. 廃止された再送フィールド​

廃止された構文は、"Resent-Reply-To:" フィールドを追加します。これは、フィールド名、任意のコメントと折り返し空白、コロン、およびアドレスのカンマ区切りリストから構成されます。

obs-resent-from =   "Resent-From" *WSP ":" mailbox-list CRLF

obs-resent-send = "Resent-Sender" *WSP ":" mailbox CRLF

obs-resent-date = "Resent-Date" *WSP ":" date-time CRLF

obs-resent-to = "Resent-To" *WSP ":" address-list CRLF

obs-resent-cc = "Resent-Cc" *WSP ":" address-list CRLF

obs-resent-bcc = "Resent-Bcc" *WSP ":"
(address-list / (*([CFWS] ",") [CFWS])) CRLF

obs-resent-mid = "Resent-Message-ID" *WSP ":" msg-id CRLF

obs-resent-rply = "Resent-Reply-To" *WSP ":" address-list CRLF

他の再送フィールドと同様に、"Resent-Reply-To:" フィールドはトレース情報としてのみ扱われます。

4.5.7. 廃止されたトレースフィールド​

obs-return と obs-received は、セクション 3 における return と received と同様に、ここでもテンプレート定義として与えられています。それらの完全な構文は [RFC5321] に与えられています。

obs-return      =   "Return-Path" *WSP ":" path CRLF

obs-received = "Received" *WSP ":" *received-token CRLF

4.5.8. 廃止された任意フィールド​

obs-optional    =   field-name *WSP ":" unstructured CRLF