メールヘッダの Received フィールドの読み方
情報シナジーセンター 水木敬明
1 はじめに --- 差出人情報の偽装は容易? ---
電子メールの差出人の情報(From フィールド)は,わりと簡単に偽装がで
きてしまうことをご存知の方も多いと思います。例えば,普段お使いの
Microsoft Outlook Express などのメールリーダ(*1)
において,自分の名前の情報やメールアドレスを他
人のものに変更してから送信してみても,多くの場合,宛
先のアドレスにちゃんと届いてしまいます
(*2)。このことは何を示唆してくれるのでしょうか?
それは,自分が受け取ったメールの中に含まれている差出人の情報を,いつ
もそのまま盲信してはいけない,ということになると思います。
…ちょっとおおげさに書いてしまいましたが,もちろん,ほとんどの場合,
いつもやりとりしている相手からのメールであれば,本文の内容からも相手が
すぐに確認できますし,毎回「差出人が本物だろうか?」といちいち懐疑的に
なる必要はありません。
注意深くなる必要が生じるのは,見知らぬ相手から本文の内容に全く心当り
のないメールが届いたようなときです。あるいは,知っている相手からでも,
本文の内容が意味不明なメールが届いたようなときにも注意が必要です。これ
らのメールが届く原因は,いわゆる spam メールやウイルスメールである場合
がほとんどでしょう。もしあなたがそのようなメールを受け取った場合には,
勢いにまかせてそのメールの差出人に苦情を言う前に,少し冷静になって,
「差出人の情報は常に偽装されている可能性がある」
ということぜひ思い出していただければ幸いです。もしも偽装されている差出
人の情報をそのまま正しいと信じ込んで,その差出人に苦情を言ってしまうと,
全くのぬれぎぬの人に文句を言ってしまうことになり,(経験上から言えるこ
とですが)問題が余計に複雑になってしまうことが強く予想されます。
例として,次のようなメールが花子さんに届いた場合を
考えてみることにしましょう。
Subject: Mail Delivery System (hanako@ex.tohoku.ac.jp)
From: taro@rei.topic.ad.jp
To: hanako@ex.tohoku.ac.jp
Date: Tue, 8 Mar 2005 17:32:54 +0900
Mail Delivery Failure - This mail couldn't be shown.
------------- failed message -------------
2,mnqxZk,jgsdf:YE#0yB.+sgH| -JNqMd9n#OC,SQ-
V-8&6W0KtK|LGB06c2Y,9.Zutqn0pIoG..gBB5Lmga+W
nKrGhk+F|hS2aY'3i44+asdfLj_6nd4LXQtyt.USYfP
Note: Received message has been sent as a binary file.
|
花子さんのメールアドレスは hanako@ex.tohoku.ac.jp です。こ
のアドレスが宛(先(To フィールド)に
セットされていますね。実はこのメールは,Netsky.Q というワーム(*3)で,いわゆるウイルスメールです。花子さんは,この
メールを自分のメールリーダで受信して,ウイルスメールであることに気付き
ました。そして,差出人の情報,すなわち From フィールドを見てみると,
From: taro@rei.topic.ad.jp
|
となっているので,taro@rei.topic.ad.jpというアドレスの持ち
主である太郎君に文句を言ってやろうと思いました。しかし,ここで花子さん
は冷静になる必要があります。一番最初に述べましたように,From フィール
ドは常に偽装されている可能性があります。実際,あるパソコンが Netsky.Q
に感染してしまった場合,そのパソコン内のファイルからメールアドレスが抽
出され,それが偽装用差出人アドレスとして From フィールドにセットされま
す。今回の例の場合,ウイルスに感染した(太郎君のものではない)パソコン
内のあるファイルに,たまたま太郎君のアドレスが含まれていて,太郎君のア
ドレスが差出人にセットされたうえで,その感染パソコンから上記のメールが
発信されたのです。つまり,わかりやすく言うと,太郎君はウイルスメールを
発信した犯人ではなく,アドレスを騙(
られてしまったことになります(*4)。
それでは一体,この花子さんへのメールは,どこから発信されたものなので
しょうか? ウイルスメールを発信したパソコンを特定することはできないの
でしょうか? このことを知る手掛りとなる情報が,メールヘッダと
呼ばれるものの中に含まれてます。そして特に重要なのが,メールヘッダの中
の Received フィールドです。本稿では,この「Received フィール
ド」というものに焦点を絞り,ごく基本的なことについて簡単に説明したいと
思います。Received フィールドの意味を理解できると,メールの本当の発信
者を特定したいときにとても役に立ちます。例えば,上の例にも出てきた
Netsky.Q によるウイルスメールでは,Received フィールドを確認することで,
ほとんどの場合ほぼ確実に,そのウイルスメールを発信したパソコン(の IP
アドレス)を知ることができます。なお,Received フィールドを詳細に解析
しても,やはり限界というものがあり,確実に発信者を追跡できるわけではな
いことをあらかじめ申し上げておきます(*5)。ただし,
Received フィールドの読み方を知っているのと知らないとでは,得られる情
報に関して,極めて大きな差があることには疑いの余地がありません。
以下本稿の構成は次の通りです。まず 2 節において,メールヘッダとは何
かについて説明します。次に 3 節において,Outlook Express を例に取りメー
ルヘッダの表示の仕方を紹介します。次に 4 節において,Received フィール
ドの読み方について説明します。最後に 5 節でまとめます。
2 メールヘッダとは
本稿の目的は Received フィールドの読み方を説明することですが,そのた
めに,本節では Received フィールドが含まれる「メールヘッダ」について簡
単に説明したいと思います。
一般に,受信したメールをメールリーダで読む場合,メールリーダはメール
の全て(*6) を表示するわけではなく,必要な部分だけ
を取り出してユーザに対し表示しています。つまり,普段メールを読んでいる
とき,実は直接ユーザには見えない部分が存在しています。少しわかりづらい
と思いますので,具体的な例を挙げて説明しましょう。メールメッセージは一
般に次のような形をしています。
Received: from mx.rei.topic.ad.jp ([202.211.0.xx])
by mail.ex.tohoku.ac.jp; Wed, 9 Mar 2005 16:29:14 +0900
Received: from pc1.rei.topic.ad.jp ([202.211.0.yy])
by mx.rei.topic.ad.jp; Wed, 9 Mar 2005 16:29:02 +0900
X-Mailer: Michinoku Message Reader 0.49
Message-Id: <200503090729.j227SNHK090219.taro@rei.topic.ad.jp>
Subject: tomorrow's meeting
From: taro@rei.topic.ad.jp
To: hanako@ex.tohoku.ac.jp
Date: Wed, 9 Mar 2005 16:28:23 +0900
明日の研究打ち合わせは何時から始めましょう?
太郎より
|
アルファベットの列とコロン,あるいは空白で始まる 1 行目から 10 行目は,
ヘッダと呼ばれる部分です。ヘッダの次に空白行(11行目)があり,その後ろ
にメッセージ本体(12行目と13行目)が続きます。私たちがメールリーダで一
番よく目にするのは,もちろん(この例では下から2行分の)メーセージ本体
ですね。その他,件名(Subject フィールド),差出人(From フィールド),
宛(先(To フィールド),および日付
(Date フィールド)あたりの情報が,メールリーダによって表示されている
と思います。一方,普段あまり目にしないものとして,Received フィールド
や X-Mailer フィールドなどがあります。つまり,メールリーダは,ヘッダの
中から必要と思われるフィールドだけを取り出して,メッセージ本体とともに
ユーザに表示してくれているのです。そして実は,ヘッダの隠れている部分に,
有益な情報が潜んでいることがあるのです。
3 メールヘッダの表示の仕方
本節では,Microsoft Outlook Express を例に取って,(いつもは隠れてい
る)メールヘッダを表示する方法を説明します(*7) 。

図 1: [プロパティ]を選択
まず,Outlook Express において,受信トレイを開きましょう。次に,図 1
の通りに実行しましょう。すなわち,ヘッダを表示したい目的のメールの上で
右クリックを実行し,プルダウンメニューを出し,その中から[プロパティ]
を選択します。そうすると,図 2 の左側のようなウィンドウが表示されます。
そこで,[詳細]タブをクリックすると,図 2 の右側ように,めでたくメー
ルヘッダが表示されるはずです(*8) 。

図 2 : [詳細]タブをクリック
なお,メールのプロパティを開く別な方法として,受信トレイから目的のメー
ルを開き,[ファイル]→[プロパティ]と選択することによっても,同じ結
果が得られます。
Outlook Express 以外のメールリーダをお使いの方は,それぞれのマニュア
ルでヘッダの表示法をご確認いただければ幸いです。
4 Received フィールドの読み方
本節では,いよいよ Received フィールドの中身を実際に見ていきましょう。
最初に,2 節で出てきたメールをもう一度例に取って,Received フィール
ドを見てみることにしましょう。ヘッダの中から,説明に必要な部分として,
Received フィールド,From フィールドおよび To フィールドだけを抜き出し
てみます。
Received: from mx.rei.topic.ad.jp ([202.211.0.xx])
by mail.ex.tohoku.ac.jp; Wed, 9 Mar 2005 16:29:14 +0900
Received: from pc1.rei.topic.ad.jp ([202.211.0.yy])
by mx.rei.topic.ad.jp; Wed, 9 Mar 2005 16:29:02 +0900
From: taro@rei.topic.ad.jp
To: hanako@ex.tohoku.ac.jp
|
Received フィールドが 2 つあり,From フィールドと To フィールドがそれ
ぞれ 1 つずつありますね。そして,Received フィールドはどちらも 2 行に
亘(っていることがわかりますね。例え
ば,上のフィールドである 1〜2 行目を見てみると,「Received:
」から始まって「from …」と続いて,改行の後にいくつかの空白か
あってから「by …」と続いています。このような「折り畳み」によ
り,フィールドを複数行に分割することができます。
…少し文法的な方向に話が脱線してしまいました。元々の目的である
Received フィールドの読み方の解説に戻りましょう。このヘッダ部分 6 行を
眺めることによって,どのようなことがわかるのでしょうか? 簡単に言うと,
Received フィールドを見ることによって,メールがどのようなところを経由
して自分まで配送されてきたかがわかります。もう少し具体的には,だんだん
慣れてくると,このヘッダを見ることによって,図 3に描かれているような状
況がすぐに頭に浮かんでくるようになります。

図 3: メールの配送の流れ
図 3 は,太郎君から花子さんへのメールがどのように配送されたかを示して
います。太郎君のパソコン pc1.rei.topic.ad.jp (以下では簡単の
ため「pc1」と書きます)から発信されたメールは,太郎君が使って
いるメールサーバ mx.rei.topic.ad.jp (同様に「mx」と
書きます)と花子さんが使っているメールサーバ
mail.ex.tohoku.ac.jp (同様に「mail」と書きます)を
経由して,花子さんに届いています。さて,Received フィールドが 2 つあっ
たことを思い出して下さい。下の方のフィールドは,
Received: from pc1.rei.topic.ad.jp ([202.211.0.yy])
by mx.rei.topic.ad.jp; Wed, 9 Mar 2005 16:29:02 +0900
|
でしたね。実はこのフィールドは,サーバ(*9)
mx が 3 月 9 日(水)の 16 時 29 分 02 秒にメールヘッダに書き
込んだもので,図 3 の矢印(a)に対応する部分のメールの流れを示しています。
つまり,「by …」のところに書かているマシン(この例では
mx)が,「from …」のところに書かているマシン(この
例では pc1)からメールを受け取ったことを示しています。また
「from …」のところには,「([202.211.0.yy])」という
ふうに,pc1 の IP アドレスも書かれていますね(*10) 。それでは,もう一つの Received フィールド,
すなわち上の方のフィールドを見てみましょう。
Received: from mx.rei.topic.ad.jp ([202.211.0.xx])
by mail.ex.tohoku.ac.jp; Wed, 9 Mar 2005 16:29:14 +0900
|
もうおわかりかもしれませんが,「by …」のところに記されている
マシンが,このフィールドを付けたことになります。つまり,このフィールド
はサーバ mail が 16 時 29 分 14 秒に付けたものですね。そして,
このフィールドは,「mx → mail」というメールの配送を
表しており,図 3 の矢印(b)の部分を示していることは,もう詳しく説明しな
くても大丈夫ですね。
繰り返しになりますが,大事なことは,「by …」にあるマシンが
「from …」にあるマシンからメールを受け取ったということと,そ
のフィールドを書いたのは「by …」にあるマシンであるということ
です。また,もうお気付きの方もいらっしゃるかと思いますが,ヘッダにおい
て,より上にある Received フィールドが,自分からみてより近いところで行
われた配送処理を表わしています。つまり,メールを中継してくれるサーバは,
配送処理を行うたびに,新しい Received フィールドをどんどん上に追加して
いくのです(*11) 。図 3 の例の場合も,花子さんに
近い(b)の処理の方が(a)の処理よりも,ヘッダにおいては上にありますよね。
少しずつ Received フィールドの読み方がわかってきたところで,別な例を
取り上げてみましょう。次のヘッダは,1 節で出てきた Netsky.Q によるウイ
ルスメールのものです。
Received: from ex.tohoku.ac.jp (pasokon.example.jp [192.42.103.xx])
by mail.ex.tohoku.ac.jp; Tue, 8 Mar 2005 17:35:12 +0900
From: taro@rei.topic.ad.jp
To: hanako@ex.tohoku.ac.jp
|
花子さんは,From フィールドにある太郎君に文句を言う前に,冷静になる必
要があったのでしたね。そこで,Received フィールドを見てみましょう。ひ
とつしかないこの Received フィールドは,花子さんのメールサーバ
mail が付けたものですね。そして,「from …」のところ
を見ると,ex.tohoku.ac.jp からこのウイルスメールを受け取った
ように見えますが,一方「pasokon.example.jp [192.42.103.xx])」
というコメント表示もあります。正解を言ってしまうと,このウイルスメール
は,192.42.103.xx という IP アドレスを持ち,その逆引きドメイン名が
pasokon.example.jp であるパソコンから発信されたものです。
「from …」の直後の「ex.tohoku.ac.jp」は,その感染パ
ソコンが自己申告した情報をそのまま記しただけであり,正確なものであると
は限らないのです。それに対し,その後ろの括弧内は,サーバ mail
が自分で接続元を調べて記したものです。つまり,サーバ mail が
正常であれば,括弧内のコメントは正確なものになります。
このように,Netsky.Q のようなウイルスメールの場合,ほぼ確実に感染パ
ソコンの IP アドレスを特定することができます。ここで大事なことは,
「from …」のあとの括弧内は,「by …」あるサーバが自
分で接続元を調べて記したものであり,信頼性が高いということです(ただし,
過信は禁物です)(*12) 。
最後に練習問題をひとつ。花子さんのメールサーバ mail ととも
にsmtp.tohoku.jp もウソをつかないとするとき,「太郎君を
ruby>騙(