Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Número de KB original: 4495258
Síntomas
Email mensajes que se envían a dominios externos se ponen en cola en Exchange Server locales (2016 o 2013). Al comprobar el estado, recibirá el siguiente mensaje de error:
421 4.4.1 Se agotó el tiempo de espera de la conexión." Intentó conmutar por error a un host alternativo, pero eso no se realizó correctamente. No hay hosts alternativos o no se pudo entregar a todos los hosts alternativos.
Además, la siguiente entrada de error en los registros de Send Connector indica que se ha producido un error en la negociación de seguridad de la capa de transporte (TLS):
Error en la negociación tls con el error NoCredentials
Causa
Este problema ocurre si se cumplen las siguientes condiciones:
- Falta una clave privada en el certificado que se usa para TLS de salida.
- El atributo se
TLSCertificateName
rellena mediante las cadenas Issuer y SubjectName del certificado. Además, el<I>Issuer string<S>SubjectName string
atributo se usa para TLS saliente dentro del conector de envío para enrutar mensajes de correo electrónico a dominios externos.
Solución
Para resolver este problema, siga estos pasos:
Habilite el registro en el conector de envío que sea autoritativo para enviar mensajes de correo electrónico. Para ello, ejecute el siguiente cmdlet de PowerShell como administrador:
Set-SendConnector "NameOfTheSendCconnector" -ProtocolLoggingLevel Verbose
Revise los registros de Send Connector para identificar el certificado que se usa durante tls de salida. Por ejemplo, la entrada de registro puede ser similar a la siguiente:
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 nombres alternativos
Date/Time.ConnectorId,Outbound to Office 365,SessionId,22,192.168.0.78:28252,172.167.38.36:25,*,,TLS negotiation failed with error NoCredentialsCompruebe el estado de la
PrivateKey
propiedad para el certificado identificado en el paso 2. Para ello, ejecute el siguiente cmdlet:Get-ChildItem -Path Cert:\LocalMachine\My | where {$_.Thumbprint -like 'Certificate thumbprint identified in step 2'} | Select-Object -Property thumbprint,hasprivatekey
Quite el certificado identificado en el paso 2 mediante la ejecución del siguiente cmdlet:
Get-ChildItem -Path Cert:\LocalMachine\My | where {$_.Thumbprint -like 'Certificate thumbprint identified in step 2'} | remove-item
Nota:
Antes de quitar el certificado que se identifica en el paso 2, asegúrese de que no haya ninguna dependencia del certificado en ninguna otra aplicación que se ejecute en el servidor que ejecuta Microsoft Exchange Server. Si hay una dependencia, realice los cambios necesarios en la aplicación para que la aplicación se inicie mediante el certificado que se menciona en el paso 5.
Importe un certificado de terceros válido a través del proceso de importación habitual y, a continuación, compruebe el estado del certificado desde el Shell de administración de Exchange mediante la ejecución del siguiente cmdlet.
Get-ExchangeCertificate | where {$_.rootca -eq 'third-party certificate'}
Nota:
El Shell de administración de Exchange siempre enumera los certificados que tienen una clave privada válida.
Habilite el servicio SMTP en el certificado de terceros recién importado mediante la ejecución del siguiente cmdlet:
Enable-Exchangecertificate -thumbprint "Thumbprint of the new certificate" -services SMTP
Nota:
Cuando se le pida que reemplace el certificado existente mediante un nuevo certificado, escriba No.
Si el certificado de terceros ya se importó, Exchange Server comienza con el nuevo certificado de terceros.
Ejecute el siguiente cmdlet para realizar un reintento en los mensajes de la cola.
Get-queue -resultsize unlimited | where {$_.status -eq 'retry'} | retry-queue