如果向外部域的邮件会延期"TLS 协商失败,出现错误 NoCredentials"错误

症状

在内部部署 Exchange Server (2016年或 2013年) 中排队发送到外部域的电子邮件。检查状态时,您会收到以下错误消息:

421 4.4.1 连接超时。尝试故障切换到备用主机上,但都没有成功。既没有备用主机或传递给所有的备用主机失败。

此外,以下错误条目发送连接器日志中的指示失败传输层安全 (TLS) 协商:

TLS 协商失败,出现错误 NoCredentials

原因

如果以下情况属实,将出现此问题:

  • 用于出站 TLS 证书没有私钥。

  • 您可以通过使用证书的颁发者SubjectName字符串填充TLSCertificateName属性。另外, < i > < S > SubjectName 字符串中的颁发者字符串属性用于出站 TLS 发送连接器中将电子邮件路由到外部域。

解决方案

若要解决此问题,请按照下列步骤操作:

  1. 启用了日志记录是权威来发送电子邮件的发送连接器上。若要执行此操作,请作为管理员运行以下 PowerShell cmdlet: Set-SendConnector "NameOfTheSendCconnector" -ProtocolLoggingLevel Verbose

  2. 查看发送连接器日志,以确定在出站 TLS 过程中使用的证书。例如,日志项可能如下所示: Date/Time.ConnectorId,Outbound to Office 365,SessionId,16,192.168.0.78:28252,172.16.38.36:25,*,,Sending certificate 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,192.168.0.78:28252,172.16.38.36:25,*,"CN=xxxxxx, OU=xxxxxx, O=xxxx, L=xxxx, S=xxxxx, C=xx",Certificate issuer name Date/Time.ConnectorId,Outbound to Office 365,SessionId,19,192.168.0.78:28252,172.16.38.36:25,*,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,Certificate serial number Date/Time.ConnectorId,Outbound to Office 365,SessionId,20,192.168.0.78:28252,172.16.38.36:25,*,xxxxxxxxxxxxxxxxxxxxxxxxxxxx,Certificate thumbprint Date/Time.ConnectorId,Outbound to Office 365,SessionId,21,192.168.0.78:28252,172.16.38.36:25,*,*.xxxx.xxx.xx alternate names Date/Time.ConnectorId,Outbound to Office 365,SessionId,22,192.168.0.78:28252,172.167.38.36:25,*,,TLS negotiation failed with error NoCredentials

  3. 检查PrivateKey属性在步骤 2 中标识的证书的状态。若要执行此操作,请运行以下 cmdlet: Get-ChildItem -Path Cert:\LocalMachine\My | where {$_.Thumbprint -like 'Certificate thumbprint identified in step 2'} | Select-Object -Property thumbprint,hasprivatekey

  4. 通过运行以下 cmdlet 第 2 步中删除标识的证书: Get-ChildItem -Path Cert:\LocalMachine\My | where {$_.Thumbprint -like 'Certificate thumbprint identified in step 2'} | remove-item注意:删除在步骤 2 中标识的证书之前,请确保该运行 Microsoft Exchange Server 的服务器运行的任何其他应用程序上的证书没有依赖性。如果没有一个依赖项,在应用程序中执行所需的更改,以便在应用程序启动使用在步骤 5 中提到的证书。

  5. 导入通常导入过程中,通过有效的第三方证书,并通过运行以下 cmdlet 检查 Exchange 管理外壳程序从证书的状态。 Get-ExchangeCertificate | where {$_.rootca -eq 'third-party certificate'}注意:Exchange 管理外壳程序总是列出具有有效的专用密钥的证书。

  6. 通过运行以下 cmdlet 启用新导入的第三方证书上的 SMTP 服务: Enable-Exchangecertificate -thumbprint "Thumbprint of the new certificate" -services SMTP注意:当出现提示时要使用的新证书来替换现有的证书时,请键入No

  7. 如果已导入第三方证书,Exchange Server 将开始使用新的第三方证书。

  8. 运行以下 cmdlet 执行针对邮件重试队列中。 Get-queue -resultsize unlimited | where {$_.status -eq 'retry'} | retry-queue

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×