FreeBSD/SpamAssassin の変更点
*''&size(15){SpamAssassin};'' [#d0b64e0a]
毎日たくさん送られてくるスパムメールをメールサーバ側で検知してくれるソフト。~
プログラムはPerlで書かれていて分かりやすいですね。~
procmailと組み合わせてフォルダ分けしたり、削除したり色々と活用できそうです。
#contents
**環境 [#x0563cf4]
Perl 5.8.8
SpamAssassin 3.1.5
**sa-updateでルールセットの更新 [#y58698f8]
sa-updateは、ルールセットの更新とプログラム自体のリリースを分離するために作られた、ルールセットの更新システムです。
***sa-updateを実行 [#jf259299]
下記のように実行するだけです。
# 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設定 [#b09726ca]
これを活用させていただきました。~
http://tlec.linux.or.jp/docs/user_prefs
rewrite_header Subject [SPAM] # 件名を書き換える。[SPAM]を件名の先頭に付ける
report_safe 1 # 0:本文は変更しない 1:本文は添付に変更(デフォルト)
trusted_networks 192.168.1. # 信頼済のネットワークを除外する
**オプション [#r7b43459]
|ショート|ロング|説明|h
|-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****を付加する設定をしても付加してくれない場合。 [#g6fedb2d]
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***」が付加されます。~
&color(red){※現在の環境Perl5.8.8 spamassassin3.1.5ではlocal.cfのrewrite_header Subject [SPAM]を変更する事で件名に[SPAM]を追加してくれています。};
**/var/log/mail.logを見るとCan't locate Mail/SPF/Query.pmとエラーが表示されている [#u58fa9a3]
***環境 [#i98878a8]
SpamAssassin 3.1.0
Perl 5.8.6
***''Cpanからインストール'' [#w67bc575]
# perl -MCPAN -e shell
cpan> o conf prerequisites_policy ask
cpan> install Mail::SPF::Query
cpan> exit
これでエラーは出なくなります。
*SpamAssassin日本語対応 [#kab2b315]((日本Spamassassinユーザ会http://spamassassin.jp/)) [#bb832c88]
オリジナルのSpamAssassinは日本語等のマルチバイト文字の言語を正しく扱う
ことができません。このパッチを適応することにより、SpamAssassinで正しく
日本語を扱うことができるようになります。
+[[形態素解析エンジンMeCab>#iebaa939]]
+[[MeCabの辞書mecab-ipadic>#yeefd73f]]
+[[MeCabのPerlバインディングText::MeCab>#l59f7a9e]]
+[[文字エンコーディング検出器Encode::Detect>#w16c8056]]
+[[SpamAssassinにパッチあて>#r669ad58]]
+[[設定ファイル準備(/etc/mail/spamassassin)>#rda8ec5b]]
+[[テスト>#d731f730]]
+[[起動>#ja1def11]]
なお、このパッチは日本SpamAssassinユーザ会(http://spamassassin.jp/)により
開発が行われています。
**形態素解析エンジンMeCab [#iebaa939]
$ tar zxfv mecab-X.X.tar.gz
$ cd mecab-X.X
$ ./configure --with-charset=utf8
$ make
$ make check
$ su
# make install
***形態素解析エンジンMeCab(Ports) [#zce59211]
# cd /usr/ports/japanese/mecab
# make WITH_CHARSET=utf-8 install
**MeCabの辞書mecab-ipadic [#yeefd73f]
$ 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 [#l59f7a9e]
配布元: 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) [#w46d2f81]
# cd /usr/ports/japanese/p5-Text-MeCab
# make install
**文字エンコーディング検出器Encode::Detect [#w16c8056]
配布元: 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 [#gcb4133e]
SpamAssassinがメールを受け取ったらRazor2にオンラインで照会しSpamメールか判断するというもの
ソース:http://wiki.apache.org/spamassassin/InstallingRazor
Port
# cd /usr/ports/mail/razor-agents
# make install
**SpamAssassinにパッチあて [#r669ad58]
パッチ ⇒ [[http://spamassassin.jp/download/]]
&color(red){※自分の場合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) [#rda8ec5b]
local.cfに下記を追加
normalize_charset 1
$ fetch http://www.emaillab.org/spamassassin/patch/tokenizer.pre
下記の行をコメント解除
loadplugin Mail::SpamAssassin::Plugin::Tokenizer::MeCab
**テスト [#d731f730]
# spamassassin --lint
**起動 [#ja1def11]
# /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の学習 [#gb909ebe]
sa-learn コマンドでspamassassinに学習をさせ、スパムの判定精度を向上させることができます。
**書式 [#sdb5b22c]
# sa-learn オプション フォルダ
**オプション [#dc860146]
--spam spam としてメッセージを学習
--ham ham(non-spam) としてメッセージを学習
**使用例 [#t4dcaa6f]
/usr/local/vpopmail/Spamにスパムメールを保存しておいてから。
# sa-learn --spam /usr/local/vpopmail/Spam