DKIM 选择器轮换 SOP(零停机)
目标:在不中断签名的情况下,完成密钥与选择器的平滑切换。关键点:先 DNS、再签名、后回收,每一步都“体检 + 证据”。以下流程适用于自建 MTA 与主流 ESP(Mailgun、SendGrid、Amazon SES 等)。
每步验证
执行每一步后,立即体检并生成 PDF,记录 scanId/sha256 与 Verify 链接。
一、准备与命名规范
- 生成新密钥与选择器名,例如
selector2025q1;密钥长度 ≥ 2048。 - 规划时间窗与灰度节奏;定义回退条件与联系人。
- 准备脚本:openssl、DNS CLI、配置变更与回滚脚本。
# 生成新密钥(示例)
openssl genrsa -out dkim-2025q1.key 2048
# 导出公钥并写入 DNS TXT(selector._domainkey.example.com)
# s=、t= 标志按产品要求设置,p= 公钥内容
二、发布新选择器(仅新增)
在 DNS 中发布 selector._domainkey.example.com 的 TXT 记录,包含 p= 公钥,必要时设置 s=、t= 标志。使用 较短的 TTL 便于灰度期间快速回收。发布后,使用读取工具与 /audit 验证可见性与格式。
三、切换签名(10–20% 灰度)
在 MTA/ESP 中把签名选择器从旧值切到新值。建议先引导 10–20% 的真实流量,观察 24–48 小时。重点指标:AR 中的 dkim=pass 比例、DMARC 对齐、投诉与退订可用性。
四、全量切换与证据留存
灰度稳定后按批次推进全量,在每个批次结束时生成 PDF 证据并记录变更单。证据中包含 scanId/sha256 与 Verify 链接,便于外部稽核。
| 步骤 | 关键检查 | 失败回滚 |
|---|---|---|
| 发布新选择器 | TXT 无截断;包含 p= 公钥;TTL 合理 | 保持旧选择器不动;仅新增 |
| 切换签名(灰度) | AR 中 dkim=pass 稳定;complaint 无上升 | 切回旧选择器;保留新选择器 DNS |
| 全量切换 | 批次推进;生成 PDF 证据 | 若失败恢复灰度或回退 |
| 回收旧选择器 | 延迟 7–14 天回收 | 若发现历史邮件验证依赖,延后回收 |
五、回收旧选择器与延迟策略
为避免历史邮件在收件端再次验证失败,推荐在全量后 延迟 7–14 天 再移除旧选择器。若你的邮件生命周期更长,可适度延长。
六、回滚与复盘
如果灰度期间 dkim=pass 明显下降或投诉率上升,立刻回退到旧选择器,保留新选择器 DNS 以便再次尝试。复盘常见原因:DNS 传播不完全、MTA 缓存未刷新、TXT 被截断、选择器名称与配置不一致。