技术解析 · 附来源的解答
SMTPS 隐式 TLS
SMTPS 隐式 TLS 是一种保护 SMTP 通信的方式,TLS 握手在连接建立后立即进行。STARTTLS 以明文会话开始,而 SMTPS 则要求在交换任何 SMTP 命令之前就对连接进行加密。
工作机制
在隐式 TLS 连接中,客户端与服务器建立 TCP 连接,通常使用 465 端口。服务器会立即等待 TLS 握手。如果握手失败,或客户端试图发送明文,服务器就会断开连接。这确保了身份验证凭据、邮件内容等敏感数据绝不会以明文传输。
与 STARTTLS 的比较
STARTTLS 属于显式 TLS,即会话在 587 或 25 端口上以明文开始,客户端发送 STARTTLS 命令将连接升级为加密连接。SMTPS 隐式 TLS 去掉了这个升级步骤,从而消除了降级攻击的风险,即中间人剥离 STARTTLS 命令,迫使会话以明文进行。
对发件人的重要性
使用隐式 TLS 能为事务性邮件提供更强的安全保障。它把加密作为通信的前提条件,既能防止意外的明文泄露,也简化了客户端配置。开发者可以使用 SendHQ 免费工具检查整体邮件配置,确保基础设施符合现代安全标准。
运维说明
许多旧系统仍然依赖 25 或 587 端口。配置 SMTPS 时,请确保客户端库明确设置为 SSL 或 TLS 模式,而不是 STARTTLS。如果把客户端错误地配置为在 465 端口上使用 STARTTLS,就会导致超时或连接重置,因为服务器在等待 TLS 握手,而客户端却在发送明文。
实现示例
典型的实现方式是将 SMTP 客户端配置为连接 smtp.example.com 的 465 端口,并启用 SSL/TLS 选项。客户端先建立 TCP 套接字并完成 TLS 握手,然后才发送 EHLO 命令,开始邮件传输过程。
团队常问的问题
SMTPS 隐式 TLS 使用哪个端口?
SMTPS 隐式 TLS 的标准端口是 465,该端口已在 IANA 注册,现代 RFC 也推荐将其用于安全的邮件提交。
SMTPS 与 STARTTLS 不同吗?
不同。SMTPS 是隐式的,加密会立即开始。STARTTLS 是显式的,先以明文开始,再通过一条命令升级为加密连接。
为什么选择隐式 TLS 而不是显式 TLS?
隐式 TLS 更能抵御降级攻击,因为在首先建立安全的加密通道之前,它拒绝进行任何通信。
一手资料
- RFC 8314:SMTP 之外邮件协议的明文传输注意事项 — RFC Editor
- 服务名称与传输协议端口号注册表 — IANA