Настроить корректное имя TLS-сертификата (FQDN), которое будет использоваться Receive Connector при STARTTLS.
Get-ExchangeCertificate | fl Thumbprint,Subject,Services
Убедиться:
Сертификат содержит нужное имя (CN или SAN), например: mail.domain.ru Назначен для SMTP (Services : SMTP)
Get-ReceiveConnector | fl Name,Server,Fqdn,TlsCertificateName
Обратить внимание:
Fqdn — имя, которое сервер объявляет в EHLO TlsCertificateName — какой сертификат используется для TLS
Формат:
<I>Issuer<S>Subject
Пример:
$cert = Get-ExchangeCertificate -Thumbprint XXXXX $TlsName = "<I>$($cert.Issuer)<S>$($cert.Subject)" $TlsName
Set-ReceiveConnector "Default Frontend EX01" -TlsCertificateName $TlsName
Set-ReceiveConnector "Connector Name" -Fqdn mail.domain.ru
Важно: FQDN должен совпадать с CN или SAN сертификата иначе возможны ошибки TLS (Mismatch)
Restart-Service MSExchangeTransport Restart-Service MSExchangeFrontEndTransport
Проверка через openssl:
openssl s_client -starttls smtp -connect mail.domain.ru:25
Проверить:
какой сертификат отдается совпадает ли CN/SAN
| Ошибка | Причина |
| TLS negotiation failed | Неверный сертификат |
| Certificate mismatch | FQDN не совпадает |
| STARTTLS не работает | Сертификат не назначен SMTP |
| Используется self-signed | Не задан TlsCertificateName |
По умолчанию Exchange может использовать self-signed сертификат.
Явная настройка TlsCertificateName обязательна для:
# Шаг 1. Проверяем текущие настройки коннектора получения в поле TlsCertificateName Get-ReceiveConnector -Server $env:COMPUTERNAME | Where-Object {$_.Bindings -match ":587"} | Format-List Name,Bindings,Fqdn,AuthMechanism,PermissionGroups,TlsCertificateName #Шаг 2. Заходим в EMS и находим Thumbnail нужного сертификата Get-ExchangeCertificate | ?{$_.services -match "S"} #или в ISE Get-ExchangeCertificate $MyThumbnail = "09F4EA0227B92441F804A4E87197F0206358B461" #Шаг 3. Просматриваем настройки найденного сертификата Get-ExchangeCertificate $MyThumbnail | select Thumbprint,NotAfter, Subject, DnsNameList #Шаг 4. Назначаем сертификат. $cert = Get-ExchangeCertificate -Thumbprint $MyThumbnail $EXSERVER = $env:COMPUTERNAME $EXSERVERFULL = "$EXSERVER.$env:USERDNSDOMAIN".ToLower() $tlscertificatename = "<I>$($cert.Issuer)<S>$($cert.Subject)" get-ReceiveConnector "$EXSERVER\Client Frontend $EXSERVER" | fl * Set-ReceiveConnector "$EXSERVER\Client Frontend $EXSERVER" -TlsCertificateName $tlscertificatename