1. 原因:サーバーのローカルメールルーティングの影響
Webサイトを運用しているサーバー(例: レンタルサーバー)が自分の内部でメールを処理しようとするため、外部メールサーバーにメールを届けないことが原因です。
例えば、
- Webサーバー(例: Xserver、ConoHa、さくらインターネット)で example.com のWebサイトを運用している。
- しかし、メールは Gmail(Google Workspace)やMicrosoft 365 を使用している。
- Webサーバー側は「example.com のメールは自分で処理できる」と判断し、外部のメールサーバーに転送しない。
これにより、お問い合わせフォームから送信されたメールが 外部のメールサーバーに届かず、サーバー内部で消えてしまう という現象が起こります。
2. 解決策
この問題を解決するには、以下の方法を試してみてください。
① MXレコードを正しく設定する
DNSのMXレコード(メールの送信先を指定する設定)を確認し、外部のメールサーバーが正しく設定されているか確認してください。
✅ 確認方法(Linux環境)
dig MX example.com
結果に、Gmail(Google Workspace)やMicrosoft 365のメールサーバーが表示されていれば正しく設定されています。
もしWebサーバーのホスト名が表示されている場合、DNSの設定を修正する必要があります。
② Webサーバーのメール設定を「外部メールサーバーを使用」に変更する
多くのレンタルサーバーには、ローカルでメールを処理するか、外部のメールサーバーを利用するかを選択できる設定があります。
- Xserver: 「メール設定」→「メールの配送方法」を「外部メールサーバーを使用」に設定。
- ConoHa WING: 「メール設定」→「ローカル配送を無効」にする。
この設定を変更することで、Webサーバーが内部で処理せず、正しく外部メールサーバーにメールを送るようになります。
③ お問い合わせフォームの送信元アドレスを変更する
多くのフォームプラグイン(Contact Form 7 など)では、送信元アドレス(From)をフォームで入力されたメールアドレスにする設定ができます。
しかし、このままだとSPF/DKIM/DMARCの認証エラーが発生し、メールが弾かれることがあります。
✅ 解決策
送信元アドレスをサイトのドメイン内のアドレスに固定し、Reply-To にフォーム入力のアドレスを設定してください。
❌ NG 設定例(フォーム送信元 = フォーム入力のメール)
From: us**@gm***.com
To: in**@ex*****.com
✅ OK 設定例(送信元を固定する)
From: no******@ex*****.com
Reply-To: us**@gm***.com
To: in**@ex*****.com
これにより、メール認証エラーを防ぎつつ、正しいメールが送信されるようになります。
まとめ
Webサイトのフォームからのメールが、同じドメインのメールアドレスに届かない場合の解決策は以下の通りです。
✅ DNSのMXレコードを確認・修正する(外部メールサーバーが指定されているか)
✅ Webサーバーのメール設定を「外部メールサーバーを使用」に変更する
✅ お問い合わせフォームの送信元アドレスを適切に設定する(SPF/DKIMエラーを防ぐ)
この設定を適切に行えば、メールが正しく届くようになります。
「フォームからのメールが届かない!」と困っている方は、ぜひこの方法を試してみてください!