技术解析 · 附来源的解答

ESMTP 扩展:扩展简单邮件传输协议

ESMTP 扩展是对原始简单邮件传输协议的增强,允许客户端和服务器在初始握手阶段协商各自的能力。客户端使用 EHLO 命令代替 HELO,请求获取服务器支持的扩展列表,从而在不破坏向后兼容性的前提下启用加密、身份验证和更大邮件尺寸等功能。

工作机制

该过程从客户端向服务器发送 EHLO 命令开始。服务器返回 250 OK 状态码,后跟其支持的扩展列表,例如 SIZE、STARTTLS 或 AUTH。这一协商阶段确保双方在实际传输邮件之前就会话能力达成一致。如果服务器不支持 ESMTP,会返回 500 或 502 错误,促使客户端回退到基本的 HELO 命令。

对发件人的重要性

ESMTP 对现代邮件的安全性和效率至关重要。没有这些扩展,发件人就无法使用 STARTTLS 加密连接,也无法使用 SMTP AUTH 向中继证明自己的身份。这可以防止凭据以明文传输,并保护邮件流的完整性。使用 SendHQ 工具的发件人可以验证 DNS 和身份验证设置,确保其基础设施支持这些必要的扩展。

常见操作说明

一个常见错误是没有处理从 EHLO 到 HELO 的回退,这可能导致与旧系统的连接失败。此外,某些防火墙或安全设备会执行 SMTP 检查,并可能剥离 EHLO 扩展,实际上禁用了 STARTTLS,迫使连接处于不安全状态。管理员必须确保网络中间设备不会干扰扩展协商过程。

具体示例

在一个典型会话中,客户端发送 EHLO mail.example.com。服务器响应 250-smtp.provider.com Hello、250-SIZE 52428800、250-STARTTLS、250-AUTH PLAIN LOGIN。客户端看到列表中有 STARTTLS,便立即发出 STARTTLS 命令将连接升级为 TLS,然后再发送 AUTH 命令提供凭据。

兼容性与标准

ESMTP 与原始 SMTP 规范保持严格的向后兼容。如果客户端过于老旧、无法理解 EHLO,服务器会继续使用基本的 SMTP 命令运行。这种分层设计让全球邮件生态得以演进并采用新的安全标准,同时确保邮件仍能在新旧不一的基础设施之间投递。

团队常问的问题

HELO 和 EHLO 有什么区别?

HELO 用于基本 SMTP,只用来标识客户端。EHLO 用于 ESMTP,既标识客户端,又请求服务器返回其支持的扩展列表。

ESMTP 会取代 SMTP 吗?

不会,ESMTP 是 SMTP 的扩展。它在增加新能力的同时,仍与原始协议保持兼容,以支持旧系统。

目前最常用的扩展有哪些?

最关键的扩展是用于加密的 STARTTLS、用于客户端身份验证的 AUTH,以及用于声明最大邮件大小限制的 SIZE。

一手资料