$sudo vim /etc/postfix/main.cf
→以下の内容を追加(3カ所のRBLを利用)
# RBL parameters
smtpd_client_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
check_client_access hash:${config_directory}/clients,
reject_rbl_client all.rbl.jp,
reject_rbl_client bl.spamcop.net,
reject_rbl_client zen.spamhaus.org,
permit
○RBLチェック除外リストを作成
$sudo vim /etc/postfix/clients
→以下の内容を記述(過去にrejectされたことがある正当なサーバ)
grp.yahoo.co.jp OK
grp.bbt.yahoo.co.jp OK
ml.freeml.com OK
livedoor.net OK
livedoor.com OK
data-hotel.net OK
$sudo postmap /etc/postfix/clients
○Postfixに設定を反映
$sudo /etc/init.d/postfix force-reload
○RBLチェックの動作確認
・接続をブロックした際に /var/log/mail.log にログが出る
■SpamAssassin(スパムフィルタ)をインストール
$sudo aptitude install spamassassin spamassassin-rules-ja spampd
○SpamAssassinを設定
$sudo vim /etc/default/spamassassin
→以下の内容を変更
ENABLED=1
OPTIONS="--max-children 5 --helper-home-dir"
CRON=1
$cd /etc/spamassassin/
$sudo wget -O local.cf http://tlec.linux.or.jp/docs/user_prefs
$sudo vim local.cf
→以下の内容を追加・変更
skip_rbl_checks 1
rewrite_header Subject ***SPAM***
report_safe 0
bayes_path /var/spool/spamassassin/bayes
bayes_file_mode 0666
auto_whitelist_path /var/spool/spamassassin/auto-whitelist
auto_whitelist_file_mode 0666
$sudo vim v310.pre
→以下の行をアンコメント
loadplugin Mail::SpamAssassin::Plugin::TextCat
$sudo mkdir /var/spool/spamassassin
$chown spamd. /var/spool/spamassassin/
○SpamPDを設定
$sudo vim /etc/spampd.conf
→以下の内容を変更
use_bayes 1
bayes_path /var/spool/spamassassin/bayes
auto_whitelist_path /var/spool/spamassassin/auto-whitelist
$sudo vim /etc/default/spampd
→以下の内容を変更(ポート10027でメールを受け取り、ポート10025へ返す)
LISTENPORT=10027
DESTPORT=10025
AUTOWHITELIST=1
ADDOPTS="--config=/etc/spampd.conf --maxsize=512"
○デーモンを起動
$sudo /etc/init.d/spamassassin start
$sudo /etc/init.d/spampd start
○外部からのメールに対してのみスパムフィルタをかけるよう、Postfixに設定を追加
$sudo vim /etc/postfix/master.cf
→以下の内容を追加(フィルタ通過後のメールの戻り先ポートを作成)
127.0.0.1:10025 inet n - n - 16 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks_style=host
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
$sudo vim /etc/postfix/main.cf
→以下の内容を変更(条件に該当しない送信元からのメールはフィルタを通す)
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
check_client_access regexp:${config_directory}/filter_spampd
$sudo vim /etc/postfix/filter_spampd
→以下の内容を記述(ポート100027のspampdへ送る)
/./ FILTER scan:127.0.0.1:10027
○SpamAssassinの動作テスト
・外部からメールを受信し、/var/log/mail.log にspamdのログが出ることを確認
・外部から受信したメールのヘッダに「X-Spam-Status:」行がつくことを確認
・本文に「XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X」を含んだメールを外部から受信し、Subjectに「***SPAM***」が付加されていることを確認
○ベイジアンフィルタ学習用アドレスを作成
・ベイジアンフィルタの学習用に、「spam@example.com」を作成し、メーラからIMAPフォルダ「INBOX.spam」と「INBOX.ham」を作成
○ベイジアンフィルタ学習スクリプトを作成
$sudo vim /etc/cron.daily/sa-learn
→以下の内容を記述
#!/bin/bash
export LANG=C
############################
### 設定ファイル読み込み ###
############################
# 設定ファイルのパス
CONF=/etc/spamassassin/sa-learn.conf
# 設定ファイルが存在しなければ終了
if [ ! -s $CONF ]; then
echo 'sa-learn config file not exists!'
exit 1
fi
# 設定ファイルを読み込み
source $CONF
##################
### 初期化処理 ###
##################
# ホスト名を取得
HOSTNAME=`hostname`
##################################
### ベイジアンフィルタ学習処理 ###
##################################
# ログに開始日時を記録
date > $LOGFILE
echo >> $LOGFILE
# spam学習
sa-learn --spam $SPAMDIR/new/ >> $LOGFILE 2>&1
sa-learn --spam $SPAMDIR/cur/ >> $LOGFILE 2>&1
# ham(non-spam)学習
sa-learn --ham $HAMDIR/new/ >> $LOGFILE 2>&1
sa-learn --ham $HAMDIR/cur/ >> $LOGFILE 2>&1
# 学習済みのメールを消去
if [ $DELETE -eq 1 ]; then
echo >> $LOGFILE
rm $SPAMDIR/new/* >> $LOGFILE 2>&1
rm $SPAMDIR/cur/* >> $LOGFILE 2>&1
rm $HAMDIR/new/* >> $LOGFILE 2>&1
rm $HAMDIR/cur/* >> $LOGFILE 2>&1
fi
# ログに終了日時を記録
echo >> $LOGFILE
date >> $LOGFILE
# ログをメール送信
cat $LOGFILE | mail -s "sa-learn Log for $HOSTNAME" $MAILADDR
exit 0
$sudo chmod +x /etc/cron.daily/sa-learn
○ベイジアンフィルタ学習設定ファイルを作成
$sudo vim /etc/spamassassin/sa-learn.conf
→以下の内容を記述
##################################
### ベイジアンフィルタ学習設定 ###
##################################
# spam学習対象IMAPフォルダ
SPAMDIR=/home/vmail/example.com/spam/.INBOX.spam
# ham学習対象IMAPフォルダ
HAMDIR=/home/vmail/example.com/spam/.INBOX.ham
# ログファイルのパス
LOGFILE=/var/log/sa-learn.log
# ログ送信先メールアドレス
MAILADDR=spam@example.com
# 学習済みメール削除フラグ(削除しない:0/削除する:1)
DELETE=0
○ベイジアンフィルタ学習テスト
・メーラから適当な数のspamとhamをIMAPフォルダにアップロードする。
$sudo /etc/cron.daily/sa-learn
→正常に学習されればログがメールで届くので確認。
○ベイジアンフィルタ運用モード切り替え
$sudo vim /etc/spamassassin/sa-learn.conf
→以下の内容を変更(学習済みのメールが削除される)
DELETE=1
○ベイジアンフィルタ基礎学習
・最低限200通のメールを学習させないとベイジアンフィルタが有効にならないので、精度UPのためにできるだけたくさんのメールを学習させる

0 コメント:
コメントを投稿