外部ドメインへのメッセージが遅延されている場合、エラー NoCredentials エラーで TLS ネゴシエーションが失敗しました
元の KB 番号: 4495258
現象
外部ドメインに送信されるEmailメッセージは、オンプレミスのExchange Server (2016 または 2013) でキューに入れられます。 状態をチェックすると、次のエラー メッセージが表示されます。
421 4.4.1 接続がタイムアウトしました。代替ホストへのフェールオーバーが試行されましたが、成功しませんでした。 代替ホストがないか、すべての代替ホストへの配信に失敗しました。
さらに、送信コネクタ ログの次のエラー エントリは、トランスポート層セキュリティ (TLS) ネゴシエーションが失敗したことを示します。
エラー NoCredentials で TLS ネゴシエーションが失敗しました
原因
この問題は、以下の条件に該当する場合に発生します。
- 送信 TLS に使用される証明書に秘密キーがありません。
- 証明書の
TLSCertificateName
Issuer 文字列と SubjectName 文字列を使用して、属性を設定します。 さらに、 属性は送信<I>Issuer string<S>SubjectName string
コネクタ内の送信 TLS に使用され、電子メール メッセージを外部ドメインにルーティングします。
解決方法
この問題を解決するには、次の手順を実行します。
電子メール メッセージを送信する権限がある送信コネクタでログ記録を有効にします。 これを行うには、管理者として次の PowerShell コマンドレットを実行します。
Set-SendConnector "NameOfTheSendCconnector" -ProtocolLoggingLevel Verbose
送信コネクタ ログを確認して、送信 TLS 中に使用される証明書を特定します。 たとえば、ログ エントリは次のようになります。
Date/Time.ConnectorId,outbound to Office 365,SessionId,16,192.168.0.78:28252,172.16.38.36:25,,,証明書の送信
Date/Time.ConnectorId,outbound to Office 365,SessionId,17,192.168.0.78:28252,172.16.38.36:25,CN=.xxx.xxx.xxx,Certificate subject
Date/Time.ConnectorId,Outbound to Office 365,SessionId,18,168.0.78:28252,172.38.36:25,,"CN=xxxxxx, OU=xxxxxx, O=xxxx, L=xxxx, S=xxxxx, C=xx",証明書発行者名
Date/Time.ConnectorId,outbound to Office 365,SessionId,19,192.168.0.78:28252,172.16.38.36:25,,xxxxxxxxxxxxxxxxxxxx,Certificate シリアル番号
Date/Time.ConnectorId,outbound to Office 365,SessionId,20,192.168.0.78:28252,172.16.38.36:25,,xxxxxxxxxxxxxxxxxxxxxxxxx,Certificate 拇印
Date/Time.ConnectorId,outbound to Office 365,SessionId,21,192.168.0.78:28252,172.16.38.36:25,,.xxxx.xxx.xx 代替名
Date/Time.ConnectorId,outbound to Office 365,SessionId,22,192.168.0.78:28252,172.167.38.36:25,*,,TLS ネゴシエーションがエラー NoCredentials で失敗しました手順 2 で識別された証明書のプロパティの状態
PrivateKey
を確認します。 これを行うには、以下のコマンドレットを実行します。Get-ChildItem -Path Cert:\LocalMachine\My | where {$_.Thumbprint -like 'Certificate thumbprint identified in step 2'} | Select-Object -Property thumbprint,hasprivatekey
次のコマンドレットを実行して、手順 2 で識別された証明書を削除します。
Get-ChildItem -Path Cert:\LocalMachine\My | where {$_.Thumbprint -like 'Certificate thumbprint identified in step 2'} | remove-item
注:
手順 2 で識別された証明書を削除する前に、Microsoft Exchange Serverを実行しているサーバーで実行されている他のアプリケーションに証明書の依存関係がないことを確認します。 依存関係がある場合は、手順 5 で説明されている証明書を使用してアプリケーションが開始されるように、アプリケーションで必要な変更を行います。
通常のインポート プロセスを使用して有効なサード パーティの証明書をインポートし、次のコマンドレットを実行して Exchange Management Shell から証明書の状態をチェックします。
Get-ExchangeCertificate | where {$_.rootca -eq 'third-party certificate'}
注:
Exchange Management Shell では、有効な秘密キーを持つ証明書が常に一覧表示されます。
次のコマンドレットを実行して、新しくインポートされたサード パーティ証明書で SMTP サービスを有効にします。
Enable-Exchangecertificate -thumbprint "Thumbprint of the new certificate" -services SMTP
注:
新しい証明書を使用して既存の証明書を置き換えるメッセージが表示されたら、「いいえ」と入力 します。
サード パーティの証明書が既にインポートされている場合、Exchange Serverは新しいサード パーティの証明書を使用することから始まります。
キュー内のメッセージに対して再試行を実行するには、次のコマンドレットを実行します。
Get-queue -resultsize unlimited | where {$_.status -eq 'retry'} | retry-queue
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示