RFC 5321: SMTP

メールが届かない・なりすましを防げないという悩みの多くは、SMTPの二重構造の誤解が原因。RFC 5321を精読し、エンベロープとヘッダの分離、MX配送、ポート25/587/465の使い分けを土台から理解できる。

応用RFCSMTPメールプロトコルネットワーク最終更新: 2026-07-29
3つの要点
TL;DR
  1. RFC 5321(2008年)はRFC 821(1982年)から続くSMTPの現行配送仕様で、RFC 2821を置換した。本文書式はRFC 5322へ分離し、5321は転送手順だけを規定する。
  2. 配送はEHLO→MAIL FROM→RCPT TO→DATA→QUITと、250・354・550など3桁応答で進む。配送先は本文のToではなく、封筒に相当するエンベロープ情報で決まる。
  3. RFC 5321に送信者認証はない。なりすまし対策としてDKIM(RFC 6376、2011年)、SPF(7208、2014年)、DMARC(7489、2015年)が後付けされた。

このRFCが決めたこと

横にスクロール

SMTP送信側がEHLO MAIL FROM RCPT TO DATAを順に送り受信側が応答コードで受理可否を返す図
SMTPの配送封筒、本文転送、拡張交渉と、一時/恒久失敗による再送判断を示します。

RFC 5321(2008年10月)は、電子メールをサーバー間で運ぶプロトコルSMTP(Simple Mail Transfer Protocol)の現行仕様だ。系譜は長く、起点は1982年のRFC 821。2001年のRFC 2821が821を置き換え、5321がさらに2821を置き換えて今に至る。40年以上を経てなお、世界中のメールは基本的にこの手順で運ばれている。

押さえるべきは分業だ。5321が決めるのはあくまで「運び方」であり、From:やSubject:といったヘッダや本文の書式は、同時に発行されたRFC 5322が定める。郵便に例えるなら、5321は郵便局の集配の決まり、5322は便箋の書き方に相当する。

封筒と便箋の分離

SMTPでは、配達に使う宛先・差出人情報(エンベロープ)と、受信者が目にするFrom:やTo:(ヘッダ)が完全に別物として扱われる。この分離こそ、5321を読むうえで最初に押さえるべき設計思想だ。

要点の精読

エンベロープとヘッダ、二つの差出人

配送先を決めるのは、セッション中にMAIL FROMとRCPT TOの2つのコマンドで伝えられるエンベロープ情報だけだ。メール冒頭に並ぶFrom:やTo:のヘッダはRFC 5322が定める「便箋の記載」にすぎず、配送には一切使われない。

この分離があるからBCCが成立する。BCCの宛先はRCPT TOでサーバーには伝わるが、ヘッダに書かれないため他の受信者からは見えない。また、配送に失敗したときのバウンス(エラー通知)は、ヘッダのFrom:ではなく、エンベロープのMAIL FROMで指定されたアドレス(逆経路)へ返される。バウンス自体は逆経路を空にして送ることで、エラー通知同士の無限ループを防ぐ決まりも5321にある。

セッションの基本コマンド列と応答コード

SMTPはテキストの対話で進む。クライアントがコマンドを送り、サーバーが3桁の数字で応える。

S: 220 mail.example.com ESMTP
C: EHLO client.example.jp
S: 250-mail.example.com
S: 250 STARTTLS
C: MAIL FROM:<taro@example.jp>
S: 250 OK
C: RCPT TO:<hanako@example.com>
S: 250 OK
C: DATA
S: 354 Start mail input
C: From: Taro <taro@example.jp>
C: Subject: Hello
C:
C: (本文)
C: .
S: 250 OK queued
C: QUIT
S: 221 Bye

EHLOは従来のHELOを置き換えるESMTP(SMTPサービス拡張)の挨拶で、サーバーは利用できる拡張機能(STARTTLSなど)を応答で列挙する。拡張の枠組みは1995年のRFC 1869で定められ、現在は5321本体に統合されている。

応答コードは先頭の数字がクラスを表す。2xxは成功(250が代表)、3xxは中間応答(354はDATAに対する「本文をどうぞ」)、4xxは一時的な失敗、5xxは恒久的な失敗(550は宛先メールボックス利用不可など)だ。この区別は運用に直結し、送信側は4xxならキューに残して再送を試み、5xxなら即座にバウンスを生成する。本文の終わりはピリオドだけの行で示す。上の例で、エンベロープのMAIL FROMとは別に、DATA内でFrom:ヘッダを自由に書けている点にも注目してほしい。

MXレコードとリレーの仕組み

送信側サーバーは、宛先アドレスのドメイン部についてDNSへMXレコードを問い合わせ、配送先ホストを決める(DNSの仕組みはRFC 1035の精読を参照)。MXが複数あれば優先度値の小さい順に接続を試み、MXが1つも無ければAレコードのホストを暗黙のMXとして扱う、というフォールバックも5321が規定している。

SMTPは元来リレー(中継)を前提とした設計で、メールは複数のMTA(メール転送エージェント)を経由できる。経由した各サーバーは通過の記録としてReceived:ヘッダを先頭に追記していくため、ヘッダを上から読めば配送経路を逆順に辿れる。ただし誰のメールでも中継するオープンリレーは迷惑メールの踏み台になるため、現在のサーバーは自ドメイン宛ての受信と、認証済みユーザーからの送信しか扱わないのが原則だ。

ポート25・587・465の使い分け

現在のSMTPは役割ごとにポートを使い分ける。

ポート役割暗号化
25サーバー間の配送(MTAからMTAへ)STARTTLSが使えれば暗号化
587ユーザーからの投稿(サブミッション)STARTTLSで昇格し認証必須
465ユーザーからの投稿Implicit TLS(接続の最初から暗号化)

メールソフトからの「投稿」とサーバー間の「配送」を分ける考え方は、RFC 6409(メッセージサブミッション、2011年)として標準化されている。投稿はポート587でSMTP認証(SMTP AUTH、RFC 4954)を必須とし、STARTTLSコマンド(RFC 3207)で平文接続をTLSへ昇格させる。一方のポート465は接続の最初からTLSで包むImplicit TLS方式で、長らく非公式の扱いだったが、2018年のRFC 8314が投稿用として正式に位置づけ直した。

認証の不在と後付けの送信ドメイン認証

5321自体には、送信者が本人かを確かめる仕組みがない。プロトコル上、MAIL FROMにもFrom:ヘッダにも任意のアドレスを書けてしまう。これは相互信頼で成り立っていた1982年当時の設計を受け継いだ結果であり、なりすましメールが技術的に可能な根本原因だ。

この穴を塞ぐために送信ドメイン認証が後付けされてきた。SPF(RFC 7208、2014年)は、エンベロープのMAIL FROMドメインに対して送信元IPアドレスが正当かをDNSで検証する。DKIM(RFC 6376、2011年)はヘッダと本文への電子署名で出自と非改ざんを保証する。DMARC(RFC 7489、2015年)は受信者に見えるFrom:ヘッダとSPF/DKIMで認証されたドメインの一致(アライメント)を要求し、不一致時の扱いをドメイン所有者がポリシーとして宣言できるようにした。自ドメインの設定状況はSPFチェッカーDMARCチェッカーで確認できる。

つまずきやすい点

最大の落とし穴は、エンベロープFrom(MAIL FROM)とヘッダFrom(From:)の不一致だ。SPFが検証するのは前者のドメインだけで、受信者の画面に表示されるのは後者。つまりSPFに合格していても、表示上の差出人が別ドメインというメールは作れてしまう。この隙を埋めるのがDMARCのアライメントであり、自ドメインをなりすましから守るには、SPF・DKIMに加えてDMARCポリシーの公開までが一揃いだと考えたい。

次に、バウンスはヘッダFromではなくエンベロープFrom宛てに返る。メーリングリストや転送サービスがエンベロープFromを自前のアドレスへ書き換えるのはこのためで、送信システムのエラー処理を設計するときは「どちらのFromに届くのか」を常に意識する必要がある。

最後に、ポート25での外向き送信は多くのISPにブロックされている(Outbound Port 25 Blocking)。ウイルス感染したコンピュータからの直接送信を防ぐ対策であり、メールソフトの送信が25番で失敗するのはむしろ正常に近い。設定は587(または465)と認証の組み合わせが正解だ。

まとめ

RFC 5321は、エンベロープとヘッダの分離という設計思想の上に、コマンドと応答コードによる転送手順、MXレコードによる配送先解決、リレーの規律を定めた電子メールの土台だ。認証の不在という生まれつきの弱点はSPF/DKIM/DMARCで補われており、この経緯ごと理解すれば「届かない」「なりすまされる」という実務の問題を仕組みから説明できるようになる。ほかのプロトコルの精読はRFC精読から辿れる。

RFC精読の記事ガイド

RFC 5321: SMTPを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

RFC

比較で見る軸

難易度: advanced / カテゴリ: RFC精読 / タグ数: 5

導入後に効く点

配送はEHLO→MAIL FROM→RCPT TO→DATA→QUITと、250・354・550など3桁応答で進む。配送先は本文のToではなく、封筒に相当するエンベロープ情報で決まる。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
RFC精読
タグ数
5

判断チェックリスト

  • 自社の用途が「RFC / SMTP」に近いか確認する。
  • 強みである「RFC 5321(2008年)はRFC 821(1982年)から続くSMTPの現行配送仕様で、RFC 2821を置換した。本文書式はRFC 5322へ分離し、5321は転送手順だけを規定する。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

RFCSMTPメールプロトコルネットワーク