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

3. メール転送レベルのプロトコル

3.1. 国際化拡張のフレームワーク​

以下のサービス拡張が定義されています。

  1. SMTPサービス拡張の名前は "Internationalized Email" です。

  2. この拡張に関連付けられたEHLOキーワード値は "SMTPUTF8" です。

  3. このEHLOキーワード値にはパラメータ値が定義されていません。将来の(予期しないものではありますが)拡張を許可するために、EHLO応答にはこのキーワードのパラメータを含めてはなりません(MUST NOT)。SMTPUTF8対応SMTPクライアントは、このキーワードにパラメータが表示される場合、それらを無視しなければなりません(MUST)。つまり、SMTPUTF8対応SMTPクライアントは、パラメータが表示されないかのように振る舞わなければなりません(MUST)。SMTPサーバーがEHLO応答にSMTPUTF8を含める場合、この仕様のこのバージョンに完全に準拠していなければなりません(MUST)。

  4. MAILコマンドに1つのOPTIONALパラメータ、SMTPUTF8が追加されます。このパラメータは値を受け入れません。このパラメータがMAILコマンドで設定されている場合、SMTPクライアントがSMTPUTF8対応であることを示します。その存在はまた、エンベロープに非ASCIIアドレスが含まれていること、送信されるメッセージが国際化されたメッセージであること、または送信されるメッセージがSMTPUTF8サポートを必要としていることを主張します。

  5. MAILコマンドラインの最大長は、SMTPUTF8パラメータの追加の可能性に対応するために10文字増加します。

  6. VERIFY(VRFY)およびEXPAND(EXPN)コマンドに1つのOPTIONALパラメータ、SMTPUTF8が追加されます。SMTPUTF8パラメータは値を受け入れません。このパラメータは、SMTPクライアントがVRFYおよびEXPNコマンドからの応答でUTF-8エンコーディングのUnicode文字を受け入れることができることを示します。

  7. この拡張によって追加のSMTP動詞は定義されません。

  8. この拡張を提供するサーバーは、8BITMIME拡張[RFC6152]のサポートを提供し、アナウンスしなければなりません(MUST)。

  9. SMTP MAILおよびRCPTコマンドのリバースパスおよびフォワードパスは、メールボックス名(アドレス)でUTF-8でエンコードされたUnicode文字を許可するように拡張されます。

  10. メールメッセージ本文は、RFC 6532 [RFC6532]で指定されているように拡張されます。

  11. SMTPUTF8拡張は、サブミッションポート[RFC6409]で有効です。Local Mail Transfer Protocol(LMTP)[RFC2033]とともに使用することもできます。これらのプロトコルが使用される場合、その使用はトレースフィールドのWITHキーワードに適宜反映されるべきです[RFC3848]。

3.2. SMTPUTF8 拡張​

SMTPUTF8拡張をアナウンスするSMTPサーバーは、RFC 5321が <mailbox> が出現できると指定している任意の位置でUTF-8文字列[RFC3629]を受け入れる準備ができていなければなりません(MUST)。

<local-part> 内の文字には非ASCII文字を含めることが許可されていますが、<local-part> の実際の解析と使用される区切り文字は、基本的な電子メール仕様[RFC5321]から変更されていません。

DNSで検索されるドメイン名は、Internationalizing Domain Names in Applications(IDNA)[RFC5890]で指定されているように準拠し、処理されなければなりません(MUST)。

検索を行う際、SMTPUTF8対応SMTPクライアントまたはサーバーは、Unicode対応DNSライブラリを使用するか、RFC 5890 [RFC5890]で指定されているように、国際化ドメイン名をAラベル形式(つまり、1つ以上のAラベルを含むがUラベルを含まない完全修飾ドメイン名)に変換しなければなりません(MUST)。

EHLOコマンドへの応答としてSMTPUTF8拡張キーワードを受信するSMTPクライアントは、SMTPコマンド内のメールボックス名をUTF-8形式の国際化文字列として送信してもよいです(MAY)。

UTF-8ヘッダー[RFC6532](UTF-8のメールボックス名も含む場合があります)を送信してもよいです(MAY)。

SMTPコマンドまたはメッセージヘッダー内のメールボックス名のドメイン部分をAラベルまたはUラベル[RFC5890]として送信してもよいです(MAY)。

SMTPUTF8拡張の存在は、RFC 5321で説明されているサーバーリレー動作を変更しません。

SMTPUTF8 SMTP拡張がSMTPサーバーによって提供されていない場合、SMTPUTF8対応SMTPクライアントは、国際化された電子メールアドレスを送信してはならず(MUST NOT)、RFC 6532 [RFC6532]で説明されている国際化されたメールヘッダーを含むメールメッセージを、そのMIME構造[RFC2045]内のいかなるレベルでも送信してはなりません(MUST NOT)。

(この段落では、IDNA定義[RFC5890]で指定されているAラベル形式の国際化ドメイン名は、「国際化」されているとは見なされません。)

代わりに、SMTPUTF8対応SMTPクライアント(送信者)が国際化されたメッセージを転送しようとし、拡張をサポートしていないSMTPサーバーに遭遇した場合、取るべき最善のアクションは他の条件によって異なります。

具体的には:

  • メッセージサブミッションエージェント(MSA)[RFC6409] [RFC5598]である場合、RFC 6409で許可されているアドレスの変更やその他のメッセージの修正および変換に関する広範な裁量を使用して、このシナリオに対処する独自の方法を選択してもよいです(MAY)。結果として得られるメッセージがRFC 5321の要件(つまり、SMTPUTF8拡張なし)に準拠している限り、その変換の詳細は、このドキュメントの範囲外です。

  • MSAでない場合、またはMSAであり、SMTPUTF8拡張を必要としないメッセージに変換することを選択しない場合、メッセージを拒否すべきです(SHOULD)。通常通り、これはSMTPトランザクション中に適切な応答を生成するか、メッセージを受け入れてから配信不能通知を生成して送信することによって行うことができます。後者の選択が行われた場合、通知プロセスはRFC 5321、RFC 3464 [RFC3464]、およびRFC 6533 [RFC6533]の要件に準拠しなければなりません(MUST)。

  • RFC 5321のセクション2.2.3で指定されているように、追加情報や特別な状況に関する知識を持つSMTPクライアントは、そのセクションで指定されているように、メッセージを再キューイングして後で試行したり、代替のMXホストを試行したりすることを選択してもよいです(MAY)。

このドキュメントは、SMTPUTF8対応SMTPクライアントまたはサーバーがSMTPUTF8拡張をサポートしている場合に適用されます。

他のすべてのケース、およびSMTPUTF8拡張を必要としないアドレスとメッセージについては、SMTPUTF8対応SMTPクライアントおよびサーバーは、RFC 5321 [RFC5321]で指定されている動作を変更しません。

SMTPUTF8対応SMTPサーバーがDelivery Status Notification(DSN)[RFC3461]拡張をアドバタイズする場合、RFC 6533 [RFC6533]を実装しなければなりません(MUST)。

3.3. 拡張メールボックスアドレス構文​

RFC 5321のセクション4.1.2では、<Mailbox> の構文を完全にASCII文字で定義しています。

このドキュメントでは、<Mailbox> を拡張して、非ASCII文字のサポートを追加します。

この仕様による主な変更点は次のとおりです。

  • <Mailbox> ABNFルールはRFC 5321からインポートされ、国際化された電子メールアドレスをサポートするために更新されています。その他の関連ルールは、RFC 5321、RFC 5234、RFC 5890、およびRFC 6532からインポートされるか、このドキュメントで拡張されています。

  • <sub-domain> の定義は拡張され、RFC 5321定義と、IDNA定義[RFC5890]に準拠するDNSラベル内のUTF-8文字列の両方を許可します。

  • <atext> の定義は拡張され、RFC 5321定義とUTF-8文字列の両方を許可します。その文字列には、ASCIIグラフィックまたは制御文字を含めてはなりません(MUST NOT)。

RFC 5321のセクション4.1.2からインポートされた以下のABNFルールは、このドキュメントによって直接的または間接的に更新されます。

  • <Mailbox>
  • <Local-part>
  • <Dot-string>
  • <Quoted-string>
  • <QcontentSMTP>
  • <Domain>
  • <Atom>

以下のABNFルールは、RFC 6532のセクション3.1から直接インポートされます。

  • <UTF8-non-ascii>

以下のABNFルールは、RFC 5234の付録B.1から直接インポートされます。

  • <DQUOTE>

以下のABNFルールは、RFC 5890のセクション2.3.2.1から直接インポートされます。

  • <U-label>

以下のルールは、ABNF [RFC5234]で次のように拡張されています。

sub-domain   =/  U-label
; extend the definition of sub-domain in RFC 5321, Section 4.1.2

atext =/ UTF8-non-ascii
; extend the implicit definition of atext in
; RFC 5321, Section 4.1.2, which ultimately points to
; the actual definition in RFC 5322, Section 3.2.3

qtextSMTP =/ UTF8-non-ascii
; extend the definition of qtextSMTP in RFC 5321, Section 4.1.2

esmtp-value =/ UTF8-non-ascii
; extend the definition of esmtp-value in RFC 5321, Section 4.1.2

3.4. MAIL コマンドパラメータの使用​

送信されるエンベロープまたはメッセージがSMTPUTF8拡張の機能を必要とする場合、SMTPUTF8対応SMTPクライアントは、MAILコマンドでSMTPUTF8パラメータを提供しなければなりません(MUST)。

このパラメータが提供される場合、値を受け入れてはなりません(MUST)。

SMTPUTF8対応SMTPクライアントが、送信されるエンベロープもメッセージもSMTPUTF8拡張機能を必要としないことを認識している場合、MAILコマンドでSMTPUTF8パラメータを提供すべきではありません(SHOULD NOT)。

ネクストホップのSMTPサーバーがSMTPUTF8拡張をサポートするという保証はないため、SMTPUTF8拡張の使用には常に送信失敗のリスクが伴います。

実際、SMTPUTF8拡張の展開の初期段階では、リスクは非常に高くなります。

したがって、ASCIIのみのメッセージをこの拡張を使用せずに送信することには、当面の間、明確な利点があります。

ASCII [ASCII]文字(0x7f以下)をUTF-8形式にキャストすることの長期的な利点は、純粋なUnicode環境を許可することです。

3.5. 非 ASCII アドレスと応答コード​

SMTPUTF8対応SMTPクライアントは、SMTPUTF8をサポートしていないSMTPサーバーに国際化されたメッセージを送信してはなりません(MUST NOT)。

SMTPサーバーがこのオプションをサポートしていない場合、SMTPUTF8対応SMTPクライアントには、この仕様のセクション3.2に従って3つの選択肢があります。

このセクションで使用される3桁の応答コードは、RFC 5321で定義されている意味に基づいています。

RCPTコマンドがASCIIアドレスを必要とするためにメッセージが拒否される場合、応答コード553が返され、意味は「メールボックス名が許可されていません」となります。

MAILコマンドがASCIIアドレスを必要とするためにメッセージが拒否される場合、応答コード550が返され、意味は「メールボックスが利用できません」となります。

SMTPUTF8対応SMTPサーバーが拡張メールシステムステータスコード[RFC3463]をサポートしている場合、応答コード "X.6.7" [RFC5248](セクション4を参照)が使用され、意味は「その送信者/受信者には非ASCIIアドレスは許可されていません」となります。

他の理由でメッセージが拒否された場合、サーバーはRFC 5321の基本的な電子メール仕様のモデルに従います。この拡張は、それらの状況や応答メッセージを変更しません。

1つ以上の受信者が国際化された電子メールヘッダーを持つメッセージを受け入れて処理できないために、DATAコマンドの最後の "." の後にメッセージが拒否された場合、応答コード "554" が使用され、意味は「トランザクションに失敗しました」となります。

SMTPUTF8対応SMTPサーバーが拡張メールシステムステータスコード[RFC3463]をサポートしている場合、この状態を示すために応答コード "X.6.9" [RFC5248](セクション4を参照)が使用され、意味は「UTF-8ヘッダーメッセージを1つ以上の受信者に送信できないため、メッセージを拒否する必要があります」となります。

SMTPUTF8対応SMTPサーバーは、受信者が国際化されたメッセージを受け入れられないことを検出し、エラーを発行するためにDATAコマンドの後まで待つのではなく、RCPTコマンドの後にエラーを生成することが推奨されます。

3.6. 本文パートと SMTP 拡張​

MAILコマンドパラメータSMTPUTF8は、メッセージが国際化されたメッセージであるか、送信されるメッセージがSMTPUTF8サポートを必要としていることを主張します。

SMTPUTF8パラメータを使用したMAILコマンドを介して送信されるメッセージが国際化されたメッセージではない可能性はまだあります。

メッセージが国際化されているかどうかについての正確な知識を必要とするSMTPUTF8対応SMTPクライアントまたはサーバーは、メッセージ本文内のすべてのメッセージヘッダーフィールドとMIMEヘッダーフィールド[RFC2045]を解析する必要があります。

ただし、この仕様では、SMTPUTF8対応SMTPクライアントまたはサーバーがメッセージを検査することは要求されていません。

この仕様では、サーバーが8ビットデータの適切な処理能力を持つことを保証するために、SMTPUTF8対応SMTPサーバーが8BITMIME拡張[RFC6152]をサポートすることを要求していますが、RFC 2045で指定されているMIMEメッセージ内の非ASCIIボディパーツは要求していません。

SMTPUTF8拡張は次のように使用してもよいです(MAY)(本文の内容を考慮して適切であると仮定して):

  • BODY=8BITMIMEパラメータ[RFC6152]とともに、または

  • SMTPサーバーがBINARYMIME [RFC3030]をアドバタイズする場合、BODY=BINARYMIMEパラメータとともに。

3.7. 追加の ESMTP 変更と明確化​

メール転送プロセスで運ばれる情報には、MAILおよびRCPTコマンドとその拡張代替手段に加えて、さまざまなコンテキストでのアドレス(「メールボックス」)およびドメイン名が含まれます。

一般に、ルールは、RFC 5321がメールボックスを指定する場合、このSMTP拡張では文字列全体にUTF-8形式を使用する必要があるということです。

RFC 5321がドメイン名を指定する場合、SMTPUTF8拡張がサポートされている場合、国際化ドメイン名はUラベル形式であるべきです(SHOULD)。そうでない場合は、Aラベル形式であるべきです(SHOULD)。

以下のサブセクションでは、関連するすべてのケースをリストし、説明します。

3.7.1. 初期 SMTP 交換​

SMTP接続が開かれると、SMTPサーバーは220応答コードといくつかの情報で構成される「グリーティング」応答を送信します。

その後、SMTPクライアントはEHLOコマンドを送信します。

SMTPクライアントは、EHLOへの応答を受信するまでSMTPサーバーがSMTPUTF8をサポートしているかどうかを知ることができないため、SMTPUTF8対応SMTPクライアントは、EHLOコマンドでASCII(LDHラベルまたはAラベル[RFC5890])ドメインのみを送信しなければなりません(MUST)。

SMTPUTF8対応SMTPサーバーがEHLO応答でドメイン名を提供する場合、それらはLDHラベルまたはAラベルの形式でなければなりません(MUST)。

3.7.2. メールエクスチェンジャ (MX)​

複数のDNS MXレコードを使用してドメインの複数のサーバーを指定する場合(RFC 5321 [RFC5321]のセクション5で説明されているように)、それらのすべてがSMTPUTF8拡張をサポートするか、いずれもサポートしないことを強くお勧めします。

そうしないと、一時的または永続的な障害中に予期しない拒否が発生する可能性があり、ユーザーはこれを深刻な信頼性の問題として認識する可能性があります。

3.7.3. トレース情報​

トレース情報 <Return-path-line>, <Time-stamp-line> およびそれらに関連するルールは、RFC 5321 [RFC5321]のセクション4.4で定義されています。

このドキュメントでは、<Mailbox> と <Domain> を更新して、非ASCII文字をサポートします。

SMTPUTF8拡張が使用される場合、Return-path-lineの 'Reverse-path' 句には、Uラベル形式を使用する国際化ドメイン名が含まれる場合があります。

また、Time-stamp-lineの 'Stamp' 句には、Uラベル形式を使用する国際化ドメイン名が含まれる場合があります。

トレースフィールドを含むメッセージが、MAILコマンドにSMTPUTF8パラメータを含めずにSMTPUTF8対応SMTPクライアントまたはリレーサーバーによって送信される場合、SMTPサーバーの機能に関係なく、トレースフィールド値はRFC 5321に準拠する必要があります。

SMTPUTF8対応SMTPサーバーが、MAILコマンドにSMTPUTF8パラメータを含めて送信された、または送信される予定のメッセージにトレースフィールドを追加する場合、そのサーバーは新しいトレースフィールド内の国際化ドメイン名にUラベル形式を使用すべきです(SHOULD)。

この拡張が使用される場合の 'WITH' 句のプロトコル値は、このドキュメントの「IANAの考慮事項」セクションで指定されているSMTPUTF8値の1つです。

3.7.4. 応答中の UTF-8 文字列​

3.7.4.1. MAIL コマンド​

SMTPクライアントがこの仕様に従い、SMTPUTF8パラメータを含むMAILコマンドを送信する場合、SMTPUTF8対応SMTPサーバーは、251および551応答コードに関連付けられた電子メールアドレスでUTF-8文字を使用することが許可され、SMTPクライアントはそれらを受け入れて処理できなければなりません(MUST)。

特定のMAILコマンドにSMTPUTF8パラメータが含まれていない場合、SMTPUTF8対応SMTPサーバーは、非ASCIIメールボックスを含む251または551応答を返してはなりません(MUST NOT)。

代わりに、そのような応答を、非ASCIIアドレスを含まない250または550応答に変換しなければなりません(MUST)。

3.7.4.2. VRFY および EXPN コマンドと SMTPUTF8 パラメータ​

SMTPUTF8パラメータがVRFYおよびEXPNコマンドとともに送信される場合、それはSMTPクライアントがそれらのコマンドへの応答でUTF-8文字列を受け入れることができることを示します。

VRFYおよびEXPNコマンドのパラメータは、SMTPクライアントがSMTPUTF8キーワードを含むEHLO応答を確認した後にのみ使用すべきです(SHOULD)。

これにより、SMTPUTF8対応SMTPサーバーは、SMTPクライアントがそれらによって混乱する可能性があることを心配することなく、応答に出現するメールボックス名およびフルネームでUTF-8文字列を使用できます。

この仕様に準拠するSMTPクライアントは、UTF-8文字列を含むVRFYおよびEXPNコマンドへの応答を受け入れ、正しく処理しなければなりません(MUST)。

ただし、SMTPクライアントがVRFYおよびEXPNコマンドでこのパラメータを送信することによってそのような応答を具体的に許可しない場合、SMTPUTF8対応SMTPサーバーは応答でUTF-8文字列を使用してはなりません(MUST NOT)。

ほとんどの応答では、返されるテキストにメールボックス名を含める必要がないため、UTF-8文字列は必要ありません。

一部の応答、特にVRFYおよびEXPNコマンドの正常な実行から生じる応答には、メールボックスが含まれます。

VERIFY(VRFY)およびEXPAND(EXPN)コマンドの構文は次のように変更されます。

vrfy = "VRFY" SP String
[ SP "SMTPUTF8" ] CRLF
; String may include Non-ASCII characters

expn = "EXPN" SP String
[ SP "SMTPUTF8" ] CRLF
; String may include Non-ASCII characters

SMTPUTF8パラメータは値を受け入れません。

VRFYまたはEXPNコマンドへの応答にUTF-8文字列が必要であるが、SMTPクライアントがSMTPUTF8パラメータを使用しなかった場合、SMTPUTF8対応SMTPサーバーは応答コード252または550のいずれかを使用しなければなりません(MUST)。

RFC 5321 [RFC5321]で定義されている応答コード252は、「ユーザーをVRFYできませんが、メッセージを受け入れて配信を試みます」という意味です。

RFC 5321 [RFC5321]でも定義されている応答コード550は、「要求されたアクションは実行されませんでした:メールボックスが利用できません」という意味です。

SMTPUTF8対応SMTPサーバーが拡張メールシステムステータスコード[RFC3463]をサポートしている場合、以下で指定される拡張応答コードが使用されます。

VRFYまたはEXPNコマンドでSMTPUTF8パラメータを使用すると、そのコマンドに対してのみUTF-8応答が有効になります。

通常の成功応答(つまり、250)が返される場合、応答にはユーザーのフルネームを含めてもよく(MAY)、ユーザーのメールボックスを含めなければなりません(MUST)。

次のいずれかの形式でなければなりません(MUST)。

User Name <Mailbox>
; Mailbox is defined in Section 3.3 of this document.
; User Name can contain non-ASCII characters.

Mailbox
; Mailbox is defined in Section 3.3 of this document.

SMTP応答にUTF-8文字列が必要であるが、応答でUTF-8文字列が許可されておらず、SMTPUTF8対応SMTPサーバーが拡張メールシステムステータスコード[RFC3463]をサポートしている場合、拡張応答コードは "X.6.8" [RFC5248](セクション4を参照)であり、意味は「メールボックス名を表示するにはUTF-8文字列を含む応答が必要ですが、その形式の応答はSMTPクライアントによって許可されていません」となります。

SMTPクライアントがSMTPUTF8拡張をサポートしていないが、応答でUTF-8文字列を受信した場合、その応答をユーザーに適切に報告できない可能性があり、一部のクライアントはその応答を誤って処理する可能性があります。

応答内の国際化されたメッセージは、上記の状況下のコマンドでのみ許可されます。

このセクションで指定されたルールの下での応答で電子メールアドレスを表すためにUTF-8文字列が必要ですが、この拡張は他の目的でのUTF-8文字列の使用を許可しません。

SMTPUTF8対応SMTPサーバーは、このセクションで具体的に許可されている限られた場合を除き、応答に非ASCII文字を含めてはなりません(MUST NOT)。