postgrey + FQDNチェックパッチ を導入して以来、それまで使っていたCRM114はやめているのだが、postgrey のほうが安定して動いているようなので、2段目のフィルタとしてCRM114を再度導入してスパムの検出率を上げたいと思う。
しかし、CRM114では、大きなメールが来たときに、メールボックスがおかしくなってしまうときがたまにあり、この問題を解決しないといけないなあ、と思っている。
そこで、CRM114に食わせる前にMIMEのパートを見て、textとかでないものは事前に捨てちゃえばいい、と考えました。
あと、サイズを100K以内とかで、先にそこで切ってしまっても良いように思います。
それでそんなフィルタを作るために、CPANでMIME-toolsの資料を漁ったりしていたら、すでに同じようなことをされている人を発見。
こちらの方は、bogofilterだとかCRM114だとか、ベイシアンフィルタ系のツールでは、事前にnkfかけてkakasi通して、というのをパッチだとかでやるので、それをやるための汎用フィルタを作ったらいいんでは、というのが開発動機のようですが、そのおまけとして余計なパートを削るという機能も実装されていました。
迷惑メール
http://www.tomilab.net/~tominaga/antispam/
なのでこちらのソースを使わせてもらって、ある程度以上読み込んだら、そっから先を捨てちゃう機能を足せば、自分の欲しいものになると思います。
なんですが、Ruby なんだよな。
仕方ないからこの機にちょっとだけ Ruby を使えるようになろうと思います。
(追記)
procmailで事前にサイズチェック見て、でかかったらフィルタしない運用にしてるとのこと。
うーん。でかいspamだとか送ってくることはないからこれでいいのかも。
もしくは、このプレフィルタの前にさらにheadかなんかを入れてフィルタにするだけでもよいのかなあ。