使用 Postfix 强制加密传出 SMTP

使用 Postfix 强制加密传出 SMTP

有人知道如何告诉 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

答案1

smtp_tls_security_level = 加密或者smtp_enforce_tls=yes

对于特定目的地,您可以使用smtp_tls_policy_maps

smtp_use_tls = 是smtp_enforce_tls=yes已弃用。对于 Postfix 2.3 及更高版本,使用smtp_tls_security_level反而。

请记住:强制实施 TLS 加密可能会导致未配置 TLS 的 SMTP 主机出现邮件传递问题。如果服务器仅用于向配置了 TLS 的内部服务器传递邮件,则在这种情况下不会出现问题。但如果服务器用于向公共服务器传递邮件,则不能假设所有服务器都支持 TLS。在这种情况下,请使用 smtp_tls_security_level = 可能

答案2

这个想法是强迫用户使用加密的外发 smtp 服务器配置他们的电子邮件客户端。在当前配置下,Thunderbird 让他们可以选择以纯文本形式与 smtp 服务器通信...

如果不重新编译源代码,您无法在 Thunderbird 中禁用该选项,但您可以配置 postfix stmpd 守护程序(从您的客户端接收邮件)以强制加密。为此,请使用smtpd_tls_security_level=加密,相当于过时的选项smtpd_use_tls=yessmtp_enforce_tls=yessmtpd_tls_security_level=加密smtp_enforce_tls=yes暗示smtpd_tls_auth_only=是

来自 postfix 文档smtpd_tls_security_level=加密

强制 TLS 加密:向 SMTP 客户端宣布支持 STARTTLS,并要求客户端使用 TLS 加密。根据RFC 2487如果是公共引用的 SMTP 服务器,则不得应用此选项。相反,此选项应仅用于专用服务器。

如果您使用公共服务器,则无法在端口 25/tcp 上强制实施电子邮件加密。更好的解决方案是禁用 postfix smtpd 守护程序在客户端端口 25/tcp 上的邮件传递,并启用 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

答案3

只是好奇,你怎么知道它没有使用 TLS? smtp_tls_loglevel 的默认值(与 smtpd_tls_loglevel 不同)为 0,因此默认情况下,您不会在 Postfix 的日志中看到有关出站邮件的 TLS 协商的任何内容。

如果您设置 smtp_tls_loglevel = 1 或更高,则发送消息时您应该在日志中看到如下一行:

3 月 7 日 22:28:10 rack postfix/smtp[27400]: 初始化客户端 TLS 引擎

我承认我很懒,但除此之外(以及上面 MS 的注释),乍一看这个配置对我来说还不错。

相关内容