自建邮件服务器发信被退'554 5.7.1 Recipient address rejected: Dynamic IP'或'Client host rejected: cannot find your hostname',动态IP/无PTR被拒怎么办?

54 自建邮件服务器发信被退"554 5.7.1 Recipient address rejected: Dynamic IP"或"Client host rejected: cannot find your hostname",动态IP/无PTR被拒怎么办?
原因

全球邮件服务商普遍使用 PBL(Policy Block List)和 dynamic/dial-up IP 范围名单拒绝从动态/住宅/ADSL/4G/5G IP 直接发来的邮件。同时多数服务商要求发信 IP 必须有 PTR 反向 DNS 记录(正向 A 指向该 IP → 反向 PTR 指回域名)。原因:动态 IP 是僵尸网络/垃圾邮件的最主要来源——全球 >90% 的垃圾邮件来自被感染的动态 IP 设备。

操作

1. 确认 IP 类型:在 Spamhaus PBL 查询你的 IP——如果被列出就是动态 IP 段,基本无法直投邮件。
2. 申请 PTR 记录:(a) 阿里云:控制台 → 弹性公网 IP → 反向解析 → 填写你的邮件主机名(如 mail.xxx.com)→ 确保域名 A 记录指向该 IP → 提交申请;(b) 其他云:联系客服工单。(c) 家庭宽带:ISP 通常不提供 PTR 设置。
3. 无法获取 PTR 时的替代方案:不要从该 IP 直接投递!改用 SMTP relay(中转)模式——把你的邮件通过认证后提交给专业发信平台:(a) 昆仑邮件系统 SMTP relay、(b) SendGrid、(c) Mailgun、(d) Amazon SES、(e) 各类邮件推送服务。这些平台的 IP 已有稳定信誉和 PTR。
4. Postfix 中转配置/etc/postfix/main.cf 中设置 relayhost = [smtp.sendgrid.net]:587 + SASL 认证即可。

参考:RFC 5321 §4.1.4(反向 DNS 建议)· RFC 1912 §2.1 · Spamhaus PBL