spamassasinは怪しいメールには、メール本文の冒頭に警告メッセージをつけてくれるので、スマートフォンなどのメール通知で怪しいメールが来たかどうかをすぐに見分けることができる。本当はすぐに隔離して mailboxに入らないようにすればいいんでしょうが。。。
ところが最近、別のサーバ(MX secondary)に届くメールにそれが入らなくなってしまった。どうも milterでsa-spamd を通らなくなってしまったようだ。
milter-manager ? spamd ? socketのowner,permission ? 何が悪いのかよくわからないまま、perlのライブラリ、ruby、openssl,gpgなどいろいろアップデートしてみたが、なかなか解決と行かなかった。
/var/log/spamd.log をつぶさに追っかけて、spamdがちゃんと起動していないのが原因のよう。
どうも sendmail をバージョンアップしたときからおかしくなってしまったよう。
error: Can't locate Net/SSLeay.pm in @INC
spamd: error: Bad arg length for Socket::unpack_sockaddr_in, length is 28, should be 16
あたりが問題だったようで、以下の記事を参照に、Socket6 を再インストールしたら解決した。
https://freebsd.sing.ne.jp/daily/09/09/05.html
milterの動きを見ると、
Milter (milter-manager): timeout before data read, where=eom
Milter (milter-manager): to error state
とちゃんと filterを通らないまま通過しているケースが頻出していた。spamassasin(spamd) を通過していないようだ。 /var/log/spamd.log には
warn: bayes: cannot open bayes databases /root/.spamassassin/bayes_* R/W: lock failed:
ということのよう。ここにある、bayes_seen,bayes_toks が肥大化しているよう。
一度削除し、sa-spamdの再起動したらうまく filterを通って、mail headerに 'X-Spam-Status','X-Virus-Statsus' などのヘッダーもつけてくれるようになった。
本当は、sa-learn で適切に学習、DBのサイズ縮小(?)をしていかないといけないようだ。
または dbではなくて redis を使った高速化等を検討すべきとのこと・・・次の課題でしょうか。
milterの動きを見ると、
Milter (milter-manager): timeout before data read, where=eom
Milter (milter-manager): to error state
とちゃんと filterを通らないまま通過しているケースが頻出していた。spamassasin(spamd) を通過していないようだ。 /var/log/spamd.log には
warn: bayes: cannot open bayes databases /root/.spamassassin/bayes_* R/W: lock failed:
ということのよう。ここにある、bayes_seen,bayes_toks が肥大化しているよう。
一度削除し、sa-spamdの再起動したらうまく filterを通って、mail headerに 'X-Spam-Status','X-Virus-Statsus' などのヘッダーもつけてくれるようになった。
本当は、sa-learn で適切に学習、DBのサイズ縮小(?)をしていかないといけないようだ。
または dbではなくて redis を使った高速化等を検討すべきとのこと・・・次の課題でしょうか。