RBL Query(問い合わせ)方法
最近RBL.JPにwww.rbl.jpで運用しているデータベースへの問い合わせ(Query)方法の質問が来ます。
何度も来る質問は以下のようなものです。
「 nslookup all.rbl.jp としてもエラーになるのだがどのようにしたらアドレスが登録されているのを知ることができるのでしょうか」
ということでここではその方法を解説します。
方法がわかればSpamAssassinなどに頼らず別ソフトあるいは自分で作ったソフトを使ってspamの処理もできるわけですので、そのような方はぜひともお読みください。
RBL問い合わせの方法
世界中にあるRBLはそこに蓄積されている情報を引き出す方法として以下で述べる特別な形式でアドレスを調べて、それが登録されているかいないかで行われています。
普通はアドレスを調べるときにはDOS(Unixも同じ)のnslookupコマンドでnslookup www.rbl.jpのようにします。
すると上の例でいくと www.rbl.jp のIPアドレスが218.45.239.250として表示されます。
RBLの問い合わせはアドレスを調べる要領で行いますが答えは登録されているspammerのアドレスでなく登録されているかどうかとなります。
アドレスが存在しない場合 -> 登録されていない
アドレスが存在する場合 -> 登録されている
たとえばj-sine.comというドメイン名がurl.rbl.jpに登録されているかどうか調べるには
nslookup j-sine.com.url.rbl.jp
として調べます。すると127.0.0.2というアドレスが返ります。ということでこのドメインは登録されていることがわかります。
hart.co.jpが登録されているかをnslookup hart.co.jp.url.rbl.jp としてみるとcan't find hart.co.jp.url.rbl.jp: Non-existent host/domain となりアドレスは返って来ないので登録されていないということがわかります。
登録されている( == アドレスが存在する)場合に返ってくるIPアドレスはローカルアドレスです。値自体にはそれほど意味はありませんが同じRBLに複数の種類のデータがある場合にはそれを識別する為に127.0.0.2とか127.0.0.3とかいった値をつけて区別してある場合があります。RBL.JPも複数の種類のデータがあるので返るアドレスがデータの種類ごとに異なっています。
DNSを使って調べるという方法は特別なソフトウエアを入れたりすること無く簡単にできるため実に合理的な方法です。DNSのメカニズムをうまく利用することにより問い合わせ先を世界中に分散してトラフィックを軽減できるというメリットもあります。
以下ではデータの種類とそれに対する具体的な方法について解説します。
データの種類
RBL.JPでは以下のデータを蓄積しています。
グループA
virus.rbl.jp ウイルスが発信されたIPアドレスのデータベース
short.rbl.jp 主にダイアルアップ/ADSL回線からspamが発信されたIPアドレスのデータベース
all.rbl.jp 上記2つの加算
これらのデータはsendmailなどのメール配送ソフトから参照され、そのアドレスからの接続を(メールを受信する前に)拒絶するために使われています。もちろん受信したメールのヘッダを走査してこのアドレスが含まれていたらspamと判定するという方法をとることも可能です。
これ以外にSpamAssassinで使われるためこの登録されたアドレスについてはTXTフィールドも付加されています。取得方法については後半をご覧ください。
グループB
url.rbl.jp spam本文中にあるURLのspammerのドメイン名のデータベース
dyndns.rbl.jp spam本文中にあるダイナミックDNSのドメイン名のデータベース
これらのデータは本文にあるものですから受け取ったメールを走査してspamと判定するために使われます。
URLがIPアドレスであった場合にはTXTフィールドも付加されています。これはSpamAssassinでIPアドレスだけのURLを検知してもらうためのものです。
登録の基準については「RBL.JP登録基準」をご覧ください。
データの内容と問い合わせ方法
グループAはIPアドレスがデータベースとして蓄積されています。ホスト名で登録されてもIPアドレスに変換されて格納されています。
グループBはドメイン名あるいはhttp://192.168.22.12/ のようなURLがspam本文にある場合にはそのIPアドレス92.168.22.12がデータベースとして蓄積されています。
グループAについて調べるには以下のようにします。
IPアドレス192.168.2.12について問いあわせる例を示すと
1) アドレスを逆順にします。
12.2.168.192
2) そのあとにデータベース名をつけます。
12.2.168.192.virus.rbl.jp
3)これをnslookupコマンドで調べます(Unixであればほかにdigというソフトでも調べられます)
nslookup 12.2.168.192.virus.rbl.jp
4) 答えが返ってくれば登録されています。エラーとなれば登録されていません。
グループBについてはドメイン名の場合にはそのドメイン名のあとにデーベース名を付加してnslookupで調べます。
j-sine.comというドメイン名が登録されているかは以下のようにします。
nslookup j-sine.com.url.rbl.jp
答えが返ってくれば登録されています。エラーとなれば登録されていません。ドメイン名だけが登録されているため
nslookup www.j-sine.com.url.rbl.jp
などとしても答えはかならずエラーになります。
IPアドレスの場合にはそのままurl.rbl.jpなどをつけるのでなく逆順にしてアドレスを調べます。
IPアドレス211.60.138.10の例であれば以下のようにします。
nslookup 10.138.60.211.url.rbl.jp
TXTフィールド
DNSのTXTフィールドは登録されているデータに関しての補足的な情報を入れることになっています。よく使われる目的としては緯度経度といった場所の情報の公開、SPFでのメールサーバー情報の公開などに使われています。RBLではこのフィールドを通過したサーバーあるいはURLにあるIPアドレス情報を保管しておくために使っています。
このデータを問い合わせるにはグループAのときと同様にアドレスを逆順にしTXTレコードについて問い合わせをします。以下は203.174.66.99について
問い合わせた例です。(不要なメッセージは省略しています)
$ nslookup
> set type=txt
> 99.66.174.203.short.rbl.jp
99.66.174.203.short.rbl.jp text = "203.174.66.99 is listed in short.rbl.jp."
この例では 203.174.66.99 is listed in short.rbl.jp. というデータが引き出せました。
SpamAssassinは受け取ったメールを走査して上と同じことを行って点をつけているわけです。
その他
これらの処理を専用ソフトを作って調べるようにしたのが以下のページです。(www.rbl.jpのトップページからもリンクがあります)
グループA ブラックリストチェック(virus.rbl.jp, short.rbl.jp, all.rbl.jp)
グループB ブラックリストチェック(url.rbl.jp, dyndns.rbl.jp)
実際にはこれらのページでは登録されている元データを読み出し登録された時刻情報も表示しています。
なおこのルールを実践した「あなた専用のRBLを作る」には自分でRBLを立ち上げる方法についての解説がありますのでごらんください。
通常はここで説明したことを皆様が行う必要はありません。sendmailとSpamAssassinを使った「RBL.JP利用方法」の説明を見てご自分のサーバーに設定するだけです。あとはこれらのソフトが自動的に行ってくれます。
Nikki Top