FrontPage  Index  Search  Changes  RSS  Login

[network] 責任を持つ投函者 - SMTP 関連メモ

概要

SMTP を理解していないので、ある程度理解を深めようと思い、RFC などを参考に情報を集めた。

SMTP Service Extension for Indicating the Responsible Submitter of an E-Mail Message

参考資料

はじめに

  • 「責任を持つ投函者」とは、最も最近に電子メール伝送ストリームにメッセージを導入する責を負ったエンティティのこと
  • 「責任を持つ投函者」の電子メールアドレスは、メッセージ内の PRA (Purported Responsible Address: 責任を持つはずのアドレス) として参照される事になる
  • PRD (Purported Responsible Domain: 責任を持つはずのドメイン) は、そのアドレスのドメイン部分
  • SMTP 転送プロトコルへの PRA 符号化規則を定義する
    • SMTP クライアントが「責任を持つ投函者」のドメインを代表して電子メールを伝送する権限を持っているかについて、受信側 SMTP サーバが効率的に検証できるようになる
  • PRA の決定に使える方法は、大まかに言って、RFC 2821 [SMTP] プロトコルデータと、RFC 2822 [MSG-FORMAT] メッセージングヘッダの 2 種類
  • RFC 2821 データから PRD を導出する方法
    • SMTP クライアントがメッセージ本体を伝送する前に検証できるという長所がある
    • 短所は、誤認定の危険性
  • RFC 2822 データから PRD を導出する方法
    • MUA が受信者に対して送信者の身元として表示する身元に基づいて検証を行えるという長所がある
    • 短所は、メッセージヘッダの分析や解析が必要である事
  • 両者の長所を統合させ、それぞれの短所を小さくする様な方法で上記 2 種類の方法を統合する事が望ましい

SUBMITTER サービス拡張

  • 以下の SMTP サービス拡張を定義
    • SMTP サービス拡張の名称は「責任を持つ投函者」
    • この拡張に対応する EHLO キーワード値は "SUBMITTER"
    • SUBMITTER キーワードにはパラメータは存在しない
    • その他の SMTP 用語はこの拡張では定義されない
    • MAIL コマンドに、esmtp 用キーワード "SUBMITTER" を使うオプションパラメータが追加され
      • このパラメータを使ってメッセージを伝送のために投函する責を負ったエンティティの電子メールアドレスが特定される
    • この拡張は電子メール投函プロトコル [SUBMIT] に適合している

EHLO コマンドの SUBMITTER キーワード

  • SMTP サーバは、EHLO 応答に SUBMITTER キーワードを含める事で、SMTP クライアントに対して、SUBMITTER サービス拡張のサポートを伝える
  • SUBMITTER キーワードにはパラメータはない

MAIL コマンドの SUBMITTER パラメータ

  • SUBMITTER パラメータの文法は
    • "SUBMITTER=" Mailbox
    • Mailbox は [SMTP] 4.1.2 で定義されている
    • "+" "=" などの Mailbox に登場する可能性があるが ESMTP パラメータ値では許容されない文字は、[DSN] の 4 章で記述されているように "xtext" で符号化しなければならない(MUST)

SUBMITTER パラメータ値の設定

  • SUBMITTER パラメータの目的は、SMTP クライアントがサーバに対して RFC 2822 プロトコル中で直接メッセージの PRA を示せるようにする事
  • 「責任を持つ投函者」拡張をサポートする SMTP クライアントは、すべてのメッセージに SUBMITTER パラメータを追加しなければならない(MUST)
    • この規定には、MAIL コマンドの reverse-path が空(null)のメッセージも含まれる
  • SMTP クライアントは、[PRA] で定義されているように、メッセージの PRA に SUBMITTER パラメータ値を設定しなければならない(MUST)
  • [SENDER-ID] の 7 章で説明するように、状況によっては、SUBMITTER パラメータを設定できる事を保証するため、SMTP クライアントがメッセージに RFC 2822 ヘッダを追加する必要がある可能性もある

SUBMITTER パラメータの処理

  • SUBMITTER パラメータのついた電子メールメッセージの受信者は、メッセージの PRD として SUBMITTER アドレス値のドメイン部分を選択すべき(SHOULD)
  • [SENDER-ID] で定義されているテストを含め、接続している SMTP クライアントがそのドメインを代表して電子メールメッセージを伝送する権限を持っているかを決定する必要性を判断するためのテストを行うべき
  • これらのテストの結果、接続している SMTP クライアントが SUBMITTER ドメインを代表して電子メールメッセージを伝送する権限を持っていないとわかった場合
    • 受信側 SMTP サーバはメッセージを拒否すべきで(SHOULD)、拒否の理由としては "550 5.7.1 Submitter not allowed." を使わなければならない(MUST)
  • 受信側 SMTP サーバが接続している SMTP クライアントにメッセージデータの伝送を許可する場合
    • サーバは [PRA] に記述されている様に RFC 2822 メッセージヘッダの検査によって、メッセージの PRA を決定すべき(SHOULD)
  • PRA が SUBMITTER パラメータのアドレスと一致しない場合
    • 受信側 SMTP サーバはメッセージを拒否しなければならず(MUST)、拒否の理由として "550 5.7.1 Submitter does not match header." を使わなければならない(MUST)
  • [PRA] で定義されている手続きに従って PRA が見つからない場合、SMTP サーバはメッセージを拒否すべきで(SHOULD)
    • 拒否の理由としては "554 5.7.7 Cannot verify submitter address." を使わなければならない(MUST)
  • MTA の検証にあたっては、RFC 2822 ヘッダに対して SUBMITTER パラメータを確認することを強く推奨する
    • この方法をとらない場合、攻撃者がアルゴリズムを簡単に破れてしまう
  • MAIL コマンドに SUBMITTER パラメータが存在しても、メッセージの有効な reverse-path を変更してはならない(MUST NOT)
  • SUBMITTER パラメータの有無にかかわらず、[SMTP] 3.7 で定義されているように、reverse-path が存在する場合、配送状態通知を reverse-path に送らなければならない
  • reverse-path が空の場合、配送状態通知を SUBMITTER アドレスに送ってはならない(MUST NOT)
  • 同様に、SUBMITTER パラメータはメッセージの有効な返信アドレスを変更してはならない(MUST NOT)
    • SUBMITTER パラメータの有無にかかわらず、[MSG-FORMAT] 3.6.2 に定義されているように、From アドレスまたは Reply-To アドレスが存在する場合、返信は From アドレスか Reploy-To アドレスに送らなければならない(MUST)

SUBMITTER に対応していない SMTP サーバへの転送

  • ある MTA が SUBMITTER 拡張をサポートしていない別の MTA にメッセージを転送する場合、転送側の MTA は SUBMITTER パラメータをつけずにメッセージを転送しなければならない(MUST)
    • SUBMITTER パラメータを除いても情報が失われる事にはならない
    • SUBMITTER パラメータに含まれる情報は、メッセージヘッダから導出されるものでなければならない

  • (メモ略)

セキュリティに関する考察

  • (メモ略)
Last modified:2009/11/01 19:53:18
Keyword(s):[network] [SMTP]
References: