Postfixのポリシーサーバとして
a Postfix Whitelister daemon
Debian -- whitelister
というのがあると知った。
これは、Greylistingサーバ等の前に、「怪しくない」相手の場合に素通ししてしまうことを目的としたもの。
具体的には、いくつかのRBLやRHSBLを使って、接続元IPやHELOやMAILFROMをチェックして、どれにも引っかからなければOKを返すようになっているらしい。
これはRgreyとかStarpitとかで、S25Rに引っかからなければ素通しというのと、コンセプトとしてはほぼ同じことになると思う。
ちなみに、参考にwhitelisterのソース見たら、なんか見たことない書式だと思ったら、OCamlで書いてあった。読めねえよ orz てかOCamlのソース初めて見た。
(070425に修正と追記)
また、SQLgreyというpostgreyから派生したGreylistingサーバでも、「選択的に」greylistingを掛けられるようになっています。
discrimination.regexpという設定ファイルがあり、クライアントのIPだけじゃなくて、HELOのパターンだとか、sender fromのパターンだとかでも怪しそうかどうか?を判断してるようです。
discrimination(区分け)関連のところでやっていて、これはオプションなので、これをオンに設定しないと使われないようです。
最初、正規表現で書かれた動的IPっぽいパターンと、メールサーバっぽいパターンが用意されていて、動的IPっぽいパターンに引っかかり、メールサーバっぽいパターンでなければGreylisting掛ける、というコードだと思ってたんですが、これはクラスCのIPでオートホワイトリストと比較するようにチェックを緩くする、というためのものでした。
これはマッチさせるパターンが違うだけで、Rgreyと全く同じことを狙っているものだ。
SQLgreyの動的IPパターン
(^|[0-9.x_-])(abo|br(e|oa)dband|cabel|(hk)?cablep?|catv|cbl|cidr|d?client2?|cust(omer)?s?|dhcp|dial?(in|up)?|d[iu]p|[asx]?dsld?|dyn(a(dsl|mic)?)?|home|in-addr|modem(cable)?|(di)?pool|ppp|ptr|rev|static|user|YahooBB[0-9]{12}|c:alnum:{6,}(\.[a-z]{3})?\.virtua|[1-9]Cust[0-9]+|AC[A-Z][0-9A-F]{5}\.ipt|pcp[0-9]{6,}pcs|S0106:alnum:{12,}\.[a-z]{2})[0-9.x_-]
メールサーバっぽいパターン(smtp_server.regexp)
^(.+[._-])*(apache|bounce|bulk|delay|d?ns|external|extranet|filter|firewall|forward|gateway|gw|m?liste?s?|(bulk|dead|mass|send|[eqw])?mail(er)?|e?mail(agent|host|hub|scan(ner)?)|messagerie|mta|v?mx|out(bound)?|pop|postfix|w?proxy|rela(is|y)|serveu?r|smarthost|v?smtp|web|www)(gate|mail|mx|pool|out|server)?[0-9]*[._-]