このところ、うちのドメインを騙って送られたspamの弾かれた奴が戻ってくるのが目に付くようになってるんだけど、その中に画像付きの奴がいくつか見られるのと、ふつーに送られてくるspamの中にも画像付きの奴が来、ちらほら。
なので「対策をしてみよう!」ということで、SpamAssassinの機能を拡張するためのPlugin、FuzzyOcrPluginを入れてみた。
まずは、前準備と言うことで、FuzzyOcrを動かすための前提となるパッケージからインストール。
Debianの場合(ただしEtchかsid)、Operating System specific notesを見ると
# apt-get install netpbm gifsicle libungif-bin gocr ocrad
# apt-get install libstring-approx-perl
を実行しろと書いてあるので、その通りに実行すれば、依存関係上必要なものも一発でインストール完了。
続いて、FuzzyOcrのパッケージを、wgetとかで適当なところにダウンロードして、解凍。ドキュメントに従って、FuzzyOcr.cf
とFuzzyOcr.pm
を/etc/mail/spamassassin
の下にコピー。
# tar xvfz fuzzyocr-3.4.2-devel.tar.gz
# cd FuzzyOcr-3.4.2/
# cp -p FuzzyOcr.* /etc/mail/spamassassin/
あとは、/etc/mail/spamassassin/FuzzyOcr.cf
を必要に応じて修正すればいいんだけど、基本的には弄る必要はないみたい。
ただ、ログファイルを/etc以下に置くのも何なので、ログの出力先に関する設定を下の通りに変更。
# diff -u ~/FuzzyOcr-3.4.2/FuzzyOcr.cf /etc/mail/spamassassin/FuzzyOcr.cf
--- /root/FuzzyOcr-3.4.2/FuzzyOcr.cf 2006-11-11 21:27:33.000000000 +0900
+++ /etc/mail/spamassassin/FuzzyOcr.cf 2006-12-09 20:32:25.000000000 +0900
@@ -18,6 +18,7 @@
#
# Logfile (make sure it is writable by the plugin) (Default value: NONE)
#focr_logfile /etc/mail/spamassassin/FuzzyOcr.log
+focr_logfile /var/log/FuzzyOcr.log
##########################
##### Wordlists #####
で、あとはspamassassinの再起動でOKなはずなんだけど、うちの環境では、
Dec 9 20:42:16 eswat2 spamd[1039]: Can't locate MLDBM.pm in @INC (@INC contains: lib ../lib /usr/share/perl5 /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4) at /etc/spamassassin/FuzzyOcr.pm line 17.
Dec 9 20:42:16 eswat2 spamd[1039]: plugin: failed to parse plugin /etc/spamassassin/FuzzyOcr.pm: Can't locate MLDBM.pm in @INC (@INC contains: lib ../lib /usr/share/perl5 /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4) at /etc/spamassassin/FuzzyOcr.pm line 17.
と「MLDBM.pmがない」と/var/log/mail.info
に出力されるので、改めて
# aptitude install libmldbm-perl
を実行して、MLDBM.pmをインストール後にspamassassinを再起動。
あとは、FuzzyOcrのアーカイブに一緒に入っているsampleディレクトリ以下のテストファイルをspamassassinに喰わせてみて、出力の中に
X-Spam-Status: Yes, score=20.6 required=5.0 tests=DATE_IN_PAST_06_12,
EXTRA_MPART_TYPE,FUZZY_OCR,HTML_MESSAGE autolearn=no version=3.1.7
とか
Content analysis details: (20.6 points, 5.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.8 EXTRA_MPART_TYPE Header has extraneous Content-type:...type= entry
0.7 DATE_IN_PAST_06_12 Date: is 6 to 12 hours before Received: date
0.0 HTML_MESSAGE BODY: HTML included in message
19 FUZZY_OCR BODY: Mail contains an image with common spam text inside
Words found:
"meridia" in 1 lines
"target" in 1 lines
"charts" in 1 lines
"symbol" in 1 lines
"stock" in 2 lines
"company" in 3 lines
"alert" in 4 lines
"trade" in 1 lines
"manufacture" in 2 lines
"xanax" in 1 lines
(17 word occurrences found)
というのが見つかれば正常に動作してます。
ただ、テストしたときに感じたんだけど、画像中をチェックするだけに、サーバへの負荷は大きそう。幸いにしてうちはメールの量もさほど多くないので、問題にはならないと思うけど・・・・。
コメントする