你的邮件发出去,2%被退回,邮箱服务商开始盯上你。超过5%,直接进黑名单。问题是,等你知道的时候,IP信誉已经烂了。

这篇写给负责邮件系统的工程师。目标只有一个:把退回率压到1%以下。

打开网易新闻 查看精彩图片

硬退回 vs 软退回:区别很大

打开网易新闻 查看精彩图片

硬退回是地址不存在,永久性的。这对发件人信誉是毒药,24小时内必须处理掉。

软退回是暂时的——邮箱满了、服务器忙、邮件太大。但软退回也会累积。同一个地址反复软退回,说明有问题。

铁律:硬退回=立即从列表删除。软退回=5天内试3次,然后隔离。

列表清洁:低退回率的根基

入库时验证

地址没确认存在之前,绝不要进库。最土的办法是SMTP对话:

$ telnet mx.example.com 25
220 mx.example.com ESMTP
HELO yourserver.com
250 mx.example.com Hello yourserver.com
MAIL FROM:
250 OK
RCPT TO:
250 OK ← 有效

如果返回550 User unknown或550 5.1.1,地址已死。

工具选smtp-user-enum、直接SMTP验证,或ZeroBounce、AbstractAPI这类API服务。

存量列表每月重验

即使不新增地址,列表每年自然衰减约22%。每月跑一遍清洁:

• 90天无打开/点击的,标记为待唤醒
• 死地址下次发送前用SMTP重验
• 连续退回两次的,直接删除

角色邮箱是雷区

admin@、info@、postmaster@、sales@、support@——这些地址机器人监控、经常是全域捕获、退回率极高。除非专门验证过,不要发。

SPF、DKIM、DMARC:你的防护盾

认证配错是意外退回的头号原因。收件方服务器会在邮件进收件箱前就拒掉未认证的邮件。

SPF(发件人策略框架)

SPF告诉收件服务器哪些邮件服务器有权代你的域名发信:

v=spf1 include:_spf.yourmailprovider.com ~all

机制太多(+mx、+a、+ip4指向你的Web服务器)会导致SPF查询失败。硬性限制:每条SPF记录最多10次DNS查询。include链要用得精明。

DKIM(域名密钥识别邮件)

DKIM给每封邮件加加密签名。收件服务器用你的公钥解密验证,对不上就拒收。

KumoMTA的DKIM配置示例:

dkim {
sign = true
selector = "mail"
domain = "postmta.com"
private_key = "/etc/kumomta/dkim/private.pem"
}

密钥每90天轮换一次。DKIM泄露=别人能用你的域名发伪造邮件。

DMARC(基于域的消息认证、报告和一致性)

DMARC把SPF和DKIM绑在一起,加上策略:

v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com

p=none是监控模式,p=quarantine进垃圾文件夹,p=reject直接拒收。从none开始,确认无误再升quarantine,最后到reject。

rua地址会收到每日XML报告,解析后能看到谁在用你的域名发邮件、认证过没过。

基础设施:发信IP和域名

IP预热不是可选项

新IP没有信誉历史,邮箱服务商不认识你。突然大量发信=直接进垃圾文件夹或硬退回。

预热节奏:第1天50封,第3天200封,第7天1000封,第14天5000封,第30天才能满速。每天增量不超过前一天的2倍。

子域名隔离

打开网易新闻 查看精彩图片

营销邮件用marketing.yourdomain.com,交易邮件用notifications.yourdomain.com,客服用support.yourdomain.com。一个子域搞砸了,不影响其他的。

专用IP vs 共享IP

月发量低于10万封,共享IP更稳——你的信誉跟别人的平均在一起。超过10万封,专用IP才能控制得了自己的命运。

内容层面:触发退回的隐形杀手

邮件大小

超过102KB,Gmail会截断并显示"显示完整邮件"。很多客户端直接软退回大邮件。目标:HTML+文本版本控制在80KB以内。

URL信誉

邮件里的链接如果指向被标记的域名,整封邮件信誉连带受损。短链接服务(bit.ly等)已经被滥用烂了,尽量用自有域名。

图片比例

纯图片邮件=垃圾邮件特征。文字与图片比例至少6:4,最好8:2。alt文本要写,图片加载失败时至少知道是什么内容。

退订机制

没有一键退订=违反CAN-SPAM、GDPR、CASL,被举报后直接导致高退回率。退订链接要在页首和页脚各放一个,点击后24小时内生效。

监控体系:发现问题比解决问题更重要

实时退回处理

同步SMTP退回(421、450、451、452、550、551、552、553、554)和异步退回(DSN邮件)都要接。Postfix用bounce_template_file,KumoMTA用lua脚本解析。

退回代码要分类处理:

• 5xx永久错误:立即删地址
• 4xx临时错误:进重试队列,指数退避(5分钟、15分钟、45分钟、2小时、6小时)
• 421服务不可用:暂停对该域的发送1小时

信誉监控工具

• Google Postmaster Tools:看Gmail那边的域名信誉、认证通过率、用户举报率
• Microsoft SNDS:Hotmail/Outlook的IP信誉和流量数据
• Talos Intelligence:Cisco的IP信誉查询
• MXToolbox Blacklist Check:一键查几十家黑名单

每天早上扫一遍,变红立即停发排查。

反馈循环(FBL)

注册Yahoo、Outlook、Zoho的反馈循环。用户点"这是垃圾邮件"时,你会收到通知。投诉率超过0.1%就要警惕,超过0.3%立即暂停该列表的发送。

高级技术:最后几个百分点

预测性退回

用历史数据训练模型:这个地址过去90天的打开模式、上次打开距今多久、域名类型(企业邮/Gmail/自建)、MX记录变化——预测这次发送会不会退回。得分低的,先发一小批测试。

灰名单处理

部分服务器用灰名单:第一次发临时退回(451 4.7.1),等几分钟到几小时再试。 compliant的实现是收到451后自动重试,不要人工干预。

TLS强制

STARTTLS协商失败时,降级到明文传输=中间人可读。配置强制TLS:对方不支持TLS就延迟或退回,不要明文发。

Postfix配置:
smtpd_tls_security_level = may
smtp_tls_security_level = encrypt
smtp_tls_loglevel = 1

ARC(认证结果链)

转发邮件会破坏SPF/DKIM验证。ARC让中间服务器签名认证结果,最终收件方能看到原始认证状态。做邮件转发或列表服务的,必须上ARC。

检查清单:上线前过一遍

□ SPF记录≤10次DNS查询,语法验证通过(kitterman.com/tools/spf.html)
□ DKIM 1024位或2048位RSA密钥,selector正确,签名验证通过(dmarcian.com/dkim-inspector/)
□ DMARC策略从p=none开始,rua地址能收报告
□ 退订链接可点击,24小时内生效
□ 邮件大小<102KB,文字图片比例合理
□ 所有URL用自有域名,无短链接
□ 列表已验证,无角色邮箱,90天无互动地址已标记
□ 发信IP已预热或信誉良好
□ 退回处理流程已部署,4xx/5xx分类处理
□ Google Postmaster Tools和Microsoft SNDS已注册

退回率不是玄学,是工程问题。每个环节都有技术杠杆可拉,关键是把监控做细、响应做快、列表做干净。