← RFC Reference

メールのライフサイクル

Email Concepts Encyclopedia Published March 2026
ELI5: メール送信は、郵便局の一連のチェーンを通じて物理的な手紙を送るようなものです。あなたが書いて(MUA)、地元の郵便局に渡し(MSA)、メールシステムを通じてルーティングされ(MTA間)、受信者の郵便局に到着し(MX)、メールボックスにソートされ(MDA)、メールをチェックするときに受け取ります(IMAP/POP3)。途中のすべての停止地点で、誰かが封筒をチェックし、切手を確認し、それを渡すか、フラグを立てるかを判断します。

「送信」をクリックした瞬間から、メッセージが誰かの受信箱に表示される瞬間まで — あらゆるホップ、あらゆるプロトコル、その過程でのあらゆる決定。

アクター

Internet Mail Architecture (RFC 5598)は、メール配信に参加するロールを定義しています。これらのロールを理解することは重要です。同じソフトウェアが複数のロールを担当することが多く、メールフローがどのように流れるかを理解するには、それらの境界が重要だからです。

ロール 名前 機能
MUA Mail User Agent メールを作成および読み込むアプリケーション。Outlook、Thunderbird、Gmailのウェブインターフェース、Apple Mail、スマートフォンのメールアプリ。
MSA Mail Submission Agent MUAから送信メールを受け入れるサーバー。ポート587(STARTTLS)または465(implicit TLS)でリッスン。認証が必要。
MTA Mail Transfer Agent 組織間でメールをルーティングするサーバー。ポート25でSMTPで通信。キューイング、リトライ、リレーの決定を処理。
MX Mail Exchanger 受信MTA。MX DNSレコードで識別される。ドメインの受信メールを受け入れる。
MDA Mail Delivery Agent メッセージを受信者のメールボックスにデポジット。フィルター、ソートルール、スパム分類を適用。
MRA Mail Retrieval Agent IMAPまたはPOP3経由でMUAにメールボックスを提供。

実際には、これらのロールは折りたたまれることが多い。Gmailのインフラストラクチャは同時にMSA、MTA、MX、MDA、MRAです。Postfixはメサとして機能することも、MTAとして機能することもできます。しかし、論理的なロールは異なったままであり、それらを理解することは配信の問題のデバッグに役立ちます。

ステージ1:作成(MUA)

ライフサイクルは、ユーザーがメールクライアントでメッセージを作成するか、アプリケーションがプログラム的にメッセージを生成する(APIまたはSMTPライブラリ経由)ときに開始します。

MUAはRFC 5322(Internet Message Format)に従ってメッセージを構築します:

From: Alice <alice@example.com>
To: Bob <bob@example.net>
Subject: Project update
Date: Tue, 11 Mar 2026 09:15:00 -0400
Message-ID: <a1b2c3@example.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="boundary42"

--boundary42
Content-Type: text/plain; charset=utf-8

Hi Bob, here is the latest on the project...
--boundary42
Content-Type: text/html; charset=utf-8

<p>Hi Bob, here is the latest on the project...</p>
--boundary42--

このステージでの主な決定:

ステージ2:送信(MUA → MSA)

MUAはMSA(RFC 6409)に接続してメッセージをハンドオフします。これは送信ステップです。

# MUAはポート587のMSAに接続
220 smtp.example.com ESMTP ready
EHLO alices-laptop.local
250-smtp.example.com
250-STARTTLS
250-AUTH PLAIN LOGIN
250 SIZE 52428800
STARTTLS
220 Ready to start TLS
# TLSハンドシェイク完了
EHLO alices-laptop.local
250-smtp.example.com
250-AUTH PLAIN LOGIN
250 SIZE 52428800
AUTH PLAIN AGFsaWNlAHMzY3IzdA==
235 Authentication successful
MAIL FROM:<alice@example.com>
250 OK
RCPT TO:<bob@example.net>
250 OK
DATA
354 Start mail input
[message content]
.
250 OK: queued as ABC123

MSAがメッセージを受け取った際の処理:

API送信パス

Mailer To Goのようなトランザクションメールサービスを使用する場合、アプリケーションは通常、SMTPではなくHTTP APIを経由して送信します。APIサーバーはメッセージを受け入れ、SMTPエンベロープとヘッダーを構築し、DKIM署名を適用し、メッセージをMTAキューに注入します。API呼び出しはMUAとMUA-to-SMTP SMTPトランザクション両方を置き換えますが、下流のすべてはそのままです。

ステージ3:ルーティングと転送(MTA → MTA)

送信MTAはメッセージを受信者のドメインに配信する必要があります。これはリレーフェーズであり、RFC 5321(SMTP)によって管理されます。

DNS解決

MTAは受信者のドメインのMXレコードをルックアップします:

$ dig +short MX example.net
10 mx1.example.net.
20 mx2.example.net.

最初に優先度が最も低いMXを試します。そのサーバーに到達不可な場合は、次のサーバーにフォールバックします。DNSとメールルーティングを参照してください。A/AAAAレコードへのフォールバック、Null MX処理を含む完全なアルゴリズム。

転送

# 送信MTAがmx1.example.net:25に接続
220 mx1.example.net ESMTP
EHLO sender.mailertogo.com
250-mx1.example.net
250-STARTTLS
250-SIZE 26214400
250 ENHANCEDSTATUSCODES
STARTTLS
220 Ready to start TLS
# TLSハンドシェイク — 接続は暗号化されました
EHLO sender.mailertogo.com
250-mx1.example.net
250 ENHANCEDSTATUSCODES
MAIL FROM:<alice@example.com>
250 OK
RCPT TO:<bob@example.net>
250 OK
DATA
354 End data with <CR><LF>.<CR><LF>
[message with additional Received: header]
.
250 OK: queued as DEF456

このステージでは:

キューイングとリトライ

受信MXが4xx一時エラーを返す場合(サーバービジー、グレイリスティング、レート制限)、送信MTAはメッセージをキューイングし、後で再試行します。リトライスケジュールは通常、指数バックオフを使用します:15分、30分、1時間、2時間など。リトライ期間(通常は4~5日)後にメッセージを配信できない場合、MTAはバウンスメッセージ(DSN)を生成し、エンベロープ送信者に送り返します。

ステージ4:受信(MX)

受信MX(受信者のドメインの受信メールを受け入れるMTA)は、ほとんどのフィルタリングが行われる場所です。これはゲートキーパーです。

接続時、メッセージコンテンツが到着する前に:

エンベロープフェーズ中:

DATA後(完全なメッセージが受信されます):

ステージ5:配信(MDA)

メール配信エージェントは、フィルタリングを通過したメッセージを受け取り、受信者のメールボックスにデポジットします。多くのシステムでは、MDAは別のプロセスではなくMXサーバーに統合されています。

MDAの責任:

この時点で、メッセージは保存状態で受信者のメール保存にあります。SMTPトランザクションは完了しました。送信MTAの責任は、受信MXから250 OKを受信したときに終了しました。

ステージ6:取得(MRA → MUA)

受信者のメールクライアントは、3つのプロトコルのいずれかを使用してメール保存からメッセージを取得します:

IMAP(RFC 9051)

優勢なメールアクセスプロトコル。IMAPはサーバー上のメッセージを保持し、状態(既読/未読、フラグ、フォルダー)を複数のクライアント間で同期します。クライアントは最初にメッセージヘッダーをダウンロードし、必要に応じて全文を取得します。1つのクライアント(既読マーク、フォルダーへの移動)で加えられた変更は、すべてのクライアントに反映されます。

POP3(RFC 1939)

古い、よりシンプルなプロトコル。POP3はメッセージをクライアントにダウンロードし、(デフォルトでは)サーバーから削除します。クライアント間で状態を同期しません。大部分がIMAPに置き換わっていますが、いくつかのシナリオでは引き続き使用されています。

ウェブおよびAPIアクセス

Webメールインターフェース(Gmail、Outlook.com)およびモバイルアプリは、IMAP/POP3をバイパスして、専用API或いはJMAP(RFC 8620)経由でメール保存にアクセスします。メッセージはプロバイダーのサーバーを離れません — クライアントはそれをWebリクエスト経由で表示します。

問題が発生する場所:各ステージでの障害モード

送信障害

認証に失敗します(パスワードが違う、トークンが期限切れ)、MSAがメッセージを拒否します(サイズ制限超過、ポリシー違反)、または接続がタイムアウトします。ユーザーはすぐにエラーを見ます。

ルーティング障害

DNS解決に失敗します(MXレコードなし、DNSタイムアウト)、すべてのMXホストに到達不可、またはすべてのMXが永続的エラーを返します。リトライが終了した後、送信者はバウンス(DSN)を受け取ります。

受信時拒否

受信MXはSMTP時にメッセージを拒否します:ブロックリストIPアドレス(550)、認証失敗(550 5.7.1)、不明な受信者(550 5.1.1)、またはコンテンツ拒否(554)。送信MTAはエンベロープ送信者への跳ね返り通知を生成します。

受理後のフィルタリング

MXがメッセージを受け入れました(250 OK)が、MDAはコンテンツ分析と評判スコアに基づいてそれをスパムフォルダーにルーティングします。送信者はバウンスを受け取りません — メッセージは技術的には「配信」されていました — しかし、受信者はそれを見たことがありません。これは、最も一般的で、診断が最も難しい配信性の問題です。

メールボックスが満杯

受信者のメールボックスがクォータを超えています。実装に応じて、これは、RCPT TO時の拒否か、DATA受理後に生成されたバウンスのいずれかです。

ヘッダーはストーリーを語ります

ライフサイクルの各ステージはメッセージにヘッダーを追加します。下から上へのヘッダーを読むと、旅を再構築できます:

# 受信MXによって追加(最後のホップ、ヘッダーの最上部)
Received: from sender.mailertogo.com (198.51.100.42)
by mx1.example.net with ESMTPS id DEF456
for <bob@example.net>;
Tue, 11 Mar 2026 13:15:02 +0000
Authentication-Results: mx1.example.net;
spf=pass smtp.mailfrom=example.com;
dkim=pass header.d=example.com;
dmarc=pass header.from=example.com

# 送信MTA/MSAによって追加(最初のホップ、ヘッダーの最下部)
Received: from alices-laptop.local (192.0.2.10)
by smtp.example.com with ESMTPSA id ABC123
for <bob@example.net>;
Tue, 11 Mar 2026 13:15:00 +0000
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=mtg; ...

Received:ヘッダーはパンくずリストです。それぞれが送信ホスト、受信ホスト、使用されたプロトコル(TLSの場合はESMTP、ESMTPS、認証+TLSの場合はESMTPSA)、キューID、およびタイムスタンプを記録します。完全なガイドについては、メールヘッダーの解剖を参照してください。

トランザクションメールパス

アプリケーションがMailer To Goのようなサービス経由でメールを送信する場合、ライフサイクルは若干異なります:

  1. アプリケーションはAPIを呼び出します。アプリはメッセージコンテンツ、受信者、メタデータを含むPOSTリクエストを送信します。
  2. サービスはメッセージを構築します。MIME構造を構築し、必要なヘッダー(Date、Message-ID、該当する場合はList-Unsubscribe)を追加し、ドメインキーでDKIM署名を適用します。
  3. サービスのMTAがメッセージを送信します。メッセージはサービスのIPからポート25の受信者のMXに送信され、STARTTLSします。
  4. 残りは同じです。MX受信、認証チェック、コンテンツフィルタリング、MDA配信、クライアント取得はすべて上記のとおり進行します。

主な違い:アプリケーションは直接SMTPを話しません。APIはプロセス送信全体を抽象化します。しかし、メッセージは依然として同じインフラストラクチャをトラバースし、同じ認証チェックを受け、同じスパムフィルターで評価されます。

重要なポイント

さらに詳しく

Related RFCs