Postfix+ClamAV+Spamassassin

2011年4月3日 オフ 投稿者: KYO
Table of Contents

ウィルス対策としてClamAV、スパム対策としてSpamAssassinを設定した時のメモ。
環境:
・Postfix
・Dovecot(POP/IMAP)の仮想メールボックス構成
要件:
・すべてのメールをウィルスチェック
・ウィルスメールは削除する
・スパムメールには、タイトルに[SPAM]を付ける(削除は行わない)
参考:
http://centossrv.com/postfix-clamav-spamassassin.shtml
http://unixlife.jp/unixlife/linux/s-postfix_clamav_spam.jsp


– clamd設定

[shell]
$ sudo vim /etc/clamd.con
LocalSocket /var/run/clamav/clamd.sock
#TCPSocket 3310
$ sudo /etc/rc.d/init.d/clamd restart
[/shell]

– amavisd-newインストール

[shell]
$ sudo yum install amavisd-new –enablerepo=rpmforge
[/shell]

– amavisd-new設定

[shell]
$ sudo vim /etc/amavisd.conf

# COMMONLY ADJUSTED SETTINGS:
$undecipherable_subject_tag = ”;

# @bypass_spam_checks_maps = (1); # controls running of anti-spam cod

$mydomain = ‘sample.com’; # a convenient default for other settings

#$QUARANTINEDIR = “/var/virusmails”;

#$virus_admin = “virusalert\@$mydomain”;

$sa_spam_subject_tag = ‘[SPAM] ‘;

$final_spam_destiny = D_PASS;

# ### http://www.clamav.net/
# [‘ClamAV-clamd’,
# \&ask_daemon, [“CONTSCAN {}\n”, “/var/run/clamav/clamd”],
# qr/\bOK$/, qr/\bFOUND$/,
# qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
以下を追加
### http://www.clamav.net/
[‘ClamAV-clamd’,
\&ask_daemon, [“CONTSCAN {}\n”, “/var/run/clamav/clamd.sock”],
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],

# qr’^\.(exe-ms|dll)$’, # banned file(1) types, rudimentary
[/shell]

– サービス起動/起動設定

[shell]
$ sudo /etc/rc.d/init.d/amavisd start
$ sudo chkconfig amavisd on
[/shell]

– spamassassin起動/起動設定

[shell]
$ sudo /etc/rc.d/init.d/spamassassin start
$ sudo chkconfig spamassassin on
[/shell]

– spamassassin設定

[shell]
$ sudo vim /etc/mail/spamassassin/v310.pre

loadplugin Mail::SpamAssassin::Plugin::TextCat

[/shell]

– spamassassinアップデート

[shell]
$ cd /usr/local/sbin
$ sudo vim spamassassin-update
#!/bin/bash
# SpamAssassin設定ファイル最新版ダウンロード
cd /etc/mail/spamassassin
wget -qN http://www.flcl.org/~yoh/user_prefs
# 設定ファイル更新時のみSpamAssassin再起動
diff user_prefs user_prefs.org > /dev/null 2>&1
if [ $? -ne 0 ]; then
cp user_prefs local.cf
# スパム判断したメールを添付形式にしないように設定
echo “report_safe 0” >> local.cf
# スパム判断したメールの件名に「***SPAM***」を付加するように設定※受信メールサーバーがPOPの場合のみ
echo “rewrite_header Subject ***SPAM***” >> local.cf
# SpamAssassin再起動
/etc/rc.d/init.d/spamassassin restart > /dev/null
fi
cp user_prefs user_prefs.org
$ sudo chmod +x spamassassin-update
$ sudo ./spamassassin-update
$ ls -l /etc/mail/spamassassin/
合計 1180
-rw-r–r– 1 root root 1299 1月 21 2009 init.pre
-rw-r–r– 1 root root 385185 4月 2 18:27 local.cf
-rw-r–r– 1 root root 62 1月 21 2009 spamassassin-default.rc
-rwxr-xr-x 1 root root 35 1月 21 2009 spamassassin-helper.sh*
-rw-r–r– 1 root root 55 1月 21 2009 spamassassin-spamc.rc
-rw-rw-r– 1 root root 385137 4月 1 16:11 user_prefs
-rw-rw-r– 1 root root 385137 4月 2 18:27 user_prefs.org
-rw-r–r– 1 root root 2602 3月 29 14:15 v310.pre
-rw-r–r– 1 root root 1195 &
nbsp;1月 21 2009 v312.pre
-rw-r–r– 1 root root 2416 1月 21 2009 v320.pre
[/shell]

– spamassassinルール自動更新

[shell]
$ sudo vim /etc/cron.d/sa-update
10 4 * * * root /usr/share/spamassassin/sa-update.cron 2>&1 | tee -a /var/log/sa-update.log
[/shell]

– postfix(追記)

[shell]
$ sudo vim /etc/postfix/main.cf

mailbox_command = /usr/bin/procmai

[/shell]

– procmail設定(仮想メールボックス環境では上手く動作しなかった)

[shell]
$ sudo vim /etc/procmailrc
SHELL=/bin/bash
PATH=/usr/bin:/bin
DROPPRIVS=yes
MAILDIR=/var/mail/vmail/$LOGNAME/Maildir
DEFAULT=$MAILDIR/
SPAM=$MAILDIR/.Spam/
LOGFILE=$MAILDIR/.procmail.log # ログ出力先
#VERBOSE=ON # 詳細ログ出力
# SpamAssassinによるスパムチェック
:0fw
|/usr/bin/spamc
# SpamAssassinにより判定されたSpam-Levelが一定値(ここでは20)以上の場合は削除
# ※必要なメールが削除されてしまう可能性があることに留意すること
#:0
#* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
#/dev/null
[/shell]

– postfix設定

[shell]
$ sudo vim /etc/postfix/master.cf

smtp-amavis unix – – n – 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n – n – – smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
$ sudo vim /etc/postfix/main.cf

content_filter=smtp-amavis:[127.0.0.1]:10024
$ sudo /etc/rc.d/init.d/postfix restart
[/shell]

– スパムメール振り分け設定(IMAP)
– 既存ユーザ向け(“.Spam”フォルダ作成)

[shell]
$ cd /usr/local/sbin
$ sudo vim 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 ]; 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
$ sudo sh spamfolder-create
user



user
$ sudo rm -f spamfolder-create
[/shell]

– 新規ユーザ向け

[shell]
$ sudo mkdir -p /etc/skel/Maildir/.Spam/{new,cur,tmp}
$ sudo chmod -R 700 /etc/skel/Maildir/.Spam
[/shell]

– spamassassinがスパムと判定したメールは、”.Spam”ディレクトリへ

[shell]
$ sudo vim /etc/procmailrc ← procmail設定ファイル編集

# SpamAssassinがスパム判定したメールはスパム専用メールボックスへ配
[/shell]