仕事用のメールアドレスに届く迷惑メールが、うまく振り分けられていないことに気づいたので、メールサーバーの設定を変更することにしました。
1. cPanelのスパムフィルタ
私が使用しているレンタルサーバーでは、「cPanel」の管理メニューから「スパムフィルタ」が設定できました。
このスパムフィルタは、「Apache SpamAssassin」が搭載されていました1。
1-1. スパム閾値スコアを下げる
関係するのは、「スパム閾値スコア(Spam Threshold Score)」。
この値を調整すると、スパム検知の敏感さを変更できます。
スパムフィルターの設定を変更することで、迷惑メールをより効果的に振り分けることができます。
しかし、同時に正しいメールを見落とさないように注意が必要です。
初期状態ではスパムスコアの値が中間の5に設定されていましたが、それを1に変更することにしました。
この設定では、スパムの検知が非常に敏感になるため、通常のメールもスパムと判定されてしまう可能性があります。
設定変更後は、どの程度の誤判定が発生するのかを確認しようと思います。
適切なバランスを見つけるために、設定変更後の状況を注視していきたいと考えています。
2. スパムスコアの計算アルゴリズム
SpamAssassinでは、いくつかのルールを組合せて「スパムの可能性」を計算したスパムスコアとスパム閾値スコアを比較して判定します。
- ルール照合
- ベイジアンフィルタ
- メタルール照合
その計算の基本的な流れは、以下のように概説できます。
my $total_score = $rule_scores + $bayes_score + $meta_scores;
if ($total_score >= $self->{conf}->{required_score}) {
$msg->set_is_spam(1);
}
- ルール照合によるスコア計算
SpamAssassinは受信したメールに対して、事前に設定された判定ルールを順番に適用します。
メールがルールの条件に合うと、そのルールに割り当てられたスコアを記録していきます。
例えば、メールがルールAにマッチしてスコア1.5が加算され、
ルールBにもマッチしてスコア2.0が加算された場合、
メールの合計スコアは3.5になります。 - ベイジアンフィルタのスコア調整
SpamAssassinは “bayes_auto_learn” オプションが有効な場合、ベイジアンフィルタによるスパム確率を計算し、それに基づいてスコアを調整します。 - メタルールによるスコア調整
メタルール(複数のルールの組み合わせに基づいてスコアを調整するルール)がマッチすると、それに割り当てられたスコアが加算されます。
単体では無害でも組み合わさったときにスパムのなるような特徴に対応します。 - 最終スコアの計算とスパム判定
そのメールの最終スコアがスパム閾値以上なら、「スパム」と判定されます。
スパム閾値は、”required_score” オプションで設定され、デフォルトでは 5.0です。
実際のアルゴリズムはより複雑ですが、これらのステップを組み合わせることで、効果的に迷惑メールを検出します。
SpamAssassinは、ルールベースのフィルタリングに加えて「ベイジアンフィルタ」を組み合わせています。
(補足)
QRコードを読み込むと、関連記事を確認できます。