fix: 外发优先 IPv4 + smarthost 中继 + 地址族配置(补 PR #1 合并后遗漏的提交) #3

Merged
kevin merged 3 commits from dsh/mailgo:outbound-ipv4-relay into main 2026-08-16 12:13:00 +08:00
Contributor

背景

PR #1(外发投递)在合并时只包含前两个提交;随后推入分支的三个修复提交没有进入上游 main,导致:

  • Gmail 仍会因 IPv6 临时地址无 PTR 被拒(550 5.7.25)
  • 缺少 smarthost 中继能力(无法绕过 Spamhaus PBL 等 IP 信誉封锁)
  • 出站地址族不可配置

本 PR 把这 3 个提交补回上游:

提交内容

  1. fix: 外发优先走 IPv4;新增 smarthost 中继支持
    • 出站 SMTP 连接强制 IPv4(tcp4),无 MX 回退时 IPv4 优先:
      Gmail 会拒收无 PTR 的 IPv6 地址,而 IPv4 通常具备正反向一致的 PTR(实测 Gmail 250 OK)
    • [outbound] 新增 relay_host/relay_port/relay_user/relay_password/relay_starttls:
      配置后所有外部投递经智能主机中继(AUTH PLAIN、465 隐式 TLS / 其他端口 STARTTLS)
    • 新增 smarthost 中继单元测试
  2. fix: relay_starttls 默认值始终为 true——未显式配置时避免中继密码明文传输
  3. feat: 出站地址族可配置 + 源地址绑定
    • ip_family = ipv4(默认)| ipv6 | auto
    • source_ip 绑定出站源地址(如静态 IPv6),避免内核使用轮换的临时隐私地址
    • 无 MX 回退按地址族偏好排序 A/AAAA

实测(lmve.net 生产服务器)

## 背景 PR #1(外发投递)在合并时只包含前两个提交;随后推入分支的三个修复提交没有进入上游 main,导致: - Gmail 仍会因 IPv6 临时地址无 PTR 被拒(550 5.7.25) - 缺少 smarthost 中继能力(无法绕过 Spamhaus PBL 等 IP 信誉封锁) - 出站地址族不可配置 本 PR 把这 3 个提交补回上游: ## 提交内容 1. **`fix: 外发优先走 IPv4;新增 smarthost 中继支持`** - 出站 SMTP 连接强制 IPv4(tcp4),无 MX 回退时 IPv4 优先: Gmail 会拒收无 PTR 的 IPv6 地址,而 IPv4 通常具备正反向一致的 PTR(实测 Gmail 250 OK) - `[outbound]` 新增 relay_host/relay_port/relay_user/relay_password/relay_starttls: 配置后所有外部投递经智能主机中继(AUTH PLAIN、465 隐式 TLS / 其他端口 STARTTLS) - 新增 smarthost 中继单元测试 2. **`fix: relay_starttls 默认值始终为 true`**——未显式配置时避免中继密码明文传输 3. **`feat: 出站地址族可配置 + 源地址绑定`** - `ip_family = ipv4(默认)| ipv6 | auto` - `source_ip` 绑定出站源地址(如静态 IPv6),避免内核使用轮换的临时隐私地址 - 无 MX 回退按地址族偏好排序 A/AAAA ## 实测(lmve.net 生产服务器) - dsh@lmve.net → wuwenfengmi@gmail.com:队列 `sent`,Gmail `250 2.0.0 OK - gsmtp` - dsh@lmve.net → wuwenfengmi@icloud.com:`sent`,iCloud `250 2.0.0 Ok: queued` - Outlook 仍被 Spamhaus PBL 拒收(`550 5.7.1 blocked using Spamhaus`): 需运营商解除 PBL 或配置 smarthost 中继(本 PR 已提供该能力)
dsh added 3 commits 2026-08-16 12:10:58 +08:00
- 出站 SMTP 连接强制 IPv4(tcp4),无 MX 回退时 IPv4 优先:
  住宅/动态 IP 的 IPv6 临时地址通常无 PTR,Gmail 会以 5.7.25 拒收,
  而 IPv4 一般具备正反向一致的 PTR(实测 Gmail 250 OK)
- [outbound] 新增 relay_host/relay_port/relay_user/relay_password/
  relay_starttls:配置后所有外部投递经智能主机中继(AUTH PLAIN、
  465 隐式 TLS / 其他端口 STARTTLS),解决服务器 IP 被 Spamhaus PBL
  收录时 Outlook/Hotmail 拒收的问题
- 新增 smarthost 中继单元测试
- ip_family 默认 ipv4(保持 PTR/SPF 最可靠的路径);运营商为静态 IPv6
  配置 PTR 后可切换 ipv6
- source_ip 绑定出站源地址,避免内核使用轮换的 IPv6 临时隐私地址
  (临时地址无 PTR,Gmail 等会拒收)
- 无 MX 回退时按地址族偏好排序 A/AAAA
kevin merged commit cead42fd69 into main 2026-08-16 12:13:00 +08:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kevin/mailgo#3