SenderGuard
SenderGuard

一键退订(RFC 8058)快速落地

对 Gmail/Yahoo 等主流收件方而言,“可见且可用的一键退订”已成为合规与投递的重要信号。工程上,这件事并不复杂:两个头部 + 一个幂等 HTTPS 端点 + 一套最小的回归与证据留存流程。下面是一份可直接执行的实现指南。

检查头部

体检会解析 List‑UnsubscribeList‑Unsubscribe‑Post,并给出“一键退订”存在性的判断。

一、头部示例与格式要点

List-Unsubscribe: <mailto:unsubscribe@example.com>, <https://example.com/u/12345>
List-Unsubscribe-Post: List-Unsubscribe=One-Click
  • List‑Unsubscribe 支持多个 URI;推荐同时提供 mailtohttps
  • List‑Unsubscribe‑Post 必须为 List‑Unsubscribe=One‑Click 才能触发一键。

二、HTTPS 端点(最小实现)

POST /u/:token
Authorization: (无)
Body: { reason?: string }

Step:
1) 校验 token(不可逆关联到订阅者)
2) 执行退订(标志位/移除关联)
3) 记录审计日志(时间/IP/UA/token 摘要)
4) 200 + 简洁确认页

实现要点:端点必须幂等、可直接完成退订,不得要求登录/验证码。不建议 302 或复杂跳转。

三、常见问题与修复

问题表现修复
仅有 mailto 无 https客户端不展示一键退订补充 https 链接并实现端点
端点要求登录/验证码一键失败,投诉上升取消登录;纯 POST 一步完成
返回 302/复杂跳转客户端判定失败直接 200 简洁确认页

四、回归清单与告警

  • 同时提供 mailto 与 https 两条退订通道(推荐 https)
  • 实现 HTTPS 端点:POST /u/:token 校验后立即退订并返回 200
  • 端点幂等:重复调用不报错,返回相同结果
  • 审计日志:记录时间、IP、UA、token 摘要(不可逆哈希)
  • 发布后体检验证 + PDF 证据;设置头部丢失告警

建议与 DMARC/对齐联动回归,特别是在改造 ESP 或模板时。同时设置“头部丢失告警”,当我们检测到 List‑Unsubscribe 或一键标志缺失时,邮件/Slack/飞书会第一时间提醒。

五、延伸阅读