2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

Postgrey日本語ポータル

SPAMメール対策ツールPostgrey(Postfix Greylisting Policy Server)

PostgreyISG.EE の Devid Schweikert 氏によって開発された greylisting(SPAMを防御するための一種の方法)を実装するPostfix ポリシーサーバです。

メールの配送を求める要求がSMTPを通してPostfixによって受け取られるとき、この三つ、CLIENT_IP・SENDER・RECIPIENTが組立てられます。
この三つが見られるのが1回目のとき、もしくはこの三つの組が最初に見られたら、5分未満前にメールは一時的エラーで拒否されます。うまくいけば、この仕組みがRFCで必要なので、スパマーもしくはウイルスはメール送信を再トライしないでしょう。つまり、機械的にプログラムを組んで送信してるスパムのほとんどは、一回目に目的のサーバに拒否されると、その場であきらめてしまうものが多いのです。なぜなら、より多くの宛先へSPAMMERはSPAMメールを送信しなければならないため、2回目以降は再送しないのです。
ただし、Postgreyによって大きな効果は得られますが、完全な防御とは言えません(なぜなら、hotmailや踏み台にされた正規のメールサーバのようなアカウントから配信されるスパムは一回目拒否されてもリトライするからです)。SPAMに対して完全に近い防御をするには、ベイジリアン型のSPAMフィルターとの併用をお勧めします。SPAMフィルターとの併用で約90%近いSPAMブロックが実現できると思います。例えば、私は bogofilter + Postgrey あるいは、 bsfilter + Postgrey でSPAMブロックの効果を上げています。是非、試してみてください。

S25R(Selective SMTP rejection) + Postgrey
S25R + Postgrey な方法も最近多くなりました。S25Rは、SMTPサーバへコネクトしてきたホストをDNSで逆引きして、そのホストの正当性を評価して可否を判断する仕組みです。確かに理にかなってる判定手段だと思います、ですから私は否定はしません。しかし、過去にこれを私は設定していたがために、友人のDynamicDNSメールサーバから送られてきていたメールを拒否してしまいました。S25Rは、場合によっては全てのメールサーバの柔軟性を欠いてしまう手段だと思うのです。S25Rは、Postfixで言うとmain.cfファイルの設定パラメータ、smtpd_client_restrictions = reject_unknown_client のように設定すれば実現できます。しかし、私はあえてS25Rは使わないで、 SPAM常習サーバDB(spamcop.net、opm.blitzed.org他)からホストの正当性を評価 して Postgrey でさらに判断を加えています。ホワイトリストを使うという手段は有りますが、S25Rは一部の正規なメールサーバを遮断してしまう行為です。

S25R + greylisting
とは言うものの、世の中SPAMを飛ばす馬鹿たれが多いので「Outbound Port 25 Blocking」とか、前述した「S25R」の対応策が今後珍重されていくことは目に見えています。そこで、S25Rで誤検出された正当なメールサーバを救済するためのチェック方法を Rgrey という名前で佐藤 潔さんが提唱しています。これは、S25Rでしょっぱな reject されたが、その後改めて再送してきメールを正当なメールとしてホワイトリストへ登録する自動化スクリプトの事です。つまり、その動きが Greylisting だったりします。スパムの検出効率ももちろんですが、何よりS25Rの欠点を補う解決策だと私的には注目しています。

また、Postfixポリシーサーバがどう動作するかに関しての記述は ここ を見てください。

Greylisting:
確かに、SPAMを防御するための一手法。
メールの受信時に、SPAMを送信してくる疑いの濃いいサーバ(例えば、数字の羅列で命名されてるホスト名や頻繁に変わる可能性があるホスト名)からのメールを一回目拒否します。正当なサーバであれば、メールが一回目拒否されてもリトライして送信を完了させるが、SPAMを送信するサーバは、拒否された時点で送信をあきらめるため、SPAMの量を著しく減らすことが期待できます。ただし、受信を一回目拒否するため、メールの配送遅延が発生します。

Whitelisting
Greylistingによって正当なメールが永続的に受信拒否されるのを防ぐため、明らかに正当なメールのみを送信してくるメールサーバをホワイトリストに登録して、以降、そのサーバが正当であるかぎり無条件でメールを受信を許可します。このとき、Greylistingは動作しません。

Postfix2.1.1にgreylist.plを含んでいるケースを例にとると、Postgreyは以下の付加的な機能を持っています:
■ 安全なデータベース
greylist.plは正しくデータベースをロックしません、そして、それはしばらくして壊れる可能性があります(2日間は私のための時間を意味します)。
Postgrey は、信頼性をより高くするために BerkeleyDB のトランザクション機能を使います。また、1つのプロセスだけが走ることによって、その結果、データベースを壊すという危険をより減少させます。
■ 自動的なメンテナンス
Postgreyは、単に与えられた前述の三つが見られた1回目ではなく、最後の時間動向をおさえます。自動的に最後に定義された時間以前から見られたエントリー(例えば、1カ月)を削除します。  
■ ホワイトリスト
Per-client とper-recipient ホワイトリスト.
Postgrey配布パッケージは、今まで識別されてきた全ての(と言っても少々だが)壊されたメールサーバと一緒にクライアントホワイトリストを含んでいます。  
■ サブネットによるルックアップ アドレスは通常(それら)の最後のバイトが取り去られ、それにより複数のアドレスを持っているメールサーバがただ1つのサーバとして認識されるようになります。
■ クライアントオートホワイトリスティング(明らかに正規のメールのみを送信してくれる信頼できるメールサーバのリスト) greylistを通過することができるような繰り返し出現するクライアントは、「client whitelist」に入れてしまう、それにより greylisting が全く機能しなくなります。

これは、greylistingの有効性を示したグラフです:

インストレーション

Download it here  Now Release postgrey-1.34.tar.gz testing SQLite postgrey-2.0alpha1.tar.gz インストールに必要なPerlモジュール:

Postgreyのソースインストールに関しては、 SPAM撃退モジュール postgrey を Postfix で使用する! を参考にしてください。
CentOSへのインストールに関しては、 CentOSでPostgreyを動かす! もしくは、 CentOS5.0でpostfix+amavisd-new+clamd+postgreyのインスコ! を参考にしてください。

ディストリビューションパッケージ

ソース tarball からインストールするのが複雑過ぎるなら、あなたのための代替手段として以下の配布パッケージの1つを使用してもよいかと思います:
■ OpenPKG OpenPKGはpostgreyのパッケージを含む(Ralf Engelschall氏に感謝します)。ただし、http://www.openpkg.org/ からパッケージをゲットしてください。
■ Debian postgreyはDebianでは入手可能です(Adrian ‘Dagurashibanipal’ von Bidder氏に感謝します)。まさに、 apt-get install postgrey で動かしてください。
■ Redhat/FedoraCore/CentOS/WhiteBox Redhat/Fedora/CentOS/WhiteBox のパッケージは、 ここ でゲットしてください(Farkas Levente氏に感謝します)。
■ Gentoo postgreyはメインGentooリポジトリで入手可能です。まさに、 emerge -s postgrey で動かしてください。
■ FreeBSD Harold Paulson氏は、ここ でFreeBSDのpostgreyパッケージを用意しました。
■ OpenBSD また、OpenBSDは Jakob Schlyter氏 によりpostgreyのportも含んでいます。

メーリングリスト

検討中

リファレンス

Postgreyの本(リファレンス)は、Postfix Buch(ドイツ語で書かれている)でRalf Hildebrandt氏とPatrick Ben Koetter氏が説明しています。

以上