・スパムブロックによる迷惑メール対策・
ホームページを公開すると、必ず付きまとってくる問題の1つが、
迷惑メール(スパムメール)です。
これ、どうにかならないかなぁと考えている人も多いのではないかと思います。
ということで、ここでは、おもにスパムブロックと呼ばれる方法で、
この迷惑メールを減らすための対策を取り上げてみました。
まず、はじめになぜスパマー(迷惑メールを送る人)は、迷惑メールを送るのでしょうか?
それは、一言で言ってしまえは、儲かるからなんです。
迷惑メールそのものには、非常に広告、宣伝効果があります。
その威力は、インターネットを使った宣伝方法の中でも一番ともいわれいています。
迷惑メール送信業者にとっても、そこに広告を載せる人たちにとっても、これはとても魅力的なことなんです。
(私自身、スパムメールが、迷惑行為でなければ、宣伝として使ってみたいな〜って思ったりもしますよ。
あくまで、迷惑行為でなければの話ですけどね)
ですが、そんな送る側の一方的な事情だけでメールを送られることは、
受け取るほうとしては、迷惑なだけです。
ですから、私は受け取る側も一方的な考えだけで、これを拒否してしまってもいいものと考えています。
(なにせ、送るほうも勝手に送ってきているわけですから)
では次に、ホームページを公開するとなぜ迷惑メール(スパムメール)が増えるのでしょうか?
それは、ホームページにメールアドレスを載せているからです。
スパマーたちは、このメールアドレスあてに迷惑メールを送るわけです。
ただ、ここには迷惑メール対策を立てるときに、重要なポイントが隠されています。
それは、スパマーが直接サイトをみにきているわけではなく、
クローラーやハーベスタと呼ばれる、ロボットプログラムを使って、
サイトの中からメールアドレスだけを取り出していくことです。
だから、このロボットプログラムにアドレスを収集させなければ、
ホームページ経由の迷惑メールは、そのほとんどを防ぐことができるようになります。
これが、スパムブロックと呼ばれる方法です。
ロボットプログラムの動きやアドレスの収集の仕方には、
<A>タグ(アンカータグ)をたどるという特徴があります。
そうすることで、サイトの全体的な構造を把握したり、新たなサイトを見つけたりするわけです。
さらに、<A>タグ内の、mailto:で書かれたリンクをメールアドレスと認識します。
ほかにも、<A>タグの有無を問わず、
@(アットマーク)の前後に書かれた文字をメールアドレスと認識するものもあるそうです。
スパムブロックを使うにあたって、
これらの方法は、迷惑メールを100%防ぐことができる方法ではありません。
あくまで、迷惑メールを減らすための方法とお考えください。
また、ひとつの方法を使えばいいというものでもなく、
複数の方法を組み合わせて使うほうが効果が高くなります。
◇メールアドレスを擬装する方法 - 初心者向き
たとえば、nospam@blocker.muing.comというアドレスがあったとします。
これを、nospamVIRUSTO@SPAMWAblocker.muing.comIRANAIYOのように、
余分な文字を加えるなどをして、
アドレスそのものを変えてしまう方法です。
メールを送るときには、
「メールアドレスのうち、大文字になっている所は、
スパム対策のため意図的に付け加えたものです。
メールを送信するときは、大文字の部分は削除してください。」
などのように併記して、大文字の部分を消してもらうようにします。
<↓サンプル↓>
nospamVIRUSTO@SPAMWAblocker.muing.comIRANAIYO
この方法の応用で、@(アットマーク)を変えてしまう方法もあります。
たとえば、nospam◆blocker.muing.comのような感じにするわけです。
これらの方法を使うときにユーザビリティを考えて、
ブラウザには、nospam◆blocker.muing.comと表示させた上で、
「スパムメール対策のため、@を◆に変えてあります。
メールを送信するときは、◆を@に戻してから送信してください。」
などのように併記しておいて、
さらに、<A>タグのリンクアドレスそのものは、
nospam◆blocker.muing.com(◆を@にしてから送信してください)
のようにしておくといいかもしてません。
<↓サンプル↓>
nospam◆blocker.muing.com
この方法の欠点としては、
- メールを送信するときに、ユーザーにいちいちアドレスをなおしてもらわなければいけません。
- 特にこのスパム対策方法を知らないユーザーが、正しくメールを送信できない可能性があります。
◇メールアドレスを画像を使って表示する方法 - 初心者向き
そもそもロボットの収集するデータは、すべて文字なんですよね。
だから、文字を使わずに、画像でメールアドレスを表示するようにします。
![]()
たとえばこんな感じ↑
画像自体は、windows付属のペイントでも作れます。(今のXPなら、GIFにも対応しているみたいです)
この方法の欠点は、
- 画像にメールアドレスのリンクを埋め込まないようにしてください。
それをしてしまうと、スパムブロックの効果が発揮できなくなります。 - メール送信には、ユーザーに直接キーボードから入力してもらう必要があります。
コピー&ペーストもできません。
◇<META>タグを使う - 中級者向き
サイトのトップページって、よくよく考えてみれば当たり前のことなんですが、
一番ロボットに拾われやすい場所なんですよね。
ですから、どーしてもトップページにアドレスを表示しないといけない場合以外は、
お問い合わせページなどを作って、そこにアドレスを表示するようにします。
そのときに、お問い合わせページのヘッター部分(<HEAD>と</HEAD>の間のところ)に、
と書き加えます。
これは、ロボットに「このページを探っちゃだめですよ、このページにあるリンクをたどっちゃいけませんよ」
と伝える意味があるんです。
でも、メールアドレスを収集するロボットがこんなこと聞いてくれるはずがありません。
では何でこんなことするのかというと、
googleなどのきちんとした検索サイトのロボットは言うことを聞いてくれるからです。
ですからこの方法は、アドレスの収集を防ぐというよりは、
検索サイトにキャッシュされないようにして、アドレス収集ロボットに見つかりにくくしようという方法といえます。
◇文字参照(エンコード文字)を使う - 中級者向き
たとえば、@(アットマーク)をブラウザに表示させる場合、
HTMLのソースでは、普通はそのまま「@」と書かれています。
ですが、実はソースに「@」と書いても、ブラウザでは「@」と表示されるんです。
ロボットは、ソースを直接見てきますから、この方法でロボットを混乱させようというわけです。
たとえば、
みたいな感じにするわけです。
(@だけじゃなくて「""」の内側と「メールアドレス」のところはすべて文字参照(エンコード文字)を使えます)
<↓サンプル↓>
mailaddress
(ブラウザ上では分かりにくいですが、下のコードをそのまま使ったものです)
| . ⇒. | @ ⇒@ | : ⇒: | _ ⇒_ | - ⇒- | / ⇒/ |
| a⇒a | b⇒b | c⇒c | d⇒d | e⇒e | f⇒f |
| g⇒g | h⇒h | i⇒i | j⇒j | k⇒k | l⇒l |
| m⇒m | n⇒n | o⇒o | p⇒p | q⇒q | r⇒r |
| s⇒s | t⇒t | u⇒u | v⇒v | w⇒w | x⇒x |
| y⇒y | z⇒z |
◇JavaScriptを使う方法 - 上級者向き
メールアドレスのリンクをHTMLタグではなく、
JavaScriptを使って表示させるようにするんです。
こうすることで、ロボットにアドレスを収集させにくいようにします。
JavaScriptを利用する場合、いろいろな書き方がありますが、
たとえば、こんな書き方もありますという1つの例で、
<!--
var mail_account="nospam";
var mail_domain="blocker.muing.com";
var link_text="メールアドレス";
document.write(link_text.link( "mailto:"+mail_account+"@"+mail_domain));
// -->
</script>
HTMLファイルのメールアドレスを表示したいところのソースに、
上のコードを書き込んで使います。
- 赤い文字でnospamと書かれているところは、
メールアドレスのアカウント部分(@より前の部分)を入れてください。 - 緑の文字でblocker.muing.comと書かれているところは、
メールアドレスのドメインの部分(@よりあとの部分)を入れてください。 - 青い文字でメールアドレスと書かれているところは、
ブラウザ上で表示される文字を入れてください。
注意することとして、ここにメールアドレスを表示するようにしてしまうと、
@(アットマーク)を基準にするロボットに対して、
スパムブロックの効果を発揮できなくなります。
もし、ブラウザ上にもメールアドレスを表示したい場合は、
下のコードを使ってください。
<!--
var mail_account="nospam";
var mail_domain="blocker.muing.com";
var mail_address= mail_account+"@"+mail_domain;
document.write(mail_address.link( "mailto:"+mail_address));
// -->
</script>
<↓サンプル↓>
/
左はブラウザに別の文字を表示するタイプ、右はアドレスを表示するタイプのサンプルです。
- JavaScriptを外部ファイルにする -
JavaScriptを外部ファイルにすれば、
さらに収集されにくくすることができると思われます。
やり方は、
まず、メモ帳などに、
var mail_domain="blocker.muing.com";
var link_text="メールアドレス";
document.write(link_text.link( "mailto:"+mail_account+"@"+mail_domain));
と書いて、mailadd.jsという名前で保存します。
(このファイル名は、「ファイル名.js」の形式であれば、
好きな名前を付けてかまいません)
- 赤い文字でnospamと書かれているところは、
メールアドレスのアカウント部分(@より前の部分)を入れてください。 - 緑の文字でblocker.muing.comと書かれているところは、
メールアドレスのドメインの部分(@よりあとの部分)を入れてください。 - 青い文字でメールアドレスと書かれているところは、
ブラウザ上で表示される文字を入れてください。
つぎに、HTMLファイル内の、メールアドレスを表示させたいところのソースに、次のコードを書いてください。
mailadd.jsのところは、先ほどメモ帳で作ったファイルへのパスになります。
違うファイル名にしたときなどは、適時書き換えてください。
最後に、このHTMLファイルを、メモ帳で作ったファイルと一緒にアップロードします。
<↓サンプル↓>
(見た目には分かりづらいですが、外部JavaScriptファイルを使ってます)
JavaScriptを使った方法の欠点として、
- ユーザーが、JavaScriptを無効にしているとリンクが表示されません。
<noscript>メールを送るときにはJavaScriptを有効にしてください。</noscript>
と付け加えておけば、代替テキストを表示することはできます。
◇CGIを使う方法 - 上級者向き
これは、CGIでメールフォームを設置する方法です。
CGI自体は配布サイトか、レンタルCGIサイトなどで見つけてください。
この方法には、メリットとデメリットがたくさんあります。
まず、メリットとして、
- メールアドレス自体を公開しなくてもいい。
- メールの送信にメールソフトを使わない。
これは、ネットカフェなどのメールソフトの使いにくい環境からでもメールが送ってもらえるほか、
ユーザーのPCにアドレスが残らないので、ユーザーがウイルスに感染したときなどでも、
ウィルスを送られたり、ウィルスの偽装に自分のアドレスが使われたりするリスクを減らせます。 - 書式を指定できる。
たとえば、メールを送信するときに簡単なアンケートに答えてもらったり、
特定のことに対してのコメントを求めたりするなど、メールの書式を指定できます。
次に、デメリットとして、
- アドレスを公開しないことは、サイトの信用性を下げる可能性がある。
- メールソフトを使い慣れた人には、フォームに抵抗を感じる可能性がある。
(これは、逆にフォームのほうが送りやすい人もいるってことですけどね) - プロバイダのサーバーなど、CGIの設置ができない場合この方法は使えない。
◇インラインフレームを使う方法 - オリジナル
これは、私muingが考えた方法で、もしかしたらほかの人がすでに公開しているかもしれませんが、
いちおう私なりに調べた限りではほかに載っていなかったので、オリジナルとしておきますね。
この方法を思いついたのは、SEOを調べていたときなんですけど、
ロボットってフレームを使ったサイトに弱いそうなんです。
ただ、フレームを使ったサイトってたくさんありますし、
その分、ロボットのほうも対応しているものが多いと思いますので、
フレームではなく、インラインフレームを使うほうがいいんじゃないかなぁとおもいます。
インラインフレームの設置の仕方は、
まず、ホームページ作成ソフトなどを使ってメールアドレスを記載したHTMLファイルを作り
address.htmlという名前で保存します。
ファイル名は好きな名前を使ってもらってかまいません。
次に、メールアドレスを表示したいページに次にタグを書き込みます。
- src="address.html"のところは最初に作ったファイルへのパスになります。
- width=""のところの数字はインラインフレームの、横幅になります。
- height=""のところの数字ははインラインフレームの、高さになります。
- frameborder=""のところは枠の設定になります。
"0"の場合、枠は非表示になります。"1"以上の数字のときは、入れた数字の太さの枠を表示します。 - scrolling=""のところはスクロールバーの設定になります。
"no"は表示しない、"yes"は表示する、"auto"は状況によって表示、非表示が自動で切り変わります。
<↓サンプル↓>
分かりやすいように左はフレーム枠を1にしています。右は枠を0(非表示)にしています。
欠点として、私が考えた方法で、誰かが試したわけではないので効果のほどが分からないことです。
◇アドレス偽装の応用 - オリジナル
この方法は、上のほうで紹介したアドレス偽装の応用なんです。
が、実は、効果は期待できないかもって方法ですが、
せっかく思い付いたので書いておきます。参考までに見てやってください。
それで、やり方は、
のように、mailto:のあとに「?subject=&to=」という余分な文字を加えてアドレスを偽装するんです。
この方法は、ユーザーにアドレスを直してもらわなくても、そのまま送信が可能なメリットがあります。
ただ、この記述方法が正しいものか分からないので、どの程度のブラウザが対応しているか分かりません。
(IE6 SP2と、Firefox1.02にアウトルックエクスプレスを組み合わせた環境では正常に動きました。)
また、mailto:の中の記述を正しく理解するロボットや、@を基準にするものでは効果がないと思われます。
ちなみに、「?subject=&cc=」にすると、宛先ではなく、CCとしてメールを送信できますし、
「?subject=」のあとに文字を入れると、メールにタイトルをつけることができますよ。
<↓サンプル↓>
メールアドレス
ステータスバーには余分な文字が表示されてしまいますが、
クリックすると、メールソフトでは正しいアドレスになっていることが分かります。
◇まとめ
ここまで、ホームページでできるスパム対策をいくつか取り上げてみました。
しかし、最初のほうにも書いてありますが、
実際にはこれらの方法は組み合わせて使うことをおススメします。
また、迷惑メール対策は、
ホームページ以外のところでもできることがありますので、
探してみるのもいいと思います。
たとえば、メールアドレスを使い捨てる方法というものもあります。
これは、ホームページで公開するアドレスを定期的に変更するというものです。
アドレスを変えてしまえば、その時点でスパマーとの縁をリセットできるわけです。
ただ、メルアドがころころ変わってしまうのは使いにくいですから、
このアドレスはホームページからの受け取り専用にして、
ユーザーとのやり取りには別のアドレスを用意しておくのがいいと思います。
(やり取りのためのアドレスは変更や不特定多数への公開はしないようにします)
また、いざスパムメールを受け取っても、メールの中に何が書いてあっても、
スパマーが知っているのは、
自分のメルアドだけだということをおぼえておくことも大切だと思います。
こちらから教えない限りは、スパマーは個人情報を知ることはできないんです。
ですから迷惑メールには過剰反応せず、無視してしまうのが一番です。
最後に、おまけとしてスパム対策の組み合わせの例を1つ書いておきます。
◇実際の利用を考えた応用の一例 - おまけ
ここでは、トップページにメールアドレスを載せる場合を想定して、
インラインフレーム、JavaScript、文字参照(エンコード文字)、メタタグ
を使ったスパムブロックを組み合わせてみます。
まずは、メモ帳などに以下のコードを書いてください。
これは、文字参照(エンコード文字)を使ったJavaScriptです。
var mail_domain="blocker.muing.com";
var link_text="メールアドレス";
document.write(link_text.link( "mailto:" +mail_account+ "@"+mail_domain));
と書いて、mailadd.jsという名前で保存します。
(このファイル名は、「ファイル名.js」の形式であれば、好きな名前を付けてかまいません)
- 赤文字でnospamの所は、メールアドレスのアカウント部分(@より前の部分)を入れてください。
- 緑文字でblocker.muing.comの所は、アドレスのドメイン部分(@よりあとの部分)を入れてください。
- 青文字でメールアドレスの所は、ブラウザ上で表示される文字を入れてください。
ブラウザ上に表示する文字をメールアドレスにしたいときは下のコードを使ってください。
var mail_domain="blocker.muing.com";
var mail_address= mail_account+"@"+mail_domain;
document.write(mail_address.link( "mailto:"+mail_address));
つぎに、ホームページ作成ソフトなどを使って、本文に何も書かれていないHTMLファイルを作ります。
(<HEAD>タグなどの、HTMLとして必要最低限のタグが書かれたファイルという意味です。
ホームページ作成ソフトなどでは、ページの新規作成の操作をした直後の状態です)
次に、そのHTMLファイルの<HEAD>と</HEAD>のあいだに、下のコード(メタタグ)を追加します。
その次は、<BODY>と</BODY>の間に下のコードを入れます。
これは、メモ帳で作ったJavaScriptファイルを関連付けるコードです。
<noscript>メールを送るときにはJavaScriptを有効にしてください。</noscript>
mailadd.jsのところは、メモ帳で作ったJavaScriptファイルへのパスになります。
違うファイル名にしたときなどは、適時書き換えてください。
また、ファイルへのパスには、文字参照(エンコード文字)が使えます。
たとえば、拡張子部分に文字参照(エンコード文字)を使うときは、
「.js」を「.js」にして、mailadd.jsのような感じにしてもいいと思います。
<noscript>と</noscript>の間は、JavaScriptが無効のときに表示する代替テキストになります。
そして、このHTMLファイルをaddress.htmlという名前で保存します。
ファイル名は好きな名前を付けてもらってもかまいません。
最後に、トップページのHTMLのメールアドレスを表示したい場所に、次のコードを差し込みます。
- src="address.html"のところは最初に作ったファイルへのパスになります。
ファイルのパスには文字参照(エンコード文字)が使えますので、
たとえば拡張子「.html」を「.html」のように変えて、
address.htmlのような感じにもできます。 - width=""のところの数字はインラインフレームの、横幅になります。
- height=""のところの数字ははインラインフレームの、高さになります。
- frameborder=""のところは枠の設定になります。
"0"の場合、枠は非表示になります。"1"以上の数字のときは、入れた数字の太さの枠を表示します。 - scrolling=""のところはスクロールバーの設定になります。
"no"は表示しない、"yes"は表示する、"auto"は状況によって表示、非表示が自動で切り変わります。