← RFC Reference

スパムフィルターの仕組み

Email Concepts Encyclopedia Published March 2026
ELI5: クラブのボウンサーを想像してみてください。ドアに着く前から、彼らはあなたがバンリストに載っているかをチェックします(ブロックリスト)。ドアで、彼らはあなたのID(認証)をチェックします。中に入ると、彼らはあなたの服装と言っていることを見ます(コンテンツフィルタリング)。そして、常連客があなたについて文句を言い続けると、他のすべてに関わらずあなたは放り出されます(エンゲージメントシグナル)。スパムフィルタは層状に機能し、前の層が見逃したものを各層がキャッチします。

すべてのメールが通過するフィルタリングパイプライン — 接続時のチェックから機械学習分類器まで — と大手プロバイダーがどのようにしてメッセージをインボックスに届けるかを決定する方法。

フィルタリングパイプライン

スパムフィルタリングは単一のチェックではありません。SMTP トランザクションのすべての段階と配信後にメッセージを評価するマルチステージパイプラインです。各ステージはメッセージを拒否、遅延、またはフラグ付けできます。ステージはおおよそこの順序に従います:

  1. 接続時のチェック — IP レピュテーション、ブロックリスト、レート制限
  2. エンベロープチェック — 送信者確認、受信者検証
  3. 認証チェック — SPF、DKIM、DMARC 評価
  4. ヘッダー分析 — 構造検証、一貫性チェック
  5. コンテンツ分析 — 本文スキャン、URL チェック、添付ファイル検査
  6. レピュテーションスコアリング — すべてのシグナルに対して重み付けされた送信者レピュテーション
  7. 機械学習分類 — ベイズおよびニューラルネットワークモデル
  8. 配信後のシグナル — エンゲージメント、ユーザーアクション、苦情フィードバック

Gmail や Outlook などのプロバイダーの最新のスパムフィルタはこれらのほとんどを並行して実行し、インボックス配置を決定する複合スコアを生成します。ただし、これらをパイプラインとして理解することは、各レイヤーがどのように貢献するかを説明するのに役立ちます。

ステージ 1:接続時のチェック

メールコンテンツの 1 バイトが送信される前に、受信サーバーは接続する IP アドレスを評価します。

# ブロックリストに登録された IP からの接続
550 5.7.1 Service unavailable; client [198.51.100.42] blocked
using zen.spamhaus.org

接続時のチェックは最もコスト効率的なフィルタです。接続時に拒否することで、サーバーはメッセージ全体の処理を回避できます。

ステージ 2:エンベロープチェック

SMTP エンベロープフェーズ(MAIL FROM および RCPT TO)中に、追加のチェックが実行されます:

ステージ 3:認証チェック

メッセージコンテンツが到着すると、サーバーはメール認証を評価します:

認証結果はAuthentication-Results ヘッダーに記録されます:

Authentication-Results: mx.google.com;
dkim=pass header.i=@example.com header.s=mtg;
spf=pass (google.com: 198.51.100.42 is permitted) smtp.mailfrom=example.com;
dmarc=pass (p=REJECT) header.from=example.com

認証は前提条件であり、保証ではありません。SPF、DKIM、DMARC をパスしても、メッセージがインボックスに届くことは保証されません。スパマーは有効な認証を設定することもできます。しかし、認証に失敗することは、メッセージをスパムまたは拒否にルーティングすることがほぼ確実である強い負のシグナルです。

ステージ 4:ヘッダー分析

スパムフィルタはメッセージヘッダーの異常を検査します:

ステージ 5:コンテンツ分析

コンテンツ分析はメッセージ本体、HTML 構造、および添付ファイルを検査します。

テキストおよび HTML 分析

URL およびリンク分析

添付ファイル分析

ステージ 6:レピュテーションスコアリング

上記のすべてのシグナルはレピュテーションモデルに供給されます。これはIP およびドメインレピュテーションが最大の影響を持つ場所です。

レピュテーションは乗数として機能します。優れたレピュテーションを持つ送信者は利益の疑い — 境界線上のコンテンツがインボックスに配信されます。貧しいレピュテーションを持つ送信者は利益がありません — きれいなコンテンツでもフィルタリングされる可能性があります。これはレピュテーションがコンテンツよりも重要である理由です。

プロバイダーはシグナルを異なる方法で重み付けします:

ステージ 7:機械学習分類

最新のスパムフィルタは数十億のメッセージで訓練された機械学習モデルを使用しています。

ベイズフィルタリング

基本的なテクニック。ベイズフィルタは、既知のスパムコーパスと既知のハムコーパスにおける単語(トークン)の頻度に基づいて、メッセージがスパムである確率を計算します。「invoice」という単語がハムの 80%に出現し、スパムの 5%に出現する場合、それは強いハムシグナルです。「unsubscribe」が「おめでとうございます! あなたは勝ちました!」と並んで現れる場合、結合確率はスパムにシフトします。

ベイズフィルタは適応的です — 新しいメッセージから学びます。ユーザーがメッセージをスパムとしてマークすると、フィルタは確率テーブルを更新します。このユーザーごとの学習は、同じメッセージがあるユーザーのスパムとしてフィルタリングされ、別のユーザーのインボックスに配信される理由です。

ニューラルネットワークモデル

大手プロバイダーは現在、個々の単語頻度をはるかに超えた深い学習モデルを使用しています。これらのモデルは以下を評価します:

たとえば、Google のスパムフィルタは、false positive レートを 0.05% 未満に保ちながら、99.9% 以上のスパムをインボックスに到達する前に処理します。これは大規模な機械学習でのみ可能です。

ステージ 8:配信後のシグナル

フィルタリングはメッセージがインボックスに到達したときに停止しません。配信後のシグナルは配置を継続的に改善します:

エンゲージメントベースのフィルタリングはフィードバックループを作成します:新しいサブスクライバーへの初期メッセージが開かれない場合、将来のメッセージはフィルタリングされる可能性が高くなります。これが IP warming アドバイスが常に最もエンゲージされた受信者から始めるよう言う理由です。

大手プロバイダーの違い

Gmail

Gmail のフィルタリングは最も高度で、最もエンゲージメント主導型です。主な特性:

Outlook.com / Microsoft 365

Yahoo / AOL

スパムフィルタのテストとデバッグ

メッセージがスパムに到達する場合、原因を診断するために体系的なアプローチが必要です。

フィルタヘッダーの読み込み

ほとんどのスパムフィルタはメッセージにヘッダーを追加してその判定を明らかにします。テストメッセージを自分自身に送信し、生のヘッダーを検査します:

# Gmail はこれらのヘッダーを追加します(「元の表示」に表示):
X-Gm-Message-State: [internal state data]
X-Google-DKIM-Signature: [Google's own signature]
Authentication-Results: mx.google.com;
spf=pass ... dkim=pass ... dmarc=pass

# Microsoft は以下を追加します:
X-Microsoft-Antispam: BCL:0;
X-MS-Exchange-Organization-SCL: 1
# SCL(スパム信頼レベル):-1=安全、0-4=配信済み、5-6=ジャンク、7-9=ブロック

# SpamAssassin(オープンソース、広く使用)は以下を追加します:
X-Spam-Status: No, score=-1.2 required=5.0
tests=DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_PASS,
RCVD_IN_DNSWL_LOW autolearn=ham

これらのヘッダーは、適用されたテストと結果が正確にわかります。Authentication-Results ヘッダーは標準化されています。スパムスコアヘッダーはフィルタ固有です。

シードテスト

複数のプロバイダー(Gmail、Outlook、Yahoo、企業サーバー)のアカウントにテストメッセージを送信し、インボックスまたはスパムに到達するかどうかを確認します。これは、主要なキャンペーンまたはインフラストラクチャの変更の前に行ってください。いくつかのサードパーティサービスは、数十のプロバイダー全体のテストアドレスのパネルでこれを自動化します。

変数の分離

メッセージがスパムに到達する場合、トリガーを識別するために一度に 1 つの変数を変更します:

何が悪く なる可能性があります

正当なメールがスパムとしてフィルタリングされる

トランザクションメール(パスワードリセット、注文確認)が同じドメインのマーケティングメールがドメインレピュテーションを低下させたためにスパムに到達します。修正:トランザクションとマーケティングメールを異なるサブドメインに分離して、マーケティングからのレピュテーション損害が重要なトランザクション配信に影響しないようにします。

正当なコンテンツでのコンテンツトリガー

請求書メールに「payment」という単語と添付ファイルとリンク — すべて正当ですが、組み合わせは高くスコア付けされます。修正:強力な認証とレピュテーションを確保して、コンテンツシグナルが信頼できる送信者のコンテキストで評価されるようにします。

エンゲージメント死のスパイラル

非アクティブなサブスクライバーの大量リストに送信します。ほぼ誰もメールを開きません。低いエンゲージメント率が後続のメッセージをスパムに移動させます。さらに少ない人々がそれを見ます。開く率はさらに低下します。より多くのメッセージはスパムになります。修正:非アクティブなサブスクライバーを定期的に削除し、非エンゲージド状態になる前に再エンゲージキャンペーンを使用します。

URL ブロックリスト

メールでリンクされているドメインがブロックリストに登録されます(おそらくトラッキングドメイン、または共有リンク短縮サービス)。そのリンクを含むすべてのメールはフラグが立てられます。修正:トラッキングリンクに自分のドメインを使用し、リンクレピュテーションを監視し、メールで共有 URL 短縮サービスを回避します。

重要なポイント

さらに詳しく

Related RFCs