2005/04/16(土)qmail-scanner(SpamAssassin インストール編)

2005/04/16 05:00 PC(Linux)
Qmail Scannerによるメールスキャンのインストール。
~SpamAssassinインストール編~

SpamAssassinはRBLやBayesを利用する多機能スパムフィルタだ。

今回はこれをqmail-scanner経由でqmailから使えるようにしてみる。

同種のソフトにbogofilterやbsfilterがある。SPamAssassinの良いところはNSに基づいた細かい設定や協調型フィルタリングデータベース(rbl)の利用(その分設定ファイルは異常に長く複雑であるが)が行えるところだろう。その分bogofilterなどに比べると動作速度は遅い(という噂)。単にベイジアンフィルタとして使いたいだけなら、bogofilterの方が早いという情報は良く出てくる。

SpamAssassinをインストールする前に大きなRBLに関しては事前にどれを使うか決めておく必要がある。デフォルトで使えるrblは主に以下3つ。

razor,pyzor,DCC

pyzorは登録が厳しすぎ、DCCは逆に登録が甘すぎるという話で、Razorが一番使い易いらしい。今回はRazorのみ使用する。

[1]Razorのインストール
# apt-get install razor

Sorry, but the following packages have unmet dependencies:
  razor: Depends: libdigest-sha1-perl but it is not going to be installed
         Depends: libnet-dns-perl but it is not going to be installed
         Depends: libtime-hires-perl (> 1.20-3)
         Depends: libmailtools-perl but it is not going to be installed
依存関係で怒られて入らない。またもやperl5.6<-->5.8問題? 怪しいところで以下をピックアップしてインストール。
# apt-get install libdigest-sha1-perl/testing
# apt-get install razor/testing
今度は入った。

Razor用の設定ファイルを作成するために以下のコマンドを打つ。
# razor-client
# razor-admin -d -create -home=/etc/razor
[2]SpamAssassinのインストール
ログが大混乱しているので、ハマリは別記事にかいた。これは正当手順(と思われるもの)。

(1)
いつも通りaptで取ってくる。
# apt-get install spamassassin/testing
モジュールが足りてないようなので、
# apt-get install libhtml-parser-perl/testing
# apt-get install libnet-dns-perl/testing
(2)
設定ファイルで、spamassassinを有効にする。
/etc/default/spamassassin

ENABLED=0

ENABLED=1
に書き直す。

注意!:/etc/init.d/spamassassinのENABLEDを書き換えても動かないので注意

/etc/default/spamassassin
OPTIONSに-F 0を追加

(3)
spamdを動かす
# /etc/init.d/spamassassin start
(4)
qmail-scannerを生成し直す。qmail-scannerインストールの記事を参照。
# ./configure --lang ja_JP.EUC --admin root --scanners clamdscan,verbose_spamassassin --notify recips,admin --domain dt8.jp --install
テスト。
# contrib/test_installation.sh -doit
このテストで通常メール1通と、ウィルス告知メール2通と、スパム判定されてスパム本体が添付に入っているメール1通が送られてくればインストール成功。

[3]SpamAssassin設定
(1)設定調査
SpamAssassinの設定ファイルで日本語もケアしているもので探したところネット上で2つ発見した。

unix-power
http://www.unix-power.jp/linux/local.txt
tlec
http://tlec.linux.or.jp/docs/user_prefs

自分のところに来たメール30通ほどをそれぞれこの設定で処理にかけ、良い方をベースに調整していくことにする。

テストに使用したメールは、ham側(hamは非スパムメールのこと)はDMやMLを中心に誤判定されそうなものをピックアップ、spam側はいくつかは誤判定されそうなものを入れるようにしたが基本的には無作為抽出した。

テスト結果は以下の通り。
--spam--
   unix-power	tlec
1	22.9 	34.5 
2	26.8 	35.0 
3	20.8 	23.2 
4	13.8 	23.9 
5	10.6 	15.8 
6	13.7 	19.3 
7	28.1 	35.4 
8	22.7 	28.3 
9	 6.4 	 9.8 
10	 9.9 	17.0 
11	 5.6 	13.9 
12	19.9 	28.5 
13	15.4 	30.3 
14	12.4 	19.3 
15	24.3 	27.8 
16	 7.6 	11.9 
17	 7.8 	12.1 
18	20.4 	25.0 
19	15.8 	16.0 
20	 0.2 	10.4 

--ham--		
1	 6.4 	10.9 
2	 5.5 	 7.6 
3	 0.5 	 5.4 
4	12.9 	12.9 
5	 5.9 	 7.8 
6	-1.4	 2.2 
7	 6.3 	11.2 
8	-2.4	 2.8 
9	 6.3 	 9.2 
10	-0.4	 3.0 
11	 3.0 	19.1 
SpamAssassinは各テストの結果をスコアとして加算し最終的にそのメールのスパム/非スパムを判定する。表の数字はスコアだ。

色々考えたが、tlecのものをベースに少し弄ってみることにする。

(2)調整
tlecの出力結果&設定ファイルと延々にらめっこした結果、tlecの設定では

・x-mailerの点は高すぎる。
・SJISNOTXMAILERの点は高すぎる。
・Razor関係の点は低すぎる。
・BLARS関係の点も若干低い。
・URIBL関係の点も若干低い。
・required_hitsは低すぎる。

ということがわかった。このあたりを調整すればいいのだが、下2つ

・BLARS関係
・URIBL関係

はどうやら怪しいRBLだからわざと点が低くしてあるらしい。となると気になるのがRazorの信頼性だが、自分が試した31通では

Spam is Spam 19/20
ham is Spam 0/11

と非常に優秀。

設定ファイルには、「Razor2は間違えることがあるから個別にはあまり点を与えません」と書いてあるのだが、Razorのみに頼っていい気がする。SpamAssassinの評判が悪いのは、Razorの初期点が低いことにあるのではないだろうか(SpamAssassinはDCCやPyzorも使うことを前提としているが、あまりみんなやらない)。

X-MAILERはX-MAILERヘッダをチェックするルールであるが、最近のスパムはあまりつけてこない上にX-MAILERルールには一般的なDM、ML送信ソフトも含まれているようなのでスコア下げ。

SJISNOTXMAILERはXMAILERヘッダが無くbodyがSJISの場合起動するが、普通のbodyがSJISのパターンでも2.0与えているので、ここまで攻撃的にするのはきつすぎると判断しスコア下げ。

hamが全部はいる範囲にrequired_hitsを調整。本当はもう少し点を高くすべきなのだろうが、ham11がspamと判定されても致し方ないような酷いメールなのと、spam19がspam判定されないのはちょっと問題のように思える内容だったので15を採用。

合わせて、auto_learnのthresholdも調整。

結局以下のようにした。

required_hits 8.0 -> 15.0
X_MAILER 7.0 -> 3.0
SJISNOTXMAILER 7.0 -> 2.0
RAZOR2_CF_RANGE_51_100 2.5 -> 7.0

また
error: rule 'GB2312_CHARSETContent-Type' has invalid characters (not Alphanumeric + Underscore)
error: rule 'CONTENT_TYPE_PRESENTexists:Content-Type' has invalid characters (not Alphanumeric + Underscore)
error: rule 'X_MAILER_PRESENTexists:X-Mailer' has invalid characters (not Alphanumeric + Underscore)
とエラーが出るので(単に空白が足りてない)、それも修正した。

添付になるのはいまいちなので、report_safeとrewrite_headerを弄ってsubject書き換えに変更。
3.0と2.0系で指定方法が若干変わっているので注意。
[参考]
http://itc.sfc.keio.ac.jp/announce_open/20050124-spamassassin.html


以下、(元) http://tlec.linux.or.jp/docs/user_prefsと(修正後)/etc/spamassassin/local.cfのdiff。
81c81
< required_hits 8.0
---
> required_hits 15.0
128c128
< header GB2312_CHARSETContent-Type =~ /charset=['"]?GB2312['"]?/i
---
> header GB2312_CHARSET Content-Type =~ /charset=['"]?GB2312['"]?/i
180c180
< score X_MAILER          7.0
---
> score X_MAILER          3.0
451,453c451,453
< header CONTENT_TYPE_PRESENTexists:Content-Type
< describe CONTENT_TYPE_PRESENTexists:Content-Type
< score CONTENT_TYPE_PRESENT-0.1
---
> header CONTENT_TYPE_PRESENT exists:Content-Type
> describe CONTENT_TYPE_PRESENT exists:Content-Type
> score CONTENT_TYPE_PRESENT -0.1
1243,1245c1243,1245
< header X_MAILER_PRESENTexists:X-Mailer
< describe X_MAILER_PRESENTexists:X-Mailer
< score X_MAILER_PRESENT0.1
---
> header X_MAILER_PRESENT exists:X-Mailer
> describe X_MAILER_PRESENT exists:X-Mailer
> score X_MAILER_PRESENT 0.1
1261c1261
< score SJISNOTXMAILER 7.0
---
> score SJISNOTXMAILER 2.0
1323c1323
< score RAZOR2_CF_RANGE_51_100 2.5
---
> score RAZOR2_CF_RANGE_51_100 7.0
2787a2788,2790
> # urara add 05/04/16
> bayes_auto_learn_threshold_nonspam 0.5
> bayes_auto_learn_threshold_spam 30.0
>
> report_safe 0
> rewrite_header subject [SPAM(Score=_SCORE_)]
この設定で先ほどの31通を再テスト。
--spam--
1	42.8 
2	39.8 
3	29.2 
4	29.8 
5	24.1 
6	25.2 
7	40.0 
8	35.9 
9	17.3 
10	23.1 
11	24.8 
12	37.0 
13	37.5 
14	26.8 
15	35.8 
16	20.6 
17	20.8 
18	34.0 
19	16.2 
20	25.0 

--ham--	
1	10.9 
2	 7.6 
3	 5.4 
4	10.0 
5	 7.8 
6	 2.2 
7	11.2 
8	 2.8 
9	 9.2 
10	 3.0 
11	14.1 
ギリギリだが全てham is ham, spam is spamになった。

これで当分運用してみる。そのために、メインのメールをこっちに廻さないと行けないのでそれはまた次回。

最後に忘れないように、spamd用に再起動。
# /etc/init.d/spamassassin restart
注意)
・spamdは再起動しないとコンフィグを読み込まない。
・spamassassinは/etc/spamassassinの*.cfを全部読み込むようだ。

[参考サイト]
わかりやすいのはここ2つかなあ
http://www.kuri3.net/modules/bwiki/?SecureMail
http://www.unix-power.jp/linux/qmail-scanner.html

http://blog.momo-i.org:81/archives/2004/12/
http://cgipocket.com/newhtml/linux/qmail2.html
http://www.nishnet.ne.jp/anti-spam.html
http://www.aconus.com/~oyaji/suse/spamassassin_suse.htm
http://ssss.jp/~trombik/email/spamassassin.html
http://lab.sakasta.com/unix/spamassassin.html

[設定の出所]
http://tlec.linux.or.jp/topic.html
http://www.unix-power.jp/linux/local.txt

[bogofilterの話とか]
http://uva.jp/dh/mt/archives/000509.html
http://hotwired.goo.ne.jp/webmonkey/2003/09/index2a_page4.html

[日本版のRBL]
http://www.rbl.jp/

[日本語訳]
http://www.fkimura.com/SpamAssassin1.html <-最初にここ知ってればねえ。ちょい古ではありますが
http://ssss.jp/~trombik/eng/

[後付でbayesっぽく使う方法]
http://www.siscom.or.jp/spamassassin.html

2005/04/05(火)SpamAssassin仮メモ

2005/04/05 09:00 PC(Linux)
翻訳が自分に分かる程度には終わったので、色々テストしてみる。

予想としては、メーリングリストやスパムほどではないDMがフォールスポジティブに引っかかる可能性が高いので、それ10通とスパム20通を入れて黙々テスト。
$spamassassin <mail> | grep X-
[1]SpamAssassin初期設定では、
フォールスポジティブ .. 0
フォールスネガティブ .. 10~25%くらい

日本語で、個別返信を当て込んだようなのはやはりきついか。作業中に誤ってクリックしてしまったりして鬱。

[2]次、TLEC設定( http://tlec.linux.or.jp/docs/user_prefs)で確認。
フォールスポジティブ .. 8/10
フォールスネガティブ .. 0

これで両方0だったら何も考えずにTLEC設定に…… 安易に転ばなくて良かった!

DM系がきついよう。特に鬼門なのが121wareのメルマガとMovableTypeからの認証キーメールで、それぞれ得点が12~14と19.1。この設定ファイルのデフォルトrequired hitsは8.0だったから、これだとまるでスパム扱い。一方スパム側の最低得点は11.8だったのでrequired_hitsの調整次第で何とかなるというわけでもない。もう少し詳細に何がヒットして何がヒットしていないのか確認する必要がある。

今時間がないのでYes/Noの結果だけ眺めてしまったけど、得点もうちょっとちゃんとリストアップしよう。

TLEC設定時のエラーメッセージ
error: rule 'GB2312_CHARSETContent-Type' has invalid characters (not Alphanumeric + Underscore)
error: rule 'CONTENT_TYPE_PRESENTexists:Content-Type' has invalid characters (not Alphanumeric + Underscore)
error: rule 'X_MAILER_PRESENTexists:X-Mailer' has invalid characters (not Alphanumeric + Underscore)

2005/04/03(日)Memoのログ更新

2005/04/03 18:00 PC(全般)
2005年3月分だけちょっと見やすくなるように弄りました。

生データさわってるので、不具合出るかもしれません。変なところを見つけたらこっそり耳打ちして下さい。大丈夫そうなら、以前のところも弄ります。

2005/04/02(土)華式微妙な不具合

2005/04/02 21:00 PC(全般)
さっき記事を書いていて気づいた。

華式はテキストにURLを書けば自動リンクしてくれるが自分で<a>タグを書いてリンクを記述した場合、再編集時にそのリンクが消えてしまうのだな。やっぱりそろそろnicky!に全面移行します。

2005/04/02(土)発泡塩ビ価格調査

2005/04/02 21:00 工作
アクリサンデーのFOREXの価格調査。今のところ売っていることを確認できたのはDoITとKOMERIの通販だけ。ハンズにもあるという噂なので、今度渋谷に出たときに確認します。

DoIT南砂
         1mm白 2mm白 3mm白 5mm白 3mm白以外 
300x450    399   767  1030  1560      1110
450x600    662  1350  1840  2840      2000
450x900   1210  1890  2630  4150      2890
横軸が厚さと色、縦軸がサイズ。

白以外の色は黒赤青黄緑灰とラインナップの全色揃っていた。色板は公式( http://www.acrysunday.co.jp/products/pla_bord/05.html#1)にも3mmしかないのね。200x300も売っていたような気がするが見るの忘れた。

面積比で見れば大きいサイズを買った方が若干安くなるようだ。ケースには450x9001枚で足りる。でもさすがにこのサイズだと結構高い。

以前買ったときには300x450 3mm黒が\1050だったのだが…… あ、総額表示の1円桁切り上げか。

KOMERI通販( http://www.komeri.com/flb_shop_top_index.html)
         1mm白 2mm白 3mm白 5mm白 3mm白以外 
300x450      x     x  1180  1680      1280
450x600    708  1480     x     x      2180
450x900   1380  1980  2780  4380      3180(黒のみ)
送料は\1575。\10000以上発注で無料。結局全般DoITより高い。

#05/04/05調査により追記
東急ハンズ渋谷
 黒3mm 300x450 1134
 黒3mm 600x450 2205
白や他の色もあるにはあったのだが、値札が付いて無くて確認できず。全般DoITよりは高そうなので、さっさと退散した。

2005/04/01(金)発泡塩ビで出来そうなこと

2005/04/01 11:00 工作
発泡塩ビについてメモ。

私が使っているのはアクリサンデーのForexという素材の黒3mm。発泡塩ビ全般に共通なのか、これ特有の性質があるのかはちょっと分からないので注意。なお読んでれば分かると思うが、工作レベルは初心者に毛が生えた程度なので、実は最適なドリルの刃や回転速度も理解していない。

発泡塩ビの特徴としては、
・柔らかいが曲げ・折りには強い
・低密度で軽い
・熱を加えて曲げられる
といったあたり。

穴あけは非常に容易。ハンドドリルでも簡単にあけることができるが、バリが盛大に出るほか、私の腕では正円の穴をあけることが出来ない(ちょっと三角気味になる)。バリをうかつに削ると、柔らかいために穴の縁まで削ってしまう。バリは電動ドリルの方が少ないし正円に近くなるので電動ドリルであけた方がよさそうだ。アクリルよりははるかに割れづらいが、それでもバイスに固定したままセンターポンチを打てば割れることがある。

タップ立て可能。意外だがきちんと立てれば結構強度があるようである。

通常のドリル刃で座ぐりが出来るかは試してみたが、なんともいえない。柔らかいからこそできるかと思ったのだが、柔らかすぎて深さのコントロールがなかなか出来ない。座ぐり部をハンドドリルで軽めゆっくりであけ、センターポンチを打ち直し電動ドリルという線で可能は可能。皿座ぐりなら簡単に出来そうではあるが、これも深さのコントロールが難しいかもしれない。

切断は非常に容易。普通のカッターで半分当たりまで刃を入れ折れば綺麗に切断できる。1切断5分くらいで可能。

曲げに必要な温度は、我が家のアイロンの低温エリア(化繊)の高め中りで始めて曲がるようになったので、100~120℃くらいだろうか。熱を与えると収縮も伸張もするようで厚めの素材でもアイロンのエッジでそこそこ綺麗に曲げることができる。

写真には取り忘れたが、ネジを強く締めるとネジの跡がついてしまうくらい表面は柔らかい。

2005/04/01(金)ドメインについて考察

2005/04/01 03:00 PC(Linux)
ドメインの業者移転に関していくつか疑問点があったのだが、ここに詳しい。
http://www.xwd.jp/jp8.php

普通に考える移転では無料ということで良いようだ。が、21-domainに\2000超分ポイントが残っているので今年1年は少なくとも21-domainのままで確定。

さて、dt8.jpのままでいくか、dt8.orgに移行するかが微妙なところ。
2006年度と2007年度のプーはほぼ確定であり、2008年度では業界か一般か生きてないかのどれか。業界にいる場合の収入が10万~200万で不定なのが難しい。その場合でも年3,980くらいはそんなに重くないのではないかと思う。いやわかんないけど。

仮に21-domainのままでorgへ移行した場合とjpのままの比較、
            org    jp 
2005年度   2000  3980 <--orgは新規登録費用(\1000)がかかる
2006年度   3000  7960
2007年度   4000 11940
2008年度   5000 16920 <--収入発生?       
21-domainより安いレジストラもあることにはあるが、それぞれ仕入れ値が6$,\3500であることを考えると大幅に安いところはないだろう(value-domainは\990,\3690)。

多少稼げるようになったらdt8.jp取り返したいと思うのでその場合だとまたぞろ新規登録費用がかかる。3年で1万円差がでないことを考えると、dt8.jpのままでいい気がしてきた。

もう少し他の人に意見を聞いてみる。