摘要
- SMTP 的 DATA 阶段以单独一行句点结束,因此正文里的同样一行必须通过可逆规则获得透明传输。
- 发送方在每个行首句点前再加一个;接收方识别孤立终止行,并从其他受影响行删掉一个句点。
- CHUNKING 后来用精确八位字节数和显式最后分块界定正文,把权威从内容扫描转移到计数。
同一条信道必须切换角色
RFC 821 的 SMTP 对话按命令、回复依次推进。DATA 暂时把同一有序字节流改成邮件正文。协议必须明确知道正文何时结束,命令对话何时恢复。
只有一个句点的行既直观又易于实现,却占用了用户文本的一种合法形式。普通内容与控制信号在同一命名空间里发生了碰撞。
透明是一份双边承诺
发送方逐行检查:行首若是句点,就再插入一个。接收方遇到孤立句点行时结束 DATA;若句点后还有字符,则删掉第一个句点。
线上形式因此不同于最终交付内容,但转换必须可逆。RFC 821 特别强调中继所做的变换也要能够还原。一方保护歧义,另一方负责解释和恢复;任何一方漏做,邮件都会提前结束或多出字符。
一个小例外进入所有行处理器
RFC 5321 数十年后仍保留这套透明规则,并规定为透明性额外复制的句点不计入 1000 八位字节的文本行上限。缓存、日志、中继和测试都必须分清自己看到的是存储正文、规范 SMTP 文本,还是填充后的线上形式。
字节计数移除了禁用序列
RFC 3030 的 CHUNKING 扩展以 BDAT 取代 DATA。每条 BDAT 命令声明随后数据的精确八位字节数,LAST 表示最后一块。接收方不再扫描正文寻找终止行,孤立句点在块内也就没有控制意义。
它没有普遍替代 DATA。服务器先通过 EHLO 公告 CHUNKING,客户端确认能力后才能使用 BDAT,而服务器仍必须支持 DATA。新能力通过协商加入,没有重定义旧对端能理解的输入。
摆脱哨兵后,计数成为权威
长度框定改变了故障方式。声明过多或过少都会移动边界:后续材料可能被吞进块中,也可能暴露给命令解析器。BINARYMIME 因而依赖 CHUNKING,任意八位字节不能安全依赖 DATA 的逐行哨兵。
信任没有消失,只是从内容变换转移到精确算术和事先能力协商。
来源与边界
依据为 RFC 821、RFC 5321 与 RFC 3030。它们不提供部署率。支持 CHUNKING 的服务器仍须接受 DATA;句点透明也不是加密、认证或完整性保护。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
