DNSBLとの通信プロトコルがDNSだって先日初めて知ったよ。(恥)
専用のプロトコル、もしくはいろんな面で扱いやすいHTTP使ってるのかと思ってた。
Wikipediaによると、
DNSBL クエリ
メールサーバがクライアントからコネクションを受け付けたとき、クライアントをDNSBL(ここでは dnsbl.example.net)に照らしてチェックするには、以下のようなことをする。
- クライアントのIPアドレス(ここでは 192.168.42.23)のバイト順を逆転させ 23.42.168.192 とする。
- これにDNSBLのドメイン名を連結し 23.42.168.192.dnsbl.example.net とする。
- これをドメイン名(”A”レコード)としてDNSで参照する。クライアントが一覧にあればアドレスが返ってくる。そうでなければ “NXDOMAIN” (”No such domain”) というコードが返ってくる。
- クライアントが一覧にある場合、その名前をテキストレコード(”TXT”レコード)として参照することができる。多くのDNSBLはTXTレコードで何故そのクライアントが一覧に加えられたかという情報を公表している。
引用元: DNSBL - Wikipedia.
ということなので、実際にDNSクエリを投げて挙動を確かめてみよう。
ということで
- DNSBLドメイン(ゾーン):zen.spamhaus.org
- 確認用IPアドレス:78.162.167.215
とする。
「zen.spamhaus.org」は Postfixの reject_rbl_client に実際に設定しているホスト名だ。
# これがDNSのゾーンを表していたとは知らなかった。
spamhausはこのあたりで「使ってはいけない」とか書かれているが、わたしはどちらかと言うとこういうスタンスの方が好きなので今後もガシガシ使っていく。(メールの到達性の保証とかあまり気にしないので)
「78.162.167.215」は先日の件(って今も継続中だけど)で晒したIPアドレスの中の1つだ。
さて、まずは「1.」にならって、「78.162.167.215」を「215.167.162.78」とする。
で、「2.」にならって、「215.167.162.78.zen.spamhaus.org」とする。
「3.」で「2.」のAレコードを引けっていってるので
; <<>> DiG 9.3.4-P1 <<>> 215.167.162.78.zen.spamhaus.org
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51309
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 23, ADDITIONAL: 0
;; QUESTION SECTION:
;215.167.162.78.zen.spamhaus.org. IN A
;; ANSWER SECTION:
215.167.162.78.zen.spamhaus.org. 1800 IN A 127.0.0.10
215.167.162.78.zen.spamhaus.org. 1800 IN A 127.0.0.4
;; AUTHORITY SECTION:
zen.spamhaus.org. 66886 IN NS y.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS 0.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS 1.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS 3.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS 5.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS 8.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS a.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS b.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS c.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS d.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS f.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS g.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS h.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS i.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS k.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS l.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS m.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS o.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS q.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS r.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS s.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS t.ns.spamhaus.org.
zen.spamhaus.org. 66886 IN NS x.ns.spamhaus.org.
;; Query time: 6 msec
;; SERVER: 38.99.90.217#53(38.99.90.217)
;; WHEN: Fri Jan 23 14:56:07 2009
;; MSG SIZE rcvd: 452
Authorityを持つサーバがこれだけ(緑色文字)あるみたい。世界中からのDNSクエリをさばかないといけないわけだから当然といえば当然か。
実際のANSWERセクション(DNSクエリに対する回答)はオレンジ色文字の部分。Aレコードが、「127.0.0.10」と「127.0.0.4」と2つ返ってきた。ここは大抵127.0.0/8のループバックアドレスらしく、末尾の数字によって、IPアドレスの迷惑具合(SPAMMERホストなのか、open relayホストなのか)がわかるらしい。(このあたりは要確認)
さて、次に「2.」のAレコードがある場合、「2.」のTXTレコードに何やら付随した情報が含まれるというので早速引いてみる。
; <<>> DiG 9.3.4-P1 <<>> 215.167.162.78.zen.spamhaus.org txt
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12454
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 23, ADDITIONAL: 0
;; QUESTION SECTION:
;215.167.162.78.zen.spamhaus.org. IN TXT
;; ANSWER SECTION:
215.167.162.78.zen.spamhaus.org. 1800 IN TXT “http://www.spamhaus.org/query/bl?ip=78.162.167.215“
;; AUTHORITY SECTION:
zen.spamhaus.org. 64090 IN NS l.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS m.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS o.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS q.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS r.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS s.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS t.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS x.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS y.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS 0.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS 1.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS 3.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS 5.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS 8.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS a.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS b.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS c.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS d.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS f.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS g.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS h.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS i.ns.spamhaus.org.
zen.spamhaus.org. 64090 IN NS k.ns.spamhaus.org.
;; Query time: 64 msec
;; SERVER: 38.99.90.217#53(38.99.90.217)
;; WHEN: Fri Jan 23 15:42:44 2009
;; MSG SIZE rcvd: 483
おお、何やらURLが記載されてる!ので
http://www.spamhaus.org/query/bl?ip=78.162.167.215
へアクセスすると
と、こんな感じで「PBL」と「XBL」の中にリストされてるよ!って表示される。(さっきの 127.0.0.4と127.0.0.10は「PBL」と「XBL」に対応してるのかも?)
で「PBL」の方をクリックすると
/13でブラックリスト入りしてやがる。ザマーミロ(笑)
「CBL」の方は /32 のようだ。(残念)
どちらにも共通して「ブラックリスト入りしているアドレスレンジ」、「いつブラックリスト入りしたのか?」、「ブラックリストからの削除用リンク(ボタン)」が用意されている。
削除用リンクをクリックすると、
URLの部分の「ip=ブラックリスト化されたIPアドレス」となっている。
もしかして、spamメール送信用とは別のボットかなんかで無差別にブラックリストから削除とか出来ちゃうんじゃないかと心配してHTMLのソースを眺めてみたら
<input name="ip" type="hidden" value="78.162.167.215" />
<input name="confirm" type="hidden" value="dhofgjaamcpnkikepedalhopnhiilgba" />
って赤色文字部分のようなランダムな値を持つinput要素があったので、多分この値とマッチングさせて削除可否を判断してるんだろうな。とか思ったけど、CAPTCHAとか使ってるわけじゃないから、このランダムな値も機械的に読み取れちゃうよな。。
ってことで、ブラックリスト削除ボットのためのブラックリストが出来て・・(以下ループ)








