お問い合わせ用にコンタクトフォームを使用していると、海外からのスパムメールやフォームを悪用されて会社のお問い合わせ用のメールアドレスからスパムメールを送ったように偽装され悪用されるケースあります。
特に後者のお問い合わせ用のメールアドレスから送ったように偽装されるとGoogleにスパムメールを送るドメインと認識されてしまうことがあり、そのドメイン(メールアドレス)から送られたメールがすべて迷惑メールのフォルダに入ってしまうこともあります。
実際に弊社でも悪用されてドイツなどのヨーロッパ地域の言語で「スパムメールを解除しろ!」と言ったメールが増えてきた為、調べるとコンタクトフォームを悪用されていたようです。
コンタクトフォームを悪用されないようにするには
コンタクトフォームからスパムメール送ったり、悪用したりする人たちのほとんどが日本語圏以外の人が多いので、コンタクトフォームから日本語以外で送信できないようにすれば、ある程度解決できます。
functions.phpにコードを追加する
functions.phpに下記のコードを追加します。
//スパム対策(Contact Form7用)
function wpcf7_validate_anti_spam_message( $result, $tag ) {
$value = str_replace(array(PHP_EOL,' '), '', esc_attr($_POST['your-message']));
if (!empty($value)) {
if (preg_match('/^[!-~]+$/', $value)) {
$result['valid'] = false;
$result['reason'] = array('your-message' => '日本語で入力してください');
}
}
return $result;
}
add_filter( 'wpcf7_validate', 'wpcf7_validate_anti_spam_message', 10, 2 );
内容は「メッセージ本文に日本語が含まれないとエラーメッセージ(「日本語で入力してください」の部分)が出て送信できないようにするコードです。
ずる賢い奴は「日本語で入力してください」の部分を理解して、少しの日本語を混ぜてくる可能性もあるので、「エラーの為送信できません」でもいいかもしれません。