【図解】初心者にも分かるメールの送受信の仕組み

メール送信のフロー

普段私たちが利用している電子メールは以下のようなフローで送信されています。

1. メールソフト(MUA)からSMTP中継サーバ(MTA)へメール送信

Outlook等のメールソフトで『送信』等のボタンを押すと、メールソフトに設定されているSMTP中継サーバにSMTP接続しにいきます。SMTP中継サーバからは認証情報要求をされるので、IDパスワード情報を送付します。

2. メール中継サーバが送信元身元確認のため、LDAPサーバへIDパスワードを確認

受信したアカウント情報が正しいものかどうかをLDAPサーバへ確認しにいきます。この機能を「SMTP-AUTH」と言います。一昔前はSMTP認証機能はありませんでしたが、スパムメールが流行し、その暫定策としてPOP before SMTP(POPは認証機能がついているので、SMTPをする前に必ずPOPで認証させる)が実装され、根本策としてこのSMTP-AUTHが搭載されました。

3. メールソフトからメール中継サーバへメール送信

認証が正しいとなったら、メールソフトからメール中継サーバへメールが送信されます。

4. メール中継サーバがDNSサーバへMXレコードとそのAレコードを問い合わせ

メールを受信したSMTP中継サーバは、宛先メールアドレスの@以降のドメインネームのMXレコードをDNSサーバに問合せます。図の例では、example.comのMXレコードを問合せます。通常、このMXレコードのホスト名のAレコードは、PCから要求しなくても、DNSサーバが付加情報として同じパケットの中に含めてくれます。DNSの動作については、こちらをご参照下さい。

この問い合わせをすることで、宛先メールアドレスのメールサーバのIPアドレスを取得できます。

5. メール中継サーバからexample.comのメールサーバへの送信

宛先メールアドレスのメールサーバのIPアドレス宛にメールを送ります。なお、SMTP中継サーバは、複数立てることもできます。その場合、パターンは以下2つがあります。

1つ目は直列設置で、例えば、まずはスパム対策を行うSMTPサーバ、その次にウィルスチェックを行うSMTPサーバ、最後にメールスプールの存在するSMTPサーバ、というように機能別に中継していくパターンです。SMTPはTCP通信ですので、中継するたびにTCPコネクションを張ります。メールを受信したら次の転送先へTCPコネクションを張り、相手が受信したのを確認したらTCPコネクションを切断し、メールキューから削除します。

2つ目は並列設置で、受け口のメール中継サーバを冗長化するパターンです。この場合、DNSに複数のMXレコードを作成し、そのMXレコードに付随するPreferenceという値で、「値が低いほうを優先してほしい」旨を相手に伝えます。ただし、相手はPreferenceの高い(優先度の低い)ほうにも送信ができます(送信先を強制できません)ので、注意が必要です。

メール受信のフロー

メールを受信する際には、下図のようなフローになります。

1. メールソフト(MUA)からメールスプール(MRA)へIDパスワード情報を送付

Outlook等のメールソフトで『受信』等のボタンを押すと、メールソフトに設定されているPOPサーバ、 もしくはIMAPサーバのIPアドレスにメールの受信要求、およびメールアカウントのIDパスワード情報を送ります。 認証情報は通常、メールソフトに設定しておきます。

2. メールスプールサーバが受信者の身元確認のため、LDAPサーバへIDパスワードを確認

受信要求を受信したPOPサーバ、もしくはIMAPサーバは、認証サーバにメールアカウントのパスワードの検証を依頼します。

3. メールソフトメールスプールサーバが受信者の身元確認のため、LDAPサーバへIDパスワードを確認

パスワードが正しければ、メールスプールサーバからメールが受信できます。

なお、POPとIMAPを同時に利用できる環境として代表的なものが、LinuxのDovecot(ダブコット)Courier-imap(クーリエアイマップ)、WindowsのMicrosoft Exchange Serverです。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする