Postfix+ClamAV+Spamassassin
2011年4月3日ウィルス対策として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設定
$ sudo vim /etc/clamd.con LocalSocket /var/run/clamav/clamd.sock #TCPSocket 3310 $ sudo /etc/rc.d/init.d/clamd restart
- amavisd-newインストール
$ sudo yum install amavisd-new --enablerepo=rpmforge
- amavisd-new設定
$ 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
- サービス起動/起動設定
$ sudo /etc/rc.d/init.d/amavisd start $ sudo chkconfig amavisd on
- spamassassin起動/起動設定
$ sudo /etc/rc.d/init.d/spamassassin start $ sudo chkconfig spamassassin on
- spamassassin設定
$ sudo vim /etc/mail/spamassassin/v310.pre ... loadplugin Mail::SpamAssassin::Plugin::TextCat ...
- spamassassinアップデート
$ 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
- spamassassinルール自動更新
$ 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
- postfix(追記)
$ sudo vim /etc/postfix/main.cf ... mailbox_command = /usr/bin/procmai ...
- procmail設定(仮想メールボックス環境では上手く動作しなかった)
$ 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
- postfix設定
$ 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
- スパムメール振り分け設定(IMAP)
- 既存ユーザ向け(".Spam"フォルダ作成)
$ 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
- 新規ユーザ向け
$ sudo mkdir -p /etc/skel/Maildir/.Spam/{new,cur,tmp} $ sudo chmod -R 700 /etc/skel/Maildir/.Spam
- spamassassinがスパムと判定したメールは、".Spam"ディレクトリへ
$ sudo vim /etc/procmailrc ← procmail設定ファイル編集 ... # SpamAssassinがスパム判定したメールはスパム専用メールボックスへ配