電子メールの仕組み

ここでは、電子メールの送信から受信までの流れを説明していきます。

①送信クライアント(MUA)は、メールサーバ(MTA)にメールの送信を依頼する。

 MUAは、テキストデータを7ビットのASCIIコードでSMTPプロトコルのTCP25番ポートを使用します。漢字や画像ファイルは、BASE64方式によってASCIIコードに変換される。

②送信を依頼されたメールサーバは、いったん、メールをメールキューに格納する。

③送信を依頼されたメールサーバは、最寄りのDNSサーバで名前解決を試みる。

ドメインツリーの最上位であるルートネームサーバから順に問い合わせて行きます。

④配送先のメールサーバのIPアドレスを回答する。

MXレコードによって配送先のメールサーバのホスト名も求め、Aレコードで対応するIPアドレスを求める。

⑤TCPで接続してから、送信元アドレス、宛先アドレス、メールの本文という順番でデータを送る。

⑥配送先のメールサーバは、いったん、メールをメールキューに格納する。

⑦受信クライアントのMUAは、ユーザ認証が終わると、POP3プロトコルのTCPポート110番を用いてメールを受信する。

 ユーザー認証には、パスワードを平文で送るPASSコマンドを用いる方法と、毎回異なるパスワードを利用してユーザー認証を行うAPOPコマンドを用いる方法などがあります。

メールヘッダの読み取り方

迷惑メールを例にメールヘッダの読み取り方を説明して行きます。

下の迷惑メールの例は、情報セキュリティ試験において午後Ⅰの問1で出題されたものです。

Receivedは、以下のように読み取ります。

 Received: from メールサーバA by メールサーバB

 メールサーバAからメールサーバBによって受信した。

受信するメールサーバBは偽装のしようがありません。fromは、Helloコマンドで偽装されます。

最初に経由したメールサーバのReceivedが一番下にくるようになっています。

メールは偽装され易い

電子メールは、簡単にコピーされたり、偽装がされやすい媒体です。

メール送信の流れは、以下のようになっています。

①TCPスリーウェイハンドシェイク

②SMTPセッション

まず、HELOまたはEHLOコマンドでSMTPセッションを開始する。

そして、以下のコマンドで送信元と宛先を通知します。

Mailコマンド・・・MAIL From:<reverse-path>(送信元)
RCPT TOコマンド・・・RCPT TO:<forward-path>(送信先)

このコマンドで送信元と送信先を偽装したものにすり替えることで、偽装メールが簡単に作られてしまいます。

そこで、現在では、様々な対策が取られています。