![]() |
![]() |
||
●postfix + procmailによるメールフィルタリング(procmail-sub)● (※管理人は現在これを使用していません)
メールサーバーを立てている方の悩みといえば「スパム(未承諾広告)」と「ウィルス」ではないかと思います。
ウィルスについては、「H+BEDV AntiVir MailGate」を導入して排除しています。(導入方法は後日アップします)
スパム(未承諾広告)はprocmailでこちらのレシピを参考にして排除していました。
ところがここでbody_checksに含まれる拡張子のウィルスが届いた場合に1つ問題が起こってしまいました。
そこでbody_checksを使用せずにスパムと同様にprocmailで特定の拡張子も排除するように
■procmail-subの入手
※procmail-subを使用する為には以下の条件が必須となります。
> wget http://cmf.ohtanz.com/download/procmail-sub.tar.gz
> cp procmail-sub /usr/local/bin/ > vi /usr/local/bin/procmail-sub ------------------------------------------------------------------------------ 01:#!/usr/bin/perl #perlのパス ------------------------------------------------------------------------------ > chmod 755 /usr/local/bin/procmail-sub■procmail-ext(拒否する拡張子)をご自身の環境に合わせて編集します。 > cp procmail-ext /etc/postfix/ > vi /etc/postfix/procmail-ext ------------------------------------------------------------------------------ .vbs .vbe .jse .css .wsh ・ ・ ・ ------------------------------------------------------------------------------■procmail-bwd(スパムと見なすキーワード)をご自身の環境に合わせて編集します。 > cp procmail-bwd /etc/postfix/ > vi /etc/postfix/procmail-bwd ------------------------------------------------------------------------------ 未承諾広告 未承認広告 ------------------------------------------------------------------------------↑の設定はSubjectに未承諾広告、未承認広告が含まれる場合に拒否されます。 ■フィルタリングしたいユーザーの$HOMEに.procmailrcを設置します。
> cp .procmailrc ~user/
※特定の拡張子又はスパムと見なすキーワードのいずれかのみを適用したい場合等、
------------------------------------------------------------------------------
SHELL=/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin
CONFDIR=/etc/postfix #procmail-bwd/procmail-extがあるディレクトリ
LOGFILE=/var/log/procmail #procmail用のログ
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
NGWORD=$CONFDIR/procmail-bwd
NGEXT=$CONFDIR/procmail-ext
#-----ここからスパムと見なすキーワードをチェック-----#
:0 H
* ^Subject:.*\/.*
{
DECWORD=$MATCH
:0 h
* ^Subject:.*
DECWORD=|echo "$MATCH" | nkf -me
:0 h
*$ ? test -s $NGWORD
* ? echo $DECWORD | procmail-sub -w $NGWORD
{
EXITCODE=67 #procmail-bwdにマッチした場合に
:0 #User Unknownでリターンしてメールを破棄します
/dev/null #(単に破棄するだけの場合はEXITCODE=67、0:の行を削除して下さい)
}
}
#----------------------ここまで---------------------#
#-----------ここから特定の拡張子をチェック----------#
:0 B
* (filename|name)=.*\/.*
{
DECEXT=$MATCH
:0 b
* (filename|name)=.*
DECEXT=|echo "$MATCH" | nkf -me
:0 b
*$ ? test -s $NGEXT
* ? echo $DECEXT | procmail-sub -e $NGEXT
{
EXITCODE=67 #procmail-extマッチした場合に
:0 #User Unknownでリターンしてメールを破棄します
/dev/null #(単に破棄するだけの場合はEXITCODE=67、0:の行を削除して下さい)
}
}
#----------------------ここまで---------------------#
------------------------------------------------------------------------------
■フィルタリングしたいユーザーの$HOMEに.forwardを設置します。
> cp .forward ~user/
------------------------------------------------------------------------------ "|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #~/Maildir/" ------------------------------------------------------------------------------ ■procmail用のログを作成します。
> touch /var/log/procmail
※logrotateに追加します。
------------------------------------------------------------------------------
/var/log/procmail {
create 666 root root
}
------------------------------------------------------------------------------
|
|||
![]() |
![]() |