Web教材一覧ネットワークアプリケーションプロトコル

電子メール

キーワード

郵便と電子メールの比較、SMTP、POP3、IMAP4、sendmail、Qpopper、、MIME、エンコード、BASE64、to、cc、 bcc、不達表示、エラーメッセージ、メールヘッダ、、サーバサイトメールフィルタ、不正中継、POP before SMTP、SMTP AUTH、APOP、S/MIME、PGP


郵便と電子メールの比較

郵便との比較で電子メールの仕組みの概要を説明します。

郵便番号表とDNS

電子メールでは宛先を 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(Simple Mail Protocol)

SMTPは,電子メールの送信および転送を行うプロトコルです。TCPヘッダのポート番号が25であることから,SMTP要求だとわかり,SMTPサーバに送られます。SMTPサーバは宛先のSMTPサーバのIPアドレスをDNSに問合せ,そこへ転送します。受け取ったSMTPサーバは,それを受信者のメールボックスに格納します。

送信での動作

 SMTPでの動きは次のようになります。
   :      ここまでにポート番号25でのコネクションを確立している
    ← 220  ESMTP Sendmail              SMTP準備OK
  →EHLO xxx.highway.co.jp           こちらはxxx.highway.co.jp。メール転送開始  250  mail.highway.co.jp          OK。こちらは mail.kogures.com。MAIL FROM: kogure@highway.co.jp  送信信者は kogure@highway.co.jp。
  ← 250  Sender ok                     OK。RCPT TO: hitoshi@kogures.com     宛先は hitoshi@kogures.com。
  ← 250  Recipient okDATA                             メール本文送信 354                              メール受信開始
  →こんにちは
  →・・・・・            本文
  →さようなら
  →.                                 (本文の最後は「.」)
  ← 250  Message accepted             本文受信OK
  →QUIT                              終了。コネクション解放。
  ← 221                               コネクション解放

 主な応答メッセージは,次の通りです。
 (正常)
   220  サービス開始
   221  サービス終了
   250  要求処理完了
   354  データ入力開始(.だけの行で入力完了)
 (転送エラー)
   421  サービス提供できないので終了
   450  メールボックスが存在しない
   452  メールボックスの容量不足
 (処理継続不能エラー)
   500~504  コマンドのエラー
   550~553  メールボックスのエラー
   551  利用者が登録されていない

このように,SMTPでは発信者のユーザIDは必要ですが,パスワード認証をしていません。第三者がなりすますことが容易なので,発信者が本人かどうかは信じられないのです。

sendmail

SMTPサーバの代表的な管理用ソフトです。UNIX用に作成されたフリーソフトウェアですが,現在では多くのOSに移植されており,事実上の標準ソフトウェアになっています。

POP3(Post Office Protocol version 3)

POP3は,電子メールをメールボックスから取り出すためのプロトコルです。POP3サーバは大きく次の3つの動作をします。
   認証:アクセスしてきた者が電子メールの正規の受取人であるか
   トランザクション処理:メールボックスにある電子メールの情報提供,ダウンロード
   更新:メールボックスからの電子メールの削除など

POP3の動作

 POP3での動きは次のようになります。
   :      ここまでにポート番号110でのコネクションを確立している
  ← +OK                   サービス開始
  →USER hitoshi         私は hitoshi です
  ← +OK  Password ....     OK。パスワードは?
  →PASS xxxxxx          パスワードは xxxxxx です
  ← +OK                     OK
  →STAT                 電子メールの状態は?
  ← +OK  4 messages 5000 octets
                               4通,全体のデータ量は5000オクテット(バイト)
  →LIST                 その一覧表は?
  ← +OK                    一覧表の表示
        1  400
        2  2300
        3  1700
        4  600
  →RETR 1                1通目の表示を
  ← +OK  500 octets
       from  kogure@mail.highway.co.jp
         ・・・
       Subject: ○○会合の通知
       こんにちは
        ・・・・
       さようなら
       .
  →DELT 1                 1通目をメールボックスから削除
  ← +OK  Message 1 has been deleted.
  →QUIT                   終了
  ← +OK

このように,POP3では電子メールを1通ごとにダウンロードしたり,メールボックスから削除したりするのですが,通常のメールソフトではそれを自動化して,すべての電子メールをクライアントにダウンロードして,メールボックスから削除するようにしています(すべて削除しないように設定することもできます)。

Qpopper

POPサーバでは米QUALCOMMから無償配布されている Qpopper というサーバプログラムが広く利用されています。

IMAP4(Internet Message Access Protocol version 4)

IMAP4もPOP3のように電子メールを受信するプロトコルですが,メールボックスから取り出すのではなく読むだけです。メールボックスに残しておくこともできるし、持ち帰る(パソコンに移す)こともできます。POP3が電子メールの管理をクライアント側で行うとは異なり,原則としてメールサーバ側で管理します。
 IMAP4の特徴を列挙します。通常のメールソフトがクライアントで実現していることをサーバで実現しています。

メールボックスの階層化
メールボックスに複数のフォルダを作成し,電子メールの特徴により分類できます。
メールの管理
返信したメールにフラグをつける,作成途中のメールを保存しておき修正できる,メールを検索できるなどの機能があります。
選択ダウンロード
POP3では添付ファイルだけダウンロードするとか,本文に挿入された画像ファイルだけダウンロードするような,部分的な操作ができませんが,IMAP4では可能です。

このように,サーバ側で管理することにより,次の利点があります。

複数パソコン間での管理
オフィス,自宅にパソコンがあり,ノートパソコンを持ち歩いている場合,電子メールがどのパソコンにあるか不明になることがあります。また,あるパソコンにある電子メールを他のパソコンに転送する必要もあります。サーバで集中管理することにより,このような煩雑さが回避できます。
セキュリティ対策
機密性のある電子メールを自宅パソコンに取り出したり,そのような電子メールが入っているノートパソコンを紛失したりすると,セキュリティ上,大きな問題になります。電子メールはサーバだけに保管することにより,対策がとりやすくなります。

IMAP4を用いるには,クライアントとメールサーバの両方に実装する必要があります。多くのメールソフトがIMAP4を取り入れていますが,メールサーバは企業やISPの都合もあり,実装されていないことも多いのが現状です。


伝送コード関連プロトコル

発信者、郵便局、受信者がそれぞれ別々の外国語しか知らないので困ります。また、テキストデータだけでなく写真なども送りたいことがあります。電子メールでは文字コードの違いの変換、バイナリデータの扱いになります。

MIME(Multipurpose Internet Mail Extensions)

電子メールのシステムは,歴史的な経緯から,ASCIIコードのみを送受信することを前提として設計され発展してきました。MIMEは,その制限を外して,各種の文字コード,画像やプログラムなどのバイナリデータも取扱えるようにしたものです。
 MIMEを理解するには,エンコード,コンテント・ヘッダ,マルチパートが重要です。

エンコード
現在でも,メールシステムは7ビットのASCIIコード(日本ではJIS7ビットコード)で送受信することになっています。MIMEは,各種の文字コードやバイナリデータをASCIIテキストに変換して電子メールで送信できるようにし,受け取ったASCIIテキストを元の形式に逆変換します。その変換方式には,quoted-printableとBase64があります。
コンテント・ヘッダ
電子メールは,宛先や題名などのヘッダと本文に分かれます。ヘッダ部に,
本文のコード系を
    Content-Type: text/plain; UTF-8 shift_jis  や
    Content-Type: image/gif  などとして,
変換方式を
    Content-Trasfer-Encoding: base64
のように指定することにより,本文がシフトJISやgif画像をBASE64方式で変換したものだとわかります。
ヘッダ部にも漢字などASCII以外の文字が含まれます。Quoted-Printableに類似した「符号化Q」またはBASE64による「符号化B」によりASCIIに変換されます。
マルチパート
マルチパートは最初に区切り文字を宣言することで,1通のメールのデータをいくつかのパートに分ける方法です。それぞれに別々のデータを収納すると,1通のメールにいろいろな種類のデータを混在させて送れます。これにより,本文中に文字と画像を混在させたり,添付ファイルをつけることができるようになったのです。

quoted-printableとBASE64

上記のように,MIMEで使われるエンコード方式は2種類あります。

quoted-printable
ヘッダの変換ではQエンコードと呼ばれます。
ASCII以外の文字は,1バイトずつ16進数で表し,その前に「=」をつけます。それで1バイトが3バイトになります。ASCIIが大部分で,それ以外の文字が少ないときに用います。
BASE64
ヘッダの変換ではBエンコードと呼ばれます。
データの内容に関係なく,3バイト(24ビット)を6ビットに分割して4文字に変換します。それでデータ量は4/3倍ですみます。添付ファイルのエンコードには普通これを使用します。

電子メール関連事項

to, cc, bcc

宛先指定には、to, cc, bccがあります。

到着時間が不安定

電子メールは、インターネットの特徴である、不特定経路をバケツリレー的に転送されるので、到着時間は不安定です。そのため、後から送信したメールが先に到着することがあります。
締切指定や到着順が重要な商取引メールでは、発信時刻と到着時刻の違いに留意する必要があります。

不到達とその表示

受信者のメールアドレスを間違えた場合は、受信者に到達しないのは当然ですが、それ以外でも不到達になる場合があります。主な不到達メッセージを列挙します。

NDR(Non-Delivery Receipt)
エラーメール、リターンメールともいいます。配信不能のときにメールサーバ管理者のアドレスから自動的に送信者に送られるメールで、「MAILER-DAEMON」「Postmaster」「Mail Deivery Subsystem」のような件名です。
本来はメールサーバのサービス機能なのですが、これを悪用してスパムメールを送信するNDRスパムという手口があり、サービスをやめているサーバもあります。

電子メールには、本文の前にヘッダが付けられています。これを調べることにより、到達するまでに中継したサーバや、発信者のメールソフトなど、いろいろな情報が得られます。
  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自体は,セキュリティへの考慮が不十分ですので,それらの発展的なプロトコルが採用されるようになりました。

メールの暗号化

暗号化するには,暗号方式や電子署名などがありますが,ここではメールソフトによる暗号化を掲げます。

S/MIME(Secure MIME)
電子メールの暗号化方式の標準です。共通鍵暗号と公開鍵暗号を組み合わせたハイブリッド暗号方式です。MIMEにより変換するとともにRSA公開鍵暗号方式を用いて暗号化します。MIMEでのマルチパート機能により、添付ファイルも本文と合わせられるので、S/MIMEでは添付ファイルも暗号化されます。
メール受信者はS/MIMEに対応したメールソフトで受信すれば、署名の検証、証明書の確認などを自動的に行います。そのため、受信者に複雑な操作を強いることなく電子メールのなりすましを防ぐことができます。
PGP(Pretty Good Privacy)
PGPをベースとした公開鍵暗号方式をOpenPGPといいます。これもハイブリッド暗号方式によるメール暗号化プロトコルですが、S/MIMEと異なり、公開鍵の管理は,認証局を設置せず,各利用者の責任で鍵を管理し,取得した公開鍵をチェックします。
POP3S(POP3 over SSL/TLS )
IMAPS(IMAP over SSL/TLS)
POP3あるいはIMAPに伝送路を暗号化するSSL/TLSを組み合わせたプロトコル。SSL等と同様に、サーバは認証局のディジタル証明書をもち,クライアントから送信された認証局の署名付きクライアント証明書の妥当性を確認します。ポート番号=995。

送信側メールサーバでのユーザ認証

SMTPはパスワード確認などをしないので、送信者が他人のメールアドレスを偽って、送信側のメールサーバ(SMTPサーバ)にメールを送ることができます。ために、SMTPサーバはなりすましを防ぐために、次のような本人確認をしています。

POP before SMTP
SMTPはパスワード認証をせず,POP3はパスワード認証をしています。それで,利用者に送信(SMTP)をする前に必ず受信(POP3)をさせて認証を行い,一定時間の間はそのIPアドレスからの送信(SMTP)を許すという方法です。
SMTP AUTH(SMTP service extension for AUTHentication)
これはSMTP自体にパスワード認定を組み入れたものです。
SMTPサーバは,クライアントがアクセスしてきた場合に利用者認証を行い,認証が成功したとき電子メールを受け付けます。
通常のメールソフトはこれに対応しています。
APOP(Authenticated POP)
POP3では,パスワード認証をしますが,そのパスワードを平文で送るので盗聴される危険があります。APOPはパスワードを暗号化して認証をします。APOPは本文は暗号化しません。

メール転送サービスでのフィルタリング

利用者のなかには、複数のインターネットプロバイダと契約して個別のメールアドレスを持っていたり、電子メールサービスを利用するためのメールアドレスを持っている人がいます。
 そのとき、個々のメールサーバにアクセスするよりも、それらのサーバに来たメールを一つのメールサーバに転送してまとめるのが便利です。多くのプロバイダは、メール転送サービスを提供しています。

このとき、転送を受けるサーバが転送元のサーバを信用する必要があります。
 その手段として、OP25BやSMTPSubmissionが用いられ、不適切な転送元を遮断するようにしています。

OP25B (Outbound Port 25 Blocking )
25とは、メール転送プロトコルSMTPのポート番号です。スパムメールなどを送信する場合、契約ISPのメールサーバを介さずに、インターネット上のセキュリティの甘いメールサーバ(あるいは悪意のあるメールサーバ)を使います。自社メールサーバを通さないポート番号25の外部へのパケットを廃棄して転送を遮断します。
副作用もあります。例えば、ホテルなどの外出先でインターネット接続する場合、ホテルが利用者の契約ISPのメールサーバを利用できない場合、ホテルの契約ISPがOP25Bを設定しているとメールが届きません。
SMTPSubmission
SMTPの代替ポート番号587を用いる方法です。587はメール送信者の認証(SMTP認証)を行うことで、スパムメールなどの送信を牽制することができます。
利用者は、メールソフトの設定で、SMTPを587にして、パスワード等を設定しておけば、25と同様な操作でISPメールサーバに送信できます。
25ではないのでOP25Bで遮断されずにISPメールサーバに達します。ISPから他のメールサーバに転送するには25に戻すので、他への影響はありません。

送信側メールサーバでの保証

送信側メールサーバが不正メール受信拒否したり、受信側メールサーバに送信者の正当性を保証する仕組みがあります。

サーバサイトメールフィルタ
ウイルス付きの電子メールや不特定多数へのスパムメールを,メールサーバの段階で受信拒否をすることを,サーバサイトメールフィルタといいます。
 sendmail では処理中のメールに対して他のプログラムからアクセスできる機能を持っていますが,それを利用して,メールのウイルスチェックやスパムチェックをします。
SPF(Sender Policy Framework)
送信側プロバイダは、外部に送出するメールサーバのIPアドレスをDNSサーバに登録しておきます。それをSPFレコードといいます。受信側(中継側)は、送信者のアドレスのドメイン名がDNSサーバにあるSPFレコードに存在することを確認します。これにより、送信者が少なくとも正規のメールサーバを介して送信してきたことが確認できます。
DKIN(DomainKeys Identified Mail)
送信側のメールサーバで電子メールにデジタル署名を付与し、受信側のメールサーバでそのデジタル署名を検証して送信元ドメインの認証を行う方法です。
DMARC(Domain-based Message Authentication Reporting and Conformance)
SPFおよびDKINをベースにして、メールに表示される送信元アドレスドメインがなりすまされていないか、信頼できるものかどうかを判断する標準技術です。
送信元ドメイン認証に失敗した際の電子メールの処理方法を記載したポリシーをDNSサーバに登録し、電子メールの認証結果を監視します。