摘要
- 早期 SMTP 把
VRFY与EXPN作为排障窗口:肯定答复可以公开一个邮箱,甚至逐行列出一张邮件列表的成员。 252建立了诚实的第三种状态:服务器不验证或不披露用户,却仍可接收邮件并尝试投递。名录判断、传输受理与最终送达因此不必再被冒充成同一件事。
当邮件服务器顺便回答名录问题
RFC 821 给出了一段极其直观的对话。客户端询问 VRFY Smith,服务器可以用 250 返回 Fred Smith 的全名与邮箱;如果此人已经转往别处,可以给出转发地址;查无此人时可以否定;若有两个 Smith,则必须回答 553 User ambiguous。
与它并列的 EXPN 更进一步。客户端交出邮件列表名称,成功的多行答复便能一行一个地列出成员邮箱。规范没有把这些结果写成模糊线索:VRFY 的肯定答复必须包含邮箱,EXPN 的肯定答复必须给出列表中的邮箱。服务器把本地掌握的名录状态变成了远端可以使用的协议证据。
这种能力在当时很有价值。发信前就能发现拼错的名字,转发规则不再藏在后台,多层邮件列表造成的循环也有线索可循。名录与传输都依赖同一套投递知识,把诊断命令放进 SMTP 看上去非常自然。
问题在于,这扇诊断窗口与公共邮件端口是同一扇窗。
同一份答案换了提问者
1989 年的 RFC 1123 进一步确认了排障价值:接收端必须实现 VRFY,应当实现 EXPN,但具体站点可以关闭两者,甚至只关闭某些列表。文档同时记下两面事实——管理员经常靠这些命令诊断投递和多层列表循环,EXPN 却可能造成明显的隐私与安全暴露。
垃圾邮件成为日常运营问题后,接口并未改变,提问者却变了。VRFY 能把猜测的人名变成有效地址判断,EXPN 能把一个列表名扩成一批地址。RFC 2505 因而建议 MTA 用开关或访问控制表限制调用者,把被关闭或拦截的 VRFY 默认回答设为 252,并让 EXPN 默认关闭。
这不是简单宣布某条命令“有害”。同样的字节,可能来自正在检查内部转发的管理员,也可能来自逐项搜集地址的陌生人。权限不在命令拼写里,而在提问者身份、管理边界与获准范围里。
不肯确认,不等于否认
如果协议只允许“是”与“否”,服务器会被逼着说谎。只检查地址格式便返回 250,等于声称完成了并不存在的验证;不论输入为何都返回 550,又等于声称用户不存在。RFC 5321 明确认为两种做法都不合规。
252 给出了第三条路:“无法 VRFY 用户,但会接收邮件并尝试投递。”它不证明邮箱存在,不保证后续每个 RCPT TO 都会被接受,更不是邮件抵达收件人的回执。它只声明:服务器不能或不愿作出这项名录断言,但正常的邮件投递程序仍可继续。
代理其他域收信的 MX 尤其需要这种状态。它可能知道地址格式合理,也知道自己为该域接收邮件,却没有最终邮箱库的实时视图。此时给出肯定或否定都可能越权,252 把不知道保留下来。
安全策略也借用了同一语义。RFC 5321 要求,站点若因安全原因关闭这些命令,应返回 252,而不是一个容易被理解为验证成功或失败的代码。拒绝披露不是用户不存在的证据。
三份记录不能合成一份
邮件系统经常把相邻状态压成结论:格式正确被写成“地址已验证”,某一跳收到 250 被写成“已送达”,查询被阻止又被写成“邮箱无效”。每一次压缩,都把一项局部观察扩张成更大的权威。
至少要保留三类记录。名录验证说明服务器确实确认了地址或列表展开;事务受理说明某台服务器在特定步骤接下了责任;最终送达则要经过后续路由、排队、转发和收件处理才能形成证据。252 刻意停在这些结果之前。
因此,监控系统既不应把 252 标绿为“验证成功”,也不应将它列为硬性无效地址。准确状态是:身份未知或不披露,但传输路径仍开放。之后的邮件事务可以增加证据,查询答复不能预支结果。
关上一扇窗,旁边可能还有一扇
关闭 VRFY 并不会消除全部收件人证据。RFC 5321 指出,有些服务器会在 RCPT 阶段泄露同样的有效性信息;另一些服务器把验证推迟到收到 DATA 之后,因而 RCPT 几乎不暴露什么。隐藏 VRFY 能增加多少安全性,取决于整条受理流程。
这限制了轻率的胜利宣言。命令策略可以关掉最便宜、最直接的名录查询,却无法保证响应时间、不同退信、全收域或后续状态通知完全没有线索。运营者必须检查组合后的信息面,而不能只看一个动词是否返回 252。
反过来也一样:攻击者还有别的方法,并不是继续公开 EXPN 的理由。削弱最便宜、最权威的枚举通道,仍会改变攻击成本与答案可信度。安全常常不是做到绝对保密,而是控制证据质量与查询代价。
诊断能力退回到合适边界内
RFC 5321 没有抹掉两条命令的用途。经过认证的用户与同一管理域内的管理员,仍可借它们审计邮件路由、发现敏感邮件被自动转出,或理解列表展开。站点可以只向经过认证的请求者开放。留下的是功能,撤回的是匿名者当然有权获知的假设。
当前 IANA SMTP 登记也保留了服务边界:服务器必须支持 VRFY,但是否在 EHLO 扩展清单中列出它是可选的;VRFY 与 EXPN 都被标为不得用于 Message Submission。用户有权提交外发邮件,不代表他自动取得接收系统的名录查询权。
SMTP 学会不回答,并不是靠撒谎或沉默。它开始诚实地回答一个更小的问题:服务器可以拒绝为某个人背书,同时保留接收邮件的可能;更丰富的诊断则留给有正当范围的关系。在一个靠答复码运转的协议里,252 为“这份答复究竟有权知道什么”划出了一条线。
来源
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
