Web教材一覧> ネットワーク> アプリケーションプロトコル
郵便と電子メールの比較、SMTP、POP3、IMAP4、sendmail、Qpopper、、MIME、エンコード、BASE64、to、cc、 bcc、不達表示、エラーメッセージ、メールヘッダ、、サーバサイトメールフィルタ、不正中継、POP before SMTP、SMTP AUTH、APOP、S/MIME、PGP
郵便との比較で電子メールの仕組みの概要を説明します。
電子メールでは宛先を kogure@mail.sample.com のように記述します。kogure をユーザ名、mail.sample.com をドメイン名といいます。ドメイン名は住所に相当します。
郵便では機械が処理しやすいように郵便番号を記入します。電子メールでも電子メールシステムは 192.168.0.20 のようなIPアドレスで宛先を認識します。
IPアドレスが郵便番号と違うのは、番地やマンションの室まで(ここでは宛先の私書箱まで)を指定していることです。それにより、ドメイン名とIPアドレスは1対1の対応になり、世界中で同じものはないことになります。
ドメイン名は知っていてもIPアドレスを覚えるのは大変です。それでドメイン名だけを指定すれば、電子メールシステムが自動的にIPアドレスを探して、電子メールを送ってくれる仕組みになっています。その仕組みをDNS(Domain Name System)といいます。→参照:DNS
郵便に私書箱というのがあります。送信者がポストに投函した郵便物は,郵便局員にて収集され最寄の郵便局(これをここでは「送信者側郵便局」とします)にまとめられ,宛先の郵便番号により宛先の郵便局(「受信側郵便局」とします)に送られて,受信側郵便局に設けられた受信者の私書箱に保管されます。受信者は鍵を用いて私書箱から郵便物を取り出します。

電子メールでは,送信者はメールソフトを用いて、電文を送信側郵便局に相当するISPのメールサーバに送ります。送信側メールサーバは宛先のIPアドレスを見て,受信側のメールサーバに電子メールを転送します。電子メール送信・転送にはSMTPというプロトコルが使われます。
受信側メールサーバはそれをメールボックス(私書箱)に保管します。受信者はメールソフトを用いて,自分宛のメールをメールボックスから自分のパソコンに取り出します。電子メールを受信するプロトコルには、POP3あるいはIMAP4があります。
通常は送信も受信も同じメールソフトを用いていますが,内部では,送信および転送にはSMTP,受信にはPOP3/IMAP4という異なるプロトコルが使われているのです。
SMTPは,電子メールの送信および転送を行うプロトコルです。TCPヘッダのポート番号が25であることから,SMTP要求だとわかり,SMTPサーバに送られます。SMTPサーバは宛先のSMTPサーバのIPアドレスをDNSに問合せ,そこへ転送します。受け取ったSMTPサーバは,それを受信者のメールボックスに格納します。
SMTPでの動きは次のようになります。
: ここまでにポート番号25でのコネクションを確立している
←
→EHLO xxx.highway.co.jp こちらはxxx.highway.co.jp。メール転送開始
←
→MAIL FROM: kogure@highway.co.jp 送信信者は kogure@highway.co.jp。
←
→RCPT TO: hitoshi@kogures.com 宛先は hitoshi@kogures.com。
←
→DATA メール本文送信
←
→こんにちは
→・・・・・ 本文
→さようなら
→. (本文の最後は「.」)
←
→QUIT 終了。コネクション解放。
←
主な応答メッセージは,次の通りです。
(正常)
220 サービス開始
221 サービス終了
250 要求処理完了
354 データ入力開始(.だけの行で入力完了)
(転送エラー)
421 サービス提供できないので終了
450 メールボックスが存在しない
452 メールボックスの容量不足
(処理継続不能エラー)
500~504 コマンドのエラー
550~553 メールボックスのエラー
551 利用者が登録されていない
このように,SMTPでは発信者のユーザIDは必要ですが,パスワード認証をしていません。第三者がなりすますことが容易なので,発信者が本人かどうかは信じられないのです。
SMTPサーバの代表的な管理用ソフトです。UNIX用に作成されたフリーソフトウェアですが,現在では多くのOSに移植されており,事実上の標準ソフトウェアになっています。
POP3は,電子メールをメールボックスから取り出すためのプロトコルです。POP3サーバは大きく次の3つの動作をします。
認証:アクセスしてきた者が電子メールの正規の受取人であるか
トランザクション処理:メールボックスにある電子メールの情報提供,ダウンロード
更新:メールボックスからの電子メールの削除など
POP3での動きは次のようになります。 : ここまでにポート番号110でのコネクションを確立している ← →USER hitoshi 私は hitoshi です ← →PASS xxxxxx パスワードは xxxxxx です ← →STAT 電子メールの状態は? ← →LIST その一覧表は? ← →RETR 1 1通目の表示を ← →DELT 1 1通目をメールボックスから削除 ← →QUIT 終了 ←
このように,POP3では電子メールを1通ごとにダウンロードしたり,メールボックスから削除したりするのですが,通常のメールソフトではそれを自動化して,すべての電子メールをクライアントにダウンロードして,メールボックスから削除するようにしています(すべて削除しないように設定することもできます)。
POPサーバでは米QUALCOMMから無償配布されている Qpopper というサーバプログラムが広く利用されています。
IMAP4もPOP3のように電子メールを受信するプロトコルですが,メールボックスから取り出すのではなく読むだけです。メールボックスに残しておくこともできるし、持ち帰る(パソコンに移す)こともできます。POP3が電子メールの管理をクライアント側で行うとは異なり,原則としてメールサーバ側で管理します。
IMAP4の特徴を列挙します。通常のメールソフトがクライアントで実現していることをサーバで実現しています。
このように,サーバ側で管理することにより,次の利点があります。
IMAP4を用いるには,クライアントとメールサーバの両方に実装する必要があります。多くのメールソフトがIMAP4を取り入れていますが,メールサーバは企業やISPの都合もあり,実装されていないことも多いのが現状です。
発信者、郵便局、受信者がそれぞれ別々の外国語しか知らないので困ります。また、テキストデータだけでなく写真なども送りたいことがあります。電子メールでは文字コードの違いの変換、バイナリデータの扱いになります。
電子メールのシステムは,歴史的な経緯から,ASCIIコードのみを送受信することを前提として設計され発展してきました。MIMEは,その制限を外して,各種の文字コード,画像やプログラムなどのバイナリデータも取扱えるようにしたものです。
MIMEを理解するには,エンコード,コンテント・ヘッダ,マルチパートが重要です。
上記のように,MIMEで使われるエンコード方式は2種類あります。
宛先指定には、to, cc, bccがあります。
電子メールは、インターネットの特徴である、不特定経路をバケツリレー的に転送されるので、到着時間は不安定です。そのため、後から送信したメールが先に到着することがあります。
締切指定や到着順が重要な商取引メールでは、発信時刻と到着時刻の違いに留意する必要があります。
受信者のメールアドレスを間違えた場合は、受信者に到達しないのは当然ですが、それ以外でも不到達になる場合があります。主な不到達メッセージを列挙します。
電子メールには、本文の前にヘッダが付けられています。これを調べることにより、到達するまでに中継したサーバや、発信者のメールソフトなど、いろいろな情報が得られます。
Return-Path: 返信用メールアドレス(通常は発信者メールアドレス)
X-Original-To: 送信者が本来送信した宛先。別のメールアドレスに転送している場合などに付加される。
Delivered-To: 転送先のメールアドレス
Received: from 送信元ホスト名、IPアドレス
by 受信(中継)サーバ名 with SMTPなどの転送方法 id 転送時のID番号
for 宛先のメールアドレス; 処理時刻
(中継サーバの数だけ繰り返す)
Message-ID: メールサーバで付加されるメールの識別番号
From: 発信者メールアドレス
To: 受信者メールアドレス
Cc: Cc指定での受信者メールアドレス
Bcc: Bcc指定での受信者メールアドレス
(発信者からの送信では記載されるが、中継サーバを通るときに削除される)
Reply-To: 返信先のメールアドレス
Subject: 件名・題名
Date: 受信日
MIME-Version: 1.0
Content-Type: ファイルの形式、文字コード
Content-Transfer-Encoding: エンコード方式
X-Mailer: 送信したメールソフトの名称
電子メールでは,なりすましや盗聴などへのセキュリティ対策が重要な課題になっています。SMTPやPOP3自体は,セキュリティへの考慮が不十分ですので,それらの発展的なプロトコルが採用されるようになりました。
暗号化するには,暗号方式や電子署名などがありますが,ここではメールソフトによる暗号化を掲げます。
SMTPはパスワード確認などをしないので、送信者が他人のメールアドレスを偽って、送信側のメールサーバ(SMTPサーバ)にメールを送ることができます。ために、SMTPサーバはなりすましを防ぐために、次のような本人確認をしています。
利用者のなかには、複数のインターネットプロバイダと契約して個別のメールアドレスを持っていたり、電子メールサービスを利用するためのメールアドレスを持っている人がいます。
そのとき、個々のメールサーバにアクセスするよりも、それらのサーバに来たメールを一つのメールサーバに転送してまとめるのが便利です。多くのプロバイダは、メール転送サービスを提供しています。
このとき、転送を受けるサーバが転送元のサーバを信用する必要があります。
その手段として、OP25BやSMTPSubmissionが用いられ、不適切な転送元を遮断するようにしています。
送信側メールサーバが不正メール受信拒否したり、受信側メールサーバに送信者の正当性を保証する仕組みがあります。