モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

whitelisterとSQLgreyとRgrey/Starpitの共通点

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パターン

動的IPっぽいパターン(dyn_fqdn.regexp)

(^|[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]*[._-]