摘要
- 1995 年 9 月的 RFC 1846针对从不接收邮件的专用主机提出实验性
521回应。没有 SMTP 服务时,发送方会把连接失败当作可能的暂时故障,让误投邮件排队数日;MX 中继或一个只负责拒收的小服务器可以更早给出永久答案。 - 提案还发现,有些现成客户端收到
521后若连接立即关闭,仍会重新排队;服务器等它发出 QUIT,才会促使它退回邮件。2015 年的 RFC 7504正式把521用于从不收信的主机,并增加中继提前知道某域名不收信时使用的556。
「没人接」让发信方继续工作
邮件系统的耐心有用。收件服务器断电半天,寄出的信能留下来,等它恢复再送。问题在于有些机器压根没有邮箱。Alain Durand 和 Francis Dupont 在 1995 年的实验性 RFC 中指出,互联网主机日益分工:有的回答 DNS 查询,有的提供 NTP 时间,并不承担邮件服务。人仍可能在地址里误填这些主机名。向它们发信时,通常连 SMTP 服务器都接不上。
发信程序不能从「今天没人接」推导出「这台机器永远不收信」。按当时的处理方式,它要把失败当成暂时状态,把邮件存起来,过一阵再试;也许以后会有人启动 SMTP 服务。RFC 说,这种误投可能在队列里待上几天,最终带着让人摸不着头脑的错误退回。收件方没有维护邮箱,代价却由发送系统的存储、反复连接和等待退信的人承担。
1982 年的 SMTP 规范把递送设计成一场对话:发送端连到接收端,发出命令,再根据数值回应决定下一步。1995 年缺少的不是更复杂的重试,而是由知道事实的一方说清事实。Durand 和 Dupont 为此提出 521:主机不接收进入的邮件。这个数字不是给专用机器加一个真正的邮箱,而是让发送方别再替不存在的邮箱守夜。
拒收可以在两个位置发生。负责该地址的 MX 中继可在 SMTP 对话确认收件人时回 521;或者不收邮件的主机自己运行一个最小化服务器,所有邮件一律拒绝。前者由中介替主机说话,后者由主机自己开门说「不」。无论哪种做法,必须有人为「这里永远不收邮件」承担声明责任。没有这句话,其他机器只能继续猜测它是否只是暂时关门。
中继方案还有一致性要求。RFC 1846说,如果某一优先级的 MX 中继已替不收邮件的主机拒收,那么更低优先级的中继也应这样做。否则第一条路给出永久拒绝,第二条路却仍接受尝试或保持沉默。同一个目的地的不同入口若讲出不同规则,重试就会找到继续发生的地方。
「不收」说得太急,也可能没人信
最小服务器一接到 SMTP 连接便可发送 521 问候,后面带上主机的正式名称或 IP 地址。接着它可以直接关闭连接,也可以继续读取命令,对 QUIT 以外的命令都回 521,等客户端告别。规范还禁止这类主机被列作任何域名的 MX:不能一面宣告自己从不收信,一面在 DNS 里挂牌充当收信机器。
为什么说完还要等?RFC 的作者记录了一处现成软件的反应差异。有些客户端收到 521 后如果连接立刻断掉,会把它当成暂时故障,重新把邮件放回队列。小服务器若多留一会儿,这些客户端会发出 QUIT,并立即把邮件退给发信人。拒收数字没有变;它周围的会话顺序决定了客户到底听没听懂。纸面上的「永久拒绝」只有穿过已部署软件,才真正结束重复劳动。
这使得一台不收信的机器仍得履行一点邮件职责:保持可连、报上自己的身份、发出固定答复,必要时等对方完整结束会话。它不用保管任何来信,却能防止别人替它保管一封永远送不到的信。这是 521 的操作悖论:运行一个只为拒绝服务而存在的服务。
1995 年的文件属于实验性提案,并邀请实现者报告经验。关于「有些客户端」把快速断开视为暂时错误,原文给出的是互操作观察,没有统计受影响软件或队列的数量。若要判断当年具体有多少邮件被拖住,还需当时的队列日志或实现调查。机制本身已经足够清楚:有回应不等于发送方据此停止。
二十年后,拒绝被放到更精确的位置
2015 年的 RFC 7504把 521 正式纳入 SMTP。它说这个号码已经广泛使用,但此前并未正式成为基础协议的一部分。新规范把它限定在连接开始时,用来表明主机在任何情况下都不收邮件。一般的 554 拒绝可以针对特定来源、地址或情形;521 说的是整台机器的服务性质。RFC 7504 由此结束了 1995 年的实验。
同一年,RFC 7505提供了另一种公开「不收信」的方法:DNS 中的 null MX。邮件发送方先查 MX;若没有 MX,通常还会尝试 A 或 AAAA 地址。一个只运行网页或其他服务的域名便可能被误当成邮件目的地。null MX 让域名直接宣告不接受邮件,发送方在连接主机之前就能得到答案。它讲的是域名政策,不是主机接通 SMTP 后说的话。
RFC 7504还设立 556:中间邮件系统若通过 null MX 等信息,已知道转发地址所在域名不收邮件,就可以向把信交给它的系统回报,而无需去连接最终主机。521 是主机开门时给出的拒绝;556 是中继在门外就已掌握域名规则时给出的拒绝。两个号码把谁知道、何时知道、在哪里结束重试分开了。
1995 年,一台没有邮箱的机器可能要启动一个会说「不」的小程序,才能让别人的队列及时停下。2015 年,域名还可以在 DNS 里先把同一类事实公开。这里真正省掉的不是一封信,而是每一台发送机器反复猜测的时间。沉默把工作转嫁给其他人;可靠的拒绝才让工作结束。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限战略圈层会员
战略圈层
所有读者均可浏览。加入并登录后可解锁档案简报。
加入战略圈层仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance





