SpamAssassinにて、ユーザ毎に設定ができるように調整します。
また、PostfixAdminにて、メールボックスが作成できるようにします。
マルチドメイン対応版です。
SpamAssassinを通さないメール
メールによっては、SpamAssassinを通さないように設定をします。
これにより、サーバーの負荷が下がります。
SpamAssassinは、サーバーにそれなりの負荷がかかります(汗)。
# vi /etc/procmailrc ---------------------------------------------- SHELL=/bin/bash PATH=/usr/bin:/bin DROPPRIVS=yes MAILDIR=/mail/$DOMAIN/$USER DEFAULT=$MAILDIR/ LOGFILE=/mail/$DOMAIN/$USER/.procmail.log VERBOSE=ON :0 * ? test -f $MAILDIR/nospamcheck $MAILDIR/ :0fw: spamassassin.lock *!^X-Spam-Status.* | /usr/local/bin/spamc :0 *^X-Spam-Status: YES $MAILDIR/.Spam/ ----------------------------------------------
:0 * ? test -f $MAILDIR/nospamcheck $MAILDIR/
↑という行を加えます。
/mail/(ドメイン)/(@前)/
直下に「nospamcheck」というファイルを置くと、
SpamAssassinを通さない設定になります。
SpamAssassin ユーザ毎の設定ファイルを読み込む
あるメールアドレスは、
・迷惑メール判定を厳しく
・ホワイトリストを多く設定する
など、メールアドレス毎の設定が可能なようにします。
SpamaAsassinのオプション変更
vi /etc/sysconfig/spamassassin SPAMDOPTIONS="-d -c -m5 -H" ↓ SPAMDOPTIONS="-d -c -m5 -H -s /var/log/spamd.log -u vuser --x --virtual-config-dir=/mail/%d/%l/.spamassassin"
「-s /var/log/spamd.log」 で、ログファイル名を指定します。
/var/log/maillogから、ファイルを分離して、メンテナンスをしやすくします。
「–virtual-config-dir=/mail/%d/%l/.spamassassin」
で、ユーザ毎のSpamAssassinの設定ファイルを読み込みます。
「/mail/(ドメイン)/(@前のユーザ)/.spamassassin」
のディレクトリを、設定ファイル関係のファイルと指定します。
この場合、
「/mail/(ドメイン)/(@前のユーザ)/.spamassassin/user_prefs」
が、優先的に読み込まれます。
ユーザ毎の設定ファイルがない場合は、デフォルトの
「/etc/mail/spamassassin/local.cf」
が評価されます。
「–x」は、「–virtual-config-dir」を有効にするには、必須。
ユーザ毎の評価ファイル、
「/mail/(ドメイン)/(@前のユーザ)/.spamassassin/user_prefs」は、
「/etc/mail/spamassassin/local.cf」は、同じファイル形式です。
procmailrcの変更
# vi /etc/procmailrc ------------------------------ :0fw: spamassassin.lock *!^X-Spam-Status.* | /usr/local/bin/spamc ------------------------------ ↓ ------------------------------ :0fw: spamassassin.lock *!^X-Spam-Status.* | /usr/local/bin/spamc -u $USER@$DOMAIN ------------------------------
ユーザ毎のSpamaAsassin設定
/etc/mail/spamassassin/local.cf
を
/mail/(ドメイン)/(@前のユーザ)/.spamassassin/user_prefs
に、コピーします。
そして、ユーザ毎のSpamaAsassin設定は、
/mail/(ドメイン)/(@前のユーザ)/.spamassassin/
の「private_prefs」に書いておきます。
/mail/(ドメイン)/(@前のユーザ)/.spamassassin/private_prefs
に
required_score 1.0 whitelist_from info@example.jp blacklist_from *@example.com
というふうに書きます。
PostfixAdmin メールボックスの作成
procmailを使うと、PostfixAdminで、メールを作成しても、自動的に、サーバー側で、メールボックスが作成されません。
PostfixAdminで、メールの作成/削除をしたときに、スクリプトを走らせて、自動的にメールボックスを作成するようにします。
# mkdir /usr/local/bin/postfixadmin # cp /var/www/postfixadmin/ADDITIONS/postfixadmin-domain-postdeletion.sh /usr/local/bin/postfixadmin # cp /var/www/postfixadmin/ADDITIONS/postfixadmin-mailbox-postcreation.sh /usr/local/bin/postfixadmin # cp /var/www/postfixadmin/ADDITIONS/postfixadmin-mailbox-postdeletion.sh /usr/local/bin/postfixadmin
↑ドメイン登録、メールボックス登録/削除のスクリプトを、コピーします。
# mkdir /mail/.deleted-maildirs # chmod 0700 /mail/.deleted-maildirs # chown vuser:vuser /mail/.deleted-maildirs
↑削除されたメールボックスの待避用ディレクトリをあらかじめ作成します。
# vi /usr/local/bin/postfixadmin/postfixadmin-mailbox-postcreation.sh basedir=/var/spool/maildirs ↓ basedir=/mail ------------------------------ maildirmake "$maildir" if [ ! -d "$maildir" ]; then echo "$0: maildirmake didn't produce a directory; bailing out." exit 1 fi ------------------------------ ↓ ------------------------------ mkdir "$maildir" if [ ! -d "$maildir" ]; then echo "$0: mkdir didn't produce a directory; bailing out." exit 1 fi mkdir "${maildir}cur" if [ ! -d "${maildir}cur" ]; then echo "$0: mkdir didn't produce a directory; bailing out." exit 1 fi mkdir "${maildir}new" if [ ! -d "${maildir}new" ]; then echo "$0: mkdir didn't produce a directory; bailing out." exit 1 fi mkdir "${maildir}tmp" if [ ! -d "${maildir}tmp" ]; then echo "$0: mkdir didn't produce a directory; bailing out." exit 1 fi chown -R vuser:vuser "$maildir" chmod -R 700 "$maildir" ------------------------------
# vi /usr/local/bin/postfixadmin/postfixadmin-mailbox-postdeletion.sh basedir=/var/spool/maildirs ↓ basedir=/mail trashbase=/var/spool/deleted-maildirs ↓ trashbase=/mail/.deleted-maildirs
vi /usr/local/bin/postfixadmin/postfixadmin-domain-postdeletion.sh basedir=/var/spool/maildirs ↓ basedir=/mail trashbase=/var/spool/deleted-maildirs ↓ trashbase=/mail/.deleted-maildirs
# chmod 755 /usr/local/bin/postfixadmin/postfixadmin-*
# vi /var/www/postfixadmin/config.inc.php $CONF['mailbox_postcreation_script'] = ''; ↓ $CONF['mailbox_postcreation_script'] = 'sudo -u vuser /usr/local/bin/postfixadmin/postfixadmin-mailbox-postcreation.sh'; $CONF['mailbox_postdeletion_script'] = ''; ↓ $CONF['mailbox_postdeletion_script'] = 'sudo -u vuser /usr/local/bin/postfixadmin/postfixadmin-mailbox-postdeletion.sh'; $CONF['domain_postdeletion_script'] = ''; ↓ $CONF['domain_postdeletion_script'] = 'sudo -u vuser /usr/local/bin/postfixadmin/postfixadmin-domain-postdeletion.sh';
# sudo visudo ## Same thing without a password apache ALL=(ALL) NOPASSWD: /usr/local/bin/postfixadmin/p*
「sudo」コマンドで、
apache ALL=(ALL) NOPASSWD: /usr/local/bin/postfixadmin/p*
を入れます。
apache ユーザは、/usr/local/bin/postfixadmin/p*のコマンドをパスワードなしで、実行することができる。
という設定です。
これを入れないと、
[sudo] password for apache:
と怒られます。
↑と、表示され、
/mail/以下にも、メールボックス(MailDir形式)が作成されました。