要約

  • 初期の SMTP は VRFY と EXPN をアドレス調査の窓口とし、肯定応答によって一つのメールボックス、さらにはリスト全員の宛先を開示できた。
  • 252 は「確認できない、しかしメッセージを受け取り配送を試みる」という第三の状態を設けた。名簿の開示、配送の受理、最終的な到達は、それぞれ別の事実として扱えるようになった。

メールサーバーが人名簿を答えた時代

RFC 821 の例は具体的だ。クライアントが VRFY Smith と送ると、サーバーは 250 で Fred Smith の氏名とメールボックスを返せる。転送先を知っていれば新しい宛先を示し、該当者がいなければ否定し、Smith が複数いて特定できなければ 553 User ambiguous を返す。

対になる EXPN は一段深い。メーリングリスト名を渡すと、成功した複数行応答が構成員のメールボックスを一行ずつ並べる。仕様上、肯定的な VRFY にはメールボックスが、肯定的な EXPN にはリスト内の各メールボックスが必要だった。単なる手掛かりではなく、ローカルな名簿情報を遠隔の利用者が使えるプロトコル上の証拠に変える仕組みだった。

利点は明白だった。送信前に綴り間違いを見つけられる。転送規則を確認できる。多段のリスト展開が作ったループを追える。名簿と配送が同じ知識に依存する以上、診断を SMTP に置くのは合理的に見えた。

ただし、その診断窓口は公開のメール受付口でもあった。

役立つ答えが、収集に役立つ答えへ変わった

RFC 1123 は 1989 年、受信側に VRFY の実装を求め、EXPN の実装を推奨した。その一方で、設置先が両方を無効にしたり、特定のリストだけ EXPN を閉じたりすることも認めた。文書は、管理者が配送障害や多段リストのループ診断に利用している事実と、プライバシーや安全上の露出になり得る事実を併記している。

迷惑メールが運用上の現実になると、同じ問い合わせに別の価値が生まれた。VRFY は推測した名前が有効か試せる。EXPN は一つのリスト名から多数のアドレスを得られる。RFC 2505 は、MTA がオン・オフ設定やアクセスリストで利用者を制限し、遮断された VRFY には標準で 252 を返し、EXPN は初期状態で無効にするよう勧めた。

命令そのものが善から悪へ変質したのではない。内部転送を監査する管理者と、アドレスを集める匿名者は、同じ文字列を送れる。正当性はコマンド名ではなく、認証された主体、管理上の関係、許された対象範囲から生じる。

「分からない」を正確に伝える

肯定と否定しかなければ、サーバーは誤った断定に追い込まれる。構文が正しいだけで 250 を返せば、実際には行っていないアドレス確認を装う。常に 550 を返せば、存在する利用者まで不在と断定する。RFC 5321 はどちらも仕様に適合しないとする。

252 はこの二者択一を外す。「利用者を VRFY できないが、メッセージを受け取り配送を試みる」。これはメールボックスの存在証明ではない。将来の RCPT TO が必ず通るという保証でも、受取人への配達証明でもない。要求された名簿上の断定はしないが、通常の配送手続きは残すという限定的な応答だ。

別のドメインを受け持つ MX では特に重要になる。構文が妥当で、担当するドメインだと分かっていても、最終メールボックスのデータベースをリアルタイムに参照できるとは限らない。その状態で「存在する」「存在しない」と答えるより、不確実性を保つ方が正確である。

安全上の理由で機能を閉じる場合にも、RFC 5321 は 252 を求める。成功とも失敗とも誤解されるコードを返してはならない。開示しないことは、利用者がいないことの証拠ではない。

確認、受理、到達は三つの記録

メール運用では、隣り合う状態が一つの結論に縮められやすい。構文の合格が「アドレス確認済み」になり、一つの SMTP ホップの 250 が「配達済み」になり、照会拒否が「無効な宛先」になる。部分的な観測が、毎回少しずつ大きな権威を帯びる。

少なくとも三つに分ける必要がある。名簿確認は、サーバーがアドレスまたはリスト展開を実際に確かめた記録である。トランザクション受理は、特定の段階で責任を引き受けた記録である。最終到達は、その後の経路、キュー、転送、受取処理を経て初めて得られる。252 は意図的に、これらの結果より前にとどまる。

したがって、監視画面で 252 を緑色の「確認済み」にしても、赤色の「無効」にしてもならない。正しい状態は「確認不能または非開示、ただし配送経路は残る」である。後続のメール取引は証拠を加えられるが、問い合わせ応答が未来を先取りしてはいけない。

一つの窓を閉めても、別の窓は残る

VRFY の無効化だけで宛先情報が消えるわけではない。RFC 5321 は、RCPT 応答から同じ有効性情報を得られる場合があると指摘する。一方、宛先検査を DATA の後まで遅らせるシステムでは、RCPT がほとんど何も明かさないこともある。得られる安全上の余裕は、受理処理全体によって決まる。

ここに過大評価への歯止めがある。コマンド単位の制御は、安く直接的な名簿照会を減らせる。しかし応答時間の差、キャッチオール、後日のバウンスまで何も漏らさないとは限らない。運用者は一つの動詞ではなく、組み合わされた開示面を測らなければならない。

逆も真である。他の収集手段があるからといって、公開 EXPN を残す理由にはならない。最も安く、最も確からしい列挙経路を閉じれば、攻撃の費用と回答の信頼度は変わる。安全対策は完全な秘密よりも、証拠の質と問い合わせ費用を管理する営みであることが多い。

診断は境界の内側で生き残った

RFC 5321 は両コマンドの価値を捨てていない。認証済み利用者や同一管理ドメイン内の管理者は、経路監査、意図しない外部転送の発見、リスト動作の確認に使える。認証された要求者だけに開放してもよい。残ったのは機能であり、撤回されたのは匿名者にも当然の照会権があるという前提だ。

現在の IANA SMTP レジストリもサービス境界を示す。サーバーは VRFY を実装する必要があるが、EHLO の一覧に表示するかは任意である。また VRFY と EXPN は Message Submission では使用禁止と記録されている。送信のために認証された利用者が、受信側の名簿を調べる権限まで得るわけではない。

SMTP が答えないことを覚えた方法は、虚偽でも沈黙でもなかった。より小さな問いに、正確に答える方法だった。人の存在は証明しない。メールを受ける可能性は残す。詳しい診断は、正当な関係と範囲の中に置く。応答コードで進むプロトコルにおいて、252 は「この応答は何を知ったことにしてよいか」を限定した。

情報源