メール配送の仕組み
メール配送は、インターネット上でのメッセージの送受信を行うための仕組みであり、複数のプロトコルとコンポーネントが連携して動作します。以下にその仕組みを解説します。
メールに関連するプロトコル
プロトコル名 | 説明 | 使用ポート |
---|---|---|
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) | メールを最終的な受信者のメールボックスに配送するコンポーネント。 | メールの配信、メールボックス管理 |
MTA/MDAのアプリケーション
アプリケーション名 | 説明 |
---|---|
sendmail | 1983年にリリースされた古いMTA。多機能だが、セキュリティや性能の問題が指摘されることも多い。 |
Postfix | 1999年にリリースされたMTA。sendmailと互換性が高く、セキュリティ面も改善されている。Red Hat系LinuxでデフォルトののMTA/MDAとして使われることが多い。 |
Exim | 1995年にリリースされたMTA。設定が簡単で、Debian系Linuxでデフォルトの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 | プロセスを表示するオプション。 |
-t | TCPソケットを表示するオプション。 |
grep smtp | 「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のアプリケーションが広く利用されています。