Contact Form 7のフォームから迷惑スパムメールが来るのを防ぐには?

スパム




WordPressのお問い合わせフォームを設置する場合、Contact Form 7のプラグインを利用してる人も多いでしょう。このブログも利用しています。

特に細かい設定をせずに使っていますが、時々迷惑スパムメールが来るようになりました。それほど頻度が高いわけでも無いので今のところそんなに気にしていませんが、最近はAnn Weaverとかいう送信者の迷惑メールが目につきはじめたので、ちょっとは対策をすることにしました。

迷惑メールのほとんどは、プログラミングを使って自動的に送られてくるものなので、少し対策をしておくことで防ぐことができます。

Contact Form 7での簡単な迷惑メール対策

ここではContact Form 7の機能を使った簡単な対策を施してみます。他にもAkismet を使ったスパムフィルタリングなどもありますが、それはまた別の機会にまとめたいと思います。

今回は送信フォームにチェックボックスを設けて、送信前にチェックしないと送信できないような設定にします。

まず自分のWordPressのダッシュボードにアクセスし、「お問い合わせ」の「コンタクトフォーム」をクリックします。

 

設定しているフォームの一覧が表示されるので、該当するフォームをクリックします。(「編集」をクリックしてもいいです)

 

フォームのショートコードの設置画面が表示されます。本文と送信ボタンの間(赤い矢印の部分)に今回はチェックボックスを挿入したいので、カーソルをそこへ一度移動させておき「承認確認」をクリックします。

 

タグの生成画面が出ます。ここでは何もチェックせずにそのまま「タグの挿入」をクリックします。

 

メッセージ本文と送信の間にタグが挿入されましたが、そのままでは何のチェックボックスかわからないので、チェックを促す文章を入れます。

以下のように記述して保存します。

<p>[acceptance acceptance-218] 送信前に問い合わせ内容を確認してチェックボックスをクリックしてください。</p>

なお、タグの数字は生成ごとに毎回変わります。

 

これで設定は完了です。

お問い合わせフォームにアクセスしてみると、以下のようにチェックボックスが表示されています。

Akismetのスパムフィルタを連携させる

上記の方法でもそこそこ効果はありますが、送信作業に少し手間を加えているだけですから対策としては不十分なところもあります。

そこでAkismetのスパムフィルタリングを連携させます。Akismetの導入はこちらを参考にしてください。

Akismetのプラグインをインストールして有効化作業が済んでいるなら、Contact Form 7の編集に移ります。

再度、コンタクトフォームの編集画面にアクセスし、送信者の名前を入力する項目と送信者のメールアドレスを入力する項目にオプションを追加します。

送信者名のところは次のように変更します。
[text* your-name] →[text* your-name akismet:author]

メールアドレスのところは次のように変更します。
[email* your-email]→ [email* your-email akismet:author_email]

送信者の URL を入力する項目を設定している場合は [text your-url akismet:author_url]を設定します。

このような形に書き換えましょう。

最初から送信項目を作成する場合は、フォームダグの生成の画面でAkismetの項目があるので、そこにチェックを入れてタグを生成しましょう。

これでakismetのスパムフィルタと連携することができました。

機能しているかどうか確認したい場合は、送信者の名前を “viagra-test-123” と入力して送信テストをしてみましょう。これは確認テスト用の名前です。すると次のようなメッセージが表示されるはずです。

オレンジ色で囲まれている表示が出ると、スパム判定されている扱いになっています。

以上が、Contact Form 7のフォームから迷惑スパムメールが来る場合の簡単な対策でした。

迷惑メール送信者のIPアドレスを取得する

執拗な迷惑メールは、ディスカッション設定のコメントブラックリストに設定もしておきたいですね。

そこで、Contact Form 7から送信されたメールの端末のIPアドレスを取得する設定方法を示しておきます。

Contact Form 7の設定画面の「コンタクトフォームの編集」を開きます。

ここの「メール」タブを選択します。

この欄の「メッセージ本文」というところの適当な場所に次のようなタグを挿入しましょう。

IPアドレス:[_remote_ip] 送信日時:[_date][_time]

次のように記入すればOKです。

上の例では送信日時もわかるように設定しています。

これを設定することで、フォームからメッセージが入った時に、本文の下に送信者のIPアドレスと送信日時が入るようになります。