外部メールサーバーを使っているときのフォームの送信先がサイトと同じドメインのときメールが届かない問題と対策

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エラーを防ぐ)

この設定を適切に行えば、メールが正しく届くようになります。

「フォームからのメールが届かない!」と困っている方は、ぜひこの方法を試してみてください!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です