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
# 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

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

FUZZY_OCR BODY: Mail contains an image with common spam text inside
[Words found:]
["buy" in 2 lines]
["target" in 1 lines]
["stock" in 2 lines]
["alert" in 3 lines]
["trade" in 1 lines]
[(25.5 word occurrences found)]

PDFInfo

最近はPDFスパムが増えつつあるようなので、
pdftotextを使ったプラグインをつかってみます。

インストール

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

/etc/mail/spamassassin/init.pre(追加)

# 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.