お問い合わせフォームの機能を強化し、いやWordPressのfunction.phpをカスタマイズし、日本語が含まれないメッセージをブロックするギミックを付けて、しばらくの間は英語のスパムメッセージが止まりました。ところが、数ヶ月経つとまた英語のメッセージが届くようになりました。スキームに不備があったのかと、コードを見直してみましたが、その後も英語メッセージは届きます。
ネットのサンプル通りにコードを書いたし、機能的には止まるはずだが。と思い、試しに英語のメッセージを入れようとすると、ちゃんと「日本語で入力してください」というエラーメッセージは出ます。では、なぜ英語メッセージは届くのか?
彼らの送ってくるメッセージを見ると、ある特徴に気付きました。本文は英語なのですが、最後に『お問い合わせ – 旅行貯金入門』なる文字列があるのです。日本語書けというのがバレたかな?でも、日本語入力する環境がなくても、ページから文字列をコピペするぐらいならできる。彼らの知能を見くびっていました。
そんな技に気付くとは意外とやるな。しかし、本文がほぼ英語で、しかも決まった文字列を貼り付けるだけなら、その文字列が含まれるメッセージを弾いてやればいいだけです。でもそれだといたちごっこになりそうですね。まあ、今のところ悲しいかなスパムしか来ないので、選別するのはそんなに苦ではないです。でも、もしも今後メッセージが増えてきたらどうしよう。英語だけの(日本語が含まれない)文章を弾くスキームは正常に動作してるので、後は特定ワードで判定するかメーラの学習型フィルタに期待するしかないでしょうか。特定ワードとしては『regards』とか『sincerely』みたいな日本語の文章に絶対登場しないワードですね。
そう言うわけで、お問い合わせフォームの対策は、これにていったん終了としたいと思います。日本語フィルタに代わる画期的な対策が見つかればぜひ試してみたいと思いますが。