url.rbl.jp (SpamAssassinに設定して使う)

最近のspamはメールアドレスを偽装して、それへの返信を無視し本文中のURLをクリック してもらったり本文中にあるメールアドレスに送ってもらうことを期待しているためspammerと判定できるドメイン名がURLあるいはメールアドレスとして本文に記載されていることが多々あります。 そしてその持ち主はspammerであるという点を利用しています。

たとえば本文中に 「http://www.pornadultdvds.com/unsubscribe.htmlをクリックしてください」 とか「お返事は XXXX@pornadultdvds.com まで是非是非くださいなお待ちしています」 というような記述があった場合 pornadultdvds.comがurl.rbl.jp のDBに登録されていると点を高くしてくれるようになります。

本文以外にSubject: にあるドメインもチェックの対象となりますが From:, Return-Path:, Received:, To:は対象外のため自宅サーバー派にとっては安心です。

URLであった場合にはIPアドレスでなく 本当のURLにあるドメイン名でチェックするので同じIPアドレスを持つバーチャルホスト上の違法サイトのような場合でも 選択的に選別が可能です。

URL中やメールアドレスにあるドメイン名で判定されるので毎回異なるサブドメインを持つURL、やIDの違うメールアドレス たとえば http://www2.pornadultdvds.com/ とか http://asdf.pornadultdvds.com/ とか yoko99@pornadultdvds.comとか yoko-love@subdom.pornadultdvds.com というようなものであっても同じと判断し、選別してくれます。

このRBLはsendmailに設定するものでなくSpamAssassinと連携して動くため SpamAssassin側に設定する必要があります。

設定方法

いずれもSpamAssassinのlocal.cfまたはuser_prefsに以下を追加します。 設定が終わったらspamdを再起動してください。
# 以下は http://fafdsafasd.domain.com/ を検知する定義
urirhssub URLBL_RBLJP url.rbl.jp. A 2
body URLBL_RBLJP eval:check_uridnsbl('URLBL_RBLJP')
describe URLBL_RBLJP Has URI in url.rbl.jp
tflags URLBL_RBLJP net
score URLBL_RBLJP 4.0

# 以下は http://62.231.95.161/ のようなIPアドレスだけのURLを検知する定義
uridnsbl URLBL_IP_RBLJP url.rbl.jp. TXT
body URLBL_IP_RBLJP eval:check_uridnsbl('URLBL_IP_RBLJP')
describe URLBL_IP_RBLJP Has IP URL in url.rbl.jp
tflags URLBL_IP_RBLJP net
score URLBL_IP_RBLJP 4.0

uridnsbl_skip_domain livedoor.com reset.jp asahi-net.or.jp hi-ho.ne.jp 2ch.net hatena.ne.jp
uridnsbl_skip_domain mixi.jp yahoo.co.jp
"score URLBL_RBLJP 4.0"と"score URLBL_IP_RBLJP 4.0" はspam本文のURL中のドメインがurl.rbl.jpに登録されていたとき何点にするかという定義です。 あなたの希望の数値にしてください。SpamAssassinはデフォルトでは5.0でspamと判定されますので他との兼ね合いで高くするかもっと低くするかをお考えください。

"uridnsbl_skip_domain" というのはホワイトリストでたとえ間違って登録されてしまっても無視するドメイン名です。 あなたの持っているドメイン名などは一応登録しておいたほうがいいかもしれません。

SpamAssassinのデフォルトでは主にアメリカの組織関係のドメインしか登録されていないので日本のプロバイダとかblogとか普段使いそうなドメインを片っ端から登録するといいでしょう。なお複数行に定義があってもかまいません。
(属性だけの部分 go.jp とか ed.jp とかは登録してテストしたのですが駄目でした)

SpamAssassinはメールをspamと判定するだけでとりあえず届きますが、procmailなどと併用して spamと判定されたら捨ててしまうような設定をしている場合には誤判定はメールの紛失にもつながりますからいろいろ数値を変えてテストしてみるといいでしょう(たとえばこれともう1つくらいあってもパス、もっと沢山あったときだけ点を越えるとか)。

この設定をすると友人からのメールに「さっき http://www.pornadultdvds.com/ を宣伝するspamがきたんだけどね」と書いあるだけで点数があがってしまいspamと見なされることがあります。こういう場合にはhttp://www.pornadultdvds.com-PADDING/とかhttp://などと全角を使うとかしてください。

このpornadultdvds.comというのは単なる例であってアダルトサイトなどが軒並み登録されるわけではありません。あくまでもspamが送られたときに初めてFromにあるドメインや本文中のURLやメールアドレスのドメインが(アダルトサイトであろうとなかろうと)登録されます。

確認

spamと判定されているメールに以下のような説明( URLBL_RBLJP とか URLBL_IP_RBLJP ) があればこの方法で選別できたということになります。
4.0 URLBL_RBLJP            Has URI in url.rbl.jp
                            [URIs: perome.com]

4.0 URLBL_IP_RBLJP         Has IP URL in url.rbl.jp
                            [URIs: 66.63.160.48]
 
あなたのドメインが間違ってurl.rbl.jpに登録されているかどうかはドメイン名. のあとにurl.rbl.jp をつけてnslookupコマンドで
nslookup mydomain.com.url.rbl.jp
のようにしてアドレスが127.0.0.2と表示されれば登録されてしまっているということがわかります。その場合には 利用法 Topの削除申請方法をご覧になりお知らせください。

テスト

url.rbl.jpにはテスト用のドメイン we-wish-nobody-register-this-domain.co.jp が1つ用意されています。 あなたのお使いのメーラーから設定したサーバーへメールを出して確認します。

メールの本文に
http://we-wish-nobody-register-this-domain.co.jp/

http://www.we-wish-nobody-register-this-domain.co.jp/

http://asdfafdafasd.we-wish-nobody-register-this-domain.co.jp/

hello@subdom.we-wish-nobody-register-this-domain.co.jp
のようにURLやメールアドレスを記述して送ってください。これらを1つのメールに1つだけ記述して送ると判定がドメインだけについて行われるということがおわかりいただけると思います。

届いたメールのヘッダのX-Spam-Status:の項に "URLBL_RBLJP" という文字があれば確かに判定されているということになります。

試しに uridnsbl_skip_domain に we-wish-nobody-register-this-domain.co.jp を登録してみてください。 spamdを再起動したあとまた同じテストメールを送ってみれば"URLBL_RBLJP"が無いはずで、ホワイトリストの動作も確認できます。

トラブル
いくつかのサーバーにurirhssubの設定をしたのですが1つだけ"URLBL_RBLJP"が見えないものがありました。
spamassassin --lint
とするとDNS関係のモジュールが読み込まれていないと出たので原因がわかり、
/usr/local/etc/rc.d/sa-spamd.sh stop
cd /usr/ports/mail/p5-Mail-SpamAssassin
make deinstall
make 
make install
と再度インストールしたあと再起動したら大丈夫になりました。ご参考まで。

利用法 Top