Eメールの仕組み

戻る

メールリーダを作成するにあたり、メール伝送の仕組みを知っておくことは有用である。実際のメールリーダの機能としては、POP受信さえ満足に動作すれば足りるのだが、周辺知識を持っておけばそれに越したことはなかろう。

送信においては、クライアントのメールソフトは通常、宛先(受信者)が誰であろうと、身近なメールサーバに対してメールを発信する。このときに使われるプロトコル(手順)がSMTPと呼ばれるもので、発信者のメールアドレスと受信者のメールアドレスに加え、メール本文が送られることになる。送付を受けたメールサーバは、受信者により近いと思われる別のメールサーバに転送を行い、これが繰り返されていくことで最終的に受信者に届くわけである。

SMTPに関する詳細説明は行わないが、簡単に(乱暴に)やり取りを示しておく。ここでは、受信側の返信内容は割愛している。各項1行目のイタリックの部分が、コマンドである。

  1. HELO <送信側ID>
    接続の後、HELOコマンドで、メール処理の開始を通知する。
  2. MAIL FROM:<送信者メールアドレス>
    送信者のアドレスを通知する。エラー時のメールの戻り先でもある。
  3. RCPT TO:<宛先メールアドレス>
    宛先のメールアドレスを通知する。複数の指定も可能。
  4. DATA
    メール本文の送信を行うことを通知する。
  5. メール本文
    メール本文の送信を行う。メール本文は<CR><LF>.<CR><LF>(改行で囲まれた単独のピリオド)でその終わりを示す。

メールリーダを作成する場合の注意がひとつだけある。実際に本文でピリオド1文字のみの行があった場合は、ピリオドを2つ並べたものに変換しておき、受信側で元に戻す処理を行うことになっている点である。上記の通り、ピリオド1文字のみの行は、メール本文の終わりをあらわす決まりになっているためである。送信時にこれを怠ると、本文が延々と続くものと認識される。受信時においては、表示上、ピリオドが余分になるだけなので、影響は小さいだろう。

メールの本文には、ヘッダ情報も含まれている。発信者情報や宛先情報も本文の一部であることに注意して頂きたい。これにより、BCC機能を始め、グループアドレス(メーリングリスト)などのように、表示される宛先と異なったアドレスにメールを送ることができるわけである。SMTPでは、ユーザ名+パスワードのような認証も行われないが、悪用を避けるために、送信者情報のチェックを行うのが普通である。添付書類がある場合も、変換されてメール本文中に含まれることになる。

メールのヘッダ情報のうち、転送経路などはサーバ側が付けて(追加して)いく。メール内容に関するものは、クライアントソフトで付加する。メールリーダが解読すべきなのは、主にクライアントソフトが付加したヘッダ情報であることに注意していただきたい。特殊なクライアントソフトは特殊なヘッダを付加する可能性があるし、ソフトによっては、正しいヘッダを付加しないものもありえるからである。

IMAPについては、将来広まってくる可能性がある。POPがサーバからメールを取り込んでしまうことを基本としているのに対して、IMAPはサーバにメールを残したまま操作するのが最大の相違点である。サーバやネットワーク付加は大きいものの、IMAPを使うことにより、違う場所からでも常に同じ状態で自分のメールを見ることができるようになる。


ProtocolNameRFC
SMTPSimple Mail Transfer Protocol821
MAILFormat of Electronic Mail Messages822
IMAPV4Internet Message Access Protocol v4rev12060