WordPressで同一ドメイン宛メールが届かない問題の対処法
💥 発生した問題
とあるサイトでContact Form 7からのメールが届かないという相談を受けた。
フォームを送信すると「メッセージの送信に失敗しました」と表示される。WordPressの標準メール(ユーザー登録通知など)は正常に動作しているのに、CF7だけがダメという状況だった。
📝 前提条件
このサイトの構成は以下の通り:
- Webサーバー: さくらインターネット
- メール: Google Workspace(以前はさくらのメールを使用)
ポイントは元々さくらのメールを使っていたこと。Google Workspaceに移行した後も、さくらのコントロールパネルではこのドメインが「メール利用可能」な状態のまま残っていた。
🔍 原因の切り分け
1. 最初のエラー:status: 'spam'
ブラウザの開発者ツールで確認すると、CF7のAPIレスポンスが status: 'spam' を返していた。
reCAPTCHA v3がスパム判定しているようだったので、CF7のインテグレーション設定からreCAPTCHAを一旦外してみた。これでスパム判定は解消。
2. 次のエラー:status: 'mail_failed'
reCAPTCHAを外したら今度は status: 'mail_failed' に変わった。メール送信自体が失敗している。
ただし、WordPressの標準メール機能(パスワードリセットなど)は正常に動作する。CF7の設定を見直しても問題なし。
3. 真の原因:同一ドメイン内メール配送問題
送信先を別ドメイン(例:xxx@example.jp)に変えたら正常に届いた。
つまり同一ドメイン宛のメールだけが失敗している。
原因はさくらインターネットのメール設定にあった。さくらのサーバーから xxx@example.com 宛にメールを送ると、外部(Google Workspace)に配送せず、さくら内でローカル配送しようとして失敗する。コンパネでこのドメインが「メール利用可能」になっているためだ。
🤔 根本解決と現実
理屈上はさくらのコンパネでこのドメインのメール機能を無効化すれば解決する。
ただ、今回のケースではコンパネでメールの使用容量を確認したところ、けっこうメールが溜まっていた。転送設定もかかっているようだったが詳細が判別つかず、うかつに切ると何か壊れそうで怖い。
というわけで、メール設定には触れずにWP Mail SMTP by WPFormsで外部SMTP経由で送信する回避策を取った。
「最初からWP Mail SMTP入れとけばいいじゃん」という話もあるが、デフォルトのPHPメールで動くならその方が手っ取り早い。外部SMTPの設定は2段階認証やらアプリパスワードやら手順が地味に多いので、問題が起きてから対応でも遅くはない。
✅ 解決策:WP Mail SMTP by WPForms + Google Workspace
1. Google Workspaceのメールアカウントを用意
送信元として使うメールアドレスを決める。
2. 2段階認証を有効化 → アプリパスワード発行
Googleアカウントのセキュリティ設定から:
- 2段階認証を有効化(まだの場合)
- アプリパスワードにアクセス
- アプリ名は適当に入力(「WordPress」など)
- 生成された16文字のパスワードをコピー(スペースは除く)
3. WP Mail SMTP by WPForms設定
WordPressにWP Mail SMTP by WPFormsプラグインをインストールし、以下のように設定:
| 項目 | 設定値 |
|---|---|
| SMTPホスト | smtp.gmail.com |
| 暗号化 | SSL |
| SMTPポート | 465 |
| 認証 | オン |
| SMTPユーザー名 | Google Workspaceのメールアドレス |
| SMTPパスワード | アプリパスワード(スペースなし) |
4. 送信元メールの設定
送信元メールアドレスもSMTPユーザー名と同じアドレスに設定する。異なるアドレスだと送信に失敗する場合がある。
5. テスト送信
WP Mail SMTP by WPFormsの「ツール → メールテスト」から送信テストを実行。同一ドメイン宛に送信して届けば成功。
💡 まとめ
- さくらインターネットでGoogle Workspaceにメール移行した場合、コンパネでドメインが「メール利用可能」のままだと同一ドメイン宛メールがローカル配送されて失敗する
- 根本解決はコンパネでメール機能を無効化することだが、既存のメールや転送設定がある場合は慎重に
- 回避策としてWP Mail SMTP by WPFormsでGoogle Workspace経由で送信すれば、サーバーのメール設定に触れずに解決できる
さくらでこの構成(Web: さくら、メール: 外部サービス)を使っている場合は割とありがちな問題なので、CF7のメールが届かないときはまずこれを疑ってみるといい。