【図解】初心者にも分かるメールの仕組み~SMTP/POP/IMAPの違い, リレーの構成, 用語について~

メールの一般的な構成例

メールシステムの一般的な構成例として、taro@example.com から hanako@gmail.com にメールを送信するときの例を以下に示します。

SMTPの機能と守備範囲

SMTP はメール送信プロトコルです。守備範囲は図の赤背景の箇所で、メール送信元 PC(メーラ)からメール宛先(メールスプールサーバ)まで一気通貫です。SMTP では一般に、いくつかの SMTP サーバを経由しますが、そのたびに TCP コネクションを確立し、リレーしていきます。このことを SMTP リレーと呼びます。

POP / IMAP の機能と守備範囲、POP と IMAP の違い

POP / IMAP はメール受信プロトコルです。メールを読みたいPC(メーラ)からメールスプールサーバに対して接続します。守備範囲は図の青背景の箇所です。

POP と IMAP の違いは、POP は単純なダウンロードしかできないのに対し、IMAP ではディレクトリ操作などが可能なコマンドが用意されていることです。

例えばメールの振り分け機能を使ってフォルダを分ける設定をしている場合、どの PC から IMAP アクセスしても同じフォルダ環境でメール受信が可能になります。なので Web メールの仕組みでよく使われます。

よくある勘違いで、『POP では PC にダウンロードしたメールはメールサーバから消えるけど IMAP では消えない』と説明する人がいますが、これは間違いです

POP でもダウンロード時にメールサーバのメールを消さない設定もできますし、逆に IMAP でもダウンロード時にメールを削除する設定もあります。

メール送信フロー

MUA(メーラ等)での動作

まずメーラで作成したメールを「送信ボタン」で押すと、メーラに設定された「SMTPサーバ」(例えば gmail.com の場合は smtp.gmail.com)に対し、SMTP でメール送信コマンドとともにメール本文や添付ファイル情報を送ります

メーラの設定は、Outlook2013 だと以下の青枠の箇所で設定します。

MSA(postfix等)での動作

最近のメールシステムでは SMTP-AUTH という認証機能が有効になっていますので、OpenLDAP 等の認証サーバに、メーラで設定された「ID /パスワード」情報を認証しに行きます。その結果 OK であればそのメールを受け入れ、メーラには SMTP でのコマンド成功を意味する "250" というレスポンスコードが返ってきます。これを受けてメーラは「送信完了」と認識します。(MUA と MSA との間の SMTP の TCP コネクションはここでいったん終了)

なお、MSA が無い(SMTP-AUTH が無いなどの)場合は、MUA と MTA の間で、上記やり取りの中で認証部分だけを無くした動作を行います。

MTA(postfix等)での動作

MTA ではメールを受信すると、まず宛先メールアドレスの@以降のみを確認し、その送り先メールサーバの IP アドレスを確認します。今回の例の送り先は @gmail.com ですが、例えばこれを手動で確認しようとすると、コマンドプロンプト (Windowsキー+R ⇒ cmdと入力し Enter で起動) で以下のように打ちます。

nslookup -type=mx gmail.com

すると以下のように表示されます。

"mail exchanger =" の後に表示されているホスト名MX レコード結果で、そのホスト名に対する A レコード(IP アドレス情報)も一緒に返ってきます。ここで表示された IP アドレスのどれか宛に SMTP 通信を行います。

これは間に MTA が何台挟まっていようと、全ての MTA でこのように MX レコードを確認していき、そのたびに TCP コネクション、SMTP セッションを張り、終了したらコネクション・セッションを閉じる、といった動作でメールをリレーしていきます。

MDA(postfix等)での動作

MDA はメールの終着地(メールスプール)において、@以前(今回で言えば hanako)を見て、どのディレクトリ(フォルダ)に格納すればよいかを確認し、配置します。

具体的には Linux であれば Linux アカウントや LDAP アカウントを確認し、MDA(postfix)の設定に定められたディレクトリに格納します。

MRA(dovecotやcourier-imap等)での動作

メーラからメールを受信する際には、メーラから MRA へ、POP や IMAP を使って接続しに行きます。認証が必須なので、大抵は OpenLDAP を使って ID パスワード情報を確認し、結果が OK であればメールを閲覧させます。

メーラの設定で 「POP サーバ」 や 「IMAP サーバ」 で IP アドレス、もしくは FQDN を指定しているものです。

メーラの設定は、Outlook2013 だと以下の赤枠の箇所です。

メールシステム用語

以下にメールシステム用語を整理します。

MUA

Mail User Agent のこと。Outlook や ThunderBird、Becky! などメールソフト(メーラ)のことを指します。

MTA

Mail Transfer Agent のこと。SMTP によるメールリレー(メール転送)を行うサーバソフトを指します。Linux の postfix が多く、次いで Windows の Exchange がよく使われています。

MDA

Mail Delivery Agent のこと。これは、自分が管理するドメインのメールが来た時に、そのサーバ内にある各ユーザのメール BOX にメールを配送する役割です。

例えば @example.com というドメインを管理している場合、taro@example.com 宛のメールが来た時に taro というユーザのメール BOX(具体的にはフォルダ内にあるメールファイル)に受信したメールを格納します。

この MDA は MTA と兼務するものが多く、大抵は MTA と同様に postfix、次いで Exchange となります。

MSA

Message Submission Agent のこと。昔は SMTP は認証無しでフリーに送信できていたのですが、SPAM メールが流行した際に、勝手に送信できるのはまずかろうとなり、認証する仕組みを設けました。その役割が MSA です。

初期は POP before SMTP という認証方式(SMTP で送信する直前に、同じメールアドレスで POP 認証を行わせる)が使われていましたが、最近は SMTP-AUTH という認証方式が主流です。

この MSA も MDA と同様、MTA と兼務し、postfix と Exchange がよく使われます。メーラの設定で「SMTP サーバ」として IP アドレス、もしくは FQDN を指定しているものです。

MRA

Mail Retrieval Agent のこと。メーラ(MUA)が POP や IMAP を使ってメールを取得しに行くサーバのことです。

この MRA は Linux では Dovecot(読み方:ダブコット)や Courier-imap(読み方:クーリエ アイマップ)が、Windows では Exchange がよく使われます。