メールサーバ - procmail - スパムスコアで処理をわける


 クラウディア


1. 概要
2. 設定
5. 備考

1. 概要

 2025年5月23日の時点で、「Spamassassin」を使っておりまして。  「Spamassassin」が、スパムと判定したメールは、スパム転送用のメールアドレスへ転送をかけています。  だがしかし、1日にスパムと判定するメールの量がただものではない多さなのです。  入口で止めたいものの、メールアドレスも全然別物だったりしますので、なかなか入口では、絞り込みが難しいのです。  でまぁ、「Spamassassin」で、スパムに転送したものうち、スコアがさらに上のものは、受信もせずに捨ててしまおうと考えたわけです。

2. 設定

 なかなか、スコアを取り出すのが大変なので。  メールヘッダに。

X-Spam-Score: n.n
 というスコアの行を追加します。  行を追加するのは、「Spamassassin」の設定になります。  その設定方法は、「メンテナンス・トラブルシュート - メールサーバ - Spamassassin」の方に書いてありますので、そちらをご参照ください。  スコアの行がある前提で。  スパムメール転送ユーザ権限で。  ゴミ箱を作成。

mkdir -pv ~/Maildir/junk
 レシピを編集。

vi ~/.procmailrc
 末尾へ、下記を追加します。

SPAMTHRESHOLD=100

# Create SCORE variable which contains the header I created in Spamassassin
:0 # H flag is implicit
    * ^X-Spam-Score: \/.+
    { SCORE=$MATCH }

# Check for Spam-Status: Yes, and
# $SCORE > $SPAMTHRESHOLD
:0 H
    * ^X-Spam-Status: Yes
    * $ -${SPAMTHRESHOLD}^0
    * $ ${SCORE}^0
    {
        # do stuff. in this case move the mail to
        :0
        junk/.
}
 とりあえず、これ、スコアが 100 を超えていたら、ゴミ箱へ捨てる予定ですが。  まぁ、100 を超えるものは、そうそうないだろうから、ログや受信メールをチェックして、誤りがないことを確認できたら、徐々に、スコアを下げていこうと思います(2025年5月23日)。  これが、なかなか、かかるものがないので、別ユーザの「.procmailrc」に上記と同じ記述にして、チェックのスコアをぐっと下げて。

~/Maildir/junk
 へ保存できることを確認できました。

5. 備考

 本ページは、下記のサイトを参考にさせていただきました。
Procmail recipe to match Spamassassin X-Spam-Status score or X-Spam-Level

earthcar(アースカー)