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

принудительно использовать TLS для входящей почты в постфиксе

Я хочу включить обязательное шифрование TLS в исходящей почте для некоторых (не всех) доменов.

Я решил это для входящий почта, если я установил:

smtp_tls_security_level = may
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy

И в tls_policy

example.com encrypt

все подключения из принимающего домена example.com осуществляются через TLS.

Как я могу обеспечить это для исходящий почта для каких доменов?

Вам нужно посмотреть на функцию карты политик TLS. Он разработан для этого конкретного сценария. Это позволяет вам указать «может» или «должен» для разделения доменов; как это:

example.net           secure  match=example.net:.example.net
anotherexample.net    may     match=anotherexample.com:.anotherexample.com

Об этом подробнее здесь:

http://www.postfix.org/postconf.5.html#smtp_tls_policy_maps

Вы можете сделать это с помощью комбинации smtpd_tls_received_header и header_checks.


Ниже приводится краткое непроверенный пример, и может быть не совсем подходящим, но может служить полезной отправной точкой. Желательно начать с WARN или INFO действие для тестирования.
Также возможно, учитывая многострочный характер попытки сопоставления, что nested_header_check больше подходит, чем header_checks.

main.cf

header_checks = pcre:$config_directory/smtpd_tls

smtpd_tls

if /Return-Path:.+<.+@(example\.com)>/
!/Received: from ([^ ]+) \([^\)]+) +
 \(using [^ ] with cipher [^ ]+ [^(]+\)\)
 +[^(]+\)
 +by mx1\.example\.net/x
   REJECT mail from $1 must be sent using TLS
endif

Это предназначено для сопоставления всей почты с example.com и отклонения ее, если она не содержит шаблон, подобный:

Received: from smtp.example.com (smtp.example.com  [192.0.2.1])
    (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
    (No client certificate requested)
    by mx1.example.com