この用語をシェア
Greylistingとは
Greylisting(グレイリスティング)は、初回接続のメールを一時的に拒否(450エラー)するスパム対策手法です。正規のメールサーバーはRFC準拠で再送信を行いますが、多くのスパムボットは再送信機能を持たないため、この特性を利用してスパムを効果的にフィルタリングします。
Greylistingの動作原理
トリプレット管理
Greylistingは、以下の3つの要素(トリプレット)を記録します:
- 送信元IPアドレス
- 送信者メールアドレス
- 受信者メールアドレス
処理フロー
1. 初回接続(未知のトリプレット)
→ 450 Temporary failure(一時拒否)
→ トリプレット記録 + タイムスタンプ
2. 再送信(5分後など)
→ トリプレット確認
→ 遅延時間が条件を満たす場合、受信許可
→ ホワイトリストに追加
3. 以降の接続(ホワイトリスト登録済み)
→ 即座に受信
典型的な設定パラメータ
- 最小遅延時間: 5分(スパムボットは待機しない)
- 最大遅延時間: 4時間(それ以降の再送は拒否)
- ホワイトリスト保持期間: 30日(定期送信者の記録)
メリットとデメリット
メリット
- 高効果: スパムの50-90%をブロック
- 低負荷: 軽量な処理(CPU負荷が小さい)
- 誤検知ゼロ: 正規メールは必ず到達(遅延するのみ)
- コンテンツ分析不要: トリプレットのみで判定
デメリット
- 初回配送の遅延: 5-15分の遅延が発生
- 一部サービスとの非互換: 再送機能を持たないサーバーとの問題
- 緊急メールの遅延: 重要な初回メールも遅延
自社メールサーバー運用への応用
Postgrey(Postfix用)
# main.cf
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
check_policy_service inet:127.0.0.1:10023
# Postgrey起動
postgrey --inet=127.0.0.1:10023 --delay=300
Rspamdでの設定
Rspamdには、Greylisting機能が統合されています:
# /etc/rspamd/local.d/greylist.conf
enabled = true;
timeout = 300s; # 5分
expire = 30d; # 30日間保持
Docker Mailserverでの有効化
services:
mailserver:
environment:
- ENABLE_RSPAMD=1
- RSPAMD_GREYLISTING=1
ホワイトリスト設定
特定の送信者(銀行、クラウドサービスなど)は、Greylistingをスキップするようホワイトリスト登録を推奨します。
他のスパム対策との組み合わせ
Greylistingは、以下の対策と組み合わせることで効果を最大化します:
- SPF/DKIM: 送信元認証
- RBL: ブラックリスト照会
- SpamAssassin/Rspamd: コンテンツフィルタリング
関連ブログ記事
まとめ
Greylistingは、シンプルかつ効果的なスパム対策手法です。初回配送の遅延というデメリットはありますが、高いスパムブロック率と低い誤検知率により、多くのメールサーバーで採用されています。重要な送信者をホワイトリスト登録することで、デメリットを最小化できます。
