在法国给自建服务配邮件,SPF 别只写一条记录
上个月把一台 OVH 的 VPS 从只发通知改成跑完整邮件栈(Postfix + Dovecot),域名是在法国的注册商买的,DNS 也挂在那边的面板上。现象很典型:发到 Gmail 和 Outlook 的邮件全进垃圾箱,发到 Free 和 Orange 的邮箱干脆 550 拒收。日志里没有认证失败,问题在 DNS 侧的记录不完整。
我的做法是先把三条记录补齐,再谈内容。
SPF 用一条 TXT,把实际会发信的出口都列进去,IPv4 和 IPv6 分开写:
v=spf1 ip4:51.x.x.x ip6:2001:41d0:x:x::1 include:_spf.ovh.net -all
DKIM 用 OpenDKIM 生成 2048 位密钥,公钥发到 mail._domainkey,私钥只留本机,Selector 和 Postfix 的 milter 配置必须一致:
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301
DMARC 先写 p=none 收报告,跑一周确认所有合法出口都在 SPF 里,再改成 p=quarantine:
v=DMARC1; p=none; rua=mailto:dmarc@example.fr; adkim=s; aspf=s
为什么这样排:SPF 只看信封发件人,DKIM 看签名,DMARC 要求两者至少一个对齐,三者缺一,接收方就少一层判断依据。代价是维护成本——每加一个发信出口(比如换 VPS、加 IPv6)都得回去改 SPF,而且 SPF 记录超过 10 次 DNS 查询会被直接判失败,别把一堆 include 堆上去。
失效的地方我说几个自己踩过的。第一,OVH 面板里如果同时存在旧的 SPF 和新的 SPF 两条 TXT,接收方行为不确定,我这边是 Gmail 直接当无记录处理,删掉旧的才恢复。第二,反向解析 PTR 不在 DNS 面板里改,要在 OVH 控制台的 IP 反解里设,名字对不上 SPF 里的域名,Orange 那边照样拒。第三,IPv6 出口经常被漏掉,A 记录能发、AAAA 发出去就被判 softfail。第四,DMARC 报告里的 rua 地址如果是同域邮箱,报告本身也可能被自己的过滤规则拦掉,最好单独开一个别名。
现在通知类邮件基本能进收件箱,但冷启动的新 IP 还是要养一阵。你们在法国这边自建邮件,PTR 和 SPF 是分开在两个地方配的吗,有没有遇到面板里改了不生效的情况?
0 条评论
还没有评论,写下第一条。