将解析器升级视为数据契约更改
报告收集器可以继续显示图表,同时失去更新的聚合格式旨在承载的区别。一个 RFC 9990 因此,迁移需要的不仅仅是接受新文件名或忽略验证错误。定义识别哪些线路格式、它们的字段如何映射到内部模型以及在更改生产摄取之前如何处理不兼容或可疑的输入。
将源接收、解压缩、XML 解析、模式解释和聚合作为单独的阶段。每个都应该产生有限的结果并保留足够的来源用于诊断。本文提出了该设计及其测试清单。它不提供已部署的解析器、执行的固定装置或任何现有收集器符合新规范的证据。
无需更改DNS版本即可识别格式
RFC 9990附录 A 使用命名空间 urn:ietf:params:xml:ns:dmarc-2.0 定义当前 XML 模式。在第3.1.1.2节中,可选版本元素的值为 1.0 。这些标识符描述了报告格式;两者都不意味着域应该在DNS中发布v=DMARC2 。这 DMARC 政策版本仍然受 RFC 9989第 4.7 节.
兼容性设计应识别与当前配置文件分开的受支持的旧配置文件。保留选择的配置文件及其原因。不要重命名不熟悉的命名空间以使输入验证,静默插入缺少的必填字段或仅仅因为根元素被命名为反馈而将旧报告重新解释为当前报告。未知的输入应该收到明确的不支持或隔离的结果。
根据适当的访问和保留策略保留原始报告字节以及摘要和标准化解释。如果稍后的解析器更正改变了结果,则该分离使得重新处理可以审查。它还可以防止标准化记录被误认为是记者发送的内容。
保留政策背景和一致性意义
当前的policy_published结构包括可选的discovery_method和测试信息。发现可以报告为 psl 或 treewalk,测试则带有 t 值。缺少的可选字段并不能证明特定的实现版本。 RFC 9990第3.1.1.5节 定义这些字段及其范围。
将policy_evaluated 与auth_results 分开。前者记录DMARC相关 结盟 结果和处置;后者在DMARC解释之前携带身份验证结果。一个原始的 DKIM 在标准化过程中,来自不相关域的传递不得提升为对齐传递。保留覆盖原因,而不是更改身份验证结果以匹配最终处置。第3.1.1.9和3.1.1.11节描述了这种分离。
当前DKIM结果条目需要 选择器。没有记录的遗留记录不应接收发明值(例如默认值)来满足当前模式。记录支持的遗留解释或验证失败。报告期内的多重签名、可选信封信息和政策变化也需要明确表示;过早地瓦解它们可能会抹去分析师所需的解释。
处理扩展而不放弃验证
该规范在定义的位置提供了命名空间扩展点。扩展的存在或不存在本身并不是一个错误,并且任意不熟悉的元素并不是在任何地方都自动有效。 RFC 9990第 3.2 节和第 5 节 提供区别。保留支持的扩展内容或有界的不透明数据,而不允许其覆盖核心字段含义。
将存档和 XML 输入视为不可信。第 8.1 节确定了解压和解析中的资源耗尽风险。建议的实施控制包括对压缩和扩展大小、嵌套、元素计数和处理时间的限制,以及禁用外部实体解析和网络检索。将报告提供的文本显示为数据。这些是防御性设计建议,而不是断言收集器已通过恶意输入测试。
格式错误的输入不应像有效的一样进入普通聚合。第 3.1.1 节建议丢弃不合格报告,同时允许谨慎尝试使用某些数据。如果产品支持部分恢复,请标记结果并将其保留在正常决策总数之外,直到审查恢复策略为止。当图表看起来完整时,无声强制尤其危险。
将重复处理作为明确的政策
报告 ID 旨在帮助重复识别,但不应假定单个标识符在不相关的报告者中是全局唯一的。第 3.5.4 节识别精确的重复和重叠信息,将处理留给消费者。在提出重复数据删除规则时,保留报告者和策略背景、报告周期、标识符和内容摘要。
精确重复和覆盖重叠时间的更改报告不一定是同一情况。避免简单地将两者相加或丢弃其中之一,因为它们的日期范围相交。记录决议决定,并保留一种调查政策变化和后期纠正的方法,而不会无形中重写历史。
虚构的夹具工作表和释放门
虚构的当前格式案例包含 dmarc-2.0 命名空间、版本 1.0、testing=y 和显式DKIM选择器。一个单独发明的遗留形状的盒子缺少该选择器。计划的验收工作表需要不同的配置文件处理,而不是插入虚构的选择器。建议的其他行涵盖命名空间扩展、精确重复、重叠报告和格式错误的输入。没有人被处决。
确切的原始要求仍然存在:运行旧版和当前的架构固定装置、扩展案例、重复的报告和格式错误的输入。调试门是:验证当前的主要规范并在起草之前保留一个工作示例。保留的纸质案例和来源审查不满足运行时验收要求。解析器安全性、向后兼容性、人类 SME 批准、生产行为和发布授权保持开放,直到所需的测试和决策存在为止。