Your SlideShare is downloading. ×
0
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Kansai debian study_20071007
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Kansai debian study_20071007

309

Published on

昔々に関西 Debian 勉強会で CRM114 について話した時のスライドです。 …

昔々に関西 Debian 勉強会で CRM114 について話した時のスライドです。

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
309
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  1. Debian で使えるSPAMフィ ルタ(CRM114) dselect恐怖症患者の克服記録(1) たなか としひさ 2007/10/7
  2. ライセンスあなたはこのドキュメントを、Free Software  Foundation によって発行された GNU General Public License(バージョン2か、希望によってはそれ以降のバージョンのうちどれか)の定める条 件の下で再頒布または改変することができま す。 http://www.gnu.org/copyleft/gpl.htmlこのドキュメントは以下からダウンロード可能で す。http://www.netfort.gr.jp/~tosihisa/debian/kansai_debian_study_20071007.odp 2
  3. 目次● (本題とは外れますが)私のDebian歴とか● SPAMフィルタ(CRM114)● まとめ 3
  4. 私のDebian歴…● 初めて Debian をインストールしたのはバー ジョン1.3(bo)。確か1997年あたり。● インストールに12時間かかった。 (dselect の迷宮にハマる。恐怖症になる)● 以降、dpkg は一切使わずひたすら ./configure ; make ; make install で暮らす。● Debian の標準の runlevel が2と知らずに3日間 悩んだ経験あり。● etch のリリースで再び使い始めた。 apt(と言うか、debの仕組みの良さ)を再認識す 4
  5. SPAM考● 邪魔。それ以外の何物でも無い。● 「そこまでして読ませたいか?」と言う気がす る。 →まぁ、読ませたいのだろう…。当然だ。● インターネット上でのコミュニケーションを破 綻させる要素。 →SPAMに埋もれて読むべきメールが読めない … 5
  6. 皆さんにお尋ね。。。● 1日どれくらいSPAMを受信していますか? a) 10通以下(^^)v b) 20通以下(^^)/ c) 50通位(­­)/ d) 100通位(__)/ e) 無量大数… 6
  7. ちなみに私は…● 1日あたり、少ない日で30通。多い日は250通 SPAMを受信しています。● 体感ですが、海外から来るSPAMが7割位。 日本語SPAMは3割位。● 先月9月2日から、今月10月5日までの時点 で、3627通のSPAMを受信しています。 (一日平均106.67通SPAMを受信しています) 7
  8. 皆さんは、どうやってSPAMを 弾いてますか?a) 電子メールソフト(MUA)の(ベイジアン)SPAMフィル タで弾いている人(^^)/b)bogofilter,bsfilter,POPFile 等のベイジアンSPAMフィ ルタで弾いてる人(^^)/c) 市販のウィルスチェッカの付属機能で弾いてる人(^^)/d) ホワイトリスト、ブラックリストで弾いてる人(^^)/e) 諦めて放置の人(__)/f) そもそもSPAMが来ないので何もしていない人(^^)vg) ついつい読んでしまう人(__)/ 8
  9. 私のSPAMフィルタ歴● 初めはprocmailでブラックリストを作ってい た。● 耐え切れなくなった…● サーバ側でbsfilterを挟む様にした。● すり抜けてくるので、ThunderBirdのSPAM フィルタも通すようにした。● それでも効果が芳しくない…。● POPFile を入れる。 イイ感じ! 9
  10. POPFileは良いフィルタ。 だけど…● POPFileは、いわゆる「クリーン」「SPAM」 で分類せず、任意の「バケツ」に入れるので、 使い出がある。 →「クリーン」「SPAM」「SYSTEM」で分類 していた。● 基本がPOPサーバに対する proxyなのが厳し い。● 「メールを受信する」と言う動作がどうして も必要になる。 10
  11. POPFileの動き POP メール メール POPFile サーバ ソフト クライアントPOPFileの基本は、POPサーバへのProxyとして動作し、受信時にSPAM判定をする。なのでどう言う形であれ、「受信」と言うアクションが必要になる。 11
  12. POPFileを使わなくなった理由● 「受信しないと判定できない」のが厳しい。 →1日100通にのぼるSPAMを結局「受信」している。 →電車の中で100通SPAM受信はイヤだ…● SPAMは受信もしたくない。受信時間が無 駄だ。● POPサーバ側にPOPFileを仕込み、サーバ側で 定期的にfetchmailを入れる事も考えた。 →うーん。別のSPAMフィルタを考えてみるか な。 12
  13. Debianで動く、サーバ側で使 えるSPAMフィルタ● bogofilter 入れてないので分かりませんm(_ _)m。● SpamAssassin 試しに入れてみた。 日本語SPAMを検出させるためにパッチを入れ てみたりもしたが手間がかかり過ぎて断念。● bsfilter 悪くないが一度使った事があるので別のを探し てみる事にした。 13
  14. CRM114● the Controllable Regex Mutilator● apt­cache search SPAM で探していると偶然 知った。 http://crm114.sourceforge.net/ 14
  15. CRM114の分類方式● 単なるベイジアンだけでは無さそう?● Hidden Markov Model,  Bayesian Chain Rule   Orthogonal Sparse Bigrams,  Winnow,   Correlation,  KNN/Hyperspace, Bit Entropy,   CLUMP,  SVM, Neural Networks  ( or by other means­ it’s all  programmable). 15
  16. CRM114のインストール。● 日本語SPAMも検出出来るように、nkfとkakasi も入れる。 $ apt­get install nkf kakasi crm114 16
  17. CRM114を動かすために…● CRM114実行環境を○っとコピー cp ­a /usr/share/doc/crm114/examples .crm114 cd .crm114 gunzip *.gz chmod +x mailfilter.crm● 分類用辞書ファイルの作成 cssutil ­r ­b spam.css cssutil ­r ­b nonspam.css 17
  18. CRM114動いてますか?● crm ­v を実行 This is CRM114, version 20060704a­BlameRobert (TRE 0.7.3 (LGPL))  Copyright 2001­2006 William S. Yerazunis  This software is licensed under the GPL with ABSOLUTELY NO WARRANTY 18
  19. とりあえず判定させてみる● どこかから*英語*のSPAMを拾ってくる。 (1メール1ファイル形式で) $ cat spam | crm ­u ~/.crm114/ mailfilter.crm | grep X­CRM114­Status X­CRM114­Status: UNSURE (0.0000) This message is unsure;  please train it! まぁ、まだ何も学習してないんだからね。 19
  20. CRM114のSPAM判定結果● pRと言う数値で示す。­320.0~+320.0 X­CRM114­Status: に付加される。         +320.0 GOOD(非SPAM)           +10.0           +/­0.0 UNSURE (どちらとも言えな            ­10.0 い) SPAM         ­320.0 20
  21. じゃぁ学習させてみる。● SPAMを学習させるには、­­learnspamを指定す る。 $ cat spam | crm ­u ~/.crm114/ mailfilter.crm –learnspam● もう一度判定させてみる。 $ cat spam | crm ­u ~/.crm114/ mailfilter.crm | grep X­CRM114­Status X­CRM114­Status: SPAM  ( pR: ­183.7027 )● 非SPAMを学習させるには、­­learnnonspamを 指定する。 21
  22. CRM114でのSPAM学習法● TOE ­ Train Only Errors 「間違った判定をしたら正解を教える」方式。 →正しい結果を出したならそれは学習しない。 →POPFileと同じやり方。● TET – Train Every Thing 判定結果に関わらず常に学習させる方式。 →CRM114では推奨されていない学習法。 22
  23. 日本語SPAMを判定するには?● CRM114は8bit clean ではあるがマルチバイト には対応していない。● [アイデア] CRM114で無理に日本語に対応させるよ り、kakasiで漢字をローマ字に変換させたら、 それはマルチバイトではないよね? 23
  24. kakasiで漢字→ローマ字変換● 下記の様にコマンドを入れる。 $ echo 私の名前は田中です。 | nkf ­e | kakasi ­Ha ­Ka ­Ja ­Ea ­ka ­s watashi no namae ha tanaka desu .● nkfを挟むのはUTF­8(tty)→EUC,JIS(mail)→EUC 変換させるため。 24
  25. pretokenizer.crmを作る。● CRM114のメールフィルタスクリプト (mailfilter.crm)を改造し、メール本体を処理す る前に、メール内の漢字をローマ字に置き換え る。● pretokenizer.crmは、マルチパートMIMEに対応 し、メール内の漢字コードをローマ字に置き換 える「CRM114で書かれた」プログラム。 (ここでpretokenizer.crmをデモする事) 25
  26. pretokenizer.crmをSPAMフィ ルタに組み込む(1)。*** 261,268 ****  #      We clip m_text to be the first :decision_length: characters of  #      the incoming mail.  #! match (:m_text:) [:_dw: 0 :*:decision_length:] /.*/! isolate (:m_text:)  #  #      :b_text: is the text with base64s expanded.  isolate (:b_text:) /:*:m_text:/­­­ 261,274 ­­­­  #      We clip m_text to be the first :decision_length: characters of  #      the incoming mail.  #! #match (:m_text:) [:_dw: 0 :*:decision_length:] /.*/! #isolate (:m_text:)! isolate (:m_text:) /:*:_dw:/! {!       match [:text_preprocessor:] /./!       syscall (:*:_dw:) (:m_text:) /:*:text_preprocessor:/! }! match (:m_text:) [:m_text: 0 :*:decision_length:] /.*/  #  #      :b_text: is the text with base64s expanded.  isolate (:b_text:) /:*:m_text:/ 26
  27. pretokenizer.crmをSPAMフィ ルタに組み込む(2)。● mailfilter.cfの最後に、下記の1行を追加する。 (ディレクトリは適宜変更の事):text_preprocessor: //home/tosihisa/.crm114/pretokenizer.crm/● mailfilter.cfのdo_base64は必ずnoにする事。 (pretokenizer.crmが肩代わりするから) 27
  28. パッチとか編集とか面倒だ ぞ!● 下記のURLからどうぞ。 http://www.netfort.gr.jp/~tosihisa/crm114/● mailfilter2.crm 日本語SPAM対応フィルタ● mailfilter2.cf 設定ファイル● pretokenizer.crm 漢字→ローマ字変換フィルタ 28
  29. 私はどうやってCRM114を 使っているか?● こんな感じ 自宅 メールサーバ メール サーバ メール postfix clamav procmail 外部 imap Maildir PC CRM114 29
  30. CRM114に通すメールと 通さないメール● メーリングリストはCRM114に通していない。 →メールヘッダのキーワードで判定できるか ら。● 面倒なのは「MLに飛んでくるSPAM」 →最近のMLは殆ど登録メールアドレス以外は 弾く。 →一つだけ、anyone can post のMLに入ってい る。   →MLの性質上仕方が無い。このMLに来た     SPAMだけは手作業で分類。 30
  31. CRM114の判別率(1) (正常メールの判別精度) 種別 数 %GOOD 335 97.10%UNSURE 10 2.90%SPAM 0 0.00% GOOD全メール数: 345通 UNSURE SPAM 31
  32. CRM114の判別率(1) (SPAMメールの判別精度) 種別 数 %GOOD 1 0.03%UNSURE 613 16.90%SPAM 3014 83.08% GOOD全メール数: 3628通 UNSURE SPAM 32
  33. 総合的な判別精度としては…● 90%程度。● 十分に高いとは言えないかも知れない?● UNSUREの殆どはSPAM● 「正常」のメールがSPAM行きになった事は無 い。 (UNSUREで止まる) 33
  34. CRM114を使ってみて…● とにもかくにも正直なフィルタ。 教えていないものは分からないと言う。 教えると正しく答える。 →もう少し賢いとありがたいが…● UNSUREがあるのはありがたい。 GOOD/SPAMのどちらかでしか判定しないとす ると、結局大量のSPAMの中から読みたいメー ルを探さないと行けない。 →UNSUREのお蔭で、探す数がぐっと減った。   →これは本当にありがたい。● 大量のSPAM受信から開放された。 34
  35. まとめ● 完璧!とまでは行きませんが、でもかなりイ イ!感じでSPAMを弾くようになりました。● 一度お試しください~ 35
  36. 質疑応答(いや自信無いです)
  37. ご清聴ありがとうございまし た。

×