2章 電子メールの仕組み
電子メールが配送される時、SMTPサーバ、DNSサーバ、POPサーバが協調して動作する。
ここでは、これらサーバの役割と動作を説明する。
2-1 SMTP
SMTP(Simple Mail Transfer Protocol)は、ポート番号25番のtcpを使用する。
インターネットを利用して、メール転送を行うメールサーバ間同士のプ
ロトコルである。共通のプロトコルを利用することで、どのメールサーバ
間でもメールの転送を行うことができる。図1にユーザAからユーザBへ
のインターネット上の電子メールモデルを示す。
(1)ユーザAは、メールユーザエージェント(MUA:User Agent)と呼ばれる「メール
クライアントソフト」で電子メールを作成し、ローカルなメールサーバに送信する。MUAには、UNIXのmail, mailx
,Microsoft WindowsのOutlook Expressなどがある。
(2)送信された電子メールは、MTA(Message Transfer Agent)と呼ばれる電子メール
配送ソフトウェア(メールサーバ)に渡される。UNIXで一般的なMTAとしてsendmail,その他qmail,exim、Windows用のExchange
などがある。
(3)MTA(メールサーバ)は、電子メールのあて先から配送先ドメインを計算し、どのMTAに転送
すればいいかDNS(Domain Name System)に問い合わせる。
(4)DNSによって得られた転送先MTAに対して、tcp接続し、接続が確立されたらSMTP
によってメールを転送する。
(5)メールを受け取ったMTAは、あて先ユーザのメールボックスにメールを格納する。
(6)メールサーバに格納されたメールをメールクライアントで読み出すために、POP
(Post Office Protocol)やIMAP(Internet Message Protocol)を使用する。メールを受け
取ったユーザBは、POPに対応したMUAを用いて読む。

図3 メール配送モデル
2−2 DNS
DNS(Domain Name System)は、ドメイン名を管理する手段のことで、UNIXにおいては
namedまたはin.namedと呼ばれるデーモンがDNSのプログラムにあたる。DNSはインター
ネット上の電話帳のようなものであり、「あるホスト名から、そのホスト名のIPアドレ
スを求めること(正引き)」や「あるドメイン名から、そのドメイン名の配送先MTAの
IPアドレスを求めること(MX)」などの手助けをしてくれる。例えば、
srv.net.c.dendai.ac.jp -> 133.20.160.225
のような対応表を持っているデータベースがDNSである。このデータベースは、インター
ネット上でDNSサーバと呼ばれ、階層的(ツリー状)に分散されている。図を用いて、
ユーザA からユーザBへメールが送られる過程で、ユーザAからメールを受け取った
メールサーバAが、DNSサーバを利用してメールサーバBのIPアドレスを得る方法を説明
する。
ユーザAから送信されたメールを受け取ったメールサーバAは、一番近いDNSサーバに
メールのあて先を問い合わせる。DNSサーバは、そのあて先のMTAのIPアドレスを持っていたら、
そのIPアドレスをメールサーバAに返す。持っていなければ、ルートのDNSサーバに
問い合わせて、トップレベルドメインを管理しているDNSサーバを教えてくれる。今度は、
トップレベルドメインのDNSサーバに同じことを問い合わせると第2レベルドメインを
管理しているDNSサーバを教えてくれる。こうして、ドメインの階層を段々と下位に
降りてきて、(net.c.dendai.ac.jpのDNSサーバを教えてくれる)DNSサーバはあて先の
メール配送を扱うメールサーバBのIPアドレスを教えてくれる。なお、DNSサーバは故障した時のためにサーバの
二重化が義務付けられている。
2-2-1 Aレコード
DNSでは、正引きレコードとしてアドレス(Adress:A)レコードがあり、
srv IN A 133.20.160.225
のように表現される。このAレコードは、そのホストのIPアドレスを表記するのに
用いられる。
2-2-2 MXレコード
メールの配送に影響があるのは、MX(Mail eXchange)レコードである。ドメイン、ホストに
対するメール配送を受け持つMTAを表記するのに用いられる。
@ IN MX 10 srv.net.c.dendai.ac.jp.
@は、net.c.dendai.ac.jpを表していて、このMXレコードの記述は、「net.c.dendai.ac.jp
ドメインあてのメール配送は、srv.net.c.dendai.ac.jpホストが受け持つ」という意味
になる。10という数字は優先度を示し、この数字が一番小さい方から順にメール転送が試みられる。
2-3 POP
自分あてに来たメールを読むためには、自分のローカルPC上のメールクライアントソフトウェアを
使用して、メールサーバに接続する。リモートサーバ上のメッセージをクライアントで読めるようにする
プロトコルをPOP(Post Office Protocol)と呼ぶ。現在、POPのバージョンは3で、
POP3とも言われ、そのプロトコルはコマンドベースである。POP3サーバは、tcp110番ポートのコネクション
リクエストを監視していて、コマンド受け入れの用意ができたことを示すメッセージを
送信することで応答する。コマンド受け入れ用意ができたPOP3サーバは、クライアントに
メッセージのリストを送信する。それぞれのメッセージを個別に転送したクライアントは、
ローカルPC上でそのメッセージの処理を行える。
2-3-1 POPコマンドの例
USER/PASS:パラメータusernameは、ホストPOP3サーバで有効なユーザIDである。パラメータpasswordは、
そのユーザIDのサーバパスワードである。
APOP:クライアントがパスワードを平文のまま送信せずにサーバにログインできる。MD5暗号化パスワードを
使用する。
AUTH:ユーザ認証としてセキュリティを高めたもので、クライアントがサーバとネゴシエーションできるユーザ認証
方法である。
STAT:POP3サーバからメールボックスの現在の状態を示したものを得るために使用する。
LIST:メールボックスのメッセージ番号とそのバイトサイズを含めた一覧を得る場合に使用する。
RETR:メールボックスからそれぞれのメッセージのテキストを取得する。
DELE:サーバ上のメールボックスからメッセージを削除する。
NOOP:POPサーバの接続性を確認する。
RSET:クライアントとサーバとの認証後に、セッション開始のセッションまで戻すためのリセットを行う。
QUIT:POP3セッションを終了する。
TOP:メールボックス中のメッセージを簡潔にした一覧を得る。
UIDL:POP3セッション間でメッセージを固有に特定する。