一、开篇:Bad DKIM signature 的业务危害与核心解决方向
企业使用 MailPlus 发送对外邮件时,若安全日志频繁出现 “Bad DKIM signature”(无效 DKIM 签名),常会导致严重后果 —— 邮件被收件方邮箱(如 Gmail、Outlook)标记为垃圾邮件,甚至直接拒收,客户无法及时收到合同、报价单等关键文件,影响业务推进。这一问题的本质是 “DKIM 签名验证失败”:MailPlus 发送邮件时附加的 DKIM 签名,与收件方通过 DNS 查询到的公钥不匹配,或签名过程中邮件内容被篡改。许多管理员虽知道 DKIM 是邮件认证的重要环节,却不知如何定位 “签名无效” 的具体原因(是 DNS 记录错误、密钥过期,还是配置遗漏)。本文基于 Synology 官方技术指南(
https://kb.synology.cn/zh-cn/DSM/tutorial/How_to_address_MailPlus_security_log_Bad_DKIM_signature),从 “DKIM 原理认知→失效原因诊断→分步修复→验证效果” 四个维度,详细拆解处理 MailPlus 安全日志中 Bad DKIM signature 的全流程,帮助管理员快速恢复邮件正常投递,提升邮件可信度。
二、前置知识:3 分钟搞懂 DKIM 与 “Bad Signature” 的核心逻辑
在动手修复前,需先明确 DKIM 的工作原理与签名失效的底层原因,避免因概念混淆导致配置失误,尤其是 “DKIM 密钥对” 与 “DNS 记录” 的绑定关系:
2.1 什么是 DKIM?为什么会出现 “Bad Signature”?
DKIM(DomainKeys Identified Mail,域名密钥识别邮件)是一种邮件认证技术,通过 “私钥签名 + 公钥验证” 确保邮件未被篡改且来源可信,核心流程如下:
- MailPlus 端签名:发送邮件时,MailPlus 用服务器本地的 “DKIM 私钥” 对邮件主题、正文、发件人等关键信息生成数字签名,附加在邮件头中;
 
- 收件方验证:收件方邮箱(如 Gmail)读取邮件头的 DKIM 签名,通过 DNS 查询发件域名(如company.com)的 “DKIM 公钥”;
 
- 签名比对:用公钥解密签名,与邮件实际内容比对 —— 一致则认证通过,标记为 “可信邮件”;不一致则提示 “Bad DKIM signature”,判定为可疑邮件。
 
而 “Bad DKIM signature” 的本质是 “比对失败”,常见触发场景包括:
- 公钥与私钥不匹配(DNS 记录的公钥与 MailPlus 的私钥不是同一对);
 
- DNS 中的 DKIM 记录配置错误(如记录类型不对、公钥值缺失字符);
 
- 邮件发送过程中内容被篡改(如网关修改邮件主题、添加广告后缀);
 
- DKIM 密钥过期或被误删除(MailPlus 本地私钥丢失,无法生成有效签名)。
 
2.2 2 个关键前提(修复前必确认,避免做无用功)
- MailPlus 已启用 DKIM 功能:进入 MailPlus Server→“安全性”→“DKIM”,确认 “启用 DKIM 签名” 已勾选(若未启用,无需处理 Bad Signature,直接启用即可,但需先配置 DNS 记录);
 
- 发件域名已完成 DNS 解析:用于发送邮件的域名(如mail.company.com)需正常解析,且能通过公网查询到 DKIM 记录(本地 DNS 缓存可能影响验证,需用公共 DNS 工具测试)。
 
三、分步诊断:Bad DKIM signature 的 4 类核心原因与识别方法
通过 MailPlus 安全日志细节与 DNS 查询,可快速定位签名失效的具体原因,按排查优先级排序如下,附诊断步骤与工具:
失效原因  | 核心表现  | 诊断方法  | 日志特征  | 
1. DNS DKIM 记录配置错误  | 收件方无法获取公钥,或公钥格式错误  | 用 nslookup 命令或在线 DNS 工具查询 DKIM 记录,检查记录类型、公钥值是否正确  | 日志显示 “Public key not found” 或 “Invalid public key format”  | 
2. MailPlus 私钥与 DNS 公钥不匹配  | 公钥能获取,但无法解密签名  | 对比 MailPlus 导出的公钥与 DNS 记录的公钥,查看是否完全一致  | 日志显示 “Signature verification failed: key mismatch”  | 
3. 邮件内容被篡改  | 签名基于原始内容生成,传输中被修改  | 查看 MailPlus 发送日志与收件方收到的邮件内容,对比主题、正文是否一致  | 日志显示 “Signature does not match message content”  | 
4. DKIM 密钥过期或损坏  | MailPlus 本地私钥失效,生成的签名无效  | 检查 MailPlus DKIM 密钥的 “创建时间”,超过 1 年建议重新生成  | 日志显示 “Invalid signature: expired key” 或 “Private key corrupted”  | 
诊断实操工具推荐
- 命令行查询 DNS DKIM 记录(Windows/Mac 通用):
 
- 按下Win+R(Windows)或Command+空格(Mac),打开命令提示符 / 终端;
 
nslookup -type=TXT selector._domainkey.company.com 8.8.8.8
- 若返回 “server can't find...”,说明记录不存在;若返回公钥值(以 “v=DKIM1; k=rsa; p=...” 开头),则记录存在,需进一步验证格式。
 
- 在线 DKIM 验证工具:
 
四、分场景修复:4 类 Bad DKIM signature 的详细解决步骤
按 “配置错误→密钥问题→内容篡改” 的优先级排序,逐步修复,每步附 DSM 操作路径与验证方法,确保不同版本用户均可适配:
4.1 场景 1:DNS DKIM 记录配置错误(最常见,占比 60%)
若诊断发现 DNS 记录不存在或格式错误,需重新配置 DKIM 的 DNS TXT 记录,步骤如下:
步骤 1:从 MailPlus 获取正确的 DKIM 记录信息
- DSM 7.x 版本:
 
- 登录 DSM,打开 MailPlus Server→“安全性”→“DKIM”;
 
- 在 “DKIM 签名设置” 中,找到对应发件域名(如company.com),点击 “查看 DKIM 记录”;
 
- 记录关键信息(如图 1:MailPlus DKIM 记录信息示意图):
 
- 选择器(Selector):如 “mail”(记录名前缀,默认与发件域名前缀一致);
 
- 记录值:以 “v=DKIM1; k=rsa; p=...” 开头的完整字符串(包含所有字符,不可遗漏或添加空格)。
 
- DSM 6.x 版本:
 
- 进入 MailPlus Server→“设置”→“安全”→“DKIM”;
 
- 点击 “导出 DKIM 记录”,获取 TXT 记录信息,避免手动复制出错。
 
步骤 2:在 DNS 管理后台配置 DKIM 记录
以 “阿里云 DNS” 为例(腾讯云、GoDaddy 等操作逻辑一致):
- 登录阿里云控制台→“域名”→“域名解析”,找到发件域名(如company.com);
 
- 点击 “添加记录”,按以下参数配置:
 
- 主机记录:输入 “选择器._domainkey”(如 “mail._domainkey”,不可省略 “_domainkey” 后缀);
 
- 记录值:粘贴从 MailPlus 获取的完整 DKIM 值(注意:部分 DNS 平台需删除值中的空格,确保为连续字符串);
 
- TTL:设置为 “300 秒”(5 分钟,加快记录生效速度);
 
- 点击 “确认添加”,等待 DNS 记录同步(通常需 5-30 分钟,取决于 TTL 设置)。
 
步骤 3:验证 DNS 记录配置正确
- 使用前文提到的 nslookup 命令,再次查询 DKIM 记录;
 
- 若返回的 TXT 记录值与 MailPlus 导出的完全一致(字符无缺失、无多余空格),说明 DNS 配置正确;
 
- 若仍不一致,检查主机记录是否多写 / 少写字符(如漏写 “_”),或记录值是否误删 “p=” 后的公钥部分。
 
4.2 场景 2:私钥与公钥不匹配(占比 25%)
若 DNS 记录正确,但签名仍失效,需重新生成 DKIM 密钥对(私钥 + 公钥),确保 MailPlus 的私钥与 DNS 的公钥一致,步骤如下:
步骤 1:在 MailPlus 中删除旧 DKIM 密钥
- 进入 MailPlus Server→“安全性”→“DKIM”;
 
- 找到对应发件域名,点击右侧 “删除”(删除旧的密钥对,不会影响已发送邮件,仅对新邮件生效);
 
- 系统提示 “删除后需重新配置 DNS 记录”,点击 “确定”。
 
步骤 2:生成新的 DKIM 密钥对
- 点击 “添加”,选择需配置的发件域名(如company.com);
 
- 配置密钥参数:
 
- 选择器(Selector):建议设置为 “dkim2025”(包含年份,便于后续密钥轮换管理);
 
- 密钥长度:选择 “2048 位”(兼顾安全性与兼容性,1024 位已逐渐被淘汰,4096 位部分旧邮箱不支持);
 
- 点击 “生成”,系统自动创建私钥(保存在 MailPlus 本地)与公钥(需复制到 DNS);
 
- 点击 “查看 DKIM 记录”,复制新的公钥值,按场景 1 的步骤 2 重新配置 DNS TXT 记录。
 
步骤 3:验证密钥匹配性
- 生成新密钥后,发送一封测试邮件到个人邮箱(如 Gmail);
 
- 查看邮件头(Gmail 中打开邮件→右上角 “更多”→“显示原始邮件”);
 
- 找到 “DKIM-Signature” 字段,确认 “s = 选择器”(如 s=dkim2025)与新配置的选择器一致;
 
- 找到 “dkim=pass” 标记,说明密钥匹配成功,签名有效。
 
4.3 场景 3:邮件内容被篡改(占比 10%)
若 DNS 与密钥均正确,需排查邮件传输链路中是否有设备篡改内容,步骤如下:
- 检查 MailPlus 发送日志:
 
- 进入 MailPlus Server→“审核”→“发送日志”,找到测试邮件,记录邮件主题、正文长度;
 
- 对比收件方实际邮件:
 
- 收件方查看邮件的原始内容,对比主题是否被添加 “【广告】” 等后缀,正文是否多了无关内容;
 
- 定位篡改设备:
 
- 若企业部署了邮件网关(如第三方反垃圾网关),暂时关闭网关,直接发送测试邮件,观察是否仍出现 Bad Signature;
 
- 若关闭后签名正常,说明网关篡改了邮件内容,需在网关配置中添加 “不对 DKIM 签名邮件进行内容修改” 的规则;
 
- 若未部署网关,检查路由器是否开启 “邮件内容过滤” 功能,关闭后重试。
 
4.4 场景 4:密钥过期或损坏(占比 5%)
若 MailPlus 本地私钥过期或损坏,需重新生成密钥(同场景 2 的步骤),并注意:
- 建议设置 “密钥轮换周期”(如每年 1 次),避免长期使用同一密钥导致安全风险;
 
- 生成新密钥后,不要立即删除旧 DNS 记录,需保留 7 天(确保旧密钥签名的邮件仍能被验证),7 天后再删除旧记录。
 
五、常见问题 FAQ:解决修复中的高频卡点
Q1:配置完 DNS 记录,测试邮件仍提示 Bad DKIM signature,怎么办?
A1:大概率是 DNS 缓存未更新,按以下步骤处理:
- 用公共 DNS 工具(如 8.8.8.8、114.114.114.114)查询 DKIM 记录,确认记录已同步(避免使用本地 DNS 缓存);
 
- 等待 TTL 时间(如 300 秒)后,重启 MailPlus Server 服务(进入 “套件中心”→“已安装”→“MailPlus Server”→“重启”);
 
- 发送新的测试邮件,不要重复发送旧邮件(旧邮件的签名已生成,不会因 DNS 更新而变化)。
 
A2:需要!DKIM 按 “域名” 独立认证,每个发件域名需单独生成密钥并配置 DNS 记录:
- 进入 MailPlus Server→“安全性”→“DKIM”,为每个域名点击 “添加”,生成独立选择器(如 s=sales2025、s=support2025);
 
Q3:外部邮件发送到 MailPlus,日志提示 “Bad DKIM signature”,需要处理吗?
A3:视情况而定,这是 MailPlus 验证外部邮件时发现的问题,非本地配置错误:
- 若为重要合作方邮件,可将其域名加入 “DKIM 信任列表”(MailPlus→“安全性”→“信任列表”),避免被误判为垃圾邮件;
 
- 若为陌生邮件,无需处理,这是 MailPlus 的正常安全防护,提示该邮件可能被篡改,需谨慎打开附件。
 
六、总结:DKIM 签名维护的 3 个最佳实践(预防 Bad Signature)
- 定期验证 DNS 记录:每季度用 nslookup 或在线工具检查 DKIM 记录,确保公钥未被误修改、记录未过期;
 
- 密钥轮换制度化:每年生成新的 DKIM 密钥对,先更新 DNS 公钥,7 天后删除旧私钥,平衡安全性与兼容性;
 
- 邮件链路透明化:避免在 MailPlus 与收件方之间添加过多中间设备(如多网关),若必须添加,确保设备不修改邮件核心内容(主题、正文、发件人)。