DNSSEC、CAA 与邮件记录:三条容易被忽略但很关键的记录

域名解析到自己的服务器只是及格线。想让它更安全、能发邮件,还有三条记录值得配:DNSSEC、CAA 和邮件三件套。

一、DNSSEC:给解析结果签名

普通 DNS 查询是可以被篡改的(中间人返回一个假 IP,你就上了一个假网站)。DNSSEC 给解析结果加数字签名,递归服务器会验证签名,验证不过就报错。

开启步骤(Cloudflare 托管):

  1. Cloudflare 控制台 → DNSSettings → 启用 DNSSEC;
  2. 它会给你一组 DS 记录(Key Tag / Algorithm / Digest Type / Digest);
  3. 注册商后台,把 DS 记录填进去(注意:DS 是填在注册商,不是填在 Cloudflare);
  4. 等几分钟到几小时生效。

验证:

bash
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 可以给本域名签发证书」,能防止别人冒用你的域名申请证书。

bash
# 记录格式: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违规时报告给谁
bash
dig +short CAA example.com

配了 CAA 之后,certbot(Let's Encrypt)正常签发不受影响,但如果你换用别的 CA,记得先加对应的 CAA 记录,否则签发会失败。

三、邮件三件套:SPF、DKIM、DMARC

想用 user@example.com 这种域名邮箱,光加 MX 记录不够。没有下面三条,你发出的邮件大概率进垃圾箱,甚至被别人冒名发信。

SPF:声明哪些服务器可以代你发信

一条 TXT 记录:

bash
v=spf1 include:_spf.google.com ~all

# 如果是自建邮件服务器
v=spf1 ip4:1.2.3.4 ~all

结尾符号的含义:

结尾含义
-all不在列表里的全部拒绝(严格)
~all不在列表里的标记为可疑(软失败,推荐先用这个)
+all全部允许(千万别用,等于没防护)

注意:SPF 记录只能有一条,多了会报错。多个来源用 include: 串起来。

DKIM:给每封信加签名

由邮件服务商生成一对密钥,公钥放在 DNS 的 TXT 记录里:

bash
# 主机名通常是 selector._domainkey
google._domainkey.example.com.  TXT  "v=DKIM1; k=rsa; p=MIGfMA0GCSq..."

服务商后台一般会给完整记录值,复制粘贴即可,不要手改。

DMARC:告诉收件方「不合格的信怎么处理」

bash
_dmarc.example.com.  TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com"
策略行为
p=none只观察不处理,先用来收集报告
p=quarantine不合格的丢进垃圾箱
p=reject直接拒收(最终目标)

建议路径:先 p=none 跑两周看 rua 报告,确认没有漏掉的合法发信源,再逐步收紧到 quarantinereject

四、一次性验证全部配置

bash
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,直接堵死冒名发信。

最后这条很重要:很多域名从来不发邮件,但被拿去发垃圾信,导致主域名信誉受损。空策略比不配强得多。