DNSSEC、CAA 与邮件记录:三条容易被忽略但很关键的记录
域名解析到自己的服务器只是及格线。想让它更安全、能发邮件,还有三条记录值得配:DNSSEC、CAA 和邮件三件套。
一、DNSSEC:给解析结果签名
普通 DNS 查询是可以被篡改的(中间人返回一个假 IP,你就上了一个假网站)。DNSSEC 给解析结果加数字签名,递归服务器会验证签名,验证不过就报错。
开启步骤(Cloudflare 托管):
- Cloudflare 控制台 →
DNS→Settings→ 启用 DNSSEC; - 它会给你一组 DS 记录(Key Tag / Algorithm / Digest Type / Digest);
- 去注册商后台,把 DS 记录填进去(注意:DS 是填在注册商,不是填在 Cloudflare);
- 等几分钟到几小时生效。
验证:
dig +short DS example.com # 有输出说明 DS 已生效
dig +dnssec example.com A # 看应答里有没有 RRSIG
# 在线验证(推荐,图形化显示信任链)
# https://dnssec-analyzer.verisignlabs.com/常见坑:改了 NS(换 DNS 服务商)却没同步更新注册商那边的 DS,会导致全网解析失败。换 DNS 前先关 DNSSEC,换完再重开。
二、CAA:限定谁能给你签证书
CAA 记录声明「只有这几家 CA 可以给本域名签发证书」,能防止别人冒用你的域名申请证书。
# 记录格式:flags tag value
example.com. CAA 0 issue "letsencrypt.org"
example.com. CAA 0 issuewild "letsencrypt.org"
example.com. CAA 0 iodef "mailto:admin@example.com"| tag | 含义 |
|---|---|
| issue | 允许签发该域名的证书 |
| issuewild | 允许签发通配符证书 |
| iodef | 违规时报告给谁 |
dig +short CAA example.com配了 CAA 之后,certbot(Let's Encrypt)正常签发不受影响,但如果你换用别的 CA,记得先加对应的 CAA 记录,否则签发会失败。
三、邮件三件套:SPF、DKIM、DMARC
想用 user@example.com 这种域名邮箱,光加 MX 记录不够。没有下面三条,你发出的邮件大概率进垃圾箱,甚至被别人冒名发信。
SPF:声明哪些服务器可以代你发信
一条 TXT 记录:
v=spf1 include:_spf.google.com ~all
# 如果是自建邮件服务器
v=spf1 ip4:1.2.3.4 ~all结尾符号的含义:
| 结尾 | 含义 |
|---|---|
-all | 不在列表里的全部拒绝(严格) |
~all | 不在列表里的标记为可疑(软失败,推荐先用这个) |
+all | 全部允许(千万别用,等于没防护) |
注意:SPF 记录只能有一条,多了会报错。多个来源用 include: 串起来。
DKIM:给每封信加签名
由邮件服务商生成一对密钥,公钥放在 DNS 的 TXT 记录里:
# 主机名通常是 selector._domainkey
google._domainkey.example.com. TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSq..."服务商后台一般会给完整记录值,复制粘贴即可,不要手改。
DMARC:告诉收件方「不合格的信怎么处理」
_dmarc.example.com. TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com"| 策略 | 行为 |
|---|---|
p=none | 只观察不处理,先用来收集报告 |
p=quarantine | 不合格的丢进垃圾箱 |
p=reject | 直接拒收(最终目标) |
建议路径:先 p=none 跑两周看 rua 报告,确认没有漏掉的合法发信源,再逐步收紧到 quarantine → reject。
四、一次性验证全部配置
dig +short TXT example.com # SPF
dig +short TXT google._domainkey.example.com # DKIM
dig +short TXT _dmarc.example.com # DMARC
dig +short MX example.com
dig +short CAA example.com
dig +short DS example.com # DNSSEC也可以用 MXToolbox 一键体检,会给出各项得分和改进建议。
五、配完之后
- 用 mail-tester.com 发一封测试信,看能拿几分(8 分以上基本没问题);
- 定期检查 DMARC 报告,确认没有陌生 IP 在冒用你的域名;
- 如果完全不发邮件,加一条
v=spf1 -all的 SPF +p=reject的 DMARC,直接堵死冒名发信。
最后这条很重要:很多域名从来不发邮件,但被拿去发垃圾信,导致主域名信誉受损。空策略比不配强得多。
