2009年6月20日土曜日

メールの仕組み

メールの仕組みということで,メールがどうやって送受信されているのかについて説明する.

PC でメールを使用したことがある人は,メールクライアント(Mac OS X の Mail や Thuderbird など.)に SMTP (Simple Mail Transfer Protocol) サーバと POP (Post Office Protocol) サーバか IMAP (Internet Message Access Protocol) サーバを設定したことがあると思う.それらが正しく設定されていれば,メールは無事に使えるようになったんじゃないかな.こうやって設定した項目が,メールの仕組みを実現する上でどのように動作しているのかを説明していく.

まず,メールのもっとも根幹を担っている SMTP について.Simple Mail Transfer Protocol の名前のとおり,単純にメールを転送するプロトコルだ.太郎 (taro@aaa.com) が花子 (hanako@bbb.com) にメールを送る場合,この図のような流れになる.


1. メール転送
太郎がメールを送ると太郎のメールクライアントは,設定されている太郎のメールサーバ (mail.aaa.com) に花子宛のメールを転送していいか確認し,OK であればメールを転送する.

2. 転送先を調べる
太郎のメールサーバは,花子宛のメールを転送するサーバを調べる必要がある.それは,メールアドレスのドメイン部分(bbb.com) について,ネームサーバの MX レコードを対象として問い合わせることで実現する.この問い合わせによって,花子宛のメールは,花子のメールサーバ (mail.bbb.com) に転送すればいいことがわかる.

3. メール転送
太郎のメールサーバは,花子のメールサーバに花子宛のメールを転送していいか確認し,OK であればメールを転送する.花子のメールサーバは,花子宛のメールを保存するメールボックスがローカルにあるので,そのメールボックスに配送する.

というような流れ.1と3で行っていることが同じってことがわかるかな.メールサーバにこのメール受け取って処理くれる?って聞いて,OK ならメールを転送しているだけ.あとは,メールサーバが別のメールサーバに転送するなり,ローカルのメールボックスに配送するなりを選択しているのだ.2は別のメールサーバに転送するときに転送先サーバを決める重要な作業で,転送先はネームサーバの MX レコードによって決まる.

さて,お気づきのことと思うけど,花子のメールサーバと花子の間に矢印がない.そう,SMTP がサポートするのはここまでなのだ.メールサーバが動いてるサーバのメールボックスまではメールが届くけど,そのメールボックスのメールを普通のユーザは見ることができない.(逆に言えば,PC 上でメールサーバが動いているという稀有な人は,SMTP だけでメールの送受信ができるんだけどね.)

それで登場するのが,POP と IMAP なのだ.


POP はメールサーバのメールボックスからメールを取得するプロトコルで,IMAP はメールサーバのメールボックスを操作するプロトコル.POP はメールをダウンロードして持ってくるだけだから,複数の PC でメールを管理するのには向かない.IMAP はサーバ上にあるメールを参照したり操作したりするから,複数の PC でメールを管理するのには向いている.だけど,サーバに接続しないとメールが見れないので,常時接続じゃないと辛い.というかんじで,それぞれ特徴がある.

今回は,すごく簡単にメールの仕組みを説明した.より具体的な仕組みについては,メールサーバを構築する課程で説明していく予定.まあ,だんだんとわかるようになると思うよ.

参考文献:
sendmail 第3版〈VOLUME1〉運用編

0 件のコメント: