Temos uma instalação do SQL Server 2008R2 que estava enviando e-mail para nosso servidor Exchange 2010 agora desativado. Agora estamos executando um Exchange 2016 DAG com 2 hosts (mailserver1.example.com e mailserver2.example.com) com um ponteiro DNS chamado mail.example.com que faz referência a ambos os servidores. Portanto, quando desativamos o servidor antigo, mudamos de usar um nome de host real (severname.example.com) para mail.example.com. Ao fazermos isso, obtemos o seguinte erro:
The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account 1 (2017-02-14T15:41:00). Exception Message: Cannot send mails to mail server. (The remote certificate is invalid according to the validation procedure.).
Se eu alterar a configuração de email do banco de dados para apontar para um servidor individual no DAG (mailserver1.example.com), tudo funcionará bem.
Usamos um certificado curinga (*.example.com) nos servidores de e-mail, então não tenho certeza se esse é o problema.
Gostaria de corrigir o problema para manter a resiliência. Alguém pode me dizer o que não gosta?
EDIT: Então, me aprofundei em quais certificados estão instalados/sendo usados:
Get-ExchangeCertificate -server mailserver2.example.com
Thumbprint Services Subject
---------- -------- -------
133914D76770DE347949C1FF771A64B7B6 IP..... CN=mailserver2.example.com
4D2582DA78719BCC1B1CB8F33B3FAC2E54 IP..S.. CN=mailserver2
B39C5DED40D1C926A1ABDA2CA5B30FE305 ....S.. CN=Microsoft Exchange Server Auth Certificate
AD3C61F290199AB908ECB976A0C8341351 ....... CN=WMSvc-mailserver2
E6F14092B221239F51A62420FD74F2FA63 IP.WS.. CN=mailserver2.example.com
D1215C7C1E5D674E7C204FCB776D60F93E ...WS.. CN=*.example.com, OU=PremiumSSL Wildcard, O=Example Company...
Get-ExchangeCertificate -server mailserver1.example.com
Thumbprint Services Subject
---------- -------- -------
4C560FF28A576F814DFAD198C81912C3BE IP..... CN=mailserver1.example.com
B39C5DED40D1C926A1A8DA2CA5B30FE305 ....S.. CN=Microsoft Exchange Server Auth Certificate
A29DA1FA4C800AB5EAD22B0BFA39D7BC5B IP..S.. CN=mailserver1
184B109C120633C33711E26C40F4FAFFC6 ....... CN=WMSvc-mailserver1
22C69182932BE55A2F01B20C10FADBE359 IP.WS.. CN=mailserver1.example.com
D1215C7C1E5D674E7C244FCB776D60F93E ...WS.. CN=*.example.com, OU=PremiumSSL Wildcard, O=Example Company...
Get-ExchangeCertificate -domainname example.com
Thumbprint Services Subject
---------- -------- -------
D1215C7C1E5D674E7C644FCB776D60F93E ...WS.. CN=*.example.com, OU=PremiumSSL Wildcard, O=Example Company...
Get-ExchangeCertificate -domainname mail.example.com
Thumbprint Services Subject
---------- -------- -------
D1215C7C1E5D674E7C20D9FF776D60F93E ...WS.. CN=*.example.com, OU=PremiumSSL Wildcard, O=Example Company...
Quando uso o OPENSSL (conforme a resposta 1 abaixo), recebo nosso certificado CA interno (CN=mailserver2.example.com) em vez do certificado curinga.
EDIT 2: Aqui está a saída do comando OpenSSL: openssl s_client -connect mailserver1.example.com:25 -starttls smtp
Loading 'screen' into random state - done
CONNECTED(000001F4)
depth=1 /DC=com/DC=example/CN=example-Issuing-CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
0 s:/CN=mailserver1.example.com
i:/DC=com/DC=example/CN=example-Issuing-CA
1 s:/DC=com/DC=example/CN=example-Issuing-CA
i:/CN=example-Root-CA
---
Server certificate
-----BEGIN CERTIFICATE-----
< certificate info here >
-----END CERTIFICATE-----
subject=/CN=mailserver1.example.com
issuer=/DC=com/DC=example/CN=example-Issuing-CA
---
No client certificate CA names sent
---
SSL handshake has read 3875 bytes and written 485 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 2048 bit
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : AES256-SHA
Session-ID: < session ID >
Session-ID-ctx:
Master-Key: < master key >
Key-Arg : None
Start Time: 1487248994
Timeout : 300 (sec)
Verify return code: 20 (unable to get local issuer certificate)
---
250 XRDST
QUIT
DONE
O problema que você vê aqui está relacionado ao certificado SSL usado para o serviço SMTP oferecido pelo ambiente MS Exchange.
Para verificar o certificado SSL, você pode usar openSSL via:
Dependendo da configuração do seu ambiente MS Exchange, várias soluções podem ser aplicadas aqui (veja aqui para mais informações):
Atualização (devido à sua edição): parece que o serviço SMTP não está usando o certificado correto com base na sua solução de problemas. Portanto, o seguinte deve prendê-lo:
Você precisa executá-lo para o servidor Exchange.