企业邮箱 SMTP 发信为何总被腾讯拒收?

问题背景

公司使用自建 Postfix 邮件服务器(mail.company.com)通过 SMTP 协议发送各类通知邮件:用户注册验证码、审批提醒、周报总结、监控告警等,日均发信量约 2 万封。收件人包括公司内部员工(@company.com)和外部合作伙伴(多数使用腾讯企业邮箱 @partner.com)。

故障现象

5 月 25 日中午,业务方反馈用户注册验证码邮件大量丢失——十几分钟内注册了 50 个用户,只有不到 15 个收到了验证码邮件。邮件队列查看:

1
2
3
4
5
6
7
$ mailq | grep "@partner.com" | wc -l
347

$ mailq | tail -20
5B2A81208B4  4852  Wed May 25 13:42:21  [email protected]
(delivery temporarily suspended: host mxbiz1.qq.com[162.62.116.231] refused
to talk to me: 550 Mail is rejected by users.)

退信原因:550 Mail is rejected by users——腾讯企业邮箱直接拒绝了投递。到下午 2:00,退信率达到了 60%(347 封排队中被拒)。

排查过程

第一步:检查退信详情

抓取完整的 SMTP 会话日志:

1
2
3
4
5
6
7
$ tail -200 /var/log/maillog | grep "mxbiz1.qq.com"
May 25 13:42:21 mail postfix/smtp[23451]: 5B2A81208B4: 
  to=<[email protected]>, relay=mxbiz1.qq.com[162.62.116.231]:25, 
  delay=3.2, delays=0.01/0/3.1/0.09, dsn=5.0.0, 
  status=bounced (host mxbiz1.qq.com[162.62.116.231] said: 
  550 Mail is rejected by users. 
  http://service.exmail.qq.com/cgi-bin/help?id=20022)

访问腾讯企业邮箱给出的帮助链接,提示可能原因:

  1. 发信 IP 信誉过低
  2. 发信域未配置 SPF 记录
  3. 短时间内发信量过大触发流控

第二步:逐一核查三条线索

DNS 记录检查:

1
2
3
4
5
$ dig TXT company.com
# 返回空——没有 SPF 记录!

$ dig TXT _dmarc.company.com
# 返回空——没有 DMARC 记录!

邮件域 company.com 完全没有 SPF、DKIM、DMARC 记录。对于腾讯企业邮箱这种大型邮件服务商来说,缺乏这三项基本认证的邮件会被严重降权。

发信频率检查:

1
2
3
4
5
$ grep "May 25 13:" /var/log/maillog | grep "status=sent" | wc -l
1284    # 1小时内发送了1284封到@partner.com

$ grep "May 25 12:" /var/log/maillog | grep "status=sent" | wc -l
2103    # 上一小时2103封

验证码邮件在中午时间段有集中爆发(饭点用户集中注册),1 小时内向同一收件域发送了超过 1000 封邮件——触发了腾讯的每小时发信频率限制。

IP 信誉检查:

使用 MXToolbox 查询发信 IP 203.x.x.x 的黑名单状态,发现被列在 2 个 RBL(实时黑名单)中——原因是该 IP 之前被用于发送过未订阅的营销邮件。

解决方案

紧急处理

  1. 配置 SPF 记录(DNS 添加):
1
company.com.  IN  TXT  "v=spf1 ip4:203.x.x.x ~all"
  1. 配置 DKIM(Postfix 端):
1
2
3
4
5
apt-get install opendkim
# 生成密钥并配置
opendkim-genkey -d company.com -s default
# DNS 添加 DKIM 公钥记录
default._domainkey.company.com.  IN  TXT  "v=DKIM1; k=rsa; p=MIGfMA0G..."
  1. 配置 DMARC(DNS 添加):
1
_dmarc.company.com.  IN  TXT  "v=DMARC1; p=none; rua=mailto:[email protected]"
  1. 配置 Postfix 速率限制
1
2
3
4
# /etc/postfix/main.cf
smtp_destination_rate_delay = 1s
default_destination_concurrency_limit = 2
default_destination_recipient_limit = 10
  1. 清理 IP 信誉:向各 RBL 提交移除申请。

长期优化

  • 将验证码等高时效邮件改用短信/App 推送,降低邮件频率
  • 配置 Postfix 的发信队列优先级,事务通知可延迟发送
  • 监控发信退信率和队列积压

根因分析

直接原因:自建邮件服务器未配置 SPF/DKIM/DMARC,腾讯企业邮箱将邮件判为低信誉,加上短时间高频发信触发流控限制直接被拒。

深层原因:邮件基础设施在上线时跳过了邮件认证的标准配置,在业务规模扩大后这些问题被放大;同时业务层缺乏对邮件发送的节流控制。

预防措施

  1. 邮件认证三件套:SPF + DKIM + DMARC 是邮件服务器的标配,必须上线即配置
  2. 发信频率监控:按目标域统计发信频率,接近阈值时告警
  3. 退信率告警:退信率 >10% 立即告警
  4. IP 信誉定期检测:每月查询 RBL 状态,及时处理
  5. 邮件发送策略分层:验证码等重要邮件走高优先级通道,营销/通知类走低优先级通道

总结

SPF、DKIM、DMARC 这三条 DNS 记录加起来不超过 500 字节,但缺失它们就能让 60% 的邮件石沉大海。自建邮件服务器最大的挑战不是搭建 Postfix,而是让你的邮件被接收方信任。如果连基本的邮件认证都不做,从接收方的视角看,你的邮件和垃圾邮件只有一步之遥。

使用 Hugo 构建
主题 StackJimmy 设计