[root@centos ~]# vi /etc/postfix/main.cf ← Postfix設定ファイル編集
# The mailbox_command parameter specifies the optional external
# command to use instead of mailbox delivery. The command is run as
# the recipient with proper HOME, SHELL and LOGNAME environment settings.
# Exception: delivery for root is done as $default_user.
#
# Other environment variables of interest: USER (recipient username),
# EXTENSION (address extension), DOMAIN (domain part of address),
# and LOCAL (the address localpart).
#
# Unlike other Postfix configuration parameters, the mailbox_command
# parameter is not subjected to $parameter substitutions. This is to
# make it easier to specify shell syntax (see example below).
#
# Avoid shell meta characters because they will force Postfix to run
# an expensive shell process. Procmail alone is expensive enough.
#
# IF YOU USE THIS TO DELIVER MAIL SYSTEM-WIDE, YOU MUST SET UP AN
# ALIAS THAT FORWARDS MAIL FOR ROOT TO A REAL USER.
#
#mailbox_command = /some/where/procmail
#mailbox_command = /some/where/procmail -a "$EXTENSION"
mailbox_command = /usr/bin/procmail ← 追加(Procmailと連携するようにする)
[root@centos ~]# systemctl reload postfix ← Postfix設定反映
|
■スパムメール振分け設定(受信メールサーバーがIMAPの場合のみ)
SpamAssassinによりメールヘッダにスパムメールの印を付けられたメールはスパム専用メールボックスへ、その他のメールは通常どおりのメールボックスへ配送するようにする。
(1)スパム専用メールボックス作成
既存ユーザーについては、メールボックスにスパム専用メールボックスを追加する。
また、新規ユーザーについては、ユーザー追加時に自動でスパム専用メールボックスが作成されるようにする 。
|
【既存ユーザー対処】
[root@centos ~]# vi spamfolder-create ← スパム専用メールボックス作成スクリプト作成
#!/bin/bash
for user in `ls /home`
do
id -u $user > /dev/null 2>&1
if [ $? -eq 0 ] && [ ! -d /home/$user/Maildir/.Spam/new ]; then
mkdir -p /home/$user/Maildir/.Spam/new
mkdir -p /home/$user/Maildir/.Spam/cur
mkdir -p /home/$user/Maildir/.Spam/tmp
chmod -R 700 /home/$user/Maildir/.Spam
chown -R $user. /home/$user/Maildir/.Spam
echo $user
fi
done
[root@centos ~]# sh spamfolder-create ← スパム専用メールボックス作成スクリプト実行
user
・
・
・
user
[root@centos ~]# rm -f spamfolder-create ← スパム専用メールボックス作成スクリプト削除
【新規ユーザー対処】
[root@centos ~]# mkdir -p /etc/skel/Maildir/.Spam/{new,cur,tmp} ← 新規ユーザー追加時に自動でスパム専用メールボックス作成(1/2)
[root@centos ~]# chmod -R 700 /etc/skel/Maildir/.Spam ← 新規ユーザー追加時に自動でスパム専用メールボックス作成(2/2)
|
|
(2)スパムメール振分け設定
SpamAssassinがスパム判定したメールはスパム専用メールボックスへ配送するようにする。
|
[root@centos ~]# vi /etc/procmailrc ← procmail設定ファイル編集
以下を最後尾へ追加
# SpamAssassinがスパム判定したメールはスパム専用メールボックス(/home/xxxx/Maildir/.Spam)へ配送
:0
*^X-Spam-Flag: YES
$HOME/Maildir/.Spam/
|
|
■メールソフト設定(受信メールサーバーをPOPにする場合)
SpamAssassinによりメール件名に「***SPAM***」を付けられたメールはスパムメール用フォルダへ保存するようにする
(1)スパムメール用フォルダ作成
Thunderbirdを起動し、メニューの「ファイル」⇒「新規作成」⇒「フォルダー」で「名前」に"Spam"と入力して「フォルダーを作成」ボタン押下
(2)スパムメール振分けルール追加
Thunderbirdを起動し、メニューの「ツール」⇒「メッセージフィルター」で「新規」
「フィルター名」に任意の名前(例:"Spam振り分け")を入力
「すべての条件に一致」を選択
「件名」、「に次を含む」を選択してテキストボックスに"***SPAM***"と入力
「以下の動作を実行する」で「メッセージを移動する」、作成したスパムメール用フォルダを選択
「OK」ボタン押下
|
■spamass-milter確認
自分自身に空メールを送ってみて、受信したメールのヘッダに以下のメッセージが付加されていること
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on centossrv.com
|
■スパムチェック確認
自分自身にテストスパムメール(メール本文が「XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X」のメール)を送ってみて、受信メールサーバー別に以下のようになること
※テストスパムメールはスパムスコアが高く、/etc/procmailrcの「SpamAssassinにより判定されたSpam-Levelが一定値(ここでは20)以上の場合は削除」のルールを有効にしているとサーバー側で削除されてしまうので、Spamフォルダへの配送を確認する際は当該ルールを一時的にコメントアウトしてから確認すること
【受信メールサーバーがPOPの場合】
メール件名に「***SPAM***」が付加されてSpamフォルダへ配送されていること
【受信メールサーバーがIMAPの場合】
Spamフォルダへ配送されていること
|
■スパムメール学習(受信メールサーバーがIMAPの場合のみ)
SpamAssassinが誤って正常メールをスパムメールと判断したり、逆にスパムメールを正常メールと判断してしまった場合、以後の誤認識を防止するためにSpamAssassinに学習をさせ、チェック精度を上げる。
ここでは、受信トレイの既読メールを正常メールとして、Spamフォルダの既読メールをスパムメールとして、定期的にSpamAssassinに学習させるようにする。
※SpamAssassinが誤って配送したメールは、ユーザー自身の操作により正常メールなら受信トレイへ、スパムメールならSpamフォルダへ移動しておくこと
(放置しておくと正常メールをスパムメールとして学習したり、逆にスパムメールを正常メールとして学習してしまう)
|
[root@centos ~]# yum -y install tmpwatch ← tmpwatchインストール※古いスパムメールを削除するため
[root@centos ~]# vi /etc/cron.daily/spamassassin-learn ← SpamAssassin日次学習スクリプト作成
#!/bin/bash
PATH=/usr/sbin:/usr/bin:/bin
for user in `ls /home/`
do
# 正常メール学習
# 正常メールをSpamAssassinに学習させる
hammail=/home/$user/Maildir/cur
[ -d "$hammail" ] && \
su $user -s "/bin/bash" -c "sa-learn --ham $hammail | \
logger -p mail.info -t 'sa-learn for $user'"
hammail=/home/$user/Maildir/.Trash/cur
[ -d "$hammail" ] && \
su $user -s "/bin/bash" -c "sa-learn --ham $hammail | \
logger -p mail.info -t 'sa-learn for $user'"
# スパムメール
spammail=/home/$user/Maildir/.Spam/cur
# スパムメール学習
if [ -d "$spammail" ]; then
# スパムメールをSpamAssassinに学習させる
su $user -s "/bin/bash" -c "sa-learn --spam $spammail | \
logger -p mail.info -t 'sa-learn for $user'"
# 受信後一ヶ月経過したスパムメールを削除
tmpwatch -m 720 $spammail
fi
done
[root@centos ~]# chmod +x /etc/cron.daily/spamassassin-learn ← SpamAssassin日次学習スクリプトに実行権限付加
|
|
※スパムメール学習結果のログは/var/log/maillogに記録される
|
■関連コンテンツ
プライバシーポリシー
|