web-dev-qa-db-ja.com

Windows Server 2019ビルトインSMTPサーバー:メールがキューに留まり、「リモートサーバーは接続試行に応答しませんでした」というイベントログに記録される

Windows Server 2019を使用して新しい専用サーバーをセットアップしています。WindowsServer 2008 R2に基づく古いサーバーを置き換えます。組み込みのSMTPサーバーを古いサーバーで問題なく実行しました。新しいサーバーをSMTPサーバーとしても機能するように設定し、古いサーバーを設定したときの自分のメモを使用して、オンラインで指示を再確認しました。基本的にここの指示に従って:

http://www.vsysad.com/2017/05/install-and-configure-smtp-server-on-windows-server-2016/

私が抱えている問題は、電子メールがC:\ inetpub\mailroot\Queueを離れず、受信者に届かないことです。 Windowsイベントログには、次の警告が含まれています。

イベント4006、smtpsvc
「ホスト '204.79.197.212'へのメッセージ配信は、リモートドメイン 'hotmail.com'への配信中に次の理由で失敗しました:リモートサーバーが接続試行に応答しませんでした。

上記はHotmail宛先アドレスを使用した例にすぎません。他のドメインのアドレスに送信しようとすると、同じ種類のメッセージが受信されます。

私が試したこと:

  1. Telnetを使用して手動で電子メールを送信しました。電子メールはローカルSMTPサーバーによって問題なく作成および受信されますが、キューフォルダーを離れません。
  2. HotmailとGmailアドレスの両方に対してSmtpDiagを実行しました。問題ありません。 MXレコードは期待どおりに表示されます。
  3. Nslookupを使用して、MXレコードが解決されていることを確認しました。
  4. Telnetを使用してHotmailおよびGmail SMTPサーバーに正常に接続しました。
  5. 私はWiresharkを使用して、サーバーが宛先の電子メールアドレスドメインのIPアドレス(ポート25)にのみアクセスしようとしていることを確認できました。したがって、Hotmailの場合、hotmail.com(これは204.79.197.212)、ポート25でこのアドレスへの接続を開こうとします。そこにSMTPサーバーがないため、これは明らかに失敗します。私のサーバーは、MXレコードで指定されたアドレスのSMTPサーバーにアクセスすることすらしません。

上記の最後の項目は、興味深いことに気付きました。つまり、イベント4006メッセージにリストされているIPアドレスは、MXレコードにリストされているIPアドレスの1つではないということです。これは、実際のhotmail.comドメインのIPアドレスです。では、なぜMXレコードにリストされているアドレスの1つではなくhotmail.comに接続しようとしているのですか?

さらに調査するために、Telnetを使用して自分のドメインの1つにある電子メールに送信しました。案の定、私は4006イベントをログに見つけて言っています:

「次の理由により、リモートドメイン '[マイドメイン]'への配信中に、ホスト '[マイドメインのIP]'へのメッセージ配信が失敗しました:リモートホストによって接続がドロップされました。」

SMTPサーバーがMXレコードで指定されたアドレスではなく、ドメインのIPとポート25に接続しようとしているようです。

これは私がやってきた限りです。多分私はここで何かを誤解しているかもしれませんが、WindowsのSMTPサーバーがポート25で直接電子メールアドレスのドメインに接続しようとしているようです(MXレコードを無視します)...またはおそらくこれをトラブルシューティングする方法を教えてください。

EDIT:回避策と問題の原因を発見しました。以下の私の答えを参照してください。

4
MrFika

私はこの問題の調査を続けており、Windows Server 2019のバグであると信じています。実際に回避策を見つけ、これを再現する方法100%確実な問題。

SMTPサービスのスタートアップの種類が[自動]に設定されている(つまり、起動時にすぐに開始する)場合、メールは正しく送信されません。ただし、SMTPサービスを手動で開始するように設定し、services.mscまたはIIS6マネージャーから手動で開始した場合、電子メールはキューを離れて受信者に配信されます。

サービスに「自動」起動が使用されている場合、電子メールを送信しようとすると、常に電子メールがキューでスタックし、イベント4006(詳細については最初の投稿を参照)がイベントログに書き込まれます。これは私のテストで100%再現可能です。

回避策は、スタートアップの種類を「自動(遅延開始)」に設定することです。これにより、正しく通知された場合、最後の「自動」サービスが開始されてから2分後にSMTPサービスが開始されます。これは最適なソリューションではありませんが、当面は有効です。

完全を期すために、ここでは問題を再現するための段階的な手順を示します:

  1. SMTPサーバー機能をインストールする
  2. IIS6マネージャーに移動し、SMTP仮想サーバーを右クリックして、[プロパティ]をクリックします。
  3. 「アクセス」タブに移動します
  4. 「接続...」をクリックし、「下のリストのみ」を選択して、127.0.0.1を追加します。 「OK」をクリックします。
  5. 「リレー...」をクリックし、「下のリストのみ」を選択して、127.0.0.1を追加します。ウィンドウ下部のチェックボックスをオフにします。 「OK」をクリックします。
  6. もう一度[OK]をクリックして、SMTP仮想サーバーのプロパティを終了します。
  7. Services.mscを開き、「Simple Mail Transfer Protocol(SMTP)」サービスのスタートアップの種類を「自動」に設定します
  8. コンピュータを再起動し、電子メールを送信してみます

注:問題を再現するためにステップ2から6はおそらく必要ありませんが、これは私が使用してきた基本的なセットアップです。

3
MrFika