Настройка TLS для Receive Connector в Exchange Server

Настроить корректное имя 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 обязательна для:

  • гибридных сценариев
  • внешнего SMTP
  • строгой TLS-проверки
  • Использовать публичный сертификат (например Let's Encrypt)
  • Следить за совпадением:
    • ReceiveConnector FQDN
    • MX записи
    • сертификата
# Шаг 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