有谁知道如何告诉 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
smtp_tls_security_level = 加密或smtp_enforce_tls=yes
对于特定目的地,您可以使用smtp_tls_policy_maps
smtp_use_tls = yes和smtp_enforce_tls=yes已弃用。对于 Postfix 2.3 及更高版本,请改用smtp_tls_security_level。
请记住:强制 TLS 加密可能会导致未配置 TLS 的 SMTP 主机出现邮件传递问题。如果服务器仅用于将邮件发送到配置了 TLS 的内部服务器,那么在这种情况下这不是问题。但是,如果使用服务器将邮件传递到公共服务器,则不能假设所有服务器都支持 TLS。在这种情况下使用 smtp_tls_security_level = 可能
您不能在不重新编译源代码的情况下禁用 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
来自关于smtpd_tls_security_level=encrypt的后缀文档
如果您使用公共服务器,则无法在端口 25/tcp 上强制执行电子邮件加密。更好的解决方案是禁用来自客户端的 postfix smtpd 守护进程端口 25/tcp 的邮件传递,并启用 postfix 提交守护进程(这是一个特殊的 postfix smtpd 守护进程,仅用于接收来自本地客户端的邮件,在端口 587/tcp 上运行的RFC 4409中描述) . 为此,请设置smtpd_tls_security_level=may并
permit_sasl_authenticated
从smtpd_recipient_restrictions中删除。在master.cf
关于提交守护进程的注释行中:只是好奇,你怎么说它没有使用 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 注释),配置对我来说一目了然。