Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Rgrey - Selective SMTP Rejection + postgrey パッチ
[go: Go Back, main page]

Rgrey - S25R + postgrey パッチ

K2-net ホームへ

2004/9/30 (lastupdate 2005/10/5)

これはなに?

Rgreyは、postfixというメールサーバ上でスパムやウイルスメールを排除するためのフィル タです。
スパムの検出率を上げることより、正しいメールの誤検出をしないことを目標 として設計されており、原理的にほぼ誤検出無く運用することが出来ます。
そのため、ベイジアンフィルタ等の他のコンテンツフィルタと組み合わせて 1次フィルタとして利用すると有効ですが、これだけでも95%弱程の検出率はあります。

開発動機と内容

Selective SMTP Rejection (S25R) - 阻止率99%のスパム対策方式の研究報告 を読んで、簡単な仕組みながら効果が高いと思いました。
これはFQDNのパターンから、PPPなどの接続先と思われるところから直接出されているものを拒否することで、スパムやウイルスメールを排除するというものです。

しかし、この報告でも述べられているように、大規模なサイトで運用するには、間違って阻止されてしまうメールのリスクが高く、rejectで再送要求し、それでも再度送ってきたらホワイトリストに登録する、ということが薦められています。
そこで、その運用を自動化するためのスクリプトを書こうと考えていたのですが、よく考えるとそれは、Greylistingそのものだということに気が付きました。

Greylistingという方式については、下記記事を参照ください。
[postfix-jp:03911] Greylisting
つまり、一度必ず再送要求で返して、ちゃんと再送してきたら受け取るというものです。

これを、あやしい接続元に対してだけ再送要求で返せば、Greylistingによる 副作用 - 再送待ちによるメールの遅延や、正しいメール送信元からのメールの排除(まれに再送要求に応じない メールサーバを使っているところがある) - がなく、スパムも受け取らなくて済むという、いいとこどりのシステムになるはずです。

FQDNのチェックとGreylistingを2重に掛けるからと言って、排除するための条 件がandになるわけですから、排除率が上がるわけではありません。FQDNチェッ クとGreylistingの排除率が掛けられた率に下がってしまいます。
駆除率を上げるのではなく、フィルタリングによる悪影響を最小限にするため の追加と考えてください。
ちなみに、自分宛に平均したところ200通/日で届いていた、スパム・ウイルスメールのうち、平均10通程すり抜けてきています。
内訳は、ドメイン名チェックですり抜けたものが7通程、Greylistingのチェッ クですり抜けたものが3通程となっています。
約95%の駆除率となっています。

このフィルタは接続要求元を逆引きしてパターンマッチ掛けるだけなので、コンテンツフィルタと比較して非常に負荷が軽くなっています。
そのため、これを1次フィルタとして、2次フィルタにClamAV等のウイルスチェックフィルタや、SpamAssassin等のスパムフィルタを用いると、負荷低減という意味でも利用価値があります。
また、ベイジアンフィルタ等を用いたスパムフィルタでは、どうしても誤検出されることがあるので、スパムにより分けられたものを一度チェックしてから捨てることが多いと思います。
一日に届くスパムメールが100通以上もあると、そのゴミ漁りすらうっとおしいのではないでしょうか。
S25Rにマッチする接続元で、かつ再送要求にも応じないような送信元は、ほぼスパムかウイルスと断定してしまってよいと思います。
そういうわかりやすいものを先に捨ててしまうことで、一日に届くスパムはこのフィルタで100通から10通以内に減りますから、その後のフィルタで引っ掛けたゴミを漁るときに、楽になる効果も狙えます。

実装先

postfix

Postfixは2.1よりSMTPDアクセスポリシーという機能が使えるようになり、外部のポリシーサーバにより、接続の許可などを行わせることが出来るようになっています。
Postfix SMTP Access Policy Delegation
この機能を使って、Greylistingの実装がサンプルで付いてきているのですが、その他にも、
Postgrey - Postfix Greylisting Policy Server
というものが公開されています。

postgrey では whitelists が指定できるのですが、これをちょこっと改造して、まず先にチェックすべき接続元、ここでは greylists と呼ぶとすると、これのどれかに合致しているなら、チェックする必要がある、という機能を追加しました。

qmail

そのほかに、qmail用にもいくつかgreylistingの実装が公開されており、そのうちの一つ、
qgreylist - simple greylisting for qmail
に対してのS25R対応パッチ、Qgreyも作成しました。

Rgreyパッチとインストール

postgrey-1.21用
パッチ本体:rgrey-0.2-1.21.tar.gz
Debian(sarge)のpostgrey-1.21用
パッチ本体:rgrey-0.2-1.21-debian.tar.gz
Debian用パッチを使ったインストールメモを参照

postgrey-1.16用
パッチ本体:postgrey-namecheck
このパッチを使ったインストールメモを参照し てください。

また、こちらではmomonga用のrpmを公開いただいています。
[linux] Rgrey - S25R + postgrey パッチ - 寝言に相槌日記フォ〜!!! (2005-09-23)
postgrey-1.21-1m.nosrc.rpm

履歴

2005/10/5 「寝言に相槌日記フォ〜!!!」さんからmomonga用のrpmをリンクさせていただきました。
2005/9/22 説明文追加
2005/8/31 qmail用のgreylisting、qgreylistに対してのパッチ qgrey-0.1 を公開しました。
2005/8/8 postgrey-1.21 用のパッチ rgrey-0.2 を公開しました。
2005/8/7 Debian(sarge)用のパッチを公開。少しだけ機能を追加(greylistチェックを掛けるパターンをIPでも行えるように変更)したので rgrey-0.2 になりました。
2005/6/2 名前を変えたのにURLはpostgreyのままだったのでURLの追加。 http://k2net.hakuba.jp/rgrey/ でも接続できるようにした。
2005/4/28 「阻止率99%のスパム対策方式」に「Selective SMTP Rejection (S25R)」 という名前が付けられたのにともない、このパッチによるフィルタは Rgrey という名前にした。
2004/10/15 whitelistをFQDNチェックの前に掛けるようにしたが、やはり元にもどす。
2004/10/14 whitelistをFQDNチェックの前に掛けるように修正。patchに付属のgreylistとwhitelistを修正
2004/10/4 HUPのシグナルでgreylistingのリストも再読込するように修正。
2004/9/30 パッチの公開。

連絡先

佐藤 潔 (SATOH Kiyoshi)
http://d.hatena.ne.jp/stealthinu/