迷惑メール (UCE, UBE, スパム メールなどとも呼ばれる) が沢山届いて困る、
というのはメールアドレスを公開している人にとって共通の悩みのタネであるはず。
SpamAssasin などの
メールフィルタを使っている、というかたも多いだろう。
しかしながら、メールの内容を見て迷惑メールか否かを判断するフィルタでは、
迷惑メール送信者とのイタチごっこは避けられない。
送信者は迷惑メールと判断されないよう、
どんどん内容を巧妙に変化させていくからだ。
例えばフィルタリングアルゴリズムとしてよく使われる
ベイジアン フィルタ(Bayesian Filter) は、
ワード サラダ (Word Salad) を食わされることによって精度が落ちてしまう。
したがって
迷惑メール送信者とのイタチごっこに終止符を打つには、
迷惑メール送信者が変更できない情報にのみ依存した
迷惑メール判定方法を用いるしかない。
迷惑メール送信者が変更できない情報とは、つまり
送信元 IP アドレスである。
そんなものはプロバイダ (ISP, Internet Service Provider) を
変更すれば変えられる、
と言われればその通りなのであるが、
単に別のアドレスに変えられるというだけであって、
望み通りのアドレスに変更できるわけではない。
例えば私が使っているメールサーバの IP アドレスは 60.32.85.220 であるが、
送信元 IP アドレスとしてこのアドレスを使える人は特定少数の人のみであり、
この IP アドレスから迷惑メールが送信されるような事態は、
まず起きないと言えるし、
万一「特定少数」のうちの誰かが迷惑メールを送るようなことがあれば、
直ちに止めさせることができる。
この IP アドレスからは迷惑メールを送信させない、というポリシーでもって
運用されている IP アドレスは数多い。
きちんと運用されているサイトの多くが同様のポリシーで運用されていることだろう。
だからそのような、「きちんと管理された」IP アドレスから送信された
メールのみ受付け、
迷惑メールの送信元となる可能性がある IP アドレスからのメールを拒否すればよい。
つまり IP25B (Inbound Port 25 Blocking) である。
既に IP25B を実施しているプロバイダ もあるようであるが、
インターネットにおける通信は end-to-end を基本にすべきであって、
通信インフラを提供する側であるプロバイダが、
他のプロバイダと連係して IP25B を実施することについては違和感を覚えなくもない。
もちろん沢山ある IP アドレスの全てについて、
きちんと管理されているか否かを調べ上げることは困難であるが、
迷惑メールを送ってくる IP アドレスというのは実はそんなに多くはない。
私のサイト宛に迷惑メールを送ってきた IP アドレスを、
私は数年間にわたって記録しているが、
大多数は、ダイアルアップと思しき IP アドレスであり、
しかも、いくつかの国に集中している。
ここでいう「ダイアルアップ IP アドレス」とは、
個人ユーザがプロバイダと契約してインターネットに接続するときに、
プロバイダから割当てられる IP アドレスを指す。
「ダイアル」して接続する場合だけでなく、ADSL 等による接続も含む。
多くの場合、接続が切れるたびに異なる IP アドレスが割当てられるが、
固定的な IP アドレスが割当てられている場合もある。
このような IP アドレスは、
逆引きしても、「P061198164231.ppp.prin.ne.jp」といったような
プロバイダ名しか分からないような「匿名」ホスト名しか得られないか、
あるいはそもそも逆引きが設定されていないケースが大半である。
ちなみに「P061198164231.ppp.prin.ne.jp」というホスト名は、
数字の部分を三桁づつ区切ると「061」「198」「164」「231」になり、
このホスト名に対応する IP アドレス「61.198.164.231」から
規則的に名付けられたホスト名であることが分かる。
多くのプロバイダにおいて、
「ダイアルアップ IP アドレス」には、
このような規則的に命名されたホスト名がつけられているようだ。
逆に言うと、
逆引きして規則的なホスト名が得られたときに、
その IP アドレスを「ダイアルアップ IP アドレス」と見なすことは、
ある程度の合理性を持つ。
「規則的なホスト名」=「ダイアルアップ」という認識が広まるにつれ、
ダイアルアップ以外の IP アドレスには、
規則的でないホスト名をつける風潮が強まるだろう。
実際、
私が知っているあるデータセンタは、顧客が使用する IP アドレスに、
規則的ではないホスト名をつけるよう推奨している。
したがって、メールの送信元 IP アドレスを逆引きしたときに、
規則的なホスト名が得られたら、
そのメールは高い確率で迷惑メールと予測できる。
他の迷惑メール判別方法と組合わせ、
送信元が規則的なホスト名であることを必須条件とすれば、
排除するメールを迷惑メールのみに限定する
(つまり false positive の可能性をほぼゼロにする) ことが可能となる。
一方、逆引きしたとき規則的でないホスト名が得られたら、
そのメールは十中八九、マトモなメールである。
仮に迷惑メールだったのなら、
ホスト名を元にその管理主体がどんな組織であるかある程度想像つくだろうから、
迷惑メール対策が期待できそうなら連絡すればよいし、
その組織からのメールを受け取る必要がなければ、
以後受け取りを拒否すればよい。
したがって問題となるのは逆引きができない場合である。
逆引きを設定していないような管理不十分なサイトからのメールは受け取らない、
と言ってしまえるのなら楽なのであるが、
残念ながら逆引きを設定していないサイトは数多い。
その全てからのメールを拒否してしまうと、
必要なメールまで失いかねない。
そこで役に立つのが自前のブラックリスト/ホワイトリストである。
今まで受け取ったメールを集計して、
迷惑メールしか送ってこない送信元 IP アドレスはブラックリストに載せ、
必要なメールを送ってくる送信元 IP アドレスはホワイトリストに載せる。
そして、ブラックリストに載っている IP アドレスから送られてきたメールは
「ダイアルアップ IP アドレス」に準じる扱いにし、
ホワイトリストに載っている IP アドレスから送られてきたメールは、
迷惑メール判定をスキップして無条件に受け取るようにする。
今まで受け取ったメールを全て保存していれば、
ブラックリスト/ホワイトリストを作るのは容易だろう。
が、マトモなメールならいざ知らず、
迷惑メールまでも全て保存している人は稀かも知れない。
迷惑メールを受け取ったら、
内容を保存するかどうかはともかく、
送信元 IP アドレスだけは記録するようにしておきたい。
とりあえずお手軽にブラックリストを使って、
逆引きできない送信元 IP アドレスを分別してみたいというかたのために、
私が個人的に使用しているブラックリストを公開する。
送信元 IP アドレスが A.B.C.D であるとき、
D.C.B.A.rbl.gcd.org の TXT レコードが引けたなら、
その IP アドレスはブラックリストに載っている。
例えば IP アドレス 127.0.0.2 がブラックリストに載っているか調べるには、
% host -t txt 2.0.0.127.rbl.gcd.org
2.0.0.127.rbl.gcd.org text "Listed 127.0.0.2"
などと DNS 問合わせを行なえばよい。
"Listed 127.0.0.2" などの結果が返ってくれば
ブラックリストに載っていることを意味し、
NXDOMAIN つまりレコードが存在しないという結果が返ってくれば
ブラックリストに載っていないことを意味する。
私はこのブラックリストを利用した迷惑メール判別フィルタを用いることによって、
私のメールボックスに届く迷惑メールのほとんど全てを排除できている。
前述したように、
このブラックリストはあくまで送信元 IP アドレスが逆引きできないときに限り
利用することを想定している。
逆引き可能な IP アドレスに対してこのブラックリストを利用した場合に
得られる結果は無意味であるので注意して欲しい。
また、もちろん利用は at your own risk でお願いしたい。
このブラックリストに対するご意見は歓迎するが、
このブラックリストを利用したことによって、
あるいは利用できないことによって発生するいかなる損害に対しても
私は責任を負わない。
この条件に同意して頂けるかたにのみ、
このブラックリストの利用を許諾する。