スパムメール防止策

ネット上でやってはいけないメールアドレスの公開について。

個人サイト(ホームページ)上で自分のメールアドレスを公開している人は多い。しかし仮にスパムフィルタがあっても安易にネット上にメールアドレスを公開するのは危険だ。Googleが自動的にページを巡回して検索リストに登録するように、メールアドレスを収集してスパムメールを送りつけるボットがある。これらに回収されると、定期的にスパムメールを送りつけられる。大抵は次のようなメールが送られてくる。

誰かは言わないがネット上の友人でサイトのHTML全てにメールアドレスを記述したところ、一ヶ月後には700通のスパムメールが届いていたそうだ。一旦アドレスを回収されると、スパムは止まることがない。きれいなメールアドレスを保つためにはボットにアドレスを回収されないようにアドレスを"隠す"必要がある。策について幾つか考えてみた。

ISO Latin-1コードに変換

ボットは****@****.****というふうに、@が入った英数字を目印にメールアドレスを回収する。この@を隠すだけで並の収集ボットは防げる。例えば、tester@test.test.jpというアドレスがあったなら、@をISO Latin-1コードの@に置換する。

この場合ソースを tester@test.test.jp から tester@test.test.jp にする。コードはHTML解釈時に@に戻されるので、表示はちゃんと@になる。

@が解読されたらどうすんだって方は、手っ取り早くアドレス全体をLatinコードに置換する。

変換スクリプト
Before
After
進数(追加機能)

私はサイトの全HTMLに<link rev="MADE" href="mailto:crab-kani&#64;fooos.com" />を挿入しているが、@を&#64;に置換するだけでスパムメールは殆ど来なくなった。※このメールアドレスの表記は2005/07/30以降削除

アットマークを変える

原理的には先のISO Latin-1コードと同じ。アットマークを☆や○に変え、そばに☆を@に変えてくださいとでも書いておく。ローテクだが効果は十分。

tester☆test.test.jp

HTMLソースを複雑にする

コメントや無意味なタグを挟んでアドレスを隠蔽する。もちろん表示自体は正常である。

t<span>e<!--@-->st<span>e</span>r@<!--
dummy@dummy.com   -->te<span>st.</span>te<!--
           @.ttt         -->st.</span>jp

表示: tester@test.test.jp

JavaScriptで暗号化

流石のボットもJavaScriptは解釈できないだろうし、この方法なら確実に回収を防げる。

<script type="text/javascript">
<!--
document.write("tester"+String.fromCharCode(64)+"test.test.jp");
//-->
</script>

こうすればまず回収はされない。JavaScriptでメールアドレスの回収を防ぐ方法はHTML小技集 / メインコンテンツ / ウイルスメール対策などでも紹介されている。ただこれはJavaScriptが実行できない環境では意味をなさない。

アドレスを画像にする

画像にすればいくらボットでも手も足もでない。tester@test.test.jpを メルアド とすれば大丈夫。画像処理ソフトを使ってもいいし、Handmail - スパム対策に!メールアドレスの画像化無料サービスなどを使ってもいい。 画像を認識しやがる場合も考えて、フォントはできるだけ機械が認識できないようなものを選ぶと良い。(画像を認識する狂ったボットはないと思うが)

以下のようにアドレスを手描きで描くとコンピュータに認識されづらいので極めて有効。

メルアド

傾けてもいい。

メルアド

その他

CGIが使えるスペースなら、CGIを利用して送信させればメールアドレスは事実上誰にも分からないので流出を含めたスパムをほぼ100%カットできる。このサイトではCGIを使わないっていうか動作しないのでこれについての詳しい説明は省く。メールフォームをレンタルできるサービスもあるのでそれを利用してもいい。

ただCGIによる送信フォームでは送り主がメールアドレスを知ることができないので、人によっては嫌がられる。

ページ情報

作成日時
2005/07/24
最終更新日時
2007/01/28
HTML4.01版
index.html
XHTML1.1版
index.xhtml
XML原本
index.xml