[ 报告与调查 ]

DMARC报告进行重复数据删除,而不丢弃合法的观察结果

使导入可重复,同时保留相互冲突的报告以供审查。

由EmailAuth研究团队提供

[ 要点 ]

  • 将每次到达与按指标计算的报告分开。
  • 保留或标记更改的内容冲突,而不是默默地替换证据。
  • 部分重叠并不是按比例分配未知重复消息的许可。
在此页面上

重复发送报告不应夸大流量指标。同时,类似的报告可以代表不同的观察结果。安全的重复数据删除过程可以识别经过验证的重复项,保留原始证据并隔离不确定的冲突,而不是删除任何看起来熟悉的内容。

在标准化之前保留证据

参考: 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传送、收集器迁移、提供商参与或生产数据库行为。原始输入仍被存档,任何实时比较都需要其自己受保护的证据和负责任的批准。

[ 外卖 ]

将每次到达与按指标计算的报告分开。保留或标记更改的内容冲突,而不是默默地替换证据。部分重叠并不是按比例分配未知重复消息的许可。

[ 按角色 ]

这对您意味着什么

选择您的角色以执行后续实际步骤。

IT/邮件管理员

将到达记录与计数报告分开。

保留基础观察结果并使用上述工作流程将实际故障阶段与假设分开。

后续步骤

  1. 将到达记录与计数报告分开。
  2. 保留内容冲突变体。
  3. 运行重复和重叠的夹具。

CISO / SecOps

保护原始报告访问。

在根据这些调查结果做出安全决策之前,请保持覆盖范围、来源和剩余不确定性可见。

后续步骤

  1. 保护原始报告访问。
  2. 审核重复数据删除决策。
  3. 拒绝无声证据删除。

创始人/非技术人员

需要值得信赖的可重复指标。

将此报告任务与自己的业务决策联系起来,并需要与其影响相称的证据。

后续步骤

  1. 需要值得信赖的可重复指标。
  2. 保留可恢复证据的资金。
  3. 询问冲突如何影响报告的总数。

[ 常见问题解答 ]

常见问题

匹配的文件名就足够了吗?

不是靠它自己。保留并比较报告背景和内容。

RFC 9990 §3.5.1 RFC 9990 §3.5.4

精确重播应该做什么?

创建到达记录,无需再次添加相同的观测值。

如果一个报告 ID 的内容不同怎么办?

保留两个版本并标记冲突以供审查。

可以全局删除相同的行吗?

不可以。单独的有效报告可以包含类似的观察结果。

为什么要保留原始字节?

它们支持规范化或解析器错误后的取证比较和恢复。

部分重叠的计数是否应该按比例分配?

不作为精确修正;汇总数据不会揭示重复的观察结果。

RFC 9990 §3.5.4

RFC 9990是否强制要求这种数据库设计?

不。工作流程是围绕标准的身份和重复规则构建的操作建议。

哪些测试是必要的?

精确重播、更改内容碰撞、明显相似的报告和部分重叠。

[ 来源 ]

来源

  1. RFC 9990

    部分 §3.5.1 · §3.5.4

[ 词汇表 ]

词汇表

举报身份
Report-ID和保留上下文支持重复调查;该标准要求同一域的报告之间具有唯一性。

RFC 9990 §3.5.1

幂等导入
重播相同已接受报告的操作设计不会再次添加其观察结果;仅此一点并不能说明并发正确性。

企业出处

为什么顶级金融机构和政府 退役了他们的电子邮件安全仪表板。

传统的电子邮件身份验证平台会向您出售仪表板并要求您的工程师来完成这项工作。在高风险环境中,手动监督意味着延迟执行、配置漂移和不受监控的影子域。

EmailAuth是代理电子邮件来源平台。 我们的代理人强制执行 p=reject,保持第三方发件人一致并将您的域名移至完整状态 RFC 9989 合规性、新的DMARC标准,以及人机交互审核能力。

政府 大型企业 一级金融机构

SaaS · 专用租赁 · 气隙本地部署 · BYOK 加密

知识库