プログラミング

WordPressのお問合せフォーム(contact form 7)でエラー発生

メールフォーム

概要

フリーランスエンジニア スリーネクスト

WordPressでお問合せフォームを設置していて、しばらく経ってたまに来ていたお問合せが来ていないので試してみたらエラーが発生し、送信できなかったので原因と対応策を載せます。

もう復旧したのでお問合せフォームからメールの問合わせできるようになってます。

突然、運営しているブログのお問合せフォームがエラー発生

以前、こんなツイートをしました。

私の運営するブログ(このブログ)から、たまにお問合わせが来ていたのですが最近ないことに気づきお問合せフォームを確認してみたらエラーで送信できないことが判明しました。

お問合せフォームでエラーが発生した原因

このWordPressのブログを動かしているサーバーはGMOクラウドが運営しているVPSサーバーでLinuxをRoot権限という何でもできる権限を持つサーバを契約しています。
そのサーバーに別プログラムで「PHP Laravel6系」と「Ruby on rails6系 on Docker」、「Go言語1.13 on Docker」ほかにも様々なプログラミングを動かしており、それぞれ問合せフォームを作っていました。

セキュリティの問題からメールサーバーの設定を強固にする必要がありました。現状と対策については2つの表の通りです。

今までのセキュリティ

対策 説明
SPFスパム防御 Sender Policy Frameworkの略で電子メールの送受信する際、送信元のドメインが詐称されていないかを検証する送信ドメイン認証方式です。
アンチウィルス メールを送受信する際にサーバー側でウィルスに感染しているかどうか確認します。

これだけではGoogleのGmail宛にメールを送ると迷惑メールになったので以下の設定を追加しました。

追加したセキュリティ対策

対策 説明
DKIMスパム防御 DomainKeys Identified Mailの略でメッセージに紐付けられたドメイン名の同一性を検証するに用いられる手法です
DMARC Domain-based Message Authentication, Reporting and Conformanceの略でSPF と DKIM の機能を拡張するテクノロジーです。DMARC ポリシーは、受信側で DKIM および SPF チェックの結果に応じてメールメッセージをどのように処理すべきかを定義します。

上記のようにセキュリティを強化したらフォームにエラーが発生しました。

セキュリティを強化したら問合せフォームがエラーになる?

なぜ、セキュリティを強化したら問合せフォームがエラーになったかというとメールが送信できないからでした。

メール送信については今までは認証を入れてなくてもSMTPで送れていました。

問合せフォームはcontact form 7と言うプラグインを使っていてスパムメールの踏み台にされる可能性がある状態ではエラーになる設定でした。

WordPressでメール送信できるようにするための対策

WordPressでメール送信の認証させる必要がありますそのためにはこのプラグインが必要になります。

「WP Mail SMTP」のプラグインはSMTPの設定を簡単にすることができるプラグインです。
そこでメールの認証作業をする(問い合わせきたときに返信する用のメールアドレスのIDとパスワードを入れて認証)

さらに追加のセキュリティ対策

追加でさらにセキュリティを上げるために以下の対策を入れます。

  • Google reCAPTCHA V3

reCAPTCHAは昔で言うと画像認証サービスです
詳しくは画像をクリック

V1とV2はどうだったのか説明します。
Google reCAPTCHA V1 読みづらい英数字を読み取ってフォームに同じ英数字を入れて認証させる(なかなか読み取れなくて失敗した経験あります)
Google reCAPTCHA V2 「車の入った画像を全て選ぶ」等の複数の画像から車の入っている写真を選択して認証する

それに対してreCAPTCHA V3は何も操作しなくとも認証される便利なサービスです。

実はこれContact Form 7のプラグイン的な機能になっているのでreCAPCHAの登録をしたらWordPressの管理画面から登録することができます。

まとめ

セキュリティ対策を入れるのであれば設定もそこそこ複雑になります。
複雑にしないと簡単にウィルスメールやスパムメールの餌食になるので複雑でも対応は必須です。

最近ではメールの代わりにプッシュ通知に置き換わってきているのですが、まだまだメールの時代は終わらない気がします。
セキュリティ対策は十分にしましょう。


-プログラミング