自建邮件系统踩坑记:DNS、SPF、DKIM 一个都不能少
自建邮件最难的不是写收发逻辑,是让别人的服务器肯收你的信。三大件配齐之前,你的信全在垃圾箱。
开局一张证书
自建 Webmail,代码三天写完,然后用了两个星期让 Gmail 肯收我的信。难点根本不在 SMTP 协议——在于信任。
第一坑:反向解析(PTR)
你的服务器 IP 必须能反解出一个域名,而且和发信域名对得上。云厂商控制台里设置,漏了这条,大厂邮件服务器连握手都懒得跟你握。
第二坑:SPF
DNS 里加一条 TXT 记录,声明"哪些 IP 有权替我发信":
v=spf1 ip4:你的服务器IP -all
-all 是硬拒绝,没列进来的 IP 发的信直接判冒充。
第三坑:DKIM
给每封信盖防伪签名章。公钥挂 DNS,私钥在服务器签名。头部超 64 字符要折行、空格敏感、算法版本要对——我在这条记录上耗掉的时间够写半个收信模块。
第四坑:DMARC
前面俩都过了,再加一条"收信方发现可疑时怎么办"的策略。三件套配齐,Gmail 终于把信放进了收件箱。
收获
现在这套系统收发自如。回头看,邮件是互联网上最后的联邦制协议——没有中央机构,全靠 DNS 上的几条记录建立信任链。懂了这套,你就懂了半个互联网的信任模型。