同一ドメインでメールとWebサイトのサーバーが違う時に、Contact Form 7のお問い合わせメールが管理者に届かない
前提条件等
WordPress製サイトを本番リリースした時に、「Contact Form 7」のお問い合わせメールが管理者側にだけ届かない事象が起きました。(ユーザー側にはちゃんと届く)
管理者側(info@domain.com)には届かず、ユーザー側(フォームで入力したメールアドレス)には届く のようなイメージです。
この時の解決策を備忘録のために残しておきます。
本番環境の構成図は以下のように、同一ドメインで、Webとメールのサーバーが別々でした。(サーバー名は例です)
メールが届かない時に真っ先に試したのは、プラグインの「WP Mail SMTP」です。
メールアカウント情報などを入力して試してみましたがダメでした。
参考記事:Contact Form 7の設定方法!メールが届かない原因や確認方法を解説!
解決前の状態
丸一日クライアントとも協力しながら調査をしていたら、いつくか分かったことがあります。
(以下、管理者メールアドレスを「info@〜」とします)
- DNSの切替えなど色々な移管作業を行った際、「メールサーバー」のメールアカウントが「Webサーバー」のメールアカウントにも追加されていた
→ つまり、「Webサーバー」のメールアカウントに、個人のアドレス(d.yamada@domain.com みたいなアドレス)や管理者アドレス(info@〜)などが追加されていた - フォームを送信するとWebサーバーの「info@〜」に受信される
- フォーム経由ではなく、普通に「info@〜」にメールを送信すると、メールサーバーの「info@〜」に受信される
つまり、フォーム経由で「info@domain.com」にメールを送ったら、メールサーバーではなくWebサーバーの「info@〜」に受信されてしまうということです。
解決策
サポートに問い合わせてみました。この時の問い合わせ先は、Webサーバーのサポートです。
すると、回答を頂きあっさり解決しました...。
サポートからは、「Webサーバーのメールアカウントを全て削除してください」と言われたので、試しに全て削除してみたところ、フォームを送信したらメールサーバーの「info@〜」にメールが届きました!
検証中に「info@〜」のメールアカウントが「Webサーバー」と「メールサーバー」で重複しているからダメなのかなと思い、Webサーバーの「info@〜」を削除したのですが効果はなかったです。
サポート曰く、全てのメールアカウントを削除するのが重要とのことでした。
困ったら真っ先にサポートに問い合わせてみるのも一つの手段ですね...。