以下のページででダウンロードできるメールフォームでは、バージョン2.0からスパム対策機能が実装されております。
レスポンシブ・メールフォームの無料ダウンロード
スパム機能は以下の2種類があります。
- リファラ(送信元ドメイン)チェックによるスパム対策機能。(バージョン2.0以降)
- 送信前の入力チェックが動作した場合にのみメールを受け付ける機能。(バージョン2.2以降)
初期設定では上記1はオフ、上記2はオンになっています。
上記2だけをオンにしておけばほとんどスパムメールは来なくなるので、上記1は設定しなくても問題ないと思われます。
このページではこれらのスパム機能についての簡単な解説をしておきます。
【2018年6月3日追記】
バージョン6.0からIPアドレスや禁止ワードによって送信を拒否できる「IP・ワードブロックアドオン」というものを追加することができます。
このページで解説しているチェック機能だけでは足りない! という方は導入をご検討ください。
【2021年9月27日追記】
2021年9月21日公開のバージョン8.0からは上記2つのスパム機能は両方ともオンがデフォルトとなりました。設定すら不要です。
さらに、それまではアドオン形式で別配布だったトークンアドオンも標準で本体に組み込まれたため、スパムメールが来ることはほぼないでしょう。
リファラ(送信元ドメイン)チェックによるスパム対策機能の解説
バージョン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の違いによってこのスパム機能に引っかかってしまう可能性が出てくるからです。
でも実際のところは、バージョン2.2から実装された下記の「送信前の入力チェックによるスパム対策機能」がオンになっていれば、上記のリファラチェックによるスパム機能はオフのままでもほとんど迷惑メールは来なくなります。
リファラチェック設定の注意点(上級者向け)
厳密に言えば「http://www.test.com/」というように、最初はhttpから、末尾にはスラッシュまでを付けたほうが確実な効果が望めるでしょう。
なぜなら「http://www.test.com」だけの設定だと、test.jpという別のドメインを取得した第三者が、
http://www.test.com.test.jp/mailform/index.html
というようなサブドメインを使ってスパムメールを送りつけることができてしまうからです。
http://www.test.comという文字列が含まれているので、送信を受け付けてしまうのです。末尾にスラッシュを付けておくことでこれを防ぐことができます。
しかし、上記のようにURLの末尾にスラッシュを付ける場合は、設置したメールフォームのURLが、
http://www.test.com
というように、末尾のスラッシュなしでも表示されてしまわないかよくご確認ください。
この場合、http://www.test.com/という文字列がリファラに含まれていないことになるので、送信を拒否してしまいます。
上記の設定例の場合は同様の理由から、メールフォームページがhttpsで表示されないか?とか、wwwなしでも表示されないか?なども確認しておく必要があります。
そのあたりが.htaccessによって正しくリダイレクトできている必要があります。
よくわからない場合はリファラチェック設定はあまり厳密にしないほうが無難です。
送信前の入力チェックによるスパム機能の解説
このメールフォームは送信ボタンを押す前に入力必須の項目をチェックし、すべて問題がなかった場合に最終確認のためのアラートウインドウが出現し(下画像参照)、送信することができます。
このため、ページの移動をさせることなく入力のチェックが行えるわけですが、この機能はJavaScript(じゃばすくりぷと)という言語で実装しています。
一般的に、メールフォームにスパムメールを送信してくる人はJavaScriptが動作していない環境で送ってくることが多いです。(おそらく手作業によってWebブラウザ上で何十通も送るのは大変なので、自動プログラムで送るため)
そのため「JavaScriptが動作していない環境からの場合はメールフォームを送信させない」のがスパム対策として効果的となります。
送信前の入力チェックによるスパム機能の設定の方法
このスパム機能は初期設定ではオンになっています。
つまり、JavaScriptが動作していない環境からはメールを受け付けません。
このメールフォームプログラムはJavaScriptを使ったAjax方式で送信するため、JavaScriptが動作していない環境からはそもそも送信することができない仕組みとなっています。
送信前の入力チェックによるスパム機能の設定の注意点
PCやスマホ・タブレット上で使用するWebブラウザはJavaScriptが動作しますので、このスパム機能に引っかかるということは基本的にありません。
しかしガラケーの場合はJavaScriptが動作するかは機種によるので、このスパム機能をオンにすることでガラケーの機種によってはメールフォームからの送信ができなくなる可能性があります。
でも実際にはそれ以前の問題として「ガラケーのWebブラウザでPCサイトやスマホ用サイトを正常に表示できるのか?」という問題もありますので、あまり気にする必要はないかもしれません。
私はガラケーを持っていないので、動作確認ができないのです。