背景
会社から貸与されたメールアドレスを使って6年ほど経ちましたが、いよいよそのメールアドレスにも3か月ほど前から迷惑メールがちらほら届くようになりました。Outlookの標準機能である迷惑メールオプションを使用しても、いまいち機能しなかったのでどうにか別の手段で迷惑メールを可視化できないかと考えました。その結果、仕分けルールで迷惑メールを分類する方法にたどり着きました。簡単にググった限りでは同じことをしている変態は見つからなかったので、投稿してみようかなと思いました。
断っておきたいのが、私自身はセキュリティの専門家ではなく、セキュリティ絡みの知識や技術に対してそう達者なものではございません。これから書く内容にも詰めの甘さや間違った知識を記載する可能性がありますが、ご容赦いただけると幸いです。
作業環境・使用ツール
- Windows11 (バージョン 24H2)
- Microsoft® Outlook® for Microsoft 365 MSO (バージョン 2509 ビルド 16.0.19231.20138) 64 ビット
- Copilot (相談相手)
歴戦のナレッジ達
敵(敵じゃない場合もある)
dmarc=fail
dmarc=none
dmarc=quarantine
dmarc=reject
dkim=fail
dkim=neutral
dkim=none
spf=fail
spf=softfail
spf=neutral
spf=none
Outlookの仕分けルールで迷惑メールを処理
まずは手順を殴り書きで説明します。解説・考察は後ほど。
① ファイル > 仕分けルールと通知の管理 > 新しい仕分けルール をクリック。

③条件の指定。「メッセージヘッダーに特定の文字が含まれる場合」に✓を入れ、「特定の文字」を選択。

④以下の文字列を追加し、OK。次へ。
dmarc=fail
dmarc=none
dmarc=quarantine
dmarc=reject
dkim=fail
dkim=neutral
dkim=none
spf=fail
spf=softfail
spf=neutral
spf=none
⑤条件に一致した場合の処理を選択。ここでは分類項目を割り当てているが、任意の処理を設定してよい。

⑥例外条件の選択。「メッセージヘッダーに特定の文字が含まれる場合」に✓を入れ、「特定の文字」を選択。

⑦以下の文字列を追加し、OK。次へ。
dmarc=pass
dkim=pass
spf=pass
⑧仕分けルールに任意の名前を入力します。ルール作成後直後に過去のメールにも適用したい場合は「受信トレイ内のメッセージに仕分けルールを適用する」に✓を入れます。完了。

⑨適用後、受信ボックスへ届いた迷惑メールに分類項目が付与されます。画像では検索フォルダーにて⑤で設定した分類項目にて抽出しています。

解説
DMARC/DKIM/SPF
DMARC/DKIM/SPFとは送信ドメイン認証と呼ばれるものです。メールが送信されてから受信されるまでにメールの送信元や各認証が行われ、その結果がメッセージヘッダー(インターネットヘッダーとも言う)に格納されます。
Outlookではメールを開き、ファイル>プロパティ>インターネットヘッダーから見ることができます。仕分けルールで言われているメッセージヘッダーとはこの部分を指しているようです。(多分)

ヘッダー内ではDMARC/DKIM/SPFのような各認証の検証結果となる値を確認することができます。
X-Spam-Statusもおまけで記載しています。
| 返り値 | DMARC | DKIM | SPF | X-Spam-Status |
|---|---|---|---|---|
pass |
✅ 認証成功 | ✅ 署名有効 | ✅ IP一致 | ― |
fail |
❌ 認証失敗 | ❌ 署名無効 | ❌ IP不一致 | ― |
softfail |
― | ― | ⚠️ 警告レベル | ― |
neutral |
― | ⚠️ 判定不能 | ⚠️ 判定不能 | ― |
none |
⚠️ ポリシーなし | ⚠️ 署名なし | ⚠️ レコードなし | ― |
quarantine |
🚫 隔離 | ― | ― | ― |
reject |
🚫 拒否 | ― | ― | ― |
temperror |
⚠️ 一時エラー | ⚠️ 一時エラー | ⚠️ 一時エラー | ― |
permerror |
⚠️ 永続エラー | ⚠️ 永続エラー | ⚠️ 永続エラー | ― |
Yes |
― | ― | ― | 🚫 スパム判定 |
No |
― | ― | ― | ✅ 通常メール |
表はCopilotが作ってくれました。
先述の仕分けルールの設定では、pass以外のパラメータを仕分け対象にしています。
temperror、permerrorを含めていないのは考察にて。
考察
捕捉率
当作業環境であるOutlookにて検証を行いました。
受信トレイには6062件あり、それらすべてに仕分けルールを適用したところ177件ヒットしました。ざっと見た感じ、概ね狙い打ちたい迷惑メールに設定した分類項目がラベリングされています。とは言え、受信した迷惑メールを全件集計した訳ではなく、誤検出が全くなかったかというと、その可能性は否定できません。
そして先述の仕分けルールの設定だとDMARC/DKIM/SPFのパラメータを一緒くたに設定した関係で、どの認証が引っかかったのか不明です。
そこで、DMARCとDKIMとSPFでそれぞれのパラメータに細分化した仕分けルールを作成し、ヒット数の検証を行いました。ついでにX-Spam-Statusも。
その結果をまとめたのが以下の表です。
調べてみて判明したのが、大抵の迷惑メールはspf=noneを含んでいる傾向にあるということです。
| - | DMARC | DKIM | SPF | X-Spam-Status |
|---|---|---|---|---|
| 検出 パラメータ |
dmarc=fail dmarc=none dmarc=quarantine dmarc=reject |
dkim=fail dkim=neutral dkim=none |
spf=fail spf=softfail spf=neutral spf=none |
X-Spam-Status: Yes |
| 検出件数 | 88 | 88 | 174 | 227 |
全条件で仕分けした際は177件であり、そのうちの174件はspf=noneを含んでいました。
では残りの3件はどうだったかというと、spf=noneは含まれていなかったが、dmarc=none・dkim=noneは含まれていました。そしてその3件も目視の確認にて迷惑メールであると判断できる内容でした。
dmarc=none・dkim=none・spf=noneのスリーアウト制として、アウト数が多いほど迷惑メールであるという見方もできるかもしれません。
DMARC/DKIMの認証結果は必ずしもメッセージヘッダーに含まれている訳ではない
大抵の迷惑メールはspf=noneが含まれていることが分かりました。
ではDMARC/DKIM認証とSPF認証でどうしてここまで検出件数に差がついたか。
それはDMARC/DKIMの認証結果が含まれていないことが原因でした。dmarc=noneどころかdmarc=passの文言もなく、仕分けルールに引っかからなくて当然の状態でした。
賢人Copilotは以下のように述べています。
DKIMパラメータがないメールの主な理由
1. 送信ドメインがDKIMを設定していない
最も一般的な理由です。
正規の送信者であっても、DKIMを導入していなければ署名は付きません。
特に小規模な組織や古いシステムでは未対応のこともあります。
2. なりすましメールで、DKIM署名を偽装できない
DKIMは秘密鍵で署名し、受信側が公開鍵で検証します。
なりすまし送信者は正規ドメインの秘密鍵を持っていないため、DKIM署名を付けられません。
この場合、DKIMが「fail」ではなく「none」になることが多いです(署名自体がないため)。
3. 中継・転送中に署名が削除された
メール転送やウイルスチェックなどでヘッダーが書き換えられると、DKIM署名が無効になるか削除されることがあります。
ただし、通常はDKIM=failやDKIM=temperrorなどの結果が残ります。
4. メールがプレーンテキストで送信され、署名が省略された
一部の古いシステムや簡易通知メールでは、意図的にDKIM署名を省略することもあります。
信頼できる送信元でもDMARC/DKIMの認証がpassにならないケースがある
当方がいるPC環境ではMicrosoft 365 Defender for Businessを採用しており、検出されたインシデントがあればメールが通知されます。
そのメール(defender-noreply@microsoft.com)がdmarc=none・dkim=noneのパラメータを含んでいました。
奇妙なのがすべてのメールが検出されているのではなく、一部の通知だけが認証に失敗していました。
見た感じ同様のテンプレートが使われており、Microsoft 365 DefenderのWebコンソールでも誤検知メールの内容のインシデントが確認できました。
Copilot、これはどういうことだい?
Microsoft 365 Defenderからのメールでも、DKIMやDMARC認証が「pass」でないことがありますが、これは必ずしもなりすましではなく、メール転送・設定不備・サブドメイン利用などの技術的要因によるものです。
🔍 考えられる原因と背景
1. メール転送や中継による認証失敗
メールが 他のサーバーを経由して転送 された場合、元の署名が破損したり、SPFが一致しなくなることがあります。
特にDKIMは、メール本文やヘッダーが少しでも変更されると署名が無効になります。
2. Microsoft側の送信ドメインが複数ある
Microsoft 365 Defenderは、通知メールを 複数のサブドメインやサービス経由で送信 することがあります(例:alerts.microsoft.com、protection.outlook.comなど)。
これらのドメインに対して DKIMやDMARCが未設定または整合性が取れていない 場合、認証がfailやnoneになることがあります。
3. DMARCのアライメント(整合性)失敗
DMARCは、SPF/DKIMの認証結果と「Header-From」のドメインが一致しているかをチェックします。
たとえSPFやDKIMがpassでも、Fromアドレスが別ドメインだとDMARCはfailになります。
4. Microsoftの一部サービスがDKIM未対応のケース
Microsoft 365の一部テナントやサービスでは、既定でDKIMが無効になっていることがあります。
管理者が明示的に設定しない限り、署名が付かないこともあります。
5. 大量送信や通知メールの特殊処理
Defenderの通知メールは、セキュリティイベントに応じて自動生成されるため、通常のメールとは異なるルートや設定が使われることがあります。
その結果、一部のメールで認証が通らないことがあります。
spf=passとspf=noneの両方がヘッダーに含まれていることがある
だから例外処理でdmarc=pass・dkim=pass・spf=passを入れるですね~。
spf=temperrorやspf=permerrorのようなパラメータを含むメール
信頼できる企業から届く通知等に含まれていました。ざっと見た感じ自動送信メール・一括送信メールに含まれているようです。ですのでこのパラメータを仕分けしてしまうと誤検知率が上がってしまうんじゃないかと思っています。
X-Spam-Statusという存在
先ほどからちょいちょい出てくるX-Spam-Statusについてです。
これはこれでスパムであるかどうかを判定しているパラメータです。
Yesならスパム。
Noなら安全なメール。
という具合です。
しかしながらこれも結構誤検知が多いです。
Backlog、SmartHRといった主要なサービスから届く通知がYes判定になります。
そして明確にスパムであるメールをNo判定しているケースもあります。
これは使用しているメールサーバーのスパムフィルタに依存するってことなんでしょうか。。。
どうせヘッダーに含めるならスコア(数値)を入れてほしいです。。。
所感
いかがだったでしょうか。
Outlookに搭載されている迷惑メールオプションを設定してしばらく様子を見ていましたが、思うように機能せず、このような手段にたどり着きました。
CopilotにOutlookでできる迷惑メール対策を尋ねると、このオプションを使用するかVBAでメッセージヘッダーのDMARC/DKIM/SPF認証結果を分析してフォルダリングすることを提案されます。
しかしVBAでこの仕組みを行うとなればマクロを警戒なしに実行できる環境にしてしまうことになり、その点がセキュリティホールになり得ることを考えるとVBAで迷惑メール対策を行うのは避けたいです。
もっともらしいことを言えば、送受信実績のあるアドレスだって乗っ取られてしまえば悪意のあるメールを送り付けることは容易いです。セーフティリストやこの記事の仕分けをもってしてもつけ入る隙はいくらでもあります。
こんな迷惑メール対策を行う変質者ってどれくらいいるんでしょうか??なんて思ったりします(笑)
大方書きたいことは書けたんじゃないかと思います。仕事をサボりながら書かせていただきました。
以下の点で困っている方がいて、この記事の内容が何かのヒントになってくれたらなと思います。
- Outlook 迷惑メール対策 仕分けルール
- Outlook DMARC DKIM SPF 認証
ご拝読ありがとうございました。





