SpamAssassinのプラグイン

サーバー運用がかなり厳しいので寄付をしてくれる人がいたらこちら
メインPCもボロボロになってきたので、ついにほしいものリスト公開

デフォルトとサードパーティとあるようで、色々試してみましょう。

デフォルトでは以下のものがインストールされてます。

デフォルト プラグイン名
× ASN.pm
AWL.pm
× AccessDB.pm
× AntiVirus.pm
AutoLearnThreshold.pm
Bayes.pm
BodyEval.pm
× BodyRuleBaseExtractor.pm
Check.pm
× DCC.pm
× DKIM.pm
DNSEval.pm
× DomainKeys.pm
HTMLEval.pm
HTTPSMismatch.pm
Hashcash.pm
HeaderEval.pm
ImageInfo.pm
MIMEEval.pm
MIMEHeader.pm
× OneLineBodyRuleType.pm
Pyzor.pm
Razor2.pm
× RelayCountry.pm
RelayEval.pm
ReplaceTags.pm
× Rule2XSBody.pm
SPF.pm
× Shortcircuit.pm
SpamCop.pm
× Test.pm
× TextCat.pm
URIDNSBL.pm
URIDetail.pm
URIEval.pm
VBounce.pm
WLBLEval.pm
WhiteListSubject.pm

本家で公開しているサードパーティ製プラグイン一覧
http://wiki.apache.org/spamassassin/CustomPlugins

GoogleSafeBrowsing

Google APIを使ったプラグインで、メール本文のURLやメールアドレスを
GoogleSafeBrowseで検証して、スコアをつけるらしいです。

インストール

perl -MCPAN -e shell
cpan[1]> install Net::Google::SafeBrowsing::Blocklist
cpan[2]> install Net::Google::SafeBrowsing::UpdateRequest
cpan[3]> install Mail::SpamAssassin::Plugin::GoogleSafeBrowsing

他にも依存するものがあるかもしれません。
起動時のメッセージを見て足りないものは適宜追加してください。

設定

http://code.google.com/apis/safebrowsing/key_signup.html
ここでAPIキーを取得します。

/usr/local/sbin/gsb-update

#!/bin/sh
 
#APIKEY=取得したAPIキー
for LIST in goog-black-hash goog-malware-hash; do
	blocklist_updater --apikey "$APIKEY" --blocklist $LIST --dbfile /var/cache/spamassassin/${LIST}-db
done

シェルを実行させる

chmod 755 /usr/local/sbin/gsb-update
crontab -e
*/20 * * * * /usr/local/sbin/gsb-update >/dev/null 2>&1

/etc/mail/spamassassin/init.pre(以下を追加)

# GoogleSafeBrowsing<br>#
loadplugin Mail::SpamAssassin::Plugin::GoogleSafeBrowsing

/etc/mail/spamassassin/local.cf(以下を追加)

# Google Safe Browsing
 
google_safebrowsing_dir /var/cache/spamassassin
google_safebrowsing_apikey 取得したAPIキー
google_safebrowsing_blocklist goog-black-hash 0.2
google_safebrowsing_blocklist goog-malware-hash 0.1

エラーが無いか確認して見ましょう。

spamassassin -D --lint
~~~
dbg: plugin: loading Mail::SpamAssassin::Plugin::GoogleSafeBrowsing from @INC
dbg: logger: adding facilities: GoogleSafeBrowsing
dbg: GoogleSafeBrowsing: Spam score for message: 0
~~~

あたりが出てればOKです。
後はspamdを再起動してログを確認しておしまいです。

URLを含んだメールを受信したときにはこんな感じで記録されます。

GoogleSafeBrowsing: URI: 'http://www.example.com/', blocklist: goog-malware-hash, match: '(none)'
GoogleSafeBrowsing: URI: 'http://www.example.com/', blocklist: goog-black-hash, match: '(none)'

FuzzyOcr

画像Spam対策のためのプラグインです。
対応しているのはgif(アニメーション含む)/jpg/pngで
ハッシュ機能を備えています。
ただし、日本語に対応しているかは未検証です。
3.3.0ではエラーをはいてしまい使えなくなっています。

利用するには次のツールが入っていることが前提となります。

  • NetPBM
  • GifSicle
  • GifLib/Libungif
  • Ocrad 又は Gocr

Perlモジュール

  • String::Approx
  • Time::HiRes
  • MLDBM (オプション)
  • MLDBM::Sync( オプション)
  • Log::Agent (オプション)
  • DBD::Mysql (オプション)

ここでのPerlモジュールも起動時に足りないものがあれば適宜追加してください。

インストール

cd /usr/local/src
wget http://users.own-hero.net/~decoder/fuzzyocr/fuzzyocr-3.6.0.tar.gz
cd FuzzyOcr-3.6.0
cp -r FuzzyOcr /etc/mail/spamassassin
cp FuzzyOcr.cf FuzzyOcr.pm FuzzyOcr.preps FuzzyOcr.scansets FuzzyOcr.words /etc/mail/spamassassin

基本的にはこれで動くようになるとおもいます。
後はテストしてみてちゃんと動作するかSpamdを再起動した後に
確認しておきましょう。

cd /usr/local/src/FuzzyOcr/samples
spamc -R < ocr-multi.eml

レポートの中に以下の記述があれば正常に動作しています。

<P class=quote-hilite>FUZZY_OCR BODY: Mail contains an image with common spam text inside<br>[Words found:]<br>["buy" in 2 lines]<br>["target" in 1 lines]<br>["stock" in 2 lines]<br>["alert" in 3 lines]<br>["trade" in 1 lines]<br>[(25.5 word occurrences found)]</p></BLOCKQUOTE>
<h2>PDFInfo</h2>
<p>最近はPDFスパムが増えつつあるようなので、<br>pdftotextを使ったプラグインをつかってみます。</p>
<h2>インストール</h2>
<bash>
cd /etc/mail/spamassassin
wget http://www.rulesemporium.com/plugins/PDFInfo.pm
wget http://www.rulesemporium.com/plugins/pdfinfo.cf
mv PDFInfo.pm [SpamAssassinのあるPerlのパス]/Mail/SpamAssassin/Plugin/
mv pdfinfo.cf PDFInfo.cf
</bash>
<p>/etc/mail/spamassassin/init.pre(追加)</p>
<text>
# PDFInfo
loadplugin Mail::SpamAssassin::Plugin::PDFInfo

これでインストール完了です。
後は例によって動くか確認してみます。

spamassassin -D --lint

以下のものが出ているかを確認

dbg: config: read file /etc/mail/spamassassin/PDFInfo.cf
dbg: plugin: loading Mail::SpamAssassin::Plugin::PDFInfo from @INC

最新のものをチェックするスクリプト

#!/bin/sh
 
PM=`perl -MConfig -e 'print "$Config{installsitelib}"'`/Mail/SpamAssassin/Plugin/PDFInfo.pm
CF=/etc/mail/spamassassin/PDFInfo.cf
 
trap 'rm -f $PMTMP $CFTMP' EXIT
PMTMP=$(mktemp -t pdfinfo.pm.XXXXXXXX) || exit 1
CFTMP=$(mktemp -t pdfinfo.cf.XXXXXXXX) || exit 1
chmod a+r $PMTMP $CFTMP
 
echo Downloading, veryfying perl module and size of config file...
 
if ! wget -q -O $PMTMP http://www.rulesemporium.com/plugins/PDFInfo.pm; then
	echo FAILED to download http://www.rulesemporium.com/plugins/PDFInfo.pm
	exit 1
fi
if ! wget -q -O $CFTMP http://www.rulesemporium.com/plugins/pdfinfo.cf; then
	echo FAILED to download http://www.rulesemporium.com/plugins/pdfinfo.cf
	exit 1
fi
if ! test -s $PMTMP ; then
	echo ERROR the downloaded PDFInfo.pm file is zero sized
	exit 1
fi
if ! test -s $CFTMP ; then
	echo ERROR the downloaded pdfinfo.cf file is zero sized
	exit 1
fi
if ! perl -cw $PMTMP; then
	echo FAILED syntax check of new PDFInfo.pm module
	exit 1
fi
 
echo Successfully downloaded $PM and $CF, installing:
 
mv $CFTMP $CF || exit 1 # Probably I am not root...
mv $PMTMP $PM || exit 1 # same
 
echo Restarting SpamAssassin:
service spamd restart
 
exit 0

後は適当に調べて追加していきます。

コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
CAPTCHA
また変更しました
Fill in the blank.