前回はインターネットの電子メールシステムの概略について解説しました.
送り主が作成した電子メールは,さまざまなプロトコルを介して受け取り主まで届けられます.今回は,電子メールが受け取り主の郵便受けの役目をするサーバに届くまでのしくみを解説します.普段利用しているメールソフトは使わずに,Telnetというコマンドを使って実際にメールを手動で送る実験を行いながらメールを配送するSMTPを解説します.そして届いたメールのヘッダの詳細と,そこから読み取れる情報について解説します.
- メールが届くしくみの復習
- 現在のインターネットでは,図1のようにして電子メールが送り主から受け取り主まで配達されます.
送り主はメールソフトで送りたいメールを作成します.メールソフトに送信を指示すると,メールソフトはSMTPを使ってメールサーバに送信します.このとき送信先となるメールサーバは,インターネットプロバイダから指定されたものを使います.
メールを受け取ったメールサーバは,受け取り主にメールを届けるためにはどのメールサーバに送ればよいかを,受け取ったそのメールからだけでは判断できません.このときメールサーバは,受け取り主のメールアドレスのドメイン名から,送信先のメールサーバを決定しますが,この詳細は次の節で解説します.
送り先が決定したら,メールサーバはSMTPを使ってメールを次のメールサーバに送信します.このようにして,メールは次々とメールサーバによって中継されて,受け取り主の郵便受けのあるメールサーバに到着します.
-
〔図1〕電子メールが配達されるしくみ
- 送信先メールサーバを決める3つの方法
- メールサーバには図2のように2つの働きがあることがわかります.その1つはSMTPによってほかのコンピュータから受け取ったメールの受け取り主が,自分(自サーバ)の郵便受けにいる場合には,図2の(1)のように受け取り主の郵便受けにメールを保存します.
また,自サーバに受け取り主がいなかった場合は,(2)のように次のメールサーバにそのメールを送信します.その際,どのメールサーバに送ったらよいかは,次のような3つの方法によって決定します.
-
〔図2〕メールサーバの2つの動作
- @ 静的配送
メールサーバの設定ファイルの中で,このドメイン名は,このメールサーバという情報を指定する方法で,強制的にメールサーバを指定するときに使います.これは図3のように,いったんファイヤウォールの外側のメールサーバで,すべてのメールを受け取った後,各部署のメールサーバにメールを配送するときによく使われます.
-
〔図3〕静的配送の例
- A MX配送
DNSのMXという情報によって,送信先のメールサーバを決定する方法です.DNSでは,ホスト名からIPアドレスに変換(正引きと呼ばれる)したり,IPアドレスからホスト名に変換(逆引きと呼ばれる)することができます.さらにドメイン名から,そのドメイン名のメールを受信するメールサーバのホスト名に変換する機能があります.
図4はあるDNSサーバの設定ファイルの例です.この中でMX(Mail Exchanger)という行が,このドメインのメールサーバを表しています.あるドメインのメールを受信するメールサーバが1台しかないと,そのメールサーバが停止してしまったときに,まったくメールを受け取ることができなくなってしまいます.このため2台以上のメールサーバを設置して,万が一,1台が停止しても,ほかのメールサーバが肩代わりできるように,システムを構築することができます.
2台以上のメールサーバがある場合,どのメールサーバにメールを送ったらよいのかを決定しなくてはなりません.そのため,各メールサーバに優先順位を付けて,より優先順位の高いメールサーバでメールを受信することができるようになっています.
この優先順位を決定するのが,preferenceという情報です.このpreferenceの値が小さいほど,優先順位の高いサーバであることを表します.図4の例では,mail
1が10,mail 2が20ですので,優先順位が高いのはmail 1となります.もしあるメールサーバが,mail 1にメールを送信しようとして,mail
1とうまく通信できなかったときは,次のmail 2にメールを送信しようと試みます.
-
〔図4〕DNSサーバ(BIND)の設定の例
- B ホスト名配送
受け取り主のメールアドレスのドメイン名の部分をホスト名と見なして,そのホスト名のメールサーバに送信する方法です.先の@やAの方法で送信に失敗したときに,最終的に使われる方法です.ドメイン名と同じ名前のホスト名のメールサーバがあるとは限りません.「できるだけメールが配送できるように努力する」という方針によって,ホスト名配送は「だめでもともと」の覚悟で送信を試みる,という位置付けです.
これらの@,A,Bの順番で,送信先のメールサーバが決定されます.もしどの方法を使っても送信先のメールサーバとうまく通信できなかった場合には,いったんメールの送信を中断します.そして一定時間(通常は1時間程度)経った後に,もう一度送信を試みます.これを数回繰り返して,それでも送信がうまくできなかったときは,送り先のメールサーバに異常があると判断して,送信を中止します.そして送り元に対して,送信ができなかったことを知らせるメールを送信します.
|