[Network] | |||||||||||
ウイルス・メールの送信元を調査する―― メールのReceived:フィールドを使って送信経路を追跡する ――
|
|||||||||||
|
解説 |
電子メールのヘッダ部分には、そのメールが途中経由してきた中継サーバを表すための「Received:」というヘッダ情報が付けられている。これを調べることにより、そのメールがどこからやってきたかを知ることができる。特にウイルス付きのメールなどを受け取った場合に、そのメールを送信しているのは誰か(どういうIPアドレスを持つホストか)ということが分かる。最近のウイルス・メールやスパム・メールは、送信者アドレスを偽装するのが普通なので(こうすればメール・システムのフィルタリング設定などをすり抜けやすいから)、メールに書かれている送信者の電子メール・アドレスがそのメールを送信しているということはまれである。本当にその本人が送信しているのか、それとも単に送信者アドレスを偽装して送信しているのかを判断するためには、このようなヘッダの詳細なチェックが欠かせない。メールの送信者がだいたい分かれば、例えばそのメールを送信しているプロバイダや組織に連絡して適切な措置を施してもらうように依頼したり、メールの受信用フィルタなどを設定したりすることができるだろう。本TIPSでは、メール・ヘッダに書かれている情報のうち、Received:フィールドの情報に注目して、その意味を解説する。
メール・ヘッダの例
Windows TIPS「Outlook Expressでメール・メッセージのソース情報(ヘッダ情報)を表示する」では、メールの内容を簡単に表示させる方法を紹介した。この方法を使うと、メールの本文部分以外に、メール・ヘッダと呼ばれる部分の情報も簡単に調べることができる。このヘッダ部分には、そのメールに関する詳細な情報が記録されているので、メールの解析をする場合には不可欠な情報である。Outlook Express以外でも、このようなメールのヘッダ部分を確認する手段は用意されていることが多いので、それぞれのメール・ソフトウェアのヘルプなどで調べて、メール・ヘッダの情報を表示させてほしい(Outlook 2003ならば、メッセージを選択したうえで、[オプション]メニューを表示させる。すると[メッセージ オプション]ダイアログの下部にメール・ヘッダ部分が表示されている)。
1: Received: from mail.XXXDOMAIN.JP ([MM.MM.MM.MM]) by mail.YYYDOMAIN.JP with Microsoft SMTPSVC(5.0.2195.6713); |
これは、あるメール・アドレスあてに送られてきたウイルス・メールのヘッダ部分である(赤字の部分は架空の文字列に変更してある。MM.MM.MM.MMとNN.NN.NN.NNはIPアドレス)。このメール・アドレスは、連絡用としてWebページ上で公開されているため、スパム・メールやウイルス・メールがよく届く。この場合、「From:」に書かれているアドレス(9行目)は詐称されているが、「To:」に記述されているアドレス(10行目)は正式なメール・アドレスである。ただし、ある1つの公開メール・アドレスを組織内で複数のユーザーのメールにフォワード(転送)しているため、通常の個人あてのメールよりもやや複雑なルートを通ってメールが配信されているが、基本的にはどのようなメールもこのようなヘッダを持っているはずである。手元のメール・ソフトウェアで確認してほしい。
メール・ヘッダにはこのように多くの情報が記述されているが、その基本的なルールは非常に簡単である。
- 1つの情報(フィールド)は、1行に記述する。2つ以上の情報を1行にすることはない。
- 各情報には、例えばReceivedやToというフィールド名が付けられている。フィールド名は行の左端にくっつけて記述し、フィールド名の最後には「:(コロン)」を付ける。フィールド名に対するパラメータは、その直後から行末までとなる。
- パラメータが長い場合は、改行して先頭に空白文字かタブ文字を置き、複数行にわたって続けることができる(3行以上でもよい)。
- X-で始まる行はコメント行(メール・ソフトウェアによって内容が異なる)。
ここでは、Received:フィールドに注目してみよう。上の例では、Received:(黄色で示している)で始まる行が3行ある(1/3/6行目)。また、それらの行の次の行は、先頭が空白文字なので、これらの行は、つながっているものと解釈される。結局、このヘッダにはReceived:フィールドが3つ含まれていることになる。
「Received:フィールド」とは?
インターネット上の電子メールは、メール・サーバ間を順番に中継されることによって、最終的な目的地(一般的にはPOPメール・サーバ)に届けられる。このような、メールを中継するサーバを「MTA(Message Transfer Agent)」という。中継の途中でいくつのMTAを経由するかはネットワークの構成によっても変わるが、一般的には、メールを送受信する組織ごとに代表となるMTAが1つあるので、最低でも2つのMTAを経由することになる(昔はインターネット上でも複数のMTAを経由してバケツ・リレー式に転送していたが、現在では直接配信することがほとんどである)。さらに組織内部で複数階層のMTAが構築されていることもあるし、メールをフォワードしたり、メーリング・リストで再配布したりすると、さらに多くのMTAを経由することになる。
Received:フィールドは、MTAがメールを受け取るたびに、その記録として情報を付け加えるために使われる。このフィールドには、送信元のホストや受信したホスト、MTAのタイプ、受信時間などの情報が含まれている。注意してほしいのは、このフィールドは、送信側が付けるのではなく、「受信した側がヘッダに書き加えていく」ということである。そのため、送信側がいくらメール・アドレスやヘッダなどを偽装しても(送信側がたとえウイルスであっても)、受信した側では、どこのホスト(IPアドレス)からいつ受信したか、といった情報をきちんと記録するようになっているので(通常のメール・サーバはそのように設定されている)、このReceived:フィールドを逆にたどれば、メールの送信経路(発信元)をさかのぼることができる。ただしメーリング・リストを経由する場合は、元のヘッダ情報を削除してしまうことがあるので、そこで追跡できなくなる可能性がある。
![]() |
メールとReceived:フィールド |
MTAはメール・サーバ・システム、MUAはメールを送受信するクライアント・システムのこと。通常のメーラ・ソフトウェアだけでなく、メールを送信するウイルスもMUAの一種となる。メール・サーバは、メールを受信するたびに、その情報をメールの先頭にReceived:フィールドとして記録する。Received:ヘッダはメールが中継されるたびに増えていくことになる。このフィールドの内容を逆にトレースすることにより、メールの送信元を調査することができる。ただしこのフィールドが偽装されていたり、中継途中で削除されたりしている可能性もあるので、必ず送信元を調査できるという保証はない。 |
先の例でいえば、最初にメールを送信したソフトウェア(MUA)が作成したヘッダは9行目のFrom:以降である(もともとこれらの情報が欠落している場合は、最初のMTAが付加する場合もある)。そして、最初にメールを受信したMTAの情報、つまり最初にウイルスを送信したホストの情報は、6〜8行目のReceived:フィールドに記述されているということになる。
Received:フィールドに記録される情報
Received:フィールドには、送信元ホストや受信MTA、受信時刻などの情報が、次の表のような形式で記述される。
書式 | 必須/ オプション |
意味 |
Received: | 必須 | Received:フィールドの開始文字列。必ず行の先頭から始めること。パラメータが長い場合は、適宜改行して、先頭に空白もしくはタブ記号を入れて続けられる。以下のオプションは、この順番に記述することが求められている |
from <ドメイン> | オプション | 送信したホストの情報。「送信ホスト名 (FQDN名 [IPアドレス])」という書式で記述されることが多い。どこのホストから送信されたメールかという情報が得られる |
by <ドメイン> | オプション | 受信したホスト(MTA)の情報。「FQDN名 (付加情報)」といった形態の場合が多い |
via <文字列> | オプション | 送受信手段(Webメール経由かそうでないか)などの情報。ほとんど使われない |
with <文字列> | オプション | メール・プロトコルやMTAのソフトウェアの名称、バージョン番号などの情報。この「with …」は1つのReceived:フィールド中で複数回使われることがある。具体的なMTAの文字列としては、SMTP/ESMTP(sendmailなど)やMicrosoft SMTPSVC(Exchange)といったものがある |
id <メッセージID> | オプション | 受信者側がメッセージに付ける固有のID(Message-ID)。通常Message-IDは送信側の最初のMTAが付加するが、各MTAが個別に管理用のIDを割り当てる場合もある。このIDを元にメール・サーバのログを探せば、メールの中継記録などが得られる(可能性がある) |
for <アドレス> | オプション | オリジナルのあて先メール・アドレス。途中でメーリング・リストを通ったり、別のアドレスへフォワード(転送)されたりすると、メール・ヘッダ中で指定した最初のTo:やCc:などとは異なるメール・アドレスへ送信されることがある。そういう場合に、元のあて先メール・アドレスを記録しておくために利用する |
; <時刻> | 必須 | 受信した時刻。日本の場合なら、最後に「+09:00」や「+09:00 (JST)」「(JST)」を付けて(GMTからの時差が+9時間ということ)、日本時間であることを表すことが多い |
![]() |
||
Received:フィールドにおける書式 | ||
Received:キーワードに続いて、これらの情報を記述することにより、詳細な中継の記録がメールに残される。ただしほとんどのキーワードはオプションであり、その書式もMTAによってさまざまである。必須なのは(必ず利用できると当てにしてよいのは)時刻パラメータだけである(新しい規格では、fromとbyも必須としている)。 |
Received:フィールドには、この表のようなパラメータが、(基本的には)この表の順番で記述される。ただしこれらのパラメータはほとんどが必須ではなく、必ず存在しているという保証があるのは時刻のデータだけである。そのほかのパラメータは、MTAの種類によって大きく異なるし、その記述方法も統一されているわけではない。もともとこのReceived:フィールドは(メール中継の)デバッグのために利用されていたようであり、基本的には人間がその内容を参考として読み取ることを前提としている。だがほとんどのMTAでは、少なくとも「from …」と「by …」程度は記録してくれるので、これを頼りに、最初の送信元を特定できることが多い。
Received:フィールドの例
ここで先ほどの例に戻ってみよう。結局、最初に付けられたReceived:フィールドは、6〜8行目であることが分かる(時間的にも、一番始めになっている)。これを抜き出して、1行にまとめると次のようになっている。
Received: from XXXDOMAIN.JP (pXXXX-ipadXXXXXXXXX.tokyo.ocn.ne.jp [NN.NN.NN.NN]) by mail.XXXDOMAIN.JP (Postfix) with ESMTP id 9FCEFD80DA for <INFO@XXXDOMAIN.JP>; Sun, 4 Apr 2004 15:46:36 +0900 (JST) |
この中の「from XXXDOMAIN.JP (pXXXX-ipadXXXXXXXXX.tokyo.ocn.ne.jp [NN.NN.NN.NN])」に注目していただきたい。これが最初にメールを送信してきたホストの情報である。最初の「XXXDOMAIN.JP」の部分は、メール送信のクライアントが提示することもある(SMTPの「HELO/EHLO」コマンドで指定するパラメータのことが多い)。従って偽装の可能性もあるので、あまり当てにはならない(ホスト名を特定する参考にはなるが)。
その直後にある「(pXXXX-ipadXXXXXXXXX.tokyo.ocn.ne.jp [NN.NN.NN.NN])」の部分は、一般的には「(FQDN名 [IPアドレス])」や「([IPアドレス])」となっている。大事なのは「IPアドレス」の部分である(FQDN名の部分には、このIPアドレスを逆引きしたものが入っていることが多い)。これが送信元のホストのIPアドレスを表している。つまりこの場合は、「NN.NN.NN.NN」というIPアドレスからウイルス・メールが送信されていることになる。
もっともこのIPアドレスが直接メールを送信しているホストというわけではなく、一般的にはNATやIPマスカレードを行うファイアウォールなどの(インターネット側の)IPアドレスを表している。だがここまで分かれば、あとはtracertコマンドや(プロバイダや組織に対する)IPアドレスの割り当ての状況などから、どこの組織から送信されているかを特定することもできるだろう(海外からの場合、それ以上はもうどうしようもないが)。
関連記事(Windows Server Insider) | ||
![]() |
Windows TIPS:Outlook Expressでメール・メッセージのソース情報(ヘッダ情報)を表示する | |
この記事と関連性の高い別の記事
- Outlook Expressでメール・メッセージのソース情報(ヘッダ情報)を表示する(TIPS)
- 間違いメールの発信を予防する方法(TIPS)
- テンプレートを元に複数メールを一括配信する(TIPS)
- 大きなサイズのファイルを分割して送受信する(TIPS)
- Outlookでメールの配信日時を指定する(TIPS)
このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。

![]() |
「Windows TIPS」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
![]() |
|
|
|
![]() |