メール送受信のプロトコル

20.1.3.3. メール送受信のプロトコル

インターネットを経由するコンピュータ同士の通信は、常に何らかのプロトコル (通信規則) に従って行われます。メール送受信の際に用いられるプロトコルは主に POP3, IMAP, SMTP ですので、これらの内容を紹介します。

POP3 と IMAP #

メール受信の際に使われるプロトコルのうち、現在広く使われているものは POP3 と IMAP の 2 種類です。教育用計算機システムではどちらも利用することができますが、IMAP の利用が推奨されています。

POP3 (Post Office Protocol VERSION 3) #

POP では、大雑把には次のような手順でメールの受信を行います。

  1. メールクライアントがメールサーバーに「新着メールをください」とリクエストを送る
  2. 要求を受けたメールサーバーは、メールクライアントに全ての新着メールを送信する
  3. メールクライアントはローカルに保存されたメールを画面に表示する
  4. 普通は、メールクライアントがメールサーバーとの通信を終了する際、サーバー上に残っていたメールが削除される

普通は POP で受信したメールは自分のコンピュータに保存され、サーバ上からは削除されます(ただし、そうしないような設定もできます)。そのため一度受信さえしてしまえば、インターネットに接続せずともメールを読むことができます。またメールサーバーに保存されるのは新着メールだけなので、あまりメールサーバーの容量を圧迫しないという利点があります。2000 年頃までは 1 アカウントに割り当てられるメールサーバーの容量はせいぜい 10MB 程度しかなく、現在のようにいつでもどこでもインターネットに繋がる環境があるわけではなかったので、POP を用いた受信が広く使われていました。しかし一度受信してしまったメールは通常メールサーバー上から消えてしまい、受信したのとは別のコンピュータで読むことはできません。これはコンピュータを複数台使っている人には不便なことでした。

IMAP (Internet Message Access Protocol) #

IMAP 方式では、次のようにメールをやりとりします。

  1. メールクライアントは、メールサーバーに「保存しているメールの件名、送信者と受信日時のリストをください」とリクエストを送る
  2. メールサーバーはメールクライアントにリストを返す
  3. メールクライアントは画面にメールのリストを表示する
  4. 人間が表示したいメールを選択すると、メールクライアントが再びメールサーバーに「メール本文をください」とリクエストを送る
  5. メールサーバーがメールクライアントにメール本文を送り、メールクライアントがそれを画面に表示させる

IMAP では、メッセージの未読/既読情報の管理やフォルダ分けもメールサーバー側で行います。そのため単にメッセージを受信する以外にも、サーバー側でこうした機能を実現するための仕組みが IMAP には備わっています。

IMAP では普通、全てのメールをメールサーバー上に置いて扱うので、インターネットに繋がる環境さえあれば、どのコンピュータでも全く同じようにメールが読めます。また、最近では ECCS の Mailsuite をはじめとするウェブメールの環境が広く普及しています。ウェブメールを使うとなるとサーバー上にメッセージがなければいけないので、IMAP はウェブメールと相性の良いプロトコルだと言えるでしょう。

先に説明した POP ではメールサーバーの容量を圧迫しないこと、そして受信後はインターネットに接続しなくてもメールを読めることがメリットでした。しかし現在では 1 アカウントあたりのメールサーバーの容量は数百 MB くらい割り当てられるのが普通で、さらに無線技術の普及により常時インターネットに繋げる環境も手に入るようになりました。そのため IMAP が POP に比べて劣る点は事実上不利益にはならず、むしろどの端末からでも同じメールが読めるという IMAP の利点が生きる環境になりました。

SMTP (Simple Mail Transfer Protocol) #

SMTPは、メール送信の際のプロトコルです。メールの宛先やメール本文をどのようにやりとりするかが SMTP によって規定されています。また、メールメッセージを送信する流れを細かく見ると

  1. メールクライアントが送信メールサーバーにメールメッセージを送る
  2. 送信メールサーバーが宛先のアドレスを見て、そのアドレスのメール受信サーバーに向けてメールメッセージを送る

という 2 段階に分かれますが、1 番でも 2 番でも「メールを送る」という動作自体は同じです。ですのでメールクライアント・メールサーバーの双方がメール送信に SMTP を用います。

暗号化と認証 #

メールサーバーは正しい受取人にメールを届けなければいけません。そのため POP や IMAP によるメール受信の際は、メールサーバーとの間でアカウント名とパスワードによる認証が必要です。しかし上で説明した POP や IMAP の通信では、メールサーバーに送信されるパスワードが暗号化されないまま流れてしまいます。通信をただ傍受するだけでパスワードが見えてしまうので、これは大変危険なことです。そこで現在では POP や IMAP による通信内容を SSL というプロトコルで暗号化する POP/IMAP over SSL による通信が標準となっており、ECCS のメールサーバーへの接続も SSL を通さないとできないようになっています。

また SMTP 自体はそもそも認証の仕組みすら持っておらず、昔は送信メールサーバーに接続さえすれば誰でもメールが送れてしまう状況になっていました。これがスパムメールなどの温床を生む原因となったので、現在では SMTP AUTH という、認証付きの SMTP が広く使われるようになっています。ECCS のメールサーバーでも SMTP で通信する際に認証が求められ、さらに受信時と同様 SSL を通すことが必要になっています。

ただ、これらの技術はいずれも「メールを送受信するクライアントとメールサーバーの間」だけの通信を暗号化するものです。この部分を暗号化したからといって、メールサーバーが別のメールサーバーにメールメッセージを送るときに文面が暗号化されるわけではありません。ですから他人に読まれて困るメールメッセージを送る際は 14.7. 暗号化と電子署名 で説明したような方法を用いて本文自体を暗号化する必要があります。

RFC 1939: POP3 の仕様書です。

RFC 3501: IMAP の仕様書です。

RFC 5321: SMTP の仕様書です。

電子メールの書式 メール送受信のプロトコル 電子メールシミュレータ
このサイトは開発版の はいぱーワークブック です.