これは簡単に修正できると確信している問題ですが、私は一日中頭を悩ませてきました。
私はクライアントのために新しいウェブサイトを開発しています。Web サイトは (これは一例です) website.com にあります。訪問者のリクエストを requests@website.com に電子メールで送信するための PHP フォーム スクリプトがあります。
これを別のドメインのステージング サーバーでコーディングしたところ、すべて正常に動作しました。それを website.com に移動したところ、メール メッセージが届きませんでした。Web サーバーは、大手 ISP の仮想ホスト上にあります。
それ以来、私が学んだことは次のとおりです。私のクライアントのメール サーバーは、物理的にオフィスにあるボックス上の Microsoft Exchange です。外の世界の誰かが requests@website.com にメールを送信すると、メールが届きます。 しかし、Web サーバーが同じメール アドレスに送信すると、毎回失敗します。これはPHP の問題ではありません。シェルを Web サーバーに安全に接続し、sendmail と UNIX メール アプリケーションの両方でこれをテストしました。また、シェルからさまざまな電子メール アカウントに電子メールを送信してテストしました。たとえば、website.com ドメインの誰にもメールを送信できません。
つまり、website.com にログインすると、requests@website.com、user@website.com、another_user@website.com へのメールはすべて失敗します。他のすべてのアドレスは正常に機能します。私が発見したのは、これらのドロップされた電子メールは、受信トレイにある Web サーバーの「キャッチオール」アカウントにルーティングされるということです。
website.com で MX ルックアップを実行しました。MX レコードは、mailsec.website.com を指しています。mailsec.website.com ポート 25 に telnet で接続し、SMTP サーバーを確認できます。
requests@website.com にメールを送信するときに、website.com が MX ルックアップを行っていないように見えます。私の理論では、ドメインをローカルとして認識し、配信先の「リクエスト」ユーザー アカウントがないことを確認し、メールをキャッチオール アカウントにドロップするというものです。私が望むのは、sendmail に強制的に MX ルックアップを実行させ、メッセージを Exchange サーバーに送信させることです。私はここで機知に富んでいます。これを行う方法がわかりません。
さらに言えば、私はここでベースから外れており、これを完全に誤診している可能性があります. インターネット メールと MX は常に黒魔術のように思われてきましたが、私の無知がこの質問で明らかになりました。