電子メールのしくみ


普段電話代わりに使っている電子メールですが、 実はメールシステムの管理をしている方はいろんな苦労をされています。 中味をすべて覚えろとはいいませんが、ある程度のことを把握しておけば より便利に使えますし、ひょっとしたらシステム管理者さんの負荷の軽減 になるかもしれません。

電子メールはその名の通り、電子の力を借りた手紙です。ここで、通常の 手紙(郵政省メールと呼ばれます)と電子メールの違いについて挙げて みましょう。なお、ここではいわゆるインターネットメールを中心にした 話をします。組織の中(イントラネット)に閉じたメールシステムにおいては この限りではないかもしれません。

項目郵政省メール電子メール備考
料金 郵政省で決めている (見かけ上)タダ 実際はプロバイダとの契約の中に入っています。 ただし電子メールの場合は通常1通ごとの課金を行いません。 また、学校や会社からアカウントをもらっている人は、 ほんとにタダですね。
信頼性 日本国内なら、まあ届く 神のみぞ知る:-) メールシステムは動いていても、途中の経路が障害になっていれば 当然メールの配送は行われません。
到達保証 書留? なし 今の技術では「本当に本人が読んだか」を確認する手段はありません。 イントラネットのメールシステムでは受信確認の機能を持つものも ありますが、あくまでも「誰かが受信した」ことまでしか分かりません。 あ、よく考えたら郵政省メールでもあんまり変わらないですね。

次にメールシステムの動作をみて見ましょう。ここではごく単純に、プロバイダA にアカウントを持つX氏が、別のプロバイダBにアカウントを持つY氏に対して メールを送ることを想定しています。

実際のやりとりを少し細かく書くと、以下のようになります。

  1. X氏の操作

    1. 必要であればプロバイダAに電話をかけて、 インターネットにつなぎます

    2. プロバイダA(のメールサーバ)に、書いたメールを送ります。 メール送信の際は SMTP(Simple Mail Transfer Protocol)という手順が 使われます。さらに、この際使用されるサーバを「メール送信用サーバ (またはSMTPサーバ)」と呼びます。

      ※メールサーバというのはメールを送受信するためのコンピュータです。 WWWサーバなどとは別のマシンかもしれないし、 同一のマシンかもしれません。

    3. 必要であれば電話を切ります

  2. プロバイダAの操作

    1. プロバイダB(のメールサーバ)にメールを転送します

      ※専用線接続なので、ダイヤル操作などは行いません。

    と、ここまでです。「あれ、それじゃY氏まで届かないじゃないか」 と思われるかもしれませんが、まさにその通りです。Y氏へのメールは メールサーバ内のY氏用のディレクトリに保存されます。

    一般的に、プロバイダに溜まっているメールを全然読まないでおくと、 メールサーバのディスク容量を圧迫します。そのため多くの プロバイダではユーザ1人あたりのディスク容量を制限しています。 この容量を越えて受信したメールは破棄されます。

  3. Y氏の操作

    1. 必要であればプロバイダBに電話をかけて、 インターネットにつなぎます

    2. プロバイダB(のメールサーバ)に対して 「自分に何かメールが来てませんか?」と問い合わせを行います。 メール受信の際は POP(Post Office Protocol)という手順が 使われます。またメール受信の際に使われるサーバを、特に 「メール受信用サーバ(またはPOPサーバ)」と呼ぶ場合があります。 これはメール送信用サーバと異なる場合もあります。

      ★プロバイダがメールの到着を知らせてくれるわけじゃありません。

  4. プロバイダBの操作

    1. Y氏宛にメールが来ていればそれをY氏に転送し、 なければ「メールはありません」と返事をします。

  5. Y氏の操作

    1. 必要であれば、電話を切ります

「プロバイダBはメールの到着を教えてくれないのか。何て不親切な。」 と思われるかもしれませんが、プロバイダから知らせることを考えると いろいろな問題がありますね。

またX氏にとっては、別にプロバイダAを介さなくても、メールを直接宛先の プロバイダBに送信してもよさそうです。実際以前はそうやることも可能な 場合がありました。ただしこれは、別の問題をはらんでいます。

たとえば悪意の第3者が、プロバイダBに所属する不特定多数の人に DM(ダイレクトメール)で宣伝メール(SPAM(スパム)メールと呼ばれる) を送りつけたいとします。直接任意のプロバイダのメールサーバに送信を依頼 することが可能であれば、To: (宛先)に数千人のメールアドレスを書いて プロバイダBに送りつければ、それは勝手に数千通のメールになって配送 されてしまいます。受け取った方も迷惑ですし、送るためのメールサーバにも 負荷がかかり、そのため多くの会員に迷惑をかける恐れがあります。 このように、不特定多数からのメールの配送依頼を受け付けることを、 Third Party Mail Relay (第3者からのメール中継)といい、 インターネット上では決してやってはならないことになっています。

また万が一相手先のプロバイダが一時的にメールを受け付けてくれなかった 場合、送信元のX氏(のコンピュータ)はどうすればいいのでしょうか? そのメールを送信エラーにすることは簡単ですが、それではユーザは 嬉しくありません。できればユーザとしては、自分の預かり知らないところで 勝手にリトライして、何とか相手先にメールを届ける努力をして欲しいものです。 実際にメールサーバはこのような再送処理もやってくれます。このような 処理をクライアント側に押しつけるのは酷ですね。

そういうことで、文にしてみると結構しち面倒くさい手順を踏んで メールのやりとりを行っていますね。でも、気軽に使えてほとんど コストがかからないので、今の世の中になくてはならないものに なってしまいました。