Postfix Greylisting Policy Server(Postgrey)
Postfix Greylisting Policy Server(Postgrey) †
最近、社内の一部メールアカウントに対し、SPAMメールの受信が増大してしまい、メールサーバが過負荷状態になっていました。
SPAM対策として、SpamAssassin?等のベイジアンフィルタを導入していましたが、効果はあるものの多くがすり抜けてしまっている状態でした。
原因として、ベイジアンフィルタの学習機能を有効にするためには、
- IMAPでのメール運用をし
- すり抜けたSPAMメールを、SPAM用のフォルダに分類し
- 定期的に、分類されたSPAMメールを学習させる
必要があるため、潤沢なHDD容量があるサーバなら良いのですが、現実的に運用が出来ない状態でした。
このため、他の方法がないか試行錯誤していたところ、Postgreyに出会いました。
Postgreyとは †
Postgrey は ISG.EE の Devid Schweikert 氏によって開発された greylisting(SPAMを防御するための一種の方法)を実装するPostfix ポリシーサーバです。
(Postgrey日本語ポータルより引用)
技術的な説明等は、上記ページに詳しく記載されています。
インストール †
Postgreyのインストールには、以下のPerlモジュールが必要になります。
- Perl (version ≥ 5.6.0)
- Net::Server
- IO::Multiplex
- BerkeleyDB
まず、CPANを用いて、Perlモジュールをインストールします。
perl -MCPAN -e shell >cpan install Net::Server >cpan install IO::Multiplex >cpan install BerkeieyDB
rpmモジュールをDLしインストール
wget http://apt.sw.be/packages/postgrey/postgrey-1.27-1... rpm -ivh postgrey-1.27-1.fc3.rf.noarch.rpm
postgreyの実行 †
/usr/local/bin/postgrey --inet=10023 -d
postfixの設定 †
/etc/postfix/main.cfに、以下の設定を追記
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, check_policy_service, inet:127.0.0.1:10023
最後に、postfixをreload
service postfix reload
追記: †
上記では、全ての初回アクセスサーバからの接続も遅延させてしまうため、FQDNを逆引きして動的IPっぽくないサーバからの接続はスルーするように変更
/etc/postfix/main.cfに、以下の設定を追記
smtpd_restriction_classes = check_greylist check_greylist = check_policy_service inet:127.0.0.1:10023 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_client_access, regexp:/etc/postfix/check_client_fqdn
/etc/postfix/check_client_fqdnを新規作成
/^unknown$/ check_greylist /^[^\.]*[0-9][^0-9\.]+[0-9]/ check_greylist /^[^\.]*[0-9]{5}/ check_greylist /^([^\.]+\.)?[0-9][^\.]*\.[^\.]+\..+\.[a-z]/ check_greylist /^[^\.]*[0-9]\.[^\.]*[0-9]-[0-9]/ check_greylist /^[^\.]*[0-9]\.[^\.]*[0-9]\.[^\.]+\..+\./ check_greylist /^(dhcp|dialup|ppp|adsl)[^\.]*[0-9]/ check_greylist