SMTP 与 ESMTP 有什么区别?
SMTP 和 ESMTP 的区别是什么?我的邮件服务器是否必须支持 ESMTP?
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)自 1982 年 RFC 821 首次定义以来,一直是互联网邮件传输的核心协议。ESMTP(Extended SMTP)则是 1995 年 RFC 1869(后合并入 RFC 5321)定义的扩展,是目前实际使用的标准。
核心区别在于握手命令:原始 SMTP 使用 HELO 命令标识客户端,服务器仅回复 250 OK,不提供能力声明。ESMTP 改用 EHLO 命令,服务器返回多行 250 响应,逐行列示支持的扩展能力,例如 AUTH LOGIN(RFC 4954)、STARTTLS(RFC 3207)、PIPELINING(RFC 2920)、SIZE(RFC 1870)、DSN(RFC 3461)等。
扩展命令集:基于 EHLO 声明的能力,ESMTP 客户端可使用扩展命令——例如 STARTTLS 实现明文到加密的升级,AUTH 完成 SMTP 认证,DSN 请求投递状态通知。这些扩展命令在原始 SMTP 中不存在。
兼容性机制:RFC 5321 规定客户端应当优先发送 EHLO;若服务器回复 500/502 命令未识别,客户端回退发送 HELO。因此,绝大多数现代 MTA(Postfix、Exim、Exchange、Sendmail)均完全支持 ESMTP,同时保持对仅支持 HELO 的古老服务器的向后兼容。
现实意义:当前互联网邮件传输中,若不支持 ESMTP,则意味着:无法使用 STARTTLS 加密传输(所有邮件明文传输,存在中间人攻击风险)、无法使用 SMTP AUTH 认证(客户端无法安全地以用户身份发送邮件)、无法使用 PIPELINING 提升投递并发效率、无法请求 DSN 退信通知。
简而言之:现代邮件服务器必须支持 ESMTP。RFC 5321 明确将 EHLO 作为标准握手,原始 SMTP (HELO-only) 已是历史遗留,仅存在于 20 多年前的古老系统。
参考来源:RFC 5321 — Simple Mail Transfer Protocol · RFC 1869 — SMTP Service Extensions
