アドレス収集ロボットの捕捉
(クロスサイトスクリプティングの改修済み)
ウエブ上に掲載されているメールアドレスはアドレス収集ロボット(ソフトウエア)によって自動的に採取されspamを送るメールアドレスとして使われるためspamが来る割合が非常に高いことが知られています。そうであればわざとおとり専用のメールアドレスをロボットに採取させればそこに来たメールは100% spamと判定できるので拒絶リストを作るときに楽になります。
今回はそのトラップアドレスにアドレスと時刻の情報を含ませたものを作りウエブサイトに掲載してアドレス収集ロボットに喰わせ、それがいつ頃どのアドレスから採取されたかを調べてみることにします。
基本的にはトラップアドレスはウエブページ上に以下のように埋め込みます。
<a href="mailto:tad3@tp.rbl.jp"></a>
こうるすと人間の目には見えないのですがアドレス収集エンジンには見えるので収集されます。そしてそこに来たメールは間違いなくspamということになります。
準備
(以下はsendmailを使った説明です。postfix, qmailなどは別の設定になります)
1)トラップアドレス用のアカウントを作ります。ここでは tad ということにします。
2)トラップ専用にサブドメインを用意します。ここではサブドメイン tp.rbl.jp を使うことにします。
3) /etc/mail/virtusertable を以下のようにします。
@tp.rbl.jp tad
この意味は @tp.rbl.jp の前のアカウントの部分がたとえば afdasfdasfdsaf@tp.rbl.jp のように何であってもtp.rbl.jpあてに来たメールはすべて tad すなわち tad@tp.rbl.jp というアカウントに届くという設定です。
設定が終わったら
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
としてdbファイルを作ります。
4)このサブドメインのメールを受信できるよう
/etc/mail/local-host-names に tp.rbl.jpを追加しsendmailを再起動します。
5)DNSにもtp.rbl.jpの項目を作ります。当然そのIPアドレスはtp.rbl.jpのメールを受けようとしているメールサーバーのアドレスです。
ここまで行ったらテストメールを送って届くかどうか確認してください。
無限にトラップアドレスが必要なだけでしたらここで終わりです。あなたのウエブサイト内に上で説明した記述を埋め込んでください。サーバー毎やページ毎に異なるメールアドレスとするとどこから拾われたかを知ることができます。公開してから1週間くらいするとspamが来始めることでしょう。
トラップアドレスの生成
いよいよトラップアドレスの生成です。
SSI やphpなどで日付やアドレス収集エンジンのIPアドレスを埋め込んだアカウントを生成し上で説明したようにロボットだけが見える形でページ内に作ります。
ここではphpで作ったソースと例を示します。これをクリックしてページを表示したあとブラウザの「ページのソース」を見るを選択すると先頭のところに仕掛けたアドレスを見ることができます。ドットで区切られていて前半がIPアドレス、後半が時刻です。文字列を短くするため時刻にはオフセットがつけてあります。
このソースをphpのページのいろいろなところに仕掛けます。
例題で示したメールアドレスにテストメールを送らないようにしてください。既にトラップアドレスとしてセットしたのであなたのメールアドレスは拒絶リストに追加されてしまいます。
バリエーションとして先頭に a- とか b- とかサーバーを識別する文字を入れておけば複数のサーバーがあってもどのサーバーに来たのかも区別することができます。
デコードは以下のフォームから行えます。メールアドレスを入れるとアドレス収集ロボットが動いていたアドレスと採取された時刻が表示されます。上で説明したサーバーを識別する文字を入れたメールアドレスであった場合にはそれを除いたメールアドレスを入れてください。