Мне было поручено настроить сервер Postfix, работающий в Ubuntu. Электронные письма отправляются через мой ретранслятор, и все в порядке, за исключением того факта, что я не могу заставить TLS работать с Gmail или другими почтовыми клиентами. Например, посмотрите TLS-вывод моего файла main.cf:
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/company.com.crt
smtpd_tls_key_file=/etc/ssl/private/company.com.key
smtpd_tls_CAfile=/etc/ssl/certs/gd_bundle.crt
smtp_tls_CApath=/etc/ssl/certs
smtpd_use_tls=yes
smtpd_tls_auth_only=yes
smtpd_tls_security_level=may
smtp_tls_security_level=may
smtp_tls_loglevel=1
smtpd_tls_loglevel=1
smtp_tls_note_starttls_offer=yes
smtpd_tls_session_cache_database=btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database=btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
Я сделал следующее через Telnet, чтобы проверить STARTTLS:
Connected to localhost.
Escape character is '^]'.
220 prod-email.company.local ESMTP Postfix (Ubuntu)
EHLO localhost
250-prod-email.company.local
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8
STARTTLS
220 2.0.0 Ready to start TLS
Я также вижу, как TLS устанавливает соединения со многими другими серверами ретрансляции / обмена в журналах (их гораздо больше, чем эти примеры):
Nov 2 11:08:58 prod-email postfix/smtp[7864]: Trusted TLS connection established to mx2-us1.ppe-hosted.com[67.231.154.163]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Nov 2 11:22:23 prod-email postfix/smtp[8672]: Trusted TLS connection established to mail.relaissanmaurizio.it[194.209.228.112]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Nov 2 11:22:25 prod-email postfix/smtp[8689]: Trusted TLS connection established to mail.relaissanmaurizio.it[194.209.228.112]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Nov 2 11:31:06 prod-email postfix/smtp[8676]: Trusted TLS connection established to mx1-us1.ppe-hosted.com[148.163.129.50]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Nov 2 11:51:13 prod-email postfix/smtp[9165]: Trusted TLS connection established to mail.relaissanmaurizio.it[194.209.228.112]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Nov 2 11:51:15 prod-email postfix/smtp[9229]: Trusted TLS connection established to mail.relaissanmaurizio.it[194.209.228.112]:25: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
Я также вижу эти странные журналы в /var/log/mail.log для конкретного клиента:
454 4.7.0 Connection is not TLS encrypted. Recipient organization requires TLS.
Как это возможно, если кажется, что я предлагаю использовать TLS для исходящих писем? По крайней мере, это выглядит так, согласно приведенным выше журналам (TLS-соединение установлено).
У меня вопрос: почему я не вижу, чтобы эти TLS-соединения были установлены с серверами Gmail или сервером в приведенном выше примере? Я все еще получаю маленький красный замок на полученных сообщениях Gmail, отправленных через этот сервер ретрансляции, о том, что они не шифруются. И часть моей почты откладывается, потому что в ней говорится, что соединение не зашифровано TLS?
Как я могу убедиться, что TLS работает правильно и что все исходящие электронные письма шифруются с помощью TLS для тех, кто принимает протокол TLS?
Любая помощь очень ценится.
Наилучшие пожелания
РЕДАКТИРОВАТЬ:
openssl s_client -connect localhost:25 -starttls smtp
STARTTLS
554 5.5.1 Error: TLS already active
Не дает мне никаких ошибок относительно моих сертификатов.
Заголовки электронной почты для Gmail и Outlook также не показывают шифрование TLS.
Я в недоумении...
ОБНОВЛЕНИЕ: я просто попытался заставить это работать, обновив используемые сертификаты (в любом случае срок действия сертификата с подстановочными знаками истек в декабре), а TLS все еще не работает должным образом. Пожалуйста помоги.
ОБНОВЛЕНИЕ: я также попытался принудительно использовать TLS для Gmail и получил следующую ошибку:
TLS is required, but was not offered by host alt1.gmail-smtp-in.l.google.com[74.125.192.27]
Почему Google не предлагает TLS? Я смущен...
Вы сидите за брандмауэром?
Если да, проверьте, используете ли вы правило проверки ESMTP. Может помочь удаление этого правила из global_policy.
Я сравнил вашу конфигурацию Postfix с рабочей конфигурацией и заметил, что ваша конфигурация отсутствует smtp_use_tls = yes
.
В соответствии с это сообщение в списке рассылки postfix, записи smtp_ * применяются к вашему SMTP-серверу как отправитель, а записи, начинающиеся с smtpd_ * применяется к вашему SMTP-серверу как получатель. Кажется, что ваши проблемы ограничиваются вашим SMTP-сервером как отправитель.
Я также нашел эта документация Postfix, в котором говорится, что smtp_use_tls
по умолчанию установлено значение «нет».
Поэтому я бы предложил установить smtp_use_tls = yes
и посмотрите, поможет ли это. Если нет, возможно, проблема в других настройках smtp_ *.
РЕДАКТИРОВАТЬ: smtp_use_tls
должен быть отменен smtp_tls_security_level
в более новых версиях Postfix. Я заметил, что вы не упомянули свою версию Postfix, но это, вероятно, поможет, только если она старше 2.3.
Удаление ESMTP из глобальной политики брандмауэра Cisco решило эту проблему. ESMTP по умолчанию включен в брандмауэре Cisco.