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セッション間でメッセージを固有に特定する。