ITの教科書検索
入門・発展ページ読了 約12分

メールが届く仕組み ― SMTP・POP・IMAPの役割分担

メールはSMTPで送信・配送され、POP3かIMAPで受信します。SMTPは587番と25番、POP3は110番、IMAPは143番。スマホとPCで同じメールを見るなら、サーバに残すIMAPが向きます。

目次
  1. メールはMTAのリレーで届く
  2. MUA・MSA・MTA・MDAの役割分担
  3. 送信:MUAからMSA/MTAへ(587番・SMTP認証)
  4. メールアドレスの@の後ろはドメイン
  5. 配送:MXレコードで宛先サーバを探す
  6. 動かして確かめる:送信から受信までの経路
  7. 受信:POP3とIMAPの違い
  8. MIME:添付ファイルと日本語が送れる理由
  9. CcとBccの違い
  10. なりすまし対策:SPF・DKIM・DMARC
  11. Webメールとの関係
  12. 練習問題

メールは送信用のSMTPと、受信用のPOP3・IMAPという別々のプロトコルで届く

メールは、送信と受信で別のプロトコルを使います。サーバ同士の配送には常にSMTP(Simple Mail Transfer Protocol)を使います。受け取るときは、POP3かIMAPのどちらかを使います。この2つは、サーバ上のメールの扱い方が違います。

送信では、メールはメールソフトから自分側のサーバへ渡り、さらに相手側のサーバへ届きます。途中で、DNSのMXレコードを使って宛先サーバを探します。

受信では、POP3かIMAPのどちらかを、メールソフトの設定で選びます。POP3は、メールを取り込んで、サーバからは基本的に削除します。IMAPは、サーバに残したまま同期します。

メールソフトに入れる送信サーバと受信サーバの名前やポート番号も、この分担から決まります。

MUA・MSA・MTA・MDAの役割分担

メールの仕組みには4つの役割が登場します。同じソフトが、複数の役割を兼ねることも多いです。それでも、どの役割の話をしているかを区別すると、後の説明が読みやすくなります。

略語正式名称役割
MUAMail User Agentメールを読み書きする、利用者が直接操作するソフト(メールソフト・Webメール)
MSAMail Submission Agent送信者のMUAからメールを受け取り、SMTP認証などで送信者を確認する窓口
MTAMail Transfer Agentメールサーバ同士でメールを配送する仕組み。MSAと同じソフトが兼ねることが多い
MDAMail Delivery Agent届いたメールを受信者のメールボックスに保存する仕組み

普段メールソフトと呼んでいるOutlookやGmailアプリは、役割で言うとMUAです。会社やプロバイダが運用するメールサーバは、場面によってMSA・MTA・MDAと呼び名が変わります。どの役割をどう呼ぶかは、上の表のとおりです。

ここで登場するSMTP・POP3・IMAPは、いずれもTCPの上で動きます。メールでは、届いたか届かなかったかが送信側に分かる必要があります。そのため、UDPではなくTCPを使います。

送信:MUAからMSA/MTAへ(587番・SMTP認証)

メールを送信すると、まずMUAは、送信者自身が契約しているメールサーバに接続します。この窓口をMSA(Mail Submission Agent)と呼びます。RFC 6409で決められたMSAのポートは、587番です。

MSAは、接続してきた相手が本当にそのアカウントの持ち主かを確認します。確認には、ユーザー名とパスワードを使います。この確認をSMTP認証と呼び、SMTP AUTHとも書きます。

かつては、25番ポートに直接メールを投稿する方式も広く使われていました。ただし、認証なしで誰でも中継できてしまうため、迷惑メールの踏み台に悪用される問題が起きました。

この反省から、役割を分ける設計が定着しています。利用者からの投稿は認証つきの587番、サーバ同士の配送は25番です。この設計は、RFC 6409で定義されています。

多くのプロバイダは、OP25B(Outbound Port 25 Blocking)も実施しています。これは、利用者回線からプロバイダの外にある25番宛ての通信を制限する仕組みです。この制限があっても、外部のメールサーバへは587番か465番の認証つき投稿で送れます。

メールアドレスの@の後ろはドメイン

メールアドレスはローカル部@ドメインという形式です(RFC 5322)。たとえば、送信者がsato@example.comで、受信者がtanaka@example.netだとします。この場合、その組織内での宛先を示すtanakaがローカル部です。example.netは、DNSの記事で説明したドメイン名にあたります。

次の節で見るとおり、メールサーバはこの@の後ろのドメイン名だけを使って宛先サーバを探します。ローカル部は、宛先サーバに届いた後で使われます。その組織内の、どの受信者宛てかを区別するためです。

配送:MXレコードで宛先サーバを探す

SMTP認証を終えたMSA/MTAは、次に宛先メールサーバの場所を調べます。使うのは、IPアドレスを調べるA/AAAAレコードではありません。メールを受け取るサーバの宛先を示す、MXレコード(Mail eXchanger)です。

MSA/MTAは、DNSに登録されたMXレコードを問い合わせます。返ってくるのは、メールサーバのホスト名です。このホスト名について、あらためてA/AAAAレコードでIPアドレスを調べます。もし宛先ドメインにMXレコードが登録されていなければ、そのドメイン自体のA/AAAAレコードを宛先サーバとみなして配送を試みます(RFC 5321 §5.1)。

宛先の受信側MTAが見つかったら、送信側と受信側のMTA同士が、SMTPの25番ポートで直接メールを配送します。この配送は、RFC 5321で定義されています。587番を使うのは、利用者がMSAに投稿する区間だけです。MTA間の配送は今も25番です。

MUA(送信者)DNS(宛先を調べる)送信側MSA/MTA(最初に渡す窓口)受信側MTA(宛先のサーバ)メールボックス(MDAが保存)SMTP・587番SMTP認証MXレコードは?宛先サーバはmail.example.netSMTP・25番配送保存
送信者のメールソフト(MUA)は、587番ポートでSMTP認証をしながら、送信側のMSA/MTAにメールを渡します。MSA/MTAは、真上にあるDNSにMXレコードを問い合わせて、宛先ドメインのメールサーバを探します。見つかった受信側MTAへは、25番ポートで配送します。届いたメールは、MDAがメールボックスに保存します。点線は問い合わせを、実線は回答・配送・保存を表します。
1つのドメインには、複数のMXレコードを登録できます。各レコードの優先度の数字は、値が小さいほど優先されます。これを使うと、優先度の高いサーバがダウンしているときに次のサーバへ配送する、冗長構成を組めます。

動かして確かめる:送信から受信までの経路

次の図で、ここまでの送信・配送と、このあと説明する受信を、1段ずつ確かめられます。ステップを切り替えると、使われる区間・プロトコル・ポート番号が変わります。⑤と⑥は、どちらもメールボックスからMUAへの区間です。POP3かIMAPかで、扱いが変わる点を比べてください。

MUA送信者のメールソフト
DNSMXレコード
MSA/MTA送信側サーバ
MTA受信側サーバ
メールボックスMDAが保存
MUA受信者のメールソフト
プロトコルSMTP
ポート番号587番(サブミッションポート)

送信者のメールソフトは、ユーザー名とパスワードでSMTP認証をしながら、送信側のMSA/MTAにメールを渡します。

受信:POP3とIMAPの違い

受信者のMUAがメールボックスからメールを受け取る方法には、POP3とIMAPの2つがあります。2つのいちばんの違いは、受信後にサーバ上のメールがどうなるかです。

POP3は、Post Office Protocol version 3の略です。RFC 1939で規定されています。IMAPは、Internet Message Access Protocolの略です。現行版は、IMAP4rev2(RFC 9051)です。

POP3で受信するとIMAPで受信するとサーバ(受信前)✉ ✉ ✉(3通)サーバ(受信後)空(基本は削除)PC(1台)✉ ✉ ✉(3通)受信するとPOP3110番取り込むメールサーバ✉ ✉ ✉(3通のまま)PC✉ ✉ ✉スマホ✉ ✉ ✉IMAP・143番サーバに残して同期
POP3で受信すると、受信前に3通あったサーバのメールボックスは、受信後に空になります。基本は削除で、メールは1台のPCへ取り込まれます。IMAPで受信すると、サーバのメールボックスの中身は変わりません。そのまま、PCとスマホの両方に同じ3通が双方向に同期されます。
POP3IMAP
サーバ上のメール取り込むと基本的に削除されるサーバに残したまま同期する
複数端末での見え方端末ごとにバラバラ(取り込んだ端末にしか残らない)同じメールボックスをどの端末からも同じ状態で見られる
向いている使い方1台の端末だけでメールを管理する場合スマホとPCなど、複数の端末を使い分ける場合
ポート番号(平文/TLS版)110 / 995143 / 993

POP3は、メールを1台の端末に取り込みます。取り込んだメールは、サーバ側からは基本的に削除します。設定でサーバにも残せますが、規格としての基本動作は取り込んで削除です。

IMAPは、メールをサーバに残したまま管理します。そのため、PCとスマホなど複数の端末から、同じメールボックスを同期して見られます。スマホとPCを併用するのが当たり前になった現在は、IMAPが主流です。

プロトコル役割平文のポートTLS版のポート
SMTP(送信・投稿)MUA → MSA587465(最初からTLS=SMTPS)
SMTP(MTA間の配送)MTA → MTA25(専用ポートはなく、25のままSTARTTLSで暗号化)
POP3メールボックス → MUA110995
IMAPメールボックス → MUA143993

暗号化の方式は、ポート番号ごとに2通りあります。1つは、平文でやり取りを始めてから、STARTTLSコマンドで暗号化に切り替える方式です。もう1つは、別のポート番号を使い、最初からTLS通信を始める方式です。

110番・143番でも、STARTTLSは使えます。ただし、RFC 8314は、465番・993番・995番のように最初からTLSで通信する方式を推奨しています。TLSによる暗号化の仕組み自体は、HTTPとHTTPSの記事で説明したものと同じです。

MIME:添付ファイルと日本語が送れる理由

SMTPはもともと、7ビットのASCII文字だけを送る前提で設計された規格でした。ASCII文字は、英数字と一部の記号です。このままでは、日本語のような2バイト以上の文字を、そのまま送れません。画像・PDFなどの、バイナリデータの添付ファイルも同じです。

この制約を越えるための仕組みがMIME(Multipurpose Internet Mail Extensions)です。MIMEは、日本語の本文や添付ファイルをBase64などの方式でASCII文字だけの文字列に変換します。

変換した文字列は、メール本文に埋め込まれます。受信側のMUAは、それを元の形式に復元します。メールソフトが自動でこの変換を行うため、利用者が普段MIMEを意識することはほとんどありません。

CcとBccの違い

メールの宛先欄には、直接の宛先であるToのほかに、CcとBccという2つの欄があります。どちらも、Toの相手以外にも送る点は同じです。違うのは、宛先が他の受信者に見えるかどうかです。

  1. Cc

    Cc(Carbon Copy)

    参考として同時に送る宛先です。ToとCcに入っているアドレスは、受信者全員から互いに見えます。

  2. Bcc

    Bcc(Blind Carbon Copy)

    参考として同時に送る点は、Ccと同じです。ただし、Bccに入れた宛先は、他の受信者からは見えません。Bcc同士も、互いに見えません。

なぜBccの宛先は他の受信者に見えないのか

SMTPでの配送先は、メールのヘッダではなく、RCPT TOという別のコマンドで渡されます。RCPT TOは、封筒の宛先にあたります。To・Cc・Bccのすべての宛先が、ここで個別に指定されます。

送信側のMUA/MSAは、実際に配送する前に、メールのヘッダからBcc欄だけを取り除いてから送り出します。そのため、受信者が見るメールのヘッダにはBccの宛先が残りません。Bccの扱いは、RFC 5322 §3.6.3で定められています。

Bccは、大勢に一斉送信する際に、受信者同士のメールアドレスを見せたくない場合によく使われます。

なりすまし対策:SPF・DKIM・DMARC

SMTPは元々、送信者アドレスの正しさを確認する仕組みを持っていませんでした。そのため、送信元を偽ったメールを送ること自体は、技術的に可能でした。このようなメールをなりすましメールと呼びます。この弱点を補うため、DNSを使った3つの仕組みが広く使われています。3つが何を照合するかの違いは、SPF・DKIM・DMARCの記事で比べています。

  1. 1

    SPF(Sender Policy Framework)

    ドメインの持ち主は、メール送信を許可するサーバのIPアドレスを、DNSに登録しておきます。受信側は、届いたメールの送信元サーバが、このリストに含まれるかを確認します。

  2. 2

    DKIM(DomainKeys Identified Mail)

    送信側は、メールに電子署名を付けます。受信側は、DNSに公開された鍵で署名を検証します。これで、途中でメールの内容が改ざんされていないかを確認できます。

  3. 3

    DMARC(Domain-based Message Authentication, Reporting, and Conformance)

    SPFとDKIMの検証結果に基づき、失敗したメールをどう扱うかを、ドメインの持ち主が指定できる仕組みです。扱い方は、受信する・迷惑メール扱いにする・拒否するの中から指定します。

Webメールとの関係

GmailやYahoo!メールのようなWebメールは、ブラウザから使うMUAです。ブラウザとWebメールサーバの間は、HTTPSで通信します。他のドメイン宛てに配送する部分では、ここまで説明したMTA間のSMTPをそのまま使います。ポートは25番です。

IMAPは、ブラウザではなくメールソフトから、同じメールボックスにアクセスしたい場合に使うプロトコルです。Webメールだけを使っている間は、利用者がIMAPを意識することはありません。

練習問題(全5問)

Q1メールを送信するとき、送信者のメールソフト(MUA)が最初に接続する相手は?
Q2メールを配送するMTAが、宛先ドメインのメールサーバの場所を知るために問い合わせる先は?
Q3POP3とIMAPの違いとして正しいものは?
Q4メールアドレス tanaka@example.net の「@」より後ろの example.net が表すものは?
Q5添付ファイルや日本語の本文を、テキストだけでやり取りするSMTPで送れるようにしている仕組みは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

おすすめの本 PR

ネットワークを初めて学ぶ人向けの入門書です。

目的別の本の選び方を見る

ネットワークの記事を探す