Назад | Перейти на главную страницу

Принудительное шифрование исходящего SMTP с помощью Postfix

Кто-нибудь знает, как указать Postfix для шифрования исходящей почты?

Я настроил его на использование шифрования при приеме, но я не могу этого сделать с исходящей почтой. Это мое main.cf файл:

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
transport_maps = hash:/etc/postfix/transport

# tls config
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_CAfile = /etc/postfix/ssl/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

smtp_tls_security_level = зашифровать или smtp_enforce_tls = да

Для конкретных направлений вы можете использовать smtp_tls_policy_maps

smtp_use_tls = да и smtp_enforce_tls = да устарели. В Postfix 2.3 и новее используйте smtp_tls_security_level вместо.

Помните: применение шифрования TLS может вызвать проблемы с доставкой почты для узла SMTP, на котором не настроен TLS. Если сервер используется для доставки почты только на ваш внутренний сервер с настроенным TLS, в этом случае это не проблема. Но если сервер используется для доставки почты на общедоступные серверы, вы не можете предполагать, что все серверы поддерживают TLS. В этом случае используйте smtp_tls_security_level = май

Идея состоит в том, чтобы заставить пользователей настраивать свои почтовые клиенты с использованием зашифрованного исходящего SMTP-сервера. С текущей конфигурацией Thunderbird оставляет им возможность общаться с сервером smtp в виде обычного текста ...

Вы не можете отключить опцию в Thunderbird без перекомпиляции исходного кода, но вы можете настроить демон postfix stmpd (который получает почту от ваших клиентов) для принудительного шифрования. Для этого используйте smtpd_tls_security_level = зашифровать, что эквивалентно устаревшим вариантам smtpd_use_tls = да и smtp_enforce_tls = да. smtpd_tls_security_level = зашифровать и smtp_enforce_tls = да подразумевает smtpd_tls_auth_only = да

Из документации postfix о smtpd_tls_security_level = зашифровать

Обязательное шифрование TLS: объявите о поддержке STARTTLS клиентам SMTP и потребуйте, чтобы клиенты использовали шифрование TLS. В соответствии с RFC 2487 это НЕ ДОЛЖНО применяться в случае общедоступного SMTP-сервера. Вместо этого эту опцию следует использовать только на выделенных серверах.

Если вы используете общедоступный сервер, вы не можете принудительно использовать шифрование электронной почты на порту 25 / tcp. Лучшее решение - отключить доставку почты через порт 25 / tcp демона postfix smtpd от ваших клиентов и включить демон отправки postfix (который является специальным демоном postfix smtpd, используемым только для получения почты от ваших локальных клиентов, описанных в RFC 4409 работает на порту 587 / tcp). Для этого установите smtpd_tls_security_level = май и удалить permit_sasl_authenticated из smtpd_recipient_restrictions. В master.cf раскомментируйте строку о демоне отправки:

submission inet n       -       n       -       -   submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_resrictions=permit_sasl_authenticated,reject

Просто любопытно, как вы говорите, что он не использует TLS? Значение по умолчанию для smtp_tls_loglevel (которое отличается от smtpd_tls_loglevel) равно 0, поэтому по умолчанию вы не увидите ничего о согласовании TLS для исходящей почты в журналах Postfix.

Если вы установите smtp_tls_loglevel = 1 или выше, вы должны увидеть такую ​​строку в журнале при отправке сообщения:

7 марта 22:28:10 Rack postfix / smtp [27400]: инициализация механизма TLS на стороне клиента

Признаюсь, я ленив, но помимо этого (и примечаний ms выше) конфигурация мне с первого взгляда кажется прекрасной.