一键退订(RFC 8058)快速落地
对 Gmail/Yahoo 等主流收件方而言,“可见且可用的一键退订”已成为合规与投递的重要信号。工程上,这件事并不复杂:两个头部 + 一个幂等 HTTPS 端点 + 一套最小的回归与证据留存流程。下面是一份可直接执行的实现指南。
检查头部
体检会解析 List‑Unsubscribe 与 List‑Unsubscribe‑Post,并给出“一键退订”存在性的判断。
一、头部示例与格式要点
List-Unsubscribe: <mailto:unsubscribe@example.com>, <https://example.com/u/12345>
List-Unsubscribe-Post: List-Unsubscribe=One-ClickList‑Unsubscribe支持多个 URI;推荐同时提供mailto与https。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/飞书会第一时间提醒。