さくらのレンタルサーバのメールフィルタの設定について記載します。
メールフィルタのしくみ
さくらのレンタルサーバはSpamAssassinを使用しており、サーバ側でメールフィルタの設定をすることができます。また、受信メールの振り分けにはmaildropを使用しています。この二つを組み合わせてメールのフィルタリングを行います。
SpamAssassinの設定
SpamAssassinの設定は/home/$username/.spamassassin/user_prefsで行います。ここで$usernameはサーバのログインユーザの名前です。このファイルではSpamAssassinで算出されたスコア(高いほどスパムである可能性が高い)のしきい値を指定します。私は大分スパムメールを学習させているのでスコアは低めに2.0に設定しています。
required_score 2.0
SpamAssassinは学習したスパムメール、スパムではないメールの情報に基づいてベイズ統計を用いてスパムメールに関するスコアを算出します。以前は、このスコアを算出するためのルールをuser_prefsに記載していましたが、いまは記載していません。
SpamAssassinを通過するとメールヘッダに以下のような情報が付加されます。
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on www984.sakura.ne.jp
X-Spam-Level:
X-Spam-Status: No, score=-2.4 required=2.0 tests=BAYES_00,
TVD_SPACE_RATIO_MINFP autolearn=ham autolearn_force=no version=3.4.6
上記の例では、算出されたスコアは-2.4になっており、閾値である2.0以下ですので、X-spam-StatusはNoとなり、スパムではないメールとして扱われます。
maildropの設定
SpamAssassinを通過しない(前節で示したメールヘッダの情報が付加されない)スパムメールが届くことがあります。メール受信の順序としては、先にmaildropの処理がなされ、その後にSpamAssassinに送られているようで、例えばmaildrop側であるメールアドレスをホワイトリストに設定していると、そのメールアドレスからきたメールはSpamAssassinを通らずに届いてしまうようです。
ホワイトリストに指定しているのだから当然ともいえる動作ですが、ホワイトリストにのっているメールアドレスを偽装して送信されてくるメールもあるわけで(特に受信側の自分自身のアドレスに差出人が偽装されていることは多々あります)、そういう場合は困ります。
このようなメールが何通かきたら、そのヘッダの情報をみて、maildropの設定でスパムメールボックスに送るように設定します。
maildropの設定は/home/$username/MailBox/$mailuser/.mailfilterで行います。ここで$mailuserはメールアドレスの@の前の部分です。ここでは以下のように.mailfilterを設定します。
if ( /^Received:.*atlas.*\.aol\.mail.*/ )
{
to "maildir/.spam/"
}
... 続きの設定(省略) ...
上記ではif文のかっこ内のスラッシュで囲まれた範囲において、正規表現でヘッダの情報が該当していないか確認し、該当したらそのメールをスパムメールボックスに送るようにしています。
maildropの設定の確認
maildropの設定が終わったら以下のコマンドで構文に間違いがないか確認します。
% maildrop -V 9 < /dev/null