XserverとMicrosoft365を併用したときにメールが届かない原因と解決方法

— DNSではなく「ローカル配送」が原因だった話 —

はじめに

XserverでWebサイトを運用し、メールはMicrosoft365(Outlook)で管理する構成はよくあります。

しかしこの構成で、次のような問題が発生することがあります。

  • Microsoft365にメールが届かない
  • なぜかレンタルサーバー側で受信される
  • メールアカウント削除後にエラーになる

一見DNS(MXレコード)の問題に見えますが、実際には別の原因です。

本記事では、実際に発生した事例をもとに、原因と正しい対処方法を整理します。

※ 本記事のドメイン・IP・サーバー情報はすべてダミーです。


結論

今回の原因は、レンタルサーバーが同一ドメイン宛メールをローカル配送していたことでした。

DNS(MXレコード)は正しくても、この問題は発生します。


今回の構成(ダミー)

今回の構成をダミー情報で表すと、以下のようになります。

  • 送信元:user@example.co.jp(Xserverで運用)
  • 送信サーバー:sv1234.example-server.jp
  • 宛先:user@example.com(Microsoft365で運用)
  • example.com のMXレコード:Microsoft365向き

この状態で、user@example.co.jp から user@example.com にメールを送ったところ、Microsoft365に届かず、想定外の挙動が発生しました。


発生した現象

実際には次のような現象が起きました。

  • Microsoft365側にメールが届かない
  • レンタルサーバー側に配送される、または配送エラーになる

たとえば、メールアカウント削除後には次のようなエラーになりました。

user unknown. Invalid user specified.

このメッセージだけを見ると、宛先アドレスの設定ミスのように見えるかもしれません。
しかし、実際にはメール配送の経路に原因がありました。


DNSを確認しても問題はなかった

まず疑うのはMXレコードです。
実際に以下のように確認すると、ドメインは正しくMicrosoft365を向いていました。

dig mx example.com

結果のイメージは以下です。

example.com. IN MX 0 example-com.mail.protection.outlook.com.

この状態であれば、通常はMicrosoft365へ配送されるはずです。

さらに、パブリックDNSでも確認しておけば、DNSキャッシュの切り分けもできます。

dig mx example.com @8.8.8.8
dig mx example.com @1.1.1.1

これらでも同じMXが返ってくるなら、DNS設定自体はほぼ問題ありません。


なぜDNSが正しくても届かないのか

ここが今回の本質です。

通常のメール配送は、次の流れで行われます。

送信サーバー → MXレコード参照 → 受信サーバーへ配送

しかし今回は、この通常ルートを通りませんでした。

実際の挙動は次のようになります。

Xserverから送信
↓
宛先が「自分の管理しているドメイン」と判定される
↓
MXを見ずにローカル配送を試みる
↓
ユーザーが存在しなければエラーになる

つまり、送信サーバー側のロジックによって、そもそもMXレコードが参照されていなかったのです。


原因の本質は「ローカル配送」

多くのメールサーバー(MTA)は、次のような動作をします。

自分が管理しているドメイン宛のメールは、外部配送よりも先にローカル配送を優先する

この挙動自体は珍しいものではありません。
むしろ一般的です。

今回問題になったのは、送信元のサーバーであるXserverが、宛先ドメイン example.com を「自分が管理しているドメイン」とみなしていたことです。

そのため、本来であればMicrosoft365へ行くべきメールが、Xserver内部でローカル配送されようとしてしまいました。


よくある誤解

この問題では、次のように考えてしまいがちです。

  • ドメインが2つあるのが問題
  • MXレコードが正しく設定されていない
  • ネームサーバーを変えれば直る
  • メールアカウントを削除すればMicrosoft365へ流れる

しかし、これらは本質ではありません。

正確には次の理解が重要です。

  • 問題なのは「ドメインが2つあること」ではない
  • 問題なのは「送信元サーバーが、宛先ドメインを自分のローカルドメインとして持っていること」

つまり、ドメイン数の問題ではなく、送信サーバーと宛先ドメインの関係が問題です。


実際のトリガーは何だったのか

今回のケースを整理すると、実質的なトリガーは以下でした。

example.co.jp と example.com が同じXserverに存在
↓
Xserverが example.com を「自分の管理ドメイン」と認識
↓
ローカル配送が発動

ここで重要なのは、送信元アドレスのドメインが .co.jp で、宛先が .com だったとしても、送信サーバーが宛先ドメインを管理している限りローカル配送の対象になり得るという点です。


メールアカウント削除後に何が起きるか

では、Xserver側の user@example.com のメールアカウントを削除すれば解決するのか。
結論から言うと、それだけでは解決しません。

削除後の挙動はこうなります。

ローカル配送を試みる
↓
ユーザーが存在しない
↓
user unknown エラー

つまり、ローカル配送には失敗しますが、そこで終わりです。
外部のMicrosoft365へ自動的に再配送されるわけではありません。

この点は非常に誤解されやすいところです。


重要なポイント:ローカル配送失敗後に外部配送へはフォールバックしない

今回ハマりやすかったのは、次の思い込みです。

ローカル配送に失敗したら、次にMXを見て外部配送してくれるのではないか

しかし、通常はそうなりません。

多くのサーバーでは、ローカル配送対象と判定した時点で配送経路が決まり、失敗しても外部配送へフォールバックしません。

そのため、メールアカウントを削除した結果は「Microsoft365に届く」ではなく、「配送エラーになる」です。


ネームサーバー変更では解決しない理由

この問題をDNSの問題と考えると、ネームサーバー変更を検討したくなります。
しかし、今回のケースでは根本解決になりません。

なぜなら、問題はDNSの参照前に発生しているからです。

Xserverがローカル配送を決定
↓
MXを見ない
↓
ネームサーバーの違いは影響しない

ネームサーバーを変更するとDNS管理先は変わりますが、Xserver側のローカル配送ロジックまでは変わりません。

したがって、今回の問題を解決する手段としては不適切です。


ケース別に見る挙動の違い

整理すると、挙動は次のようになります。

送信元サーバー宛先ドメインがそのサーバーに存在するか結果
Xserver存在するローカル配送(問題発生の可能性あり)
Xserver存在しないMX参照で外部配送
外部サーバー存在する / しないに関係ない通常はMX参照で配送

この表から分かる通り、今回の本質は「Xserverから送っていること」と「宛先ドメインがXserver上に存在していること」の組み合わせです。


では、送信元がXserver以外ならどうなるか

ここも重要な補足です。

もし user@example.co.jp がXserverではなく、別のメールサービスや別サーバーで運用されていた場合はどうでしょうか。

この場合、送信元サーバーはXserverではありません。
したがって、Xserver側のローカル配送ロジックは関与しません。

通常は以下のようになります。

外部サーバーから送信
↓
宛先ドメインのMXを参照
↓
Microsoft365へ配送

つまり、送信元がXserver以外なら、今回のような問題は起きにくいということです。

この意味でも、問題の本質は「2つのドメインがあること」ではなく、「送信元と宛先ドメインが同じサーバー上にあること」だと分かります。


解決方法

今回の問題に対する解決方法は、主に以下の3つです。

1. 送信をMicrosoft365側に寄せる

もっとも素直な方法は、送信もMicrosoft365側に寄せることです。

ただし、ここで注意が必要です。
Microsoft365では、従来型のBasic認証SMTPは廃止方向に進んでいます。

そのため、今後の設計としては以下のような方法を検討するのが現実的です。

  • SMTP AUTH(テナント設定で許可されている場合)
  • Microsoft Graph API
  • Exchange Online コネクタ

特に今後を見据えるなら、Microsoft Graph API を前提に設計するのが安心です。

2. Xserverから宛先ドメインを外す

もし example.com をXserverに持たせる必要がないのであれば、Xserver側からそのドメインを外す方法があります。

これにより、Xserverは example.com をローカルドメインとして認識しなくなります。

結果として、Xserverから送信しても外部ドメイン宛として扱われ、MXを参照してMicrosoft365へ配送されるようになります。

ただし、この方法はWeb運用など他の用途への影響もあるため、実際に採用するかは慎重に判断が必要です。

3. 送信サーバーを分離する

送信元がXserverであること自体が問題になるなら、送信サーバーを別に分ける構成も有効です。

たとえば、送信は別の外部メールサービスやAPI経由、受信はMicrosoft365という形にすれば、ローカル配送の問題を避けやすくなります。


実務でのベスト構成

実務上、もっとも安定しやすいのは次のような構成です。

  • Web:Xserver
  • 受信メール:Microsoft365
  • 送信メール:Microsoft365または外部メールサービス

このように、受信だけでなく送信経路も明確に分けておくことで、配送トラブルや認証不整合を減らせます。


WordPressで起こりやすい理由

WordPress運用では、この問題がさらに起きやすくなります。

理由は、WordPressのメール送信が初期状態ではサーバー依存になりやすいからです。

たとえば、mail() 関数ベースで送っていると、実際にはそのサーバーのローカルMTAが配送を担当します。
その結果、今回のようにローカル配送が発生することがあります。

つまり、WordPressでフォーム送信や通知メールを使っている場合、次のような構成になっていると要注意です。

  • Web:Xserver
  • WordPressの送信:Xserverの mail() またはローカルSMTP
  • 受信:Microsoft365

この場合、見た目では「受信はMicrosoft365だから大丈夫」と思っていても、実際には送信経路がXserverのままで、今回と同じ問題が起こります。


WordPress運用での対策

WordPressでこの問題を避けるには、送信経路を明示的に設計する必要があります。

たとえば次のような方法です。

  • SMTPプラグインを使って外部メールサービスへ接続する
  • Microsoft365連携を行う
  • Graph APIなど、SMTP以外の安全な手段を使う

ポイントは、「受信先を変える」だけではなく、「どこから送るか」を明確にすることです。


SPF / DKIM / DMARCへの影響

この問題を放置すると、単に配送経路の問題だけでは済みません。

送信元と実際の配送経路が噛み合っていないと、以下のような認証系の問題も発生しやすくなります。

  • SPF不一致
  • DKIM未署名、または期待と異なる署名
  • DMARC失敗

これらが起きると、迷惑メール判定や不達のリスクが高まります。

そのため、メールの送受信を複数サービスに分ける場合は、配送可否だけでなく認証設計まで含めて考える必要があります。


今回の学び

今回のトラブルから分かることは、次の通りです。

  • メール配送はDNSだけで決まるわけではない
  • MXレコードが正しくても届かないことがある
  • 実際の配送では送信サーバーのローカル配送ルールが強く影響する
  • 同じサーバー上に存在するドメイン宛メールは、意図せずローカル配送されることがある
  • WordPressやサーバー標準のメール送信機能では、この問題が起きやすい

まとめ

今回のトラブルは、以下の流れで起きていました。

Xserverから送信
↓
宛先ドメインをXserverが自分の管理対象と判定
↓
MXを見ずにローカル配送
↓
ユーザーがなければ失敗(user unknown)

つまり、問題はDNSではなく、送信サーバーの配送ルールにありました。

もしXserverとMicrosoft365を併用するなら、重要なのは「受信先」だけではありません。
送信経路も含めて設計することが必要です。


おわりに

XserverとMicrosoft365を併用する構成は珍しくありませんが、受信だけ切り替えて安心してしまうと、今回のようなメール配送トラブルに遭遇することがあります。

特に、WordPressのフォームメールや通知メールを運用している場合は要注意です。

今後メール構成を見直す際は、次の2点を必ず確認すると安全です。

  1. 宛先ドメインが送信元サーバーにローカルドメインとして存在していないか
  2. 実際の送信経路がどのサーバーになっているか

この2つを押さえるだけでも、かなりのトラブルを防げます。

コメント

タイトルとURLをコピーしました