FreeBSD/SpamAssassin
SpamAssassin †
毎日たくさん送られてくるスパムメールをメールサーバ側で検知してくれるソフト。
プログラムはPerlで書かれていて分かりやすいですね。
procmailと組み合わせてフォルダ分けしたり、削除したり色々と活用できそうです。
環境 †
Perl 5.8.8 SpamAssassin 3.1.5
sa-updateでルールセットの更新 †
sa-updateは、ルールセットの更新とプログラム自体のリリースを分離するために作られた、ルールセットの更新システムです。
sa-updateを実行 †
下記のように実行するだけです。
# sa-update
当たらしルールセットは/var/lib/spamassassinに保存されます。
# ll /var/lib/spamassassin/ total 2 drwxr-xr-x 3 root wheel 512 9 14 20:01 3.001005/
local.cf設定 †
これを活用させていただきました。
http://tlec.linux.or.jp/docs/user_prefs
rewrite_header Subject [SPAM] # 件名を書き換える。[SPAM]を件名の先頭に付ける report_safe 1 # 0:本文は変更しない 1:本文は添付に変更(デフォルト) trusted_networks 192.168.1. # 信頼済のネットワークを除外する
オプション †
ショート | ロング | 説明 |
-a | --auto-whitelist, --whitelist | auto-whitelists を使用 |
-c | --create-prefs | ユーザ preferences ファイルを生成 |
-C path | --configpath=path | Path for default config files |
-d | --daemonize | デーモン化 |
-h | --help | Print usage message. |
-i ipaddr | --listen-ip=ipaddr,... | Listen on the IP ipaddr (default: 127.0.0.1) |
-m num | --max-children num | Allow maximum num children |
-p port | --port | Listen on specified port (default: 783) |
-q | --sql-config | Enable SQL config (only useful with -x) |
-V | --virtual-config=dir | Enable Virtual configs (needs -x) |
-r pidfile | --pidfile | Write the process id to pidfile |
-s facility | --syslog=facility | Specify the syslog facility (default: mail) |
--syslog-socket=type | How to connect to syslogd (default: unix) | |
-u username | --username=username | Run as username |
-v | --vpopmail | Enable vpopmail config |
-x | --nouser-config | Disable user config files |
-A host,..., | --allowed-ips=..,.. | Limit ip addresses which can connect |
-D | --debug | Print debugging messages |
-L | --local | Use local tests only (no DNS) |
-P | --paranoid | Die upon user errors |
-H dir | 異なった HOMEディレクトリー (オプションのパス)を指定 |
Spamassassinでヘッダに****SPAM****を付加する設定をしても付加してくれない場合。 †
local.cfには「rewrite_header Subject *****SPAM*****」の記述をしてある
自分の環境では仕方ないのでspamcを使ってqmail-scanner.plを編集しました。
# vi /usr/local/bin/qmail-scanner.pl -----------------編集個所----------------- my $spamc_subject=''; ↓ my $spamc_subject='***Spam***'; -----------------編集個所-----------------
これで、spamassassinがspamとして判断したものに対して「***Spam***」が付加されます。
※現在の環境Perl5.8.8 spamassassin3.1.5ではlocal.cfのrewrite_header Subject [SPAM]を変更する事で件名に[SPAM]を追加してくれています。
/var/log/mail.logを見るとCan't locate Mail/SPF/Query.pmとエラーが表示されている †
環境 †
SpamAssassin 3.1.0 Perl 5.8.6
Cpanからインストール †
# perl -MCPAN -e shell cpan> o conf prerequisites_policy ask cpan> install Mail::SPF::Query cpan> exit
これでエラーは出なくなります。
SpamAssassin日本語対応 *1 [#bb832c88] †
オリジナルのSpamAssassinは日本語等のマルチバイト文字の言語を正しく扱う ことができません。このパッチを適応することにより、SpamAssassinで正しく 日本語を扱うことができるようになります。
- 形態素解析エンジンMeCab
- MeCabの辞書mecab-ipadic
- MeCabのPerlバインディングText::MeCab
- 文字エンコーディング検出器Encode::Detect
- SpamAssassinにパッチあて
- 設定ファイル準備(/etc/mail/spamassassin)
- テスト
- 起動
なお、このパッチは日本SpamAssassinユーザ会(http://spamassassin.jp/)により 開発が行われています。
形態素解析エンジンMeCab †
$ tar zxfv mecab-X.X.tar.gz $ cd mecab-X.X $ ./configure --with-charset=utf8 $ make $ make check $ su # make install
形態素解析エンジンMeCab(Ports) †
# cd /usr/ports/japanese/mecab # make WITH_CHARSET=utf-8 install
MeCabの辞書mecab-ipadic †
$ tar zxfv mecab-ipadic-2.7.0-XXXX.tar.gz $ cd mecab-ipadic-2.7.0-XXXX $ vi char.def
- char.defを編集して次のように書き換える。
------------------------------------------------ # ASCII 0x0021..0x002F ALPHA 0x0030..0x0039 ALPHA 0x003A..0x0040 ALPHA 0x0041..0x005A ALPHA 0x005B..0x0060 ALPHA 0x0061..0x007A ALPHA 0x007B..0x007E ALPHA ------------------------------------------------ $ ./configure --with-charset=utf8 $ make $ su # make install
MeCabのPerlバインディングText::MeCab †
配布元: http://search.cpan.org/~dmaki/Text-MeCab/
$ tar zxvf Text-MeCab-0.13.tar.gz $ cd Text-MeCab-0.13 $ perl Makefile.PL Path to mecab config? [/usr/local/bin/mecab-config] Enter Encoding of your mecab dictionary? (shift_jis, euc-jp, utf8) [euc-jp] utf8 Enter $ make $ make install
MeCabのPerlバインディングText::MeCab(Port) †
# cd /usr/ports/japanese/p5-Text-MeCab # make install
文字エンコーディング検出器Encode::Detect †
配布元: http://search.cpan.org/~jgmyers/Encode-Detect/
cpan を使って install Bundle::CPAN でCPANモジュール&関連モジュールを最新版にする cpan の再設定(reload cpan では有効にならないモジュールがある模様) (上記で BuildやYAMLが入ります) install Module::Build install ExtUtils::CBuilder install Data::Dump そして最後に install Encode::Detect を実行してやると入りました
Razor2 †
SpamAssassinがメールを受け取ったらRazor2にオンラインで照会しSpamメールか判断するというもの
ソース:http://wiki.apache.org/spamassassin/InstallingRazor
Port
# cd /usr/ports/mail/razor-agents # make install
SpamAssassinにパッチあて †
パッチ ⇒ http://spamassassin.jp/download/
※自分の場合portsからインストールしていたので、make deinstallで一度アンインストールしてから作業しました。
$ fetch http://www.emaillab.org/spamassassin/patch/spamassassin-3.1.5-normalize-test6.patch $ tar zxvf Mail-SpamAssassin-3.1.5.tar.gz $ cd Mail-SpamAssassin-3.1.5 $ perl Makefile.PL $ patch -p1 <../spamassassin-3.1.5-normalize-test6.patch $ make $ su # make install
設定ファイル準備(/etc/mail/spamassassin) †
local.cfに下記を追加
normalize_charset 1 $ fetch http://www.emaillab.org/spamassassin/patch/tokenizer.pre 下記の行をコメント解除 loadplugin Mail::SpamAssassin::Plugin::Tokenizer::MeCab
テスト †
# spamassassin --lint
起動 †
# /usr/local/bin/spamd -s /var/log/spam.log /usr/local/bin/spamd -c -d -x -v -u vpopmail -r /var/run/spamd
spandの起動オプション ⇒ http://spamassassin.apache.org/full/3.2.x/doc/spamd.html
sa-learnでspamassassinの学習 †
sa-learn コマンドでspamassassinに学習をさせ、スパムの判定精度を向上させることができます。
書式 †
# sa-learn オプション フォルダ
オプション †
--spam spam としてメッセージを学習 --ham ham(non-spam) としてメッセージを学習
使用例 †
/usr/local/vpopmail/Spamにスパムメールを保存しておいてから。
# sa-learn --spam /usr/local/vpopmail/Spam
*1 日本Spamassassinユーザ会http://spamassassin.jp/