〜bogofilterでPOPプロキシ型spamフィルタ〜 最終更新日:14/11/25 JST
bogofilterに学習させる際に下記コマンドを実行。
ただし、kakasi-patchを使用した場合に比べて日本語メイルの判定が甘くなる上にフィル
タ処理途中でstallする恐れがある。
spamメイルのあるディレクトリで下記コマンドを実行。 find . -type f -exec sh -c 'cat {} | nkf -m -e | kakasi -w | bogofilter -sv' ';' 次に通常メイルのディレクトリで下記コマンドを実行。 find . -type f -exec sh -c 'cat {} | nkf -m -e | kakasi -w | bogofilter -nv' ';'いずれにせよ、kakasiは必要であるからpatchを当てた方が幸せになれると思われ。
spamメイルのあるディレクトリで下記コマンドを実行。 find . -type f -exec sh -c 'cat {} |bogofilter -sv ' ';' 通常メイルのディレクトリで下記コマンドを実行。 find . -type f -exec sh -c 'cat {} |bogofilter -nv ' ';'
#!cfi # # 防護フィルタ # Message-Filter: /usr/local/bin/bogofilter -u -p -d /full/full/fullmoon/.bogofilter/full/full/fullmoon/は適宜に設定。通常は自己のhomeディレクトリ。
これをspamfilter-delegateという名前で保存して適当なディレクトリに配置
ここでは/export/home/haduki/bin/の下に置くものとする。
(setq mew-pop-server "delegateが動いている計算機") delegateとemacsが同じ計算機上で動いている場合にはlocalhostとしても良い。
X-Bogosity: No, tests=bogofilter, spamicity=0.000000, version=0.92.6+kakasi-0.4spamと判断された場合。
X-Bogosity: Yes, tests=bogofilter, spamicity=1.000000, version=0.92.6+kakasi-0.4このようにbogofilter自体は目印しか付加してくれないのでMew(emacs)側で条件判断するものが必要。
(defun mew-spam-bogofilter (val) (let ((case-fold-search t)) (if (string-match "yes" val) ?D))) (setq mew-inbox-action-alist `( ("X-Bogosity:" mew-spam-bogofilter) ))
/usr/local/bin/delegated -P110 \ FTOCL=/export/home/haduki/bin/spamfilter-delegate \ SERVER=pop://mailhost.nekomimi.mode/ \ ADMIN="haduki@nekomimi.mode"SERVERにはmailサーヴァのURIを指定し、FTOCLには前述したCFIの在処を指定する。