投诉报告是工作流程的输入,而不是工作流程已完成的证据。真正的结果是相关发送系统停止不需要的通信,同时保留解释该决定所需的证据。围绕信任、关联性、范围和执行来设计管道。
在提取指令之前验证报告
RFC 5965定义了多部分反馈报告,其中包含人类可读信息、机器可读字段和返回的消息材料。它还解决了伪造和隐私风险。解析具有明确大小和嵌套限制MIME ;不要执行返回的内容或点击其中嵌入的链接。 RFC 5965.
需要适合提供者和接收系统的出处。匹配的显示名称是不够的。保留来自接收边界的可信身份验证结果,而不是按面值接受攻击者提供的标头。将不受信任或格式错误的报告保留在受限审查队列中,与可采取行动的投诉不同。
关联并选择授权范围
根据发送应用程序保留的标识符解析报告。输出应识别订阅者、流和投诉事件,并记录置信基础。如果报告缺乏安全的唯一匹配,请保持未解决状态。不要压制所有收到同一主题消息的人。
应用组织批准的抑制政策。促销投诉可能需要将该收件人从营销中删除,而基本的帐户安全通信则需要单独的服务和政策决策。不要将这种区别描述为允许将促销活动重新打包为交易邮件。尊重接收者明确表达的偏好以及与负责的企业主的适用义务。
将持久性和执行作为单独的检查点
在确认成功处理之前,持久地写下抑制决定。将其传播到每个相关的发送方,并验证调度或队列准备是否参考了当前的抑制状态。活动引擎从不检查的数据库行不是有效的抑制。
使用稳定的事件密钥使重复报告无害。记录首次接收、决策时间、下游确认和任何重试。如果下游服务不可用,请保留可重试的任务并防止工作流报告完全强制成功。避免仅仅因为一个 API 调用成功就删除原始事件。
将支持的决策与未解决的报告分开
考虑假设的 Alice/News、Alice/Security 和 Bob/News 订阅。其来源经过独立验证且保留的发送标识符唯一映射到 Alice/News 的投诉支持组织批准范围内的决定。在这种刻意缩小的教学政策下,Alice/News 被压制,而其他两条记录则保持不变。此政策示例并非针对每项投诉的法律决定。
不受信任的报告或具有两个可信订阅者的发送标识符不支持猜测。对其进行严格审查,并要求提供缺失的出处或相关证据。重复验证的事件应保留相同的预期抑制,而不会创建第二个不相关的操作。此示例未处理任何报告或更改订阅。
测试完整的故障路径
在启用生产之前,请执行重复交付、解析器故障、过期相关记录和下游中断。验证支持人员是否可以查看待执行的执行,而无需查看不必要的消息内容。定义原始报告的保留与避免重新发送不需要的邮件所需的最小抑制记录。
谨慎审查重新订阅。稍后的导入不应仅仅因为包含较旧的“订阅”值而消除投诉抑制。如果此人做出新的有效订阅选择,请保留该转换的证据和批准的流程。以可衡量的结果作为结束:经过验证的投诉、支持的身份、批准的范围和确认的执行,或明确悬而未决的差距。
保持下游中断可见
假设抑制决策被持久存储,但活动服务不可用。将该特定发件人的强制执行标记为待处理,并保留可重试的任务。再次收到投诉应找到现有事件,而不是创建另一个发件箱项目或删除待处理的决定。稍后的确认必须与预期的接收者、范围和发送者相对应。
区分 API 确认和下一个受众选择路径实际上遵守更改的验证。如果过时的导出可以绕过它,则抑制并未完全实施。这些是提议的状态和证据要求,而不是执行的持久性或中断实验。在授权实施测试中,保留决策时间、下游尝试和受控的下次发送排除。
分配剩余的执法工作
对于待执行的持久决策,请保留特定事件和下游目标、下次重试和所有者。恢复失败的路线,而不会丢失决策或产生重复的副作用。仅当预期发送路径遵循时报告完成。