摘要
- RFC 1523 有意压低
text/enriched的能力:ASCII 或兼容字符集的原始内容应当让非 MIME 阅读器勉强可读,最低实现则可剥去格式命令,恢复连续正文。 - 这种降级是有规则的投影,不是等价复制。接收端不认识的效果、隐藏参数、本地排版和另一项
multipart/alternative表示,都可能在字句尚存时消失。
一个 CRLF 为什么变成空格
1993 年 9 月以 Informational(信息类)文档发布的 RFC 1523 定义了 text/enriched,修订了 RFC 1341 中的 text/richtext。它并没有试图把文字处理器塞进电子邮件,而是选择一套有限的强调、缩进、对齐和字体命令。
这套格式要同时面对两种旧现实。其一,传输系统可能在长行中插入物理折行;其二,收件端可能只会把字符直接打到终端。于是规范规定:单个 CRLF 显示为空格;连续 N 个 CRLF 才显示为 N−1 个换行。传输折行不必破坏段落,真正的空行仍能留下结构。
这不是无损转换。原始字节、传输后的行结构、解析得到的逻辑文本与屏幕上的段落是四层记录。只保存最后一层,就无法判断空格来自作者、网关还是阅读器。
能力越少,正确显示的概率越大
RFC 1523 明说,格式能力被限制在普通主力文字处理工具较可能支持的范围。代价是有些内容不能表达;收益是对方正确显示的机会更大。对于 ASCII 或八位 ASCII 超集,原始数据即使被非 MIME 阅读器直接展示,也应达到可容忍的可读程度。面向电传终端的系统则可删除标记,留下正文。
命令由不区分大小写的 ASCII 名称组成,放在尖括号里,长度不超过 60 个字符。真正的 < 写成 <<。大多数环境都要有闭合命令,并且必须严格配对、正确嵌套。
复杂度因此先由写信端承担。编辑器要生成平衡结构,阅读器便可以用一个栈处理:进入环境时压栈,离开时恢复先前状态。规范建议接收端尽量宽容地处理错误嵌套,但没有把错误结构提升为标准语义。
未知命令保住文字,保不住效果
不认识的格式命令必须作为 no-op。它包围的文字继续显示,命令想产生的效果则消失。以 X- 开头的名称可供私有扩展;正式扩展需要新的互联网文档。
这让新旧阅读器能够共存。旧程序不会因为未来命令而拒绝整封邮件。但“读取成功”只说明字符还在,不能说明警示色、强调层级或某种专门标注仍被接收者看见。
<param> 更清楚地划出了边界。它为某个命令提供参数,解释器可以采用,也可以忽略;无论哪一种,都不应把参数正文展示给读者。最低实现会删除格式标记,也会删除参数内容。最终的纯文本可能语句完整,却完全没有留下扩展所依赖的值。
因此,可读性不是完整性的替代词。审计时需要知道解析器支持什么、忽略了什么、隐藏了什么,而不能只问页面是否出现了一段顺畅的文字。
本地显示没有唯一答案
字体、行宽、缩进步长、对齐方式以及多个效果能否同时实现,都取决于接收端。若组合无法全部展示,阅读器可以偏向最内层、且自己认识的命令。两台都符合规范的机器,可能把同一正文排成不同页面。
nofill 和 verbatim 说明“简单剥标记”其实也需要状态。nofill 停止填行和通常的 CRLF 处理,但仍允许其他 enriched 功能。verbatim 还会抑制对齐和内部格式解析,直到它自己的结束标记。一个只用正则删除所有尖括号内容的工具,可能连何时应该解释命令都判断错。
RFC 给出的最低一致性要求,是识别特殊的字面量规则和相关环境,移除参数与格式命令,再执行 CRLF 还原。产物是可读纯文本,不是视觉等价物,更不是作者意图被完整保留的证明。
两个替代部分可以让两个人看到不同文档
当内容超出受限格式时,规范建议使用 multipart/alternative:放入较广泛可读的 text/enriched,同时提供更丰富的 ODA 等表示。能力强的阅读器选择丰富版本,能力弱的选择兼容版本。
两端都可能成功收到同一份多段邮件,却没有阅读同一个表示。若只记录“邮件已送达”,选择了哪个部分、为什么选择以及屏幕实际呈现什么都会被抹掉。
RFC 1523 当时称这种机制没有安全问题。本文只把它记录为 1993 年文档的判断,不把它延伸成对后续扩展、解析器、MIME 处理程序或今天软件栈的安全担保。后来 RFC 1563 取代 RFC 1523,RFC 1896 又取代 RFC 1563;文档沿革不等于所有旧实现同步消失。
本组来源没有给出任何具名阅读器、实际部署或具体邮件,也没有衡量采用程度、用户反应或畸形输入的实测结果。它们证明的是格式规则及文档沿革,而不是某个安装实例如何执行这些规则。
应当保存的是整条现实链:源字节与字符集、物理行、解析栈、已支持和未知命令的处置、隐藏参数、选择的替代部分、本地渲染以及人的理解。可读降级的价值在于它允许某些东西安全消失;它绝不证明什么都没有消失。
来源
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
