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

23

Кто-нибудь знает, как заставить 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
Саймон
источник

Ответы:

30

smtp_tls_security_level = encrypt или smtp_enforce_tls = yes

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

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

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

Сумар
источник
1
Я думаю, что он хочет применить его только от программного почтового клиента к отправляющему почтовому серверу. Не с mailserver на mailserver (см. Его комментарий, опубликованный 7 марта 2010 г. в 23:26)
Cojones
4

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

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

Из документации postfix о smtpd_tls_security_level = encrypt

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

Если вы используете общедоступный сервер, вы не можете применить шифрование электронной почты на порту 25 / tcp. Лучшее решение - отключить доставку почты с помощью демона postfix smtpd 25 / tcp от ваших клиентов и включить демон отправки postfix (который является специальным демоном postfix smtpd, используемым только для получения почты от ваших локальных клиентов, как описано в RFC 4409, работающем на порту 587 / tcp) , Для этого установите smtpd_tls_security_level = may и удалите 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
Сумар
источник
1

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

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

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

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

jlupolt
источник
1
Я понял, что Саймон хочет обеспечить шифрование всей почты с использованием TLS. smtp_use_tls = yes разрешает постфиксное использование TLS, если это поддерживает удаленный сервер (smtp_use_tls = yes эквивалентно smtp_tls_security_level = may). Соответствующее сообщение должно быть помещено в почтовый журнал, если исходящая почта была зашифрована с использованием TLS. Вы правы, что параметры smtp_ * предназначены для демона postfix, отличного от smtpd_ * (smtpd_ * предназначен для получения почты с удаленных серверов, smtp_ * для доставки почты на удаленные серверы).
Сумар
На самом деле я думаю, что вопрос может быть немного двусмысленным. По крайней мере, я не могу сказать, хочет ли Саймон, чтобы Postfix требовал TLS, или просто использовал его, если сервер получателя это поддерживает.
Jlupolt
1
Спасибо за ваши слова, я, наверное, плохо объяснил. Идея состоит в том, чтобы заставить пользователей настраивать свои почтовые клиенты с зашифрованным исходящим smtp-сервером. С текущим conf Thunderbird оставляет им возможность общаться с сервером smtp в виде обычного текста ... возможно ли избежать этого? Заранее спасибо, Саймон.
Симон
Простой способ определить, активен ли TLS, - это просмотреть необработанное сообщение на принимающей стороне и найти результаты проверки подлинности: domainkeys = нейтральный (без сиг-нала); Что указывает на то, что он не использует TLS
Скотт Стенсланд