≪ トップ |
2008年03月19日
Postfix + amavisd-new + Clam AntiVirus + Procmail + SpamAssassin の設定
一応正常に動いているみたいなので、メモっておきます。
受信メールサーバーはIMAPを使っています。
1)Procmail の設定ですが、
PATH=/usr/bin:/bin
DROPPRIVS=yes
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
SPAM=$MAILDIR/.Spam/
LOGFILE=$HOME/.procmail.log # ログ出力先
#VERBOSE=ON # 詳細ログ出力
# 未承諾広告メール削除※システムの文字コードがEUCの場合
:0
* ^Subject:.*iso-2022-jp
* ^Subject:\/.*
* ? echo "$MATCH" | nkf -meZ2 | sed 's/[[:space:]]//g' | egrep '未承諾広告※'
/dev/null
# SpamAssassinによるスパムチェック
:0fw
|/usr/bin/spamc
# SpamAssassinがスパム判定したメールはスパム専用メールボックスへ配送
:0
*^X-Spam-Flag: YES
$SPAM
こんな感じです。
すべての受信メールを SpamAssassin に送ってスパムチェックをさせています。
ここで、
|/usr/bin/spamc
の「f」は「アクションに指定されているコマンドをフィルタとして取り扱う。」ということだそうです。つまり、SpamAssassin をフィルタとして使うということですよね。この「f」がないとフィルタにならずに SpamAssassin に行ったきり戻ってこず、結果的に受信されないという状態になります。
ちなみに、「w」は「アクションに指定したフィルタやコマンドが終了するまで待つ。」ということらしいです。
2)スパム対策は、Procmail を使って SpamAssassin でするので、amavisd-new の spam メールフィルタは停止させています。
コメントアウト解除
再起動。
これを停止させるとかなりメモリの節約になります。
3)SpamAssassin 設定ファイルは TLEC のを使っています。
スパムメールと判断する閾値が TLEC の設定を使うと、
なので、これを「5.0」に書き換えるように以下のスクリプトを使用しています。
いくらか使っていれば学習して「13.0」でも良いようになるのかもしれませんが、僕の場合とりあえず最初は「5.0」~「7.0」ぐらいにしておかないとスパムをうまく振り分けてくれませんでした。
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# TLEC(http://tlec.linux.or.jp/)よりSpamAssassin設定ファイル最新版ダウンロード
cd /etc/mail/spamassassin
wget -qN http://tlec.linux.or.jp/docs/user_prefs
cp user_prefs local.cf
# スパム判断したメールを添付形式にしないように設定
echo "report_safe 0" >> local.cf
# ok_languagesオプション削除
sed -i '/^ok_languages/d' /etc/mail/spamassassin/local.cf
# local.cfのrequired_scoreを「5.0」に変更
required_score=5.0
sed -i "s/required_score.*/required_score $required_score/g" /etc/mail/spamassassin/local.cf
# SpamAssassin再起動
/etc/rc.d/init.d/spamassassin restart > /dev/null
ちなみに、各ユーザ毎に設定するなら、
各ユーザホームディレクトリにある、.spamassassin/user_prefs ファイルの required_score を設定します。local.cf より優先します。
投稿者 ゆう : 2008年03月19日 17:57 | カテゴリー 自宅サーバ (31)
トラックバック
http://www.wave440.com/blog/mt-trbk.cgi/194