我有一些嵌入式设备不再接受固件升级。它们只能使用 TLSv1.1 发送邮件,而公共邮件服务器不再支持该协议。
因此,我的想法是在局域网中(例如在 Raspberry Pi 上)设置本地 Postfix 服务器作为邮件中继,并使用 Postfix 从嵌入式设备接收邮件并将其转发到公共邮件服务器。执行此操作时,应将加密从 TLSv1.1 升级到 TLSv1.2。
我做了一些研究,但找不到好的方法来开始。有人能给我一些提示吗?
答案1
默认情况下,Postfix 接受 TLSv1.0 及以上版本来接收 ( smtpd
) 和发送 ( smtp
) 邮件。这是因为 SMTP 中的 TLS 是机会主义的本质上:它允许回退到未加密的连接,这也意味着它在设计上容易受到降级攻击。
$ /usr/sbin/postconf -d | grep -E "^smtp(d)?_tls_(mandatory_)?protocols"
smtp_tls_mandatory_protocols = >=TLSv1
smtp_tls_protocols = >=TLSv1
smtpd_tls_mandatory_protocols = >=TLSv1
smtpd_tls_protocols = >=TLSv1
如果你知道发送系统总是使用 TLSv1.1 发送消息,并且下一跳目的地(例如智能主机) 始终支持 TLSv1.2 (或更高版本),您可以强化您的配置:
# Accept mail from 192.0.2.0/24
mynetworks = 192.0.2.0/24
smtpd_sender_restrictions =
permit_mynetworks,
reject
# ...requiring encryption (TLSv1.1 or above)
smtpd_tls_security_level = encrypt
smtpd_tls_mandatory_protocols = >=TLSv1.1
smtpd_tls_protocols = >=TLSv1.2
smtpd_tls_mandatory_ciphers = medium
# Relay through a smarthost
smtp_tls_security_level = verify
smtp_tls_mandatory_protocols = >=TLSv1.2
smtp_tls_mandatory_ciphers = high
smtp_tls_wrappermode = yes
relayhost = [smarthost.example.com]:465
如果您没有使用智能主机,但想要确保在接收系统支持加密且不需要任何向后兼容性的情况下始终对出站消息使用加密,那么您可以熟悉两种技术: