メールフォームのスパム対策機能の解説

メール
以下のページででダウンロードできるメールフォームでは、バージョン2.0からスパム対策機能が実装されております。
レスポンシブ・メールフォームの無料ダウンロード

スパム機能は以下の2種類があります。

  1. リファラ(送信元ドメイン)チェックによるスパム対策機能。(バージョン2.0以降)
  2. 送信前の入力チェックが動作した場合にのみメールを受け付ける機能。(バージョン2.2以降)

初期設定では上記1はオフ上記2はオンになっています。
上記2だけをオンにしておけばほとんどスパムメールは来なくなるので、上記1は設定しなくても問題ないと思われます。

このページではこれらのスパム機能についての簡単な解説をしておきます。

リファラ(送信元ドメイン)チェックによるスパム対策機能の解説

バージョン2.0からリファラチェックによるスパム対策機能を実装しています。
リファラ」というのは「リンク元」のことを意味します。

config.php内の108行目にある、

//(任意) メールフォームを設置するサイトのドメイン -- 上記のドメインチェック機能がオンの場合にのみ設定する必要があります。 --
$rm_domain_name = '1-firststep.com';

に記入したドメインのサイトからの送信じゃない場合は、メールが送信されない仕組みになっています。
例えばメールフォームを設置するページのURLが「http://www.test.com/mailform/index.html」なら、

//(任意) メールフォームを設置するサイトのドメイン -- 上記のドメインチェック機能がオンの場合にのみ設定する必要があります。 --
$rm_domain_name = 'test.com';

としておけばOKです。「http://www」があっても問題はありませんが、ないほうが無難でしょう。
なぜなら、wwwが付く・付かないとか、http・httpsの違いによってこのスパム機能に引っかかってしまう可能性が出てくるからです。

バージョン5.4からは以下のオン・オフの設定は必要なくなりました。
上で解説している設定が未記入ならオフ、記入があればオンとなります。

このスパム対策機能をオンにしたい場合は上記設定と同時に、config.php内の114行目の

//(任意) ドメインチェック機能 -- オフの場合は0、オンの場合は1にしてください。 --
$rm_domain_check = 0;

を、以下のように「1」に変更してください。

//(任意) ドメインチェック機能 -- オフの場合は0、オンの場合は1にしてください。 --
$rm_domain_check = 1;

でも実際のところは、バージョン2.2から実装された下記の「送信前の入力チェックによるスパム対策機能」がオンになっていれば、上記のリファラチェックによるスパム機能はオフのままでもほとんど迷惑メールは来なくなります。

リファラチェック設定の注意点(上級者向け)

厳密に言えばhttp://www.test.com/というように、最初はhttpから、末尾にはスラッシュまでを付けたほうが確実な効果が望めるでしょう。
なぜならスラッシュがない場合だと、test.jpという別のドメインを取得した第三者が、

http://www.test.com.test.jp/mailform/index.html

というようなサブドメインを使ってスパムメールを送りつけることができてしまうからです。(http://www.test.comという文字列が含まれているので、送信を受け付けてしまう)
しかし、上記のようにスラッシュを付ける場合は、設置したメールフォームのURLが、

http://www.test.com

というように、スラッシュなしでも表示されてしまわないかよくご確認ください。
この場合、http://www.test.com/という文字列がリファラに含まれていないことになるので、送信を拒否してしまいます。

上記の設定例の場合は同様の理由から、メールフォームページがhttpsで表示されないか?とか、wwwなしでも表示されないか?なども確認しておく必要があります。

そのあたりが.htaccessによって正しくリダイレクトできている必要があります。
よくわからない場合はリファラチェック設定はあまり厳密にしないほうが無難です。

送信前の入力チェックによるスパム機能の解説

このメールフォームは送信ボタンを押す前に入力必須の項目をチェックし、すべて問題がなかった場合に最終確認のためのアラートウインドウが出現し(下画像参照)、送信することができます。
送信前の入力チェック
このため、ページの移動をさせることなく入力のチェックが行えるわけですが、この機能はJavaScript(じゃばすくりぷと)という言語で実装しています。

一般的に、メールフォームにスパムメールを送信してくる人はJavaScriptが動作していない環境で送ってくることが多いです。(おそらく手作業によってWebブラウザ上で何十通も送るのは大変なので、自動プログラムで送るため)

そのため「JavaScriptが動作していない環境からの場合はメールフォームを送信させない」のがスパム対策として効果的となります。

送信前の入力チェックによるスパム機能の設定の方法

このスパム機能は初期設定ではオンになっています。
つまり、JavaScriptが動作していない環境からはメールを受け付けません。

バージョン5.4からは以下の設定はなくなりました。
もしこの設定をオフに変更したい場合はconfig.php内の108行目が以下のようになっているのを、

//(任意) 送信前の入力チェックが動作したときだけメールを受け付ける機能 -- オフの場合は0、オンの場合は1にしてください。 --
$rm_javascript_check = '1';

以下のように0に変更してください。

//(任意) 送信前の入力チェックが動作したときだけメールを受け付ける機能 -- オフの場合は0、オンの場合は1にしてください。 --
$rm_javascript_check = '0';

設定は以上です。

【補足説明】
バージョン4.0ぐらいからフォームの送信にAjaxを使用しておりましたので、どちらにしてもJavaScriptが動作しない環境では送信ができない仕様となっていました。

そのため、上記の設定はmailform.phpに直接アクセスされた際に拒否する意味合いしかなく、わざわざconfig.phpで設定する必要もないので、デフォルトでオンとし、config.phpからは削除しました。

送信前の入力チェックによるスパム機能の設定の注意点

PCやスマホ・タブレット上で使用するWebブラウザはJavaScriptが動作しますので、このスパム機能に引っかかるということは基本的にありません。

しかしガラケーの場合はJavaScriptが動作するかは機種によるので、このスパム機能をオンにすることでガラケーの機種によってはメールフォームからの送信ができなくなる可能性があります。

でも実際にはそれ以前の問題として「ガラケーのWebブラウザでPCサイトやスマホ用サイトを正常に表示できるのか?」という問題もありますので、あまり気にする必要はないかもしれません。
私はガラケーを持っていないので、動作確認ができないのです。

サポートBBS

サイト内を検索
サイト運用事例
提供サービス
メールフォーム

ダウンロード一覧へ

アンケートフォーム

ダウンロード一覧へ

BBS

ダウンロード一覧へ

その他おすすめ

ダウンロード一覧へ

Web制作のブログ

ブログ記事一覧へ

カテゴリ別
制作者の詳細
  • 谷元博のブログ
  • Google+