本文へスキップ
totonoe

セキュリティを整える

中級

メール認証(SPF/DKIM/DMARC)を整える

= なりすましメールがどの検査で弾かれるかを受信サーバー視点で体験

「SPF・DKIM・DMARCを設定しましょう」とはよく言われますが、3つがそれぞれ何を検査しているのかは意外と知られていません。このページでは、受信サーバーの気持ちになって1通のメールを判定します。攻撃側の条件を変えると、どの検査で・なぜ弾かれるかが順に見えます。すべてブラウザ内で完結、送信ゼロ。

🔰 かんたんに言うと

「銀行を名乗る偽メール」がなぜ届いたり弾かれたりするのか。メールの世界の本人確認3点セット(SPF・DKIM・DMARC)を、受信サーバーになったつもりで動かして学ぶページです。

i

TLDR — 30秒で分かる

SPF=どのサーバーから? DKIM=中身は本物? DMARC=名乗りと一致?不合格ならどうする? 3つの検査を受信サーバーの気持ちで体験。SPFがpassでもなりすましは弾けない理由(アライメント)が分かります。

主な機能

  • なりすまし判定シミュレーター(5つの攻撃・配送シナリオ)
  • SPF→DKIM→DMARCの判定が順に点灯し受信箱/迷惑/拒否へ振り分け
  • アライメント(名乗りとの一致)の可視化——SPF pass でも弾かれる理由
  • DMARC未設定だと素通りになる体験
  • SPF/DMARCレコードの読み方辞書(a・mx・include・~all/p・rua・pct等)
  • p=none→quarantine→reject の安全な育て方
  • 送信ゼロ(すべてブラウザ内)
SIMULATOR — なりすまし判定シミュレーター 教育モデル・送信ゼロ

シナリオを選ぶ

受信者に見えている名乗り: From: [email protected]

※ この「名乗り(ヘッダFrom)」は固定です。名乗りは自由に書ける——これこそがなりすまし問題の出発点です。

手動で条件を変える(プリセット選択後も個別に変更可)

envelopeDomain — SPFの検査対象ドメイン

hasSpfRecord — SPFレコードの有無

senderIpAllowed — 送信元IPは許可リスト内か

dkim — DKIM署名の状態

dkimDomain — DKIM署名ドメイン(d=)

※ 署名なしのときは判定対象外(disabled)

hasDmarcRecord — DMARCレコードの有無

policy — DMARCポリシー(p=)

※ DMARCレコードが無いときは判定対象外(disabled)

判定の流れ(SPF → DKIM → DMARC の順に点灯)

① SPF

② DKIM

③ DMARC

SPF

「そのサーバーから送っていいの?」

見るもの: エンベロープFromのドメインのDNSに書かれた送信サーバー許可リスト(IP)

弱点: 転送で切れる。攻撃者も自分のドメインならpassにできる

DKIM

「中身は本物のまま?」

見るもの: メールに付いた電子署名を署名ドメイン(d=)の公開鍵で検証

弱点: 署名が無いメールは判定できない。d=は名乗りと別ドメインでもよい

DMARC

「その合格、画面に見える名乗り(ヘッダFrom)と一致してる?不合格ならどうする?」

見るもの: SPF/DKIMの結果×アライメント、そして p= ポリシー

これが要: SPF・DKIM単体では名乗りを守れない。束ねて初めてなりすまし対策になる

覚え方: SPF=差出局の確認 / DKIM=封蝋(改ざん検知) / DMARC=名乗りの照合と処分の指示

③ レコードの読み方辞書 固定サンプルを分解表示

SPFレコード(Xserver系の実例形)

v=spf1+a:sv8477.xserver.jp+mxinclude:spf.sender.xserver.jp~all
v=spf1
= これはSPFレコード宣言
a:
= このホスト名のAレコードのIPを許可
mx
= MXレコードのサーバーを許可
include:
= 別ドメインのSPFを取り込む(メールサービス利用時の定番)
~all
= リスト外はソフトフェイル(怪しい扱い。-all=明確に拒否、?all=中立)

DMARCレコード

v=DMARC1p=nonerua=mailto:[email protected]adkim=raspf=rpct=100
p=
= 不合格メールの処分(none=監視のみ/quarantine=迷惑行き/reject=拒否)
rua=
= 集計レポートの送り先(まずこれを眺めるのが運用の第一歩)
adkim= / aspf=
= アライメントの厳しさ(r=relaxed 組織ドメイン一致でOK / s=strict 完全一致)
pct=
= ポリシー適用率(段階導入用)

④ ポリシーの育て方

none → quarantine → reject。段階を踏んで育てる。

1

p=none

処分はせず、ruaレポートを数週間観察。まずは実態把握。

2

p=quarantine

正規メールが全部passしているのを確認してから移行。

3

p=reject

最後に拒否へ。pct=で段階適用もできる。

いきなり reject にすると、転送や設定漏れで正規メールまで落ちることがあります。定石は ①p=none で rua レポートを数週間観察 → ②正規メールが全部 pass しているのを確認して quarantine → ③最後に reject。pct= で段階適用もできます。

⚠ このシミュレーターについて

  • 実際のDNS照会・暗号検証は行わない教育用モデルです。判定の考え方(組み合わせ論)を忠実に再現していますが、実際の受信サーバーは独自のスパム判定も併用するため、挙動は環境で異なります。
  • アライメントの「組織ドメイン」判定は簡易版です(実際は Public Suffix List を使用)。
  • 迷惑メールの送信に使える情報は含みません。ここで学べるのは「なぜ弾かれるか」=防御側の知識です。
  • すべてブラウザの中だけで動きます(送信ゼロ)。

よくある質問

Q. SPF・DKIM・DMARCは何が違うのですか?

A. 答えている質問が違います。**SPF**は「そのサーバー(IP)から送っていいか」を送信ドメインのDNSにある許可リストで確認します。**DKIM**は「中身が改ざんされていないか」を電子署名で検証します。**DMARC**は両者の結果を束ね、「その合格は画面に見える名乗り(ヘッダFrom)と一致しているか(アライメント)」を照合したうえで、不合格メールの処分(none/quarantine/reject)を受信サーバーに指示します。

Q. SPFを設定していれば、なりすましは防げますか?

A. 防げません。SPFが検査するのは**エンベロープFrom**(配送用の差出人)であって、受信者の画面に見える**ヘッダFrom**ではないからです。攻撃者は自分のドメインのSPFを正しく設定して合格させつつ、画面の名乗りだけあなたのドメインを書けます。この抜け道を塞ぐのが、名乗りとの一致(アライメント)を検査するDMARCです。

Q. DMARCの p=none には意味がありますか?

A. あります。p=none は「処分はしないが、認証結果のレポート(rua)を送信ドメインの管理者に送る」モードです。まず自分のドメインを名乗るメールがどこから送られているか(正規のメールサービス、想定外のシステム、攻撃)を観測し、正規メールがすべて合格するよう整えてから quarantine → reject に上げるのが安全な定石です。ただし p=none のままでは受信者は守られないので、通過点と考えてください。

Q. 転送すると認証はどうなりますか?

A. SPFは切れがちです。転送サーバーのIPは元ドメインの許可リストに無いからです。一方DKIMの署名は本文が書き換えられない限り転送後も検証できるため、DMARCは「DKIM×アライメント」の側で合格できます。SPFとDKIMの両方を設定すべき理由のひとつがこの転送耐性です(メーリングリストなど本文を書き換える転送では DKIM も切れることがあります)。

Q. 自分のドメインにDMARCを設定するには何をすればいいですか?

A. DNSに `_dmarc.あなたのドメイン` という名前のTXTレコードを1本追加します(例: `v=DMARC1; p=none; rua=mailto:[email protected]`)。前提としてSPF(TXTレコード)と、可能ならDKIM(メールサービス側で発行される公開鍵)を設定しておきます。メールを一切送らないドメインでも、なりすまし防止のため `v=spf1 -all` と `p=reject` を置くのが推奨です。

Q. このシミュレーターは実際のメールを送受信しますか?

A. いいえ。DNS照会も暗号検証も行わない、判定の考え方だけを再現した教育用モデルで、すべてブラウザ内で完結します(送信ゼロ)。また、なりすましメールの送信に使える具体的な手順・情報は含んでいません。学べるのは防御側の知識です。

入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。

RELATED TOOLS

続けて整える

KOINOBORI ECOSYSTEM

私たちが運営するサイト