メール配送の仕組み

 メール配送は、インターネット上でのメッセージの送受信を行うための仕組みであり、複数のプロトコルとコンポーネントが連携して動作します。以下にその仕組みを解説します。

メールに関連するプロトコル

プロトコル名説明使用ポート
SMTP (Simple Mail Transfer Protocol)メールを送信するためのプロトコル。MTA間やMUAからMTAへのメール送信に使用される。TCP 25
POP3 (Post Office Protocol 3)メールを受信するためのプロトコル。受信者のメールサーバからクライアントにメールをダウンロードするために使用される。TCP 110
IMAP4 (Internet Message Access Protocol 4)メールを受信するためのプロトコル。メールサーバ上でメールを管理し、クライアント側からメールを操作できる。POP3とは異なり、メールをサーバに残したままにできる。TCP 143
メールに関連するプロトコル

MUAとMTAとMDA

コンポーネント説明主な機能
MUA (Mail User Agent)ユーザーが直接操作するメールクライアントソフト。メールの作成、送信、受信を行う。メールの作成・送信・受信、ユーザー認証
MTA (Mail Transfer Agent)メールを転送する役割を持つサーバコンポーネント。SMTPを使って他のMTAにメールを渡す。メールの転送、キュー管理
MDA (Mail Delivery Agent)メールを最終的な受信者のメールボックスに配送するコンポーネント。メールの配信、メールボックス管理
MUAとMTAとMDA

MTA/MDAのアプリケーション

アプリケーション名説明
sendmail1983年にリリースされた古いMTA。多機能だが、セキュリティや性能の問題が指摘されることも多い。
Postfix1999年にリリースされたMTA。sendmailと互換性が高く、セキュリティ面も改善されている。Red Hat系LinuxでデフォルトののMTA/MDAとして使われることが多い。
Exim1995年にリリースされたMTA。設定が簡単で、Debian系LinuxでデフォルトのMTA/MDAとして使われることが多い。
MTA/MDAのアプリケーション

Postfixのインストール(Ubuntu)

UbuntuでPostfixをインストールするには、以下のコマンドを使用します。

sudo apt install mailutils

 続行しますか? [Y/n]の問いに「y」と入力します。途中TUI(テキストユーザーインターフェース)で「Postfix Configuration」と表示されます。すべてデフォルトの選択のまま「<了解>」を選択します。「Tab」キーで項目間の移動ができます。

稼働しているMTA/MDAの確認

PostfixなどのMTAが稼働しているか確認するには、以下のコマンドを使用します。

ss -apt | grep smtp

コマンド説明
ss現在のネットワーク接続、スケットの状態を表示するコマンド。
-a全てのソケットを表示するオプション。
-pプロセスを表示するオプション。
-tTCPソケットを表示するオプション。
grep smtp「smtp」を含む行を表示する。
「ss -apt | grep smtp」の解説

出力例

この出力は、SMTPプロトコルでPostfixがリッスンしていることを示します。

$ ss -apt | grep smtp
LISTEN 0      100          0.0.0.0:smtp        0.0.0.0:*          
LISTEN 0      100             [::]:smtp           [::]:*

メール配送の流れ

 下図を用いて、メールがどのようにして送信され、目的の受信者に届くのかをDNS(ドメインネームシステム)の仕組みとともにメール配送の流れを解説します。主要なポイントを表形式でまとめます。

項目説明
①メールの送信送信者(MUA: メールユーザーエージェント)がメールを作成し、送信ボタンを押すと、メールはまず送信側のメールサーバ(MTA: メールトランスファーエージェント)に送信されます。
②ユーザー認証メールの送信時に、送信者の認証が行われます。この段階で認証に成功すると、メールの送信が進みます。
③DNSの問い合わせ送信されたメールが宛先のドメイン(例: company.co.jp)に送られる際、送信側のMTAはDNSに問い合わせを行い、そのドメインのメールサーバ(MXレコード)を取得します。
④DNSの回答DNSサーバから、指定されたドメインのMXレコード(例: mail.company.co.jp)が返されます。これにより、送信先のメールサーバのIPアドレスがわかります。
⑤メールキューに格納取得したメールサーバのIPアドレスに対してメールが送信され、受信側のメールサーバにメールが一時的に保管(キューに格納)されます。
⑥メール配送メールは受信側のメールサーバから適切な受信者のメールボックスに配送されます。
⑦メールの受信受信者のMUAが受信側のメールサーバにアクセスし、認証が行われた後、メールがダウンロードされます(POP3やIMAPを使用)。
メール配送の流れ
ドメイン名とDNSの役割
  • ルートネームサーバ: ドメイン名を上位から下位へと順にたどるプロセスを管理します。ルートからトップレベルドメイン(例: jp)、さらに下位のドメインへと問い合わせを行います。
  • NSレコード: ネームサーバレコードは、特定のドメインの管理を行うDNSサーバを指定します。
  • MXレコード: メールエクスチェンジャーレコードは、特定のドメインのメールを受信するサーバを指定します。
メール配送の全体の流れ

 メールは送信者から送信側のメールサーバに送られ、DNSを介して適切な受信側メールサーバに到達し、最終的に受信者のメールクライアントに届きます。このプロセスには、DNSが非常に重要な役割を果たしており、ドメイン名をメールサーバのIPアドレスに変換することで、正確な配送が可能になります。

まとめ

 メール配送は、SMTP、POP3、IMAP4といったプロトコルを通じて行われます。MUA、MTA、MDAといったコンポーネントが連携して動作し、DNSがメールサーバのIPアドレスを解決することで、正しいメール配送が実現します。Postfix、sendmail、EximといったMTA/MDAのアプリケーションが広く利用されています。