SAPM対策でspamassassin+clamassassinを受信メールに対して動かしているけど、 最近このおかげで処理が重くなることが増えてきた。 fetchmailで、丹南CATVから一括して自サーバにメールを取り込んでいるため、 受信メールの数だけ並行して、spamassassin+clamassassinが動いているみたい。 pstree で激重状態の時のプロセスツリーをみると、10本同時処理になってた。 loadaverageも20を越えてる。
対策は、procmail の{spam,clam}assassinの起動方法。"man procmailrc"すると、 レシピ毎にローカルロックを指定し、排他処理することで並行処理を防ぐようにしないとダメみたい。 *assassinを起動する":fw" の後ろに、ローカルロックファイルを指定する":ロックファイル"を追加する。
:0fw: clamassassin.lock *!^X-Virus-Status.* | /usr/bin/nice /usr/bin/clamassassin :0 * ^X-Virus-Status:.*Yes /dev/null :0fw: spamc.lock *!^X-Spam-Status.* | /usr/bin/spamc :0 * ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\* * ^X-Spam-Status: Yes /dev/null :0fw: check_uri.lock *!^X-URIRBL.* | /usr/bin/nice /usr/local/bin/check_uri.pl :0 * ^X-Spam-Level: \*\*\*\*\*\*\*\* * ^X-Spam-Status: Yes * ^X-URIRBL: Yes /dev/null