ByteScope

Email Header Analyzer

Gmail の「メッセージのソースを表示」や Outlook のメッセージヘッダーをそのまま貼り付けるか、.eml/.msg ファイルをドロップしてください。Received の各ホップと遅延を並べ、Authentication-Results を一行ずつ解説し、送信ドメインの公開鍵で DKIM 署名をこのページ自身が検証し直します。メールはブラウザの外に出ません。

ファイルはブラウザから送信されません — 処理はすべてローカルで行われます。

Gmail:⋮ →「メッセージのソースを表示」。Outlook:ファイル → プロパティ →「インターネット ヘッダー」。最初から最後まで丸ごと貼り付けてください。

または .eml / .msg ファイルをドロップ

ファイルはこのタブの中で読むだけで、アップロードはしません。

このページでわかること・わからないこと

  • DKIM の検証では、公開鍵を取得するために <selector>._domainkey.<domain> を公開 DNS サービス(Cloudflare、予備に Google)へ問い合わせます。メールの内容・受信者・ヘッダーそのものは送りません。
  • 検証に使うのは今公開されている鍵です。送信者が鍵を入れ替えていれば古いメールは失敗しますが、なりすましという意味ではありません。
  • Authentication-Results は配送された時点の受信サーバーの判断です。ここでは DKIM を検証し直しますが、SPF はやり直しません。当時の送信元 IP と当時の DNS が必要だからです。
  • 転送やメーリングリスト、会社のメールゲートウェイによる書き換えを経たメールは、DKIM に失敗することがよくあります。
  • ヘッダーだけでは本文を検証できません。.msg ファイルは常にこの状態です。
  • このページは「安全なメール」「本物のメール」とは言いません。どのチェックが通り、どれが失敗したかだけを示します。
  • 組織ドメインの判定には、同梱の Public Suffix List(tldts 7.4.16 (2026-09-27))を使っています。

このツールについて

メールヘッダーを見たくなるのは、だいたい三つの場面です。このメールはなぜ二時間も遅れて届いたのか、銀行を名乗るこのメールは本物なのか、自分のメールはなぜ迷惑メールに入ったのか。手で読むのは骨が折れます。逆順に並んだ十数行の Received、タイムゾーンがばらばらの時刻、略語だらけの Authentication-Results。このメールヘッダー解析ツールはブラウザの中でヘッダーを分解し、メールが通った経路、各ホップでの待ち時間、受信サーバーが SPF・DKIM・DMARC についてどう判断したか、そして DKIM 署名が今日検証し直しても通るかを並べて見せます。アップロードはしません。ページが行う唯一の通信は DKIM 公開鍵の問い合わせで、それも「DKIM を検証」ボタンを押したときだけです。selector._domainkey.ドメイン という名前を公開の DNS-over-HTTPS サービス(Cloudflare、失敗時は Google)に送るので、そのサービスにはあなたの IP アドレスが見えます。DNS の問い合わせとはそういうものです。メール本文、宛先、ヘッダーそのものはどこにも送られません。

経路をたどって、どこで止まったかを見つける

Received ヘッダー一行が一ホップです。ページは古い順に並べ直し、各ホップを、名乗っている送信ホスト、括弧内の逆引き名と IP、受け取ったホスト、プロトコル(SMTP、ESMTPS、ESMTPSA、LMTP など)、時刻に分解します。プロトコルの文字は RFC 3848 に従って読み解き、S があれば TLS 接続、A があれば送信側が認証済みなので、途中で暗号化されていたかどうかが分かります。ホップの遅延は前のホップとの時刻差で、横棒グラフにして最も長いホップを赤く示します。遅れたメールはたいていそこで待たされています。負の遅延はエラー扱いにせず「時計のずれ」と表示します。メールサーバーの時計は合っていないことが多いからです。時刻がない、または読めないホップは「計算不可」として、後続のホップには影響させません。プライベートアドレス(RFC 1918、127.*、::1)は「内部転送」と印を付けます。IP アドレスは文字として表示するだけで、位置情報の照会はしません。それには IP を第三者の API に送る必要があるからです。

Authentication-Results は、信じていい一行だけ信じる

Authentication-Results(RFC 8601)は受信サーバーが判断を書き残す場所で、spf=pass、dkim=fail、dmarc=none のほか、arc、iprev、bimi が付くこともあります。ページは各ヘッダーを authserv-id と方式ごとに分解し、結果ごとに平易な一文を添えます。softfail、temperror、permerror、neutral が実際に何を意味し、よくある原因は何か、という説明です。一覧の上には警告を一つ置いています。経路上のどのサーバーも、送信者自身も、Authentication-Results ヘッダーを追加できます。信用できるのはあなた自身の受信サーバーが書いた行だけで、途中のホップや送信者が書いた行は何の証明にもなりません。ARC ヘッダー(RFC 8617)はインスタンスごとにまとめて参考表示しますが、このバージョンでは ARC シールの検証は行いません。

ブラウザで DKIM を検証する。使うのは今日の鍵

このページの売りは、誰かの結論を写すのではなく、本物の DKIM 検証(RFC 6376)を行うことです。DKIM-Signature ごとにタグを解析し、s= と d= が示す公開鍵を取得し、署名対象のヘッダーを c= の指定どおりに正規化して、WebCrypto で署名を確かめます。h= に列挙されているのにメールに存在しないヘッダーは、規格どおり空文字列として扱うので、署名後に追加されたヘッダーが通ることはありません。rsa-sha256 は RSASSA-PKCS1-v1_5 で検証します。ed25519-sha256(RFC 8463)はブラウザの WebCrypto が Ed25519 に対応していれば検証し、対応していなければ失敗ではなく「検証不可」と報告します。rsa-sha1 は検証はしますが RFC 8301 で非推奨であることを示し、1024 ビット未満の RSA 鍵は同じ RFC の規定どおり拒否します。結論は四つのうちどれかです。通過、失敗(理由付き。鍵が見つからない、p= が空で鍵が失効済み、x= の期限切れ、署名不一致、本文ハッシュ不一致、鍵が短すぎる)、検証不可(DNS エラー、未対応のアルゴリズム、本文がない)、形式エラー。l= のある署名には、本文の先頭 N バイトしか署名されておらず、その後ろに付け足された内容は署名外だという警告を出します。取得する鍵は今公開されている鍵だということも忘れないでください。送信後に鍵が交換されていれば古いメールは検証に失敗しますが、偽物だからではありません。

ヘッダーだけ、.eml、.msg で、どこまで検証できるか

本文ハッシュ bh= を確かめられるのは、完全な .eml ファイルを入れたときだけです。本文の生のバイト列が必要だからです。ヘッダーだけを貼った場合でも、ヘッダー署名(bh= の値を含む)は検証できるので、「ヘッダーは改ざんされていない、本文は検証できない」という結論になります。.msg は常にこの状態です。受信したメールの .msg はトランスポートヘッダーをプロパティとして保存しますが元の MIME 本文は残さず、送信前に保存した .msg にはトランスポートヘッダー自体がないため、.msg の検証はヘッダー止まりです。EML ビューアーと MSG ビューアーからはワンクリックでこのページにメールを渡せます。受け渡しは sessionStorage 経由で、URL には乗せません。概要カードには送信者の三つの身元、From のドメイン、Return-Path のドメイン、DKIM の d= のドメインを並べ、DMARC の整合は RFC 7489 の relaxed モードで組織ドメインを基準に判定します。隣のボタンで From ドメインをメール DNS チェックのページに渡し、SPF・DKIM・DMARC の設定を確認できます。URL に入るのはそのドメインだけで、これは公開情報です。

このページが言わないこと

「このメールは安全」「本物」とは決して言いません。どの検査が通り、どれが失敗したかを言うだけです。DKIM が通っても、証明されるのは d= のドメインがこのメールに署名したことだけで、そのドメインがあなたの思う会社のものかどうかは別問題です。SPF は再検証しません。SPF はメールを受け渡した IP とその時点の DNS に依存するので、後からブラウザで実行し直しても意味がなく、受信サーバーが記録した結果を表示するにとどめます。転送されたメール、メーリングリストを経由したメール、会社のメールゲートウェイに書き換えられたメールで DKIM が失敗するのはよくあることで、失敗の説明にもそう書きます。X-Spam-Status や X-Microsoft-Antispam のような迷惑メール判定ヘッダーは、形式が公開されていないので原文のまま表示し、解釈はしません。Markdown レポートと JSON 出力は宛先アドレスを既定で伏せるので、そのまま共有できます。

よくある質問

自分のメールはなぜ迷惑メールに入ったのですか?

ヘッダーで分かるのは答えの一部です。まず、あなたの受信サーバーが書いた一番上の Authentication-Results を見てください。そこに dkim=fail、spf=softfail、dmarc=fail があるか、From ドメインが DKIM の d= や Return-Path のドメインと整合していなければ、迷惑メール行きの十分な理由です。X-Spam-Status のような判定ヘッダーも原文のまま並べます。ヘッダーからは分からないのが送信者の評判、本文の内容、送信量で、フィルターはこれらを重く見ます。送信者側なら、メール DNS チェックのページでドメインの SPF・DKIM・DMARC を確認してください。概要カードから直接飛べます。

銀行を名乗るメールが本物かどうか、どう見分けますか?

概要カードの三つの身元、受信者に見える From ドメイン、Return-Path ドメイン、DKIM の d= ドメインを見比べ、「DKIM を検証」を押してください。署名が有効なら、d= のドメインを管理する者がこのメールに署名し、署名されたヘッダーはその後変更されていないことが分かります。だからこそ d= が本当に銀行のドメインで、似せた別ドメインではないかを確かめてください。Authentication-Results は途中で追加されたものではなく、あなた自身の受信サーバーの行を読んでください。このページは意図的に「安全」とは言わず、どの検査が通ったかだけを報告します。迷ったら、すでに信頼している連絡手段で銀行に確認してください。

本物のメールなのに DKIM が失敗するのはなぜ?

よくある理由は三つです。一つ目、メールが転送された、メーリングリストを通った、会社のメールゲートウェイに書き換えられた。署名対象のヘッダーや本文(件名のタグ、末尾の署名文)が一文字でも変われば署名は壊れ、これは正常な現象です。二つ目、送信後に送信者が DKIM 鍵を交換した。検証に使うのは今日 DNS に載っている鍵なので、古いメールは偽物でなくても失敗します。三つ目、コピーの途中でメールが壊れた。改行や行末の空白が落ちた貼り付けテキストは一致しません。失敗とは「今は検証が通らない」という意味で、それだけで偽造の証明にはなりません。

メールが遅れた原因と、止まった場所はどこで分かりますか?

経路の表示まで下にスクロールしてください。Received の各ホップに、前のホップからの遅延が横棒で表示され、一番長い棒が赤くなります。そのホップで待たされていたわけで、たいていは by に書かれた受信ホストのキューです。負の遅延は時間が逆行したのではなく二台のサーバーの時計がずれているという意味で、使える時刻のないホップは「計算不可」と表示され、その後ろのホップには影響しません。

このページはネットワークに何を送りますか?

「DKIM を検証」を押すまでは何も送りません。押すと、署名ごとに selector._domainkey.ドメイン の DNS 問い合わせを一回、Cloudflare の DNS-over-HTTPS サービスに送り、失敗したら Google のサービスに切り替えます。これらのサービスには、問い合わせた名前とあなたの IP アドレスが見えます。どの DNS リゾルバーでも同じです。メール、ヘッダー、宛先、検証結果は、このサイトを含めて誰にも送られません。ネットワークがなくても経路と Authentication-Results は表示され、DKIM は DNS エラーになります。

ヘッダーだけ、または .msg ファイルでも DKIM を検証できますか?

一部はできます。DKIM 署名が守っているのは二つ、選ばれたヘッダーと、bh= に入った本文のハッシュです。ヘッダーだけでもヘッダー署名は検証できるので、bh= の値を含めてヘッダーが無傷だと分かります。本文そのものは手元にないので確かめられません。Outlook の .msg はトランスポートヘッダーは保持しますが元の MIME 本文は持たないので、.msg は常にこの「ヘッダーのみ」の結論になります。本文まで確かめたいときは、元の .eml をドロップしてください。

SPF を再検証しないのはなぜですか?

SPF は後から実行し直せないからです。SPF が問うのは、メールをあなたのサーバーに渡した IP アドレスが、その時点の DNS レコード上で Return-Path ドメインの送信を許可されていたかどうかです。後からブラウザで検査すれば IP は別物で、レコードも変わっているかもしれず、答えに意味がありません。だからページは受信サーバーが Authentication-Results に記録した SPF の結果を表示します。DKIM は違います。署名はメールと一緒に運ばれ、鍵を取得した誰でも検証できるので、ページ自身が検証します。

Authentication-Results が複数あるとき、どれを信じればいいですか?

あなた自身の受信サーバーが書いた行だけです。普通は一番上にあり、authserv-id にはあなたのメールプロバイダーのホスト名が入っています。経路上のどのサーバーも、送信者も、dkim=pass と書いた Authentication-Results を挿入できますし、偽造者にはそうする動機があります。ページは各行の authserv-id を表示して見分けられるようにし、一覧の上でもこの警告を繰り返します。ARC ヘッダーは参考として表示しますが、このバージョンでは検証しません。