重复发送报告不应夸大流量指标。同时,类似的报告可以代表不同的观察结果。安全的重复数据删除过程可以识别经过验证的重复项,保留原始证据并隔离不确定的冲突,而不是删除任何看起来熟悉的内容。
在标准化之前保留证据
参考: RFC 9990 §3.5.1, RFC 9990 §3.5.4.
存储原始受保护附件、其加密指纹、到达上下文和解析器版本。维护单独的进口决定记录。原始字节和标准化报告数据有不同的用途:两个附件可以编码相同的内容,但压缩或无害格式不同。
RFC 9990 定义报告标识符以帮助识别重复项,并要求在重传时重用识别信息。尽管如此,文件名或主题本身仍然是不可信的输入。在做出不可逆转的数据丢失决策之前,验证解析的报告并比较其策略域、报告器、间隔和内容。
区分重复和冲突
来自同一报表上下文的相同保留附件是幂等处理的有力候选者。具有不同内容的匹配报告标识是冲突,不会自动成为安全副本。保留两个版本并将受影响的指标贡献临时标记,并应用明确的整个报告包含策略,直到关系得到解决。
类似的行值是不够的。两个有效报告可以独立观察到相同的源IP和认证结果。全局删除重复行可以消除合法的重复流量。将报告级别的来源附加到每一行。
使用可逆的导入决策
实际的实现是分配一个稳定的内部报告记录,并单独记录每次到达。确认的重复指向已计数的报告,而不是再次插入其行。记录匹配标准和算法版本,以便以后的修复可以重建发生的情况。
说明性测试集:文件 A 包含 100 个观察值; A 来了两次。统计总数仍为 100 人,抵达人数变为 2 人。文件 B 使用相同的报告标识,但包含 120 个观察结果。系统会标记内容冲突,而不是默默地将 100 替换为 120 或计数 220。文件 C 是经过验证的不同报告,包含 100 个类似的观察结果,并单独贡献。这些装置是建议的测试,而不是生产结果。
将重叠视为不同的问题
参考: RFC 9990 §3.5.4.
部分区间重叠并不能揭示哪些单独的观察重复。 RFC 9990第 3.5.4 节认识到影响无法与聚合信息完全分开。不要减去与时间成比例的分数,并将余数描述为精确的。
将不确定的报告保留在主要协调总数之外,或应用其他记录的整个报告政策,保留排除的材料及其影响。发布带有指标的策略。在调用导入器幂等之前测试重播、内容冲突和不同的相同外观的报告。
审核导入决策日志
每个排除的到达应指向保留的计数报告以及证明排除合理的比较。每个未解决的冲突都应该有一个所有者和可见的状态。限制更改这些决策的权限,并在解析器缺陷需要重新导入旧证据时保留修订历史记录。通过从原始报告和保存的决策日志重建一个小指标来测试恢复。如果重建结果不同,请在使用总数做出政策决定之前进行调查。幂等性必须能够承受重试和重新启动,而不仅仅是干净的首次导入。
继续调查
使用 汇总报告演练 解释底层字段和 对准诊断指南 当原始身份验证通行证不满足时 DMARC.
执行综合证据
提供的本地重新运行的离线 Python 固定装置将其逻辑键定义为(已验证的报告者身份、策略域、report_id)。它将简化的(开始、结束、计数)元组与逻辑键分开进行比较;完整有效负载散列和标准化不在此模型之外。验证报告者是输入的先决条件,而不是自我报告的名称所证明的东西。这个小型演示仅接受提供的可信身份,并且不实现生产身份验证边界。
其执行的测试产生以下结果:
- 案例:第一份报告;输入区别: receiver-a.example , brand.example ,R1,count 100;实际结果:接受;额外计数的观察值:100
- 案例:精确回放;输入区分:密钥和负载相同;实际结果:重复;额外计数的观察值:0
- 案例:内容冲突;输入区别:相同按键,计数改为120;实际结果:content_conflict_hold;额外计数的观察值:0
- 案例:相同ID,不同来源;输入区别: receiver-b.example , brand.example ,R1,count 100;实际结果:接受;额外计数的观察值:100
- 案例:部分重叠;输入区分: receiver-a.example ,R2,间隔00:00–12:00之后06:00–18:00;实际结果:overlap_hold;额外计数的观察值:0
断言验证了所有 5 个结果,总计 200 个。冲突和重叠输入仍保留以供审查。说明性规则保留对第一个承认的报告进行计数,并保留后来的冲突到达;它不会默默地取代先前的报告或声称它一定是正确的。生产系统应将受影响的早期计数公开为临时计数,并允许经过审核的更正。相同ID/不同源输入故意测试标识符冲突;这并不是声称 ID 重用符合RFC 9990的唯一性要求。报告者上下文可防止在调查碰撞时自动崩溃潜在的独立观察结果。此运行验证装置逻辑,而不是数据库并发性、重新启动、源身份验证或模式完整性。
使结果保持在测试范围内
提供的本地演示仅验证其小型合成解析器、提供的阶段输入和计算。没有测试真正的DNS授权、 SMTP传送、收集器迁移、提供商参与或生产数据库行为。原始输入仍被存档,任何实时比较都需要其自己受保护的证据和负责任的批准。