Я хочу включить обязательное шифрование 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
Об этом подробнее здесь:
Вы можете сделать это с помощью комбинации 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