メール送信の流れ|SMTP通信を理解する

目次
SMTP通信の流れを理解してメール配送の仕組みを学ぼう
メールは日常的に利用されていますが、送信ボタンを押してから相手へ届くまでの流れを正しく理解している人は意外と多くありません。
メールの配送にはSMTP(Simple Mail Transfer Protocol)というプロトコルが利用されています。
SMTPはメール送信のための標準プロトコルであり、企業のメールサーバやクラウドメールサービスでも利用されています。
メールサーバの構築や運用を行うエンジニアにとって、SMTP通信の流れを理解することは非常に重要です。
本記事ではメール送信時にどのような処理が行われているのか、SMTP通信の流れを詳しく解説します。
メール送信の全体像
メールを送信する際には、送信者と受信者の間で複数のシステムが連携しています。
例えば次のようなメール送信を考えてみましょう。
送信者 user@example.com 宛先 admin@test.com
このメールは直接相手へ送られるわけではありません。
送信側メールサーバ、DNSサーバ、受信側メールサーバなど複数のシステムを経由して配送されます。
全体の流れを簡略化すると次のようになります。
メールソフト
↓
SMTPサーバ
↓
DNSサーバ
↓
受信側SMTPサーバ
↓
メールボックス
↓
受信者
それでは実際の流れを順番に見ていきましょう。
ステップ1:メールを作成する
最初にユーザーがメールソフトやWebメールでメールを作成します。
例えばOutlookやThunderbird、Gmailなどを利用してメールを書きます。
メールには次のような情報が含まれます。
- 送信者アドレス
- 宛先アドレス
- 件名
- 本文
- 添付ファイル
送信ボタンを押すとSMTP通信が開始されます。
ステップ2:SMTPサーバへ接続する
メールソフトは設定されたSMTPサーバへ接続します。
一般的には以下のポート番号が利用されます。
| ポート番号 | 用途 |
|---|---|
| 25 | メールサーバ間配送 |
| 465 | SMTP over SSL |
| 587 | メール送信用(Submission) |
現在では587番ポートが最も利用されています。
SMTPサーバへ接続すると、送信者認証が行われます。
ステップ3:SMTP認証を行う
現在のメールサーバではSMTP認証(SMTP-AUTH)が利用されています。
認証を行わないと第三者による不正送信が可能になってしまうためです。
SMTPサーバはユーザー名とパスワードを確認し、正しい利用者かどうかを判断します。
認証に成功するとメール送信処理が継続されます。
ステップ4:SMTPサーバがメールを受け取る
SMTPサーバは送信者からメールデータを受け取ります。
この段階で送信者、宛先、件名、本文などの情報がSMTPサーバへ渡されます。
サーバは受け取ったメールを配送待ち状態として管理します。
これをメールキューと呼びます。
ステップ5:宛先ドメインを確認する
SMTPサーバは宛先メールアドレスを確認します。
例えば以下のメールアドレスがあったとします。
admin@test.com
SMTPサーバは「test.com」というドメイン部分を取り出します。
次にDNSへ問い合わせを行い、メールをどこへ配送すればよいか調べます。
ステップ6:DNSでMXレコードを検索する
メール配送ではDNSのMXレコードが利用されます。
SMTPサーバは次のような問い合わせを行います。
test.com のメールサーバはどこですか?
DNSサーバから次のような回答を受け取ります。
test.com. IN MX 10 mail.test.com.
これによりSMTPサーバは「mail.test.com」が配送先メールサーバであることを知ります。
メール配送においてDNSは非常に重要な役割を持っています。
ステップ7:受信側SMTPサーバへ接続する
配送先メールサーバが判明すると、送信側SMTPサーバは受信側SMTPサーバへ接続します。
ここでもSMTP通信が利用されます。
送信側サーバと受信側サーバが会話を行いながらメール配送を進めます。
これをSMTPリレーと呼びます。
ステップ8:SMTPコマンドを送信する
SMTP通信ではテキストベースのコマンドが利用されます。
代表的なコマンドは以下の通りです。
| コマンド | 役割 |
|---|---|
| EHLO | 接続開始 |
| MAIL FROM | 送信者指定 |
| RCPT TO | 宛先指定 |
| DATA | 本文送信 |
| QUIT | 通信終了 |
これらのコマンドを利用してメールが転送されます。
実際のSMTP通信例
SMTP通信は以下のような流れで進行します。
220 mail.test.com ESMTP
EHLO mail.example.com
250 OK
MAIL FROM:
250 OK
RCPT TO:
250 OK
DATA
354 End data with .
Subject: Test Mail
Hello World
.
250 Queued
QUIT
221 Bye受信側サーバが250を返した時点でメール配送成功となります。
ステップ9:メールボックスへ保存する
受信側SMTPサーバは受け取ったメールをメールボックスへ保存します。
Linux環境では以下のような場所へ保存されることがあります。
/var/mail/userまたはDovecotなどのメールサーバソフトが管理するメールストアへ格納されます。
ステップ10:受信者がメールを確認する
受信者はPOP3またはIMAPを利用してメールを確認します。
SMTPは送信専用であるため、メール閲覧には別のプロトコルが必要です。
最近ではIMAPが主流となっています。
SMTP ↓ メール配送 IMAP ↓ メール閲覧
送信と受信で異なるプロトコルが利用されることを覚えておきましょう。
メール配送に失敗するケース
SMTP通信では様々な理由で配送に失敗することがあります。
- DNS設定ミス
- MXレコード未設定
- SMTPサーバ停止
- メールボックス容量不足
- スパム判定
- SMTP認証エラー
- TLS設定不備
SMTPの流れを理解していると、どの段階で問題が発生しているか切り分けしやすくなります。
実務で重要な確認ポイント
メール配送障害の調査では次のポイントを確認します。
- SMTPサーバは起動しているか
- SMTPポートは開いているか
- DNSのMXレコードは正しいか
- メールキューは滞留していないか
- ログにエラーは出ていないか
メールサーバ運用ではSMTP通信の流れを理解しておくことが非常に重要です。
まとめ
メール送信時にはSMTPサーバ、DNSサーバ、受信側メールサーバが連携して動作しています。
SMTPサーバはまずメールを受け取り、DNSのMXレコードを利用して配送先メールサーバを特定します。
その後SMTP通信によってメールを転送し、受信側サーバがメールボックスへ保存します。
SMTP通信の流れを理解することで、メールサーバの構築やトラブルシューティングを効率的に行えるようになります。
メールシステムを学ぶ際は、まずSMTP通信の流れを正しく理解することから始めましょう。






