この解析ツールが扱う範囲
このページは,メールソフトから取得した生ソースを読みやすく整理するためのヘッダー解析ツールです.入力欄への貼り付け,または拡張子が.emlか.txtの単一ファイルを読み込み,最初の空行までをヘッダー部として扱います.本文,HTMLパート,添付ファイルの内容を開くメールビューアーではありません.
表示対象はSubject,From,To,Date,Message-ID,Return-Path,Reply-Toの基本項目,Authentication-Results等に書かれた認証結果,複数のReceived行,そして解析できた全ヘッダーです.全ヘッダー画面ではキーと値の部分一致検索ができます.
一方,RFC 2047で符号化された件名や差出人名の復号,MIME構造の展開,添付ファイル抽出は行いません.
入力文字列の整理は画面上のJavaScriptで実行します.しかし,表示結果はメールの真正性や安全性を保証する鑑定ではありません.ヘッダーは複数のシステムが追加する記録であり,信頼境界外から挿入された文字列を含む可能性もあります.初期調査の補助として使い,重要な判断は受信サービスの情報や管理者側ログと合わせて行います.
折返し行とkey:valueの解析
メールヘッダーでは,長いフィールドが改行後の空白またはタブによって継続行として書かれることがあります.本実装は,改行直後に空白またはタブが続く部分を一つの半角空白へ置き換えてから,最初の空行を探します.空行があればそれ以前,なければ入力全体をヘッダー候補として処理します.
次に改行単位で分け,各行で最初に現れるコロンの左側をヘッダー名,右側を値として保存します.コロンがない行は一覧へ入りません.同名ヘッダーが複数ある場合,Receivedはすべて経路解析へ渡しますが,Subject等の基本7項目は後から見つかった値で上書きされます.これは完全なRFCメールパーサーではなく,画面表示に必要な項目を単純な規則で抽出する実装です.
貼り付け時はクリップボードから受け取った文字列をその場で解析します.ファイル選択時はブラウザのFile.textで内容を文字列化します.ファイルの実際の構造や文字コードが想定と異なる場合,期待した値にならないことがあります.
基本項目と全ヘッダー検索
概要画面には件名,From,To,Date,Message-IDなどを配置し,値がなければ「不明」「なし」等を表示します.ここでのFromはヘッダーに書かれた表示上の差出人です.Return-PathやReceivedの情報とは役割が異なり,Fromに有名企業のドメインが見えるだけで本人から届いたとは判断できません.
Message-IDも一意性を意図した識別子ですが,表示した文字列の発行元を本ツールが検証するわけではありません.Dateは送信者側が記載する場合があり,Receivedの各時刻とも一致しないことがあります.項目の存在と内容を見比べるための表示です.
全ヘッダー画面は,解析したキーまたは値に検索語が含まれる行だけを絞り込みます.正規表現検索,大小文字を区別する検索,ヘッダー意味の自動判定はありません.長い値を調べる場合は,原文と並べて欠落がないか確認してください.
解析後は概要,認証,配送ルート,全ヘッダーのタブを切り替えて同じ入力を異なる視点で確認します.検索欄は全ヘッダータブの表示対象を狭めるためのもので,元データを書き換えません.入力をクリアすると抽出結果も消え,履歴や調査メモとして保存する機能はありません.必要な記録は原文側で管理してください.
SPF・DKIM・DMARC結果の抽出
認証欄はAuthentication-ResultsまたはARC-Authentication-Resultsの値をまとめ,spf=,dkim=,dmarc=に続く文字列を正規表現で探します.SPFはpass,fail,softfail,neutral,none,DKIMとDMARCはpass,fail,noneを既知の表示状態として扱い,それ以外や未検出はunknownです.
DKIMではheader.iまたはheader.d,DMARCではactionを取得できた場合だけ詳細へ加えます.
ここで重要なのは,SPFのDNSレコードを照会し直す機能,DKIM署名を公開鍵で検証する機能,DMARC alignmentをFromと照合する機能がないことです.画面のPASSは「入力ヘッダーにpassと記録されている」という意味であり,本ツール自身の合格判定ではありません.Received-SPFやDKIM-Signatureを個別に再解析する機能もありません.
Authentication-Resultsは受信側で行われた処理結果を伝えるためのヘッダーですが,その文字列をどの受信境界が付加したかを本画面だけで確定できません.複数方式がPASSでも,正規に認証設定された攻撃者ドメインや危険な本文はあり得ます.送信者本人の確認やマルウェア検査とは分けて考えます.
Received経路と日時差
Received行は通常,新しいものが上に追加されます.本実装はすべてのReceivedを集め,表示前に順序を反転して古い行から並べます.各値の最後のセミコロンより後ろを日時候補とし,末尾の括弧付きタイムゾーン名を除いてDate.parseへ渡します.解析できなければ日時は不明のままです.
セミコロンより前では,from,by,withに続く空白までの語,角括弧または丸括弧内のIPらしい文字列を正規表現で拾います.Receivedには多様な書式があるため,すべてのホスト名,IPv6,コメントを正確に分解できる保証はありません.送信元の国,プロバイダー,IPの公開範囲も判定しません.
隣接する二つの日時を引き,正なら経過時間として秒,分,時間の単位で表示します.負の差は0へ丸めます.サーバー時計のずれ,付加順,解析不能な日時,偽装された行の影響を受けるため,真のネットワーク遅延やボトルネックを測定する値ではありません.経路調査の手掛かりとして原文とともに確認します.
調査時の注意と非対応範囲
不審なメールを調べるときは,FromとReply-Toの違い,Return-Path,Message-ID,認証結果,Receivedの並びを一つずつ確認できます.ただし,一つの不一致だけで攻撃と決めたり,全項目が整っているから安全と決めたりはできません.本文が要求する操作,リンク先ドメイン,添付ファイル,受信サービスの警告,公式サイトの連絡先も合わせて確認します.
このページはDNS照会,IP逆引き,国判定,添付ファイル検査,URL安全判定,ウイルススキャン,証拠保全を行いません.インシデント対応や法的調査では,原本を変更せずに保管し,メール管理者が保持する受信ログや認証ログを使う必要があります.
入力したヘッダーの解析はブラウザ上で行われますが,ページそのものの読込やサイト資源まで無通信と保証する表現はしません.また,メールヘッダーにはアドレス,内部ホスト名,IPなどが含まれ得ます.共有画面やスクリーンショットへ載せる場合は,必要な箇所以外を伏せてください.
調査記録を残すときは,画面の要約だけでなく原文ヘッダーを改変せず別途保管し,受信時刻,対象アカウント,確認したログの所在も記録すると後から再検証しやすくなります.