我已经设置了 postfix,以便电子邮件客户端使用端口 465 (smtps) 发送出站邮件。我不太明白 smtps (端口 465) 和提交 (端口 587) 之间的区别
为客户端配置 postfix 以安全发送邮件时的“最佳实践”是什么?只使用 smtps?还是同时使用提交和 smtps?
答案1
编辑:这个答案基于 RFC-6409,不再正确,请参阅较新的 RFC-8314
端口 465 用于 SSL 保护的 SMTP 连接。但是,随着 STARTTLS 的推出,使用该端口进行 SMTP 连接已被弃用:“撤销 smtps TCP 端口”如今,您不应再使用端口 465 进行 SMTPS。相反,请使用端口 25 接收来自其他服务器的邮件,或使用端口 587 接收来自客户端的电子邮件,这些客户端需要通过您的服务器将邮件发送到其他域,进而发送到其他服务器。
另外需要注意的是,端口 587 专用于邮件提交 - 邮件提交旨在更改消息和/或提供身份验证:
- 为尝试提交邮件的客户端提供并要求身份验证
- 提供安全机制,防止提交未经请求的批量邮件(垃圾邮件)或受感染的邮件(病毒等)
- 根据组织的需要修改邮件(重写发件人部分等)
提交到端口 587 应该支持 STARTTLS,因此可以加密。另请参阅RFC#6409。
答案2
总结
新的建议是支持提交/简讯和提交暂时使用 STARTTLS,一旦不再使用,就逐步淘汰后者。(同样的建议也适用于 POP3 与 POP3S 以及 IMAP 与 IMAPS。)
细节
最佳实践已经改变RFC 8314 第 3.3 节:
当为“提交”服务(默认端口 465)建立 TCP 连接时,TLS 握手立即开始。[…]
由于端口 465 的情况(见第 7.3 节),端口 587 上的 STARTTLS 机制部署得相对广泛。这与 IMAP 和 POP 服务不同,在这些服务上,隐式 TLS 的部署比 STARTTLS 更为广泛。 随着时间的推移,将 MUA 软件使用的核心协议迁移到隐式 TLS 是可取的,这不仅是为了一致性,也是为了在 附录 A。 然而,为了最大限度地利用加密进行提交,最好在几年的过渡期内同时支持通过 TLS 进行消息提交的两种机制。因此,在此过渡期内,客户端和服务器应在端口 587 上实现 STARTTLS,并在端口 465 上实现隐式 TLS。请注意,如果实现正确,并且客户端和服务器都配置为在消息提交之前要求成功协商 TLS,则端口 587 上的 STARTTLS 和端口 465 上的隐式 TLS 的安全属性之间没有显著差异。
所引附录 A然后详细说明了对所有 SMTP、POP3 和 IMAP 都采用隐式 TLS 的决定,因为这些要点
- 我们想仅有的无论如何,到处都有加密连接,因此,在实践中不使用兼容性的情况下,维护所有这些协议的向后兼容版本是没有意义的
- 由于在多个实现中存在相同的问题,STARTTLS 协商阶段已被利用
答案3
作为 IETFRFC8314 第 7.4 节 概述,“尽管已经在端口 587 上部署了 STARTTLS,但它并没有取代在端口 465 上部署使用隐式 TLS 提交。”
由于 578/tcp(STARTTLS)太容易受到中间人攻击,因此 465/tcp(直接 TLS)目前在互联网上具有强大的 SMTP MTA 部署。