トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Postfix Greylisting Policy Server(Postgrey) の変更点

Top / Postfix Greylisting Policy Server(Postgrey)

*Postfix Greylisting Policy Server(Postgrey) [#v6ff2cbd]

最近、社内の一部メールアカウントに対し、SPAMメールの受信が増大してしまい、メールサーバが過負荷状態になっていました。~
SPAM対策として、SpamAssassin等のベイジアンフィルタを導入していましたが、効果はあるものの多くがすり抜けてしまっている状態でした。

原因として、ベイジアンフィルタの学習機能を有効にするためには、

-IMAPでのメール運用をし
-すり抜けたSPAMメールを、SPAM用のフォルダに分類し
-定期的に、分類されたSPAMメールを学習させる

必要があるため、潤沢なHDD容量があるサーバなら良いのですが、現実的に運用が出来ない状態でした。~
このため、他の方法がないか試行錯誤していたところ、Postgreyに出会いました。


**Postgreyとは [#tb121257]

Postgrey は ISG.EE の Devid Schweikert 氏によって開発された greylisting(SPAMを防御するための一種の方法)を実装するPostfix ポリシーサーバです。~
(Postgrey日本語ポータルより引用)~
技術的な説明等は、上記ページに詳しく記載されています。


**インストール [#e51339c0]

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の実行 [#ca27ddfa]

 /usr/local/bin/postgrey --inet=10023 -d

**postfixの設定 [#ufe46657]

/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

***追記: [#d040c3ed]
上記では、全ての初回アクセスサーバからの接続も遅延させてしまうため、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