Linux/FedoraCore1

メールサーバ

Postfix+procmail でメール受信および転送を行っていましたが、ここ1〜2年スパムが酷く、クライアント側でのスパム対策ではつらくなってきたので、サーバ側でスパムフィルターを実行します。

で、bsfilterを導入

仕掛け

構成的に、procmail から bsfilter を呼ぶようにします。
bsfilter.org の通りです。

ダウンロードして展開 ほんでもって配置

http://sourceforge.jp/projects/bsfilter/files/ よりbsfilterをダウンロードします。
適当な場所に

# tar xvfz bsfilter-1.0.16.tgz

で展開します。(bsfilter-1.0.16.tgz)

パスの通っている場所に「bsfilter/bsfilter」を配置とあるので

# cp ./bsfilter-1.0.16/bsfilter/bsfilter /usr/sbin/

とします。
ついでに

# chmod 777 /usr/sbin/bsfilter 

勉強させます。

mail boxを利用しているユーザになって

$ /usr/sbin/bsfilter --add-clean ~/Maildir/cur/*

でclean mailを勉強させます。

Maildir形式なので上記のようなフォルダに対して勉強させます。

続いてspamメールを勉強

$ /usr/sbin/bsfilter --add-spam ~/Maildir/.Junk/cur/*
-bash: /usr/sbin/bsfilter: /usr/bin/env: bad interpreter: 引数リストが長すぎます

・・・困りました。どうもspmaが多すぎるようです。
まぁどうせこれからも山ほどスパムはくるので、rmで全削除しちゃいました。*1

$ /usr/sbin/bsfilter --add-spam ~/Maildir/.Junk/cur/*
$ /usr/sbin/bsfilter --update

これで、とりあえず準備完了。(もちろん --add--spam は後ほどJunkがある程度たまってから再度実行します。)

procmail で処理します。

「~/.procmailrcから呼ぶときのサンプルレシピ」から以下のような設定をします。

:0 fw
| /usr/sbin/bsfilter --pipe --insert-flag --insert-probability

:0
* ^X-Spam-Probability: *(1|0\.[89])
Maildir/.Junk/cur/.

#:0
#* ^X-Spam-Probability: *0\.[67]
#gray/.

完全blakの場合のみJunk行き。
grayは受信箱に残しておきます。

結果

X-Spam-Flag: Yes
X-Spam-Probability: 1.000000

ヘッダが更新され、blakレベルだとちゃんとJunkに移動しています。

spam のお勉強をcronで

shellを作ってcronに登録しておきます。

#!/bin/bash

echo hoge start
su - hoge -c '/usr/sbin/bsfilter --add-spam ~/Maildir/.Junk/cur/*'
su - hoge -c '/usr/sbin/bsfilter --update'

と思ったらPermission denie ってlogが・・・・cronの実行権限の見直しが必要ですね・・・・

/bin/sh: line 1: /bat/bsfilter.sh: Permission denie

参考


*1 rm * でも「引数リストが長すぎます」でした。13万ファイル以上あったので・・・

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-04-07 (金) 16:01:32 (167d)