基本情報技術者試験など情報処理技術者試験を受験する方にとっては必須の,電子メールについてシンプルにまとめています。はじめに,電子メールの概要と,仕組み,MIMEの説明をし,その後,メールアドレス,メールソフト,電子メールの送受信,電子メールのフォーマット(メールヘッダー(From,To,Cc,Bcc,Subject,Date,Received,Return-Path,Message-IDなど),MIMEヘッダー(MIME-Version,Content-Typeなど)),メールサーバー(SMTPサーバー,POPサーバー,IMAPサーバー),MUA,MSA,MTA,MDA,MRAの説明をしています。また,SMTP(電子メールの送信・転送,SMTPのコマンド(HELO,EHLO,MAIL FROM,RCPT TO,DATA,QUIT,RSETなど),SMTPリプライコード(220 サービス準備完了,250 コマンドが正常に終了など)),POP(POPの特徴,電子メールの取り出し,POPのコマンド(USER,PASS,STAT,LIST,RETR,DELE,QUITなど),POPのリプライ(+OK,-ERR)),IMAP(IMAPの特徴,電子メールの取り出しなどの操作(電子メールの取り出し,フォルダーの作成・変更・削除,電子メールの検索・削除など)),Webメール,電子メールのセキュリティ(電子メール送信時の対策,電子メールの暗号化(S/MIME),電子メールの通信経路の暗号化(SMTPS,POPS,IMAPS),メールサーバーの不正中継対策(配送規則,利用者認証(POP before SMTP,SMTP-AUTH),ドメイン認証(SPF,DKIM),OP25B))についても説明しています。たくさんありますので,一つ一つ丁寧に取り組むようにしましょう。
電子メール(e-mail)
電子メールとは,インターネットなどのネットワークを利用して,(テキストなどの)情報を,メールソフトを使用して送受信するシステムをいいます。
※ ファイルや画像などを添付して送受信することもできる
電子メールの仕組み
電子メールの仕組みは,次のとおりです。
電子メールは,メールソフトで作成して,送信者から送信者が契約しているISPなどのメールサーバーに送信し,インターネット上のメールサーバーを経由して,受信者が契約しているISPなどのメールサーバーの受信者のメールボックスに届けられます(受信者に直接届けられるわけではありません)。
届けられた電子メールは,受信者が,受信者が契約しているISPなどのメールサーバーの受信者のメールボックスから取り出すことにより受信します。
会社などが公開サーバーを運営している場合,メールサーバーは,DMZと内部ネットワークに設置することが多いです。
内部ネットワークの内部メールサーバーや端末(PC)を外部に公開しないことで,セキュリティレベルを高めることができます。
※ DMZや公開サーバーについては,「ファイアウォール-ファイアウォールの構成-公開サーバー -情報処理シンプルまとめ」を参照
MIME(Multipurpose Internet Mail Extensions)
MIMEとは,7ビットのASCIIコードで記述された英数字以外のデータ(各国の文字や画像,音声など)を扱えるようにした規格のことをいいます。
※ 電子メールの初期の規格では,7ビットのASCIIコードで記述された英数字と一部の記号だけしか使用できなかった
メールアドレス
メールアドレスの形式は,次のようになっています。
ドメイン名の部分は組織名となっています。ローカルパートの部分はドメイン内で利用者を識別するための固有の名前となっています。
※ ドメイン名の詳細は,「DNS -情報処理シンプルまとめ」を参照
メールソフト
端末(PCなど)のメールソフトについては,あらかじめ,メールアドレスや,電子メールの送受信に使用するメールサーバーなどの設定をしておきます。
電子メールの送受信
電子メールの送受信は,メールソフトを使用して行います。
電子メールを送受信する場合は,送受信ボタンを操作します。電子メールを作成して送信する場合は,あて先電子メールアドレスを指定し,件名,本文などを入力して送信ボタンを操作します。
電子メールのフォーマット
電子メールのフォーマットは,次のようになっています。
メールヘッダーには,次のようなフィールドがあります。
From | 電子メールの送信者の電子メールアドレスを指定するフィールド。複数のメールアドレスをカンマで区切って指定することができる |
To | 電子メールの主たる受信者の電子メールアドレスを指定するフィールド。複数のメールアドレスをカンマで区切って指定することができる |
Cc | Carbon copyの略。Toフィールド以外で,電子メールの複製を配布したい受信者の電子メールアドレスを指定するフィールド。参考に読んでほしい受信者を指定することが多い |
Bcc | Blind Carbon copyの略。電子メールの受信を,他の受信者に公表すべきでない受信者の電子メールアドレスを指定するフィールド。ToフィールドとCcフィールドに指定した受信者から,Bccに指定した受信者の電子メールアドレスを隠ぺいすることができる |
Subject | 電子メールの題名を入力するフィールド |
Date | 電子メールが送信された日時を示すフィールド |
Received | 電子メールが転送されるたびに,送信元,受信先などの情報が追加されるフィールド(受信者に近いほど,上になるように追加される)。詐称メールの経路特定などのために利用することができる Received: from 送信元 by 受信先 受信日時 |
Return-Path | 配送エラーが起きた場合の通知先を示すフィールド |
Message-ID | 電子メールを一意に識別するためのメッセージ識別名を表すフィールド |
In-Reply-To | 返信メールで,元の電子メールのMessage-IDフィールドの内容を表すフィールド。元の電子メールが複数ある場合は,すべての電子メールのMessage-IDフィールドの内容が追加される |
Reference | 元の電子メールのReferenceフィールド(または,In-Reply-Toフィールド)と,元の電子メールのMessage-IDフィールドを表すフィールド |
MIMEヘッダーには,次のようなフィールドがあります。
MIME-Version | MIMEのバージョンを示すフィールド。現在のバージョンは,1.0 |
Content-Type | 電子メールの本文の種類を示すフィールド ・text/plain…ただのテキストメール ・text/html…htmlメール など |
Content-Transfer-Encoding | 電子メールの本文が,どのように表現されているかを示すフィールド |
メールサーバー
メールサーバーには,電子メールを送信する送信用のサーバーと,電子メールを受信する受信用のサーバーがあります。
SMTPサーバー | SMTPプロトコルにより,電子メールを送信・転送するサーバー |
POPサーバー | POPプロトコルにより,電子メールを受信者に送り届けるサーバー |
IMAPサーバー | IMAPプロトコルにより,電子メールを受信者に送り届けるサーバー(受信者が選択した電子メールだけを送り届けることができる)。サーバー側で既読の管理や,フォルダ分けなどをすることができる |
また,メールサーバーや,電子メールを送受信する端末(PCなど)では,次のようなソフトウェアが使用されています。
MUA | Message User Agent。メールソフト(メーラー)。電子メールの作成や,送受信,保存などができるソフトウェア。電子メールを送信する際は,SMTPプロトコルを使用してMTA(MSA)に接続し,受信する際は,POPやIMAPプロトコルを使用してMRAに接続する 例)Outlookなど |
MSA | Message Submission Agent。受け取った電子メールを認証し,MTAに転送するソフトウェア(下図のように,MTAにまとめられていることが多い) |
MTA | Mail Transfer Agent(メール転送エージェント)。MSAや他のMTAから受け取った電子メールを,転送先のMTAに転送する(自身あての電子メールの場合は,MDAに転送する)ソフトウェア。SMTPプロトコルを使用して電子メールを転送する |
MDA | Mail Delivery Agent(メール配送エージェント)。MTAから受け取った電子メールを,個々の受信者のメールボックスに保存するソフトウェア |
MRA | Mail Retrieval Agent。個々の受信者のメールボックスに保存されている電子メールを,受信者のMUAに送信するソフトウェア。受信者がPOPプロトコルやIMAPプロトコルを使用して接続する際には(ユーザーIDとパスワードによる)認証も行う |
これらを図にまとめると,次のようになります。
※ 名前解決の詳細は,「DNS-名前解決の問い合わせ方法 -情報処理シンプルまとめ」を参照
SMTP(Simple Mail Transfer Protocol)
SMTPは,電子メールを送信・転送するためのプロトコルです。電子メールを,メールソフトからメールサーバーへ送信する際や,メールサーバー間で転送する際の,データ形式,伝送手順などが定められています。
※ TCPのポート番号25を使用する
※ 認証の機能はない⇒利用者認証をする場合は,POP before SMTPや,SMTP-AUTHを使用する
※ 暗号化の機能はない⇒SMTP通信全体をSSL/TLSで暗号化する場合は,SMTPSを使用する
電子メールの送信・転送
電子メールの送信・転送は,TCPコネクション確立後に,次のような流れで行われます。
電子メールを,クライアント(メールソフト)からSMTPサーバーに送信する場合も,同じような流れになります。
SMTPのコマンド
SMTPのコマンドには,次のようなものがあります。
HELO | セッション開始を宣言するコマンド 例)HELO smtp01.example.co.jp |
EHLO | セッション開始を宣言するコマンド(SMTPの拡張仕様をサポートしている場合) |
MAIL FROM | 送信元メールアドレスを通知するコマンド 例)MAIL FROM local@example.co.jp |
RCPT TO | あて先メールアドレスを通知するコマンド 例)RCPT TO u01@aaa.co.jp |
DATA | メールデータの送信開始を通知するコマンド。その後,実際にメールデータを送信する。メールデータの最後には,終わりを示すコードとして「.(ピリオド)」を付ける |
QUIT | セッションを終了するコマンド |
RSET | 電子メールの送信処理を中止するコマンド |
VERY | ユーザーを確認するコマンド |
NOOP | 何もしないコマンド(SMTPサーバーの動作確認などに使用する) |
HELP | ヘルプ情報を表示するコマンド |
SMTPリプライコード
220 | サービス準備完了 |
221 | サービス切断 |
250 | コマンドが正常に完了 |
354 | メールデータの送信開始 |
451 | サーバーエラーによる処理の中断 |
500 | 構文エラー |
※ リプライの200番台は処理の完了を,300番台は処置中を,400番台は一時的なエラーを,500番台は継続不可能なエラーを表す
POP(Post Office Protocol)
POPは,電子メールをメールサーバーのメールボックスから取り出すためのプロトコルです。利用者が,メールサーバーのメールボックスから自分あての電子メールを取り出す際の,データ形式や,伝送手順などが定められています。利用者認証の仕組みも備わっています。
※ 現在は,主にPOP3(POPのバージョン3)が使用されている
※ POP3は,TCPのポート番号110を使用する
※ 認証時に使用するユーザー名やパスワードは平文で送受信される
※ 暗号化の機能はない⇒認証情報を暗号化する場合は,APOPを使用する。POPによる通信全体をSSL/TLSで暗号化する場合は,POP3S(POP3 over SSL/TLS)を使用する(APOPについては,脆弱性が見つかっているため,POP3Sの使用が推奨されている)
- 電子メールを取り出す際は,すべての電子メールをクライアント(メールソフト)にダウンロードする
- メールソフトで,既読の管理や,フォルダ分け,閲覧などをする
- 取り出した電子メールは,(基本的には)メールサーバーから削除される
※ 複数の端末で1つのメールアドレスを利用したい場合には向いていない(取り出した電子メールが,メールサーバーから削除され,他の端末で受信することができなくなるため)⇒サーバー上で既読の管理などを行いたい場合は,IMAPやWebメールを利用する
電子メールの取り出し
電子メールの取り出しは,TCPコネクション確立後に,次のような流れで行われます。
POPのコマンド
POPのコマンドには,次のようなものがあります。
USER | ユーザー名を送信するコマンド |
PASS | パスワードを送信するコマンド |
APOP | チャレンジレスポンス方式の認証を要求するコマンド |
STAT | 電子メールの数と,合計データサイズを表示するコマンド |
LIST | 電子メールのリスト(一覧)を表示するコマンド。それぞれの電子メールの番号と,サイズを表示する。番号は,古い順に付けられる |
RETR | 指定した番号の電子メールを取り出すコマンド 例)RETR 3(古い方から3番目の電子メールを取り出すという意味) |
DELE | 指定した番号の電子メールを削除するコマンド 例)DELE 3(古い方から3番目の電子メールを削除するという意味) |
QUIT | セッションを終了するコマンド |
NOOP | 何もしないコマンド(POPサーバーの動作確認などに使用する) |
※ USER,PASSは,利用者認証のために送信する
POPのリプライ
+OK | 成功 例)+OK Logged in.(ログイン成功という意味) |
-ERR | 失敗 |
※ リプライの後に,任意のメッセージが付加される
IMAP(Internet Message Access Protocol)
IMAPは,電子メールをメールサーバーのメールボックスから取り出すためのプロトコルです。利用者が,メールサーバーにアクセスして,自分あての電子メールを確認したり,必要な電子メールを取り出したりする際の手順が定められています。また,利用者認証の仕組みも備わっています。
※ 現在は,主にIMAP4(IMAPのバージョン4)が,使用されている
※ IMAP4は,TCPのポート番号143を使用する
※ 暗号化の機能はない⇒IMAPによる通信全体をSSL/TLSで暗号化する場合は,IMAPSを使用する
- 電子メールの一覧を閲覧して,必要な電子メールだけをクライアント(メールソフト)にダウンロードすることができる(電子メールの一部(ヘッダーなど)だけを取り出すこともできる)
- メールサーバーで,既読の管理や,フォルダ分けなどをする
- 電子メールは,メールサーバーに保存してあるので,複数の端末からアクセスすることができる
※ メールサーバーの容量(の上限)を超過しないよう,(古い)電子メールを削除する必要がある
電子メールの取り出しなどの操作
電子メールの取り出しは,POPと同じような流れになります。
また,その他にも,次のような操作ができます。
- フォルダーの作成・変更・削除
- 電子メールにフラグを付ける
- 電子メールの検索
- 電子メールの削除
※ POPの場合は,(基本的には)電子メールの取り出し(ダウンロード)しかできないが,IMAPの場合は,さまざまな操作を行うことができる
Webメール
Webメールとは,Webブラウザで電子メールの閲覧や送受信ができるシステムをいいます。Webブラウザで管理画面を開き,メールアドレスとパスワードなどを入力して利用者認証することにより使用できます。
※ Webブラウザがインストールされていれば,どんな環境からでも利用できる(メールソフトは必要ない)
※ Gmailなどがある
電子メールのセキュリティ
電子メール送信時の対策
電子メールの送信時には,送信前に確認メッセージを表示し,あて先や添付ファイルなどの確認を促すようなメールソフトを使用するようにします。
電子メールの暗号化
電子メールの暗号化は,本文に対してのみ行われます。
※ メールヘッダー(あて先や送信元の情報,件名など)は暗号化されない
S/MIME(Secure Multipurpose Internet Mail Extensions)
S/MIMEとは,電子メールに暗号化と認証の機能を提供する(MIMEを利用した)規格のことをいいます。S/MIMEを利用することにより,電子メール本文の盗聴や改ざん,送信者のなりすましを防ぐことができます。
※ 送信者側と受信者側のメールソフトがS/MIMEに対応している必要がある(Outlookなどが対応している)
電子メールの通信経路の暗号化
SMTPS,POP3S,IMAP4S
電子メールの通信経路の暗号化には,SSL/TLSを利用します。
※ Webメールの場合は,HTTPSで暗号化する
※ SSL/TLSについては,「」を参照
メールサーバーの不正中継対策
メールサーバーが,スパムメールの踏み台として悪用されないようにするためには,電子メールの配送規則を設定しておきます。たとえば,(会社など)DMZに設置しているメールサーバーの場合は,次のように設定します。
- 自ドメインあての電子メールのみを中継する(自ドメインあての電子メールでない場合は,自ドメイン(自ネットワーク)発信の電子メールのみを中継する)
- 内部メールサーバーあての電子メールのみを中継する(内部メールサーバーあての電子メールでない場合は,内部メールサーバー発信の電子メールのみを中継する)
また,メールサーバーが,不特定のクライアントからの接続を受け付ける場合(ISPなどの場合)は,利用者認証を行います。
利用者認証
POP before SMTP
POP before SMTPは,電子メールの送信前に,POPにより電子メールを受信(受信時に利用者認証が行われる)し,認証されたクライアントに対して,一定時間だけ電子メールの送信を許可する方式です。
※ 認証機能のないSMTPの代わりに,POPでログインさせ認証する
※ 既存の技術で対応できるため,広く利用されている
SMTP-AUTH(SMTP Authentication)
SMTP-AUTHは,電子メールの送信時に利用者認証を行い,認証されたクライアントに対して,電子メールの送信を許可する方式です。
※ 認証機能のないSMTPに,AUTHによる認証機能を持たせた方式
※ クライアントとメールサーバーが,SMTP-AUTHに対応している必要がある
ドメイン認証
SPF(Sender Policy Framework)
SPFは,メールサーバーが電子メールの受信時に,送信元メールサーバーのドメイン名とIPアドレスの適合性を,送信元のDNSに問い合わせて認証する方式です。
※ 送信元を詐称した電子メール(迷惑メール)の受信を防ぐための仕組み
※ あらかじめ,送信元のDNSサーバーのゾーン情報にSPFレコードを追加しておく必要がある。ゾーン情報の詳細は,「DNS-ゾーン情報の設定 -情報処理シンプルまとめ」を参照
DKIM (DomainKeys Identified Mail)
DKIMは,メールサーバーが電子メールの受信時に,電子メールに付与してあるディジタル署名を利用して,送信元のドメイン名を検証し認証する方式です。
※ 送信元を詐称した電子メール(迷惑メール)の受信を防ぐための仕組み
※ あらかじめ,送信元のDNSサーバーに,送信元ドメインの公開鍵を登録しておく必要がある。公開鍵や秘密鍵の詳細は,「暗号化 -情報処理シンプルまとめ」を参照
※ ディジタル署名の詳細は,「認証-ディジタル署名 -情報処理シンプルまとめ」を参照
OP25B(Outbound Port 25 Blocking)
OP25Bとは,ネットワークの(境界)ルーターなどで,外部に向けたポート番号25(TCP)の通信を禁止することをいいます。ISPなどが,利用者からのスパムメールの送信を防止するために行います。
モバイル環境や出張先など外部のISPを経由する場合は,ポート番号25を使用した電子メールの送信はできませんので,サブミッションポート(ポート番号587)を使用します。
※ サブミッションポート…電子メールを,メールソフト(利用者)からメールサーバーに送信する際に用いるポート(TCP)。一般的にはポート番号587を使用し,SMTP-AUTHによる認証が行われる ⇒ 利用者認証が行われるため,利用者からのスパムメールの送信を防止できる。SMTPSを用いて伝送路の暗号化を行う場合は,ポート番号465を使用する
※ ポート番号については,「TCP,UDP(トランスポート層)-トランスポート層-ポート番号 -情報処理シンプルまとめ」を参照
まとめ
今回は,電子メールについて,シンプルにまとめてみました。たくさんあって,大変だったと思いますが,電子メールの仕組みや,各プロトコル,セキュリティについては,特に,しっかり理解できるよう努めましょう。