在 Postfix 中强制发送邮件使用 TLS

在 Postfix 中强制发送邮件使用 TLS

我想对某些(并非全部)域的外发邮件启用强制 TLS 加密。

我解决了传入如果我设置了邮件:

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

以及tls_policy

example.com encrypt

来自接收域 example.com 的所有连接均通过 TLS 进行。

我该如何执行这个传出某些域名的邮件?

答案1

您需要查看 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

答案2

您可以通过以下方式实现此目的:smtpd_tls_received_headerheader_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

相关内容