如果您的商业电子邮件经常进入收件人的垃圾箱,或者更糟的是被无声地拒绝,问题通常归结为缺少电子邮件身份验证记录。DKIM(域名密钥身份标识邮件)是三个基本身份验证标准之一 — 与 SPF 和 DMARC 一起 — 每个使用自定义域名电子邮件的业务都应该配置。本指南将您从头到尾完整地指导如何在 DirectAdmin 虚拟主机控制面板上设置 DKIM,包括如何添加所需的 DNS 记录以及如何验证您的配置是否正常工作。
什么是 DKIM 以及它如何工作?
DKIM 是一种电子邮件身份验证协议,使用非对称加密(公钥加密)来证明电子邮件真正来源于它声称的域名。以下是该过程如何工作的高级描述:
- 您的邮件服务器在服务器端安全地保存私钥。
- 发送电子邮件时,服务器使用此私钥向电子邮件标头添加密码数字签名。
- 您将相应的公钥作为 DNS TXT 记录发布在诸如
mail._domainkey.yourdomain.com的子域下。 - 当接收服务器(Gmail、Outlook 等)获取您的电子邮件时,它查询您的 DNS 以获取公钥,并使用它来验证标头中的签名。
如果签名成功验证,接收服务器会了解两件事:电子邮件来自声称的域名(身份验证),邮件正文在传输过程中未被篡改(完整性)。这两个因素都有助于您的域名发件人信誉,这是电子邮件提供商在决定是否将您的电子邮件传递到收件箱或垃圾箱时使用的关键信号。
自 2024 年初以来,Google 要求所有大量发送者 — 那些每天发送超过 5,000 封电子邮件到 Gmail 的人 — 必须配置 DKIM。这个公告标志着 DKIM 已从最佳实践升格为行业要求。
SPF、DKIM 和 DMARC — 理解这三个
这三个电子邮件身份验证标准作为分层系统工作。每个都涵盖不同的攻击向量,它们相互补充。强烈建议设置所有三个:
| 标准 | 它如何工作 | 它防止什么 | DNS 记录格式 |
|---|---|---|---|
| SPF | 列出允许为您的域名发送电子邮件的 IP | 垃圾邮件发送者欺骗您的发送地址 | TXT @ — v=spf1 ... |
| DKIM | 用可验证的数字签名对电子邮件进行签署 | 邮件篡改和伪造 | TXT mail._domainkey — v=DKIM1; k=rsa; p=... |
| DMARC | 处理 SPF/DKIM 失败的策略 | 品牌冒充和网络钓鱼 | TXT _dmarc — v=DMARC1; p=none/quarantine/reject |
推荐的设置顺序是先 SPF,然后 DKIM,最后 DMARC — 因为 DMARC 策略只有在 SPF 或 DKIM 中至少有一个正确对齐后才会变得有意义。
分步:在 DirectAdmin 中启用 DKIM
DirectAdmin 包括内置的 DKIM 支持。您不需要 SSH 访问或手动服务器配置。一切都通过控制面板界面处理。
第 1 步 — 登录 DirectAdmin
打开浏览器并导航到您的 DirectAdmin 控制面板。默认 URL 是:
https://yourdomain.com:2222 或 https://your-server-ip:2222
使用您的虚拟主机帐户凭据登录(常规用户级别就足够了 — 您不需要管理员访问权限)。
第 2 步 — 导航到电子邮件管理器
从 DirectAdmin 仪表板中,找到电子邮件管理器部分。根据您的 DirectAdmin 版本,您将在以下位置找到 DKIM:
电子邮件管理器 → 域名管理 → DKIM
在较新的 DirectAdmin 版本中,可能会在电子邮件管理器中直接显示专门的"DKIM 密钥"菜单项。
第 3 步 — 生成 DKIM 密钥对
在 DKIM 设置页面上,选择要配置的域名,然后单击"创建 DKIM 密钥"或"生成 DKIM"。DirectAdmin 将自动生成 2048 位 RSA 密钥对。默认选择器名称是 mail。
生成后,DirectAdmin 将显示公钥作为以下格式的 DNS TXT 记录:
名称:mail._domainkey.yourdomain.com
类型:TXT
值:v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx==
小心地复制整个 p= 值。截断的密钥将导致所有 DKIM 验证失败。
第 4 步 — 添加 DNS TXT 记录
如果您的域名使用 AsiaGB 名称服务器,DirectAdmin 直接管理您的 DNS 区域,并可能在您生成密钥时自动添加记录。要验证或手动添加:
电子邮件管理器 → DNS 管理 → 添加 TXT 记录 主机名:mail._domainkey TTL: 3600 类型: TXT 值: v=DKIM1; k=rsa; p=YOUR_PUBLIC_KEY_HERE
如果您的域名使用外部名称服务器(如 Cloudflare 或您的域名注册商的 DNS),您需要在其 DNS 管理界面中使用上述相同的值添加此 TXT 记录。
重要: 如果公钥超过 255 个字符(2048 位密钥通常会这样),某些 DNS 提供商要求您将其分解为多个引号字符串:"part1" "part2"。DirectAdmin 自动显示正确的分割格式。如果您复制到外部 DNS 面板,请按原样粘贴整个值并让 DNS 提供商处理分割,或遵循他们关于长 TXT 记录的具体说明。
与 DKIM 一起配置 SPF 记录
应该与 DKIM 一起配置 SPF 以获得最大效率。以下是标准 AsiaGB 虚拟主机设置的推荐 SPF 记录:
主机名:@ (或 yourdomain.com) 类型: TXT 值: v=spf1 a mx ip4:YOUR_SERVER_IP ~all
分解每个组件:
v=spf1— 将此声明为 SPF 版本 1 记录a— 授权您的域名 A 记录中的 IP 地址mx— 授权您的域名 MX 记录中列出的所有 IPip4:YOUR_SERVER_IP— 明确授权您的服务器 IP 地址~all— 对任何未列出的 IP 进行软失败(建议开始时使用;比-all更安全)
如果您还通过第三方服务(如 Mailchimp 或 CRM)发送电子邮件,请包括其 SPF 机制:
v=spf1 a mx include:_spf.google.com include:servers.mcsv.net ip4:YOUR_SERVER_IP ~all
关键规则:每个域名必须恰好有一个 SPF TXT 记录。拥有多个 SPF 记录会导致永久 SPF 错误 (PermError),使所有电子邮件的 SPF 验证失败。
添加 DMARC 记录
一旦 SPF 和 DKIM 正常工作,添加 DMARC 记录以告诉接收服务器在身份验证检查失败时该怎么办。从仅监控策略开始:
主机名:_dmarc.yourdomain.com 类型: TXT 值: v=DMARC1; p=none; rua=mailto:[email protected]; fo=1
标签说明:
p=none— 仅监控,暂不阻止任何电子邮件rua=— 向此地址发送每日汇总报告fo=1— 当 SPF 或 DKIM 失败时生成取证报告
在审查一到两周的报告并确认 SPF 和 DKIM 始终通过后,逐步收紧策略为 p=quarantine(将失败的电子邮件路由到垃圾箱),最终至 p=reject(完全阻止失败的电子邮件)。
如何验证您的 DKIM 是否工作
添加 DNS 记录后,在测试前至少等待 30 分钟(全球传播最多需要 24 小时)。
方法 1 — 使用 dig 检查 DNS 记录
dig TXT mail._domainkey.yourdomain.com # 预期输出: mail._domainkey.yourdomain.com. 3600 IN TXT "v=DKIM1; k=rsa; p=MIIBI..."
在 Windows 上,改用 nslookup -type=TXT mail._domainkey.yourdomain.com。
方法 2 — 使用 mail-tester.com 测试
访问 mail-tester.com,复制显示的唯一电子邮件地址,并从您的自定义域名地址向该地址发送真实电子邮件。大约一分钟后,单击"然后检查您的评分"以查看 SPF、DKIM 和 DMARC 是否全部通过并获得详细的投递率评分。
方法 3 — 检查 Gmail 标头
向 Gmail 帐户发送测试电子邮件,打开它,单击三点菜单并选择"显示原始"。查找这些行:
Authentication-Results: mx.google.com; dkim=pass [email protected] header.s=mail header.b=AbCdEfGh; spf=pass (google.com: domain of [email protected] designates 1.2.3.4 as permitted sender)
看到 dkim=pass 和 spf=pass 确认您的配置工作正确。
常见问题及其修复方法
即使按照步骤正确操作,您有时也可能遇到问题。以下是最常见的问题及其解决方案:
- DKIM 在设置后立即失败 — 几乎总是由 DNS 传播尚未完成引起。等待 1-24 小时,在此期间不要修改密钥,因为更改会重置传播时钟。
- 截断的公钥 — 由
p=值的复制粘贴不完整引起。使用 DirectAdmin 的"复制到剪贴板"按钮,而不是手动选择文本,以确保捕获完整密钥。 - 同一选择器的多个 DKIM 记录 — 如果您多次生成密钥,旧记录可能仍然存在。在添加新记录之前删除任何重复的
mail._domainkeyTXT 记录。 - 转发的电子邮件失败 DKIM — 这是预期行为。电子邮件转发器修改标头,这会破坏签名。修复方法是将您的 DMARC 策略保持在
p=none或p=quarantine而不是p=reject,因为转发电子邮件是 DMARC 按设计不能很好处理的合法边缘情况。 - 评分提高但电子邮件仍进入垃圾箱 — DKIM 是许多垃圾邮件信号之一。使用 MXToolbox 黑名单检查检查您的服务器 IP 地址是否列在任何黑名单上。IP 信誉问题需要与身份验证记录不同的解决方案。
常见问题解答
什么是 DKIM,为什么它对电子邮件投递率很重要?
DKIM(域名密钥身份标识邮件)是一种电子邮件身份验证协议,使用数字签名来验证电子邮件是否确实来自其声称的域名。发送服务器用私钥对每封传出电子邮件进行签署,接收服务器使用在 DNS 中发布的相应公钥验证签名。当电子邮件通过 DKIM 验证时,Gmail 和 Outlook 等服务会将其视为更值得信任,从而显著降低进入垃圾箱的可能性。
我在 DirectAdmin 上设置了 DKIM,但仍然失败。我应该检查什么?
最常见的原因是 DNS 传播延迟 — DNS 更改可能需要最多 24-48 小时才能全球生效。等待并使用 mail-tester.com 或 dkimvalidator.com 重新测试。如果 48 小时后仍然失败,请验证您的 DNS 管理中的 TXT 记录值与 DirectAdmin 中显示的公钥完全匹配。还要确认传出电子邮件中使用的选择器(mail._domainkey)与您添加的 DNS 记录名称匹配。
我需要全部三个 — SPF、DKIM 和 DMARC — 还是仅 DKIM 就够了?
在 2024 年,Google 和 Yahoo 都规定了大量电子邮件发送者必须有 SPF 和 DKIM 身份验证加上至少 p=none 的 DMARC 策略。即使您不是大量发送者,部署全部三个也会建立长期域名信誉,并降低重要商业电子邮件进入垃圾箱的风险,特别是在发送给 Gmail 或 Outlook 收件人时。
1024 位和 2048 位 DKIM 密钥之间有什么区别?
根据当前标准,1024 位 DKIM 密钥被认为是密码学弱的。自 2015 年以来,NIST 和安全专家建议至少使用 2048 位密钥。DirectAdmin 默认支持 2048 位密钥生成,大多数 DNS 提供商可以存储这个长度的密钥。唯一的缺点是 TXT 记录值较大,在某些 DNS 系统中可能需要分成多字符串格式 — DirectAdmin 自动处理这一点。