自建SMTP vs. Mailchimp
本文的目标不是绕过垃圾邮件过滤器或发送垃圾邮件。 目标是观察当你试图复制 Mailchimp 的做法但缺少其基础设施时,什么会开始出问题。
微信 ezpoda免费咨询:AI编程 | AI模型微调| AI私有化部署
AI模型价格对比 | AI工具导航 | ONNX模型库 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo
这个项目纯粹出于好奇心。我想了解像 Mailchimp 这样的邮件服务提供商如何发送冷邮件和促销邮件,它们如何管理 IP 信誉、DNS 和路由,以及为什么邮件投递对基础设施决策如此敏感。
为了回答这些问题,我使用 Postal 搭建了一个本地 SMTP 服务器,通过 Cloudflare Tunnel 进行外部暴露,并在 Gmail、Outlook 和 Hostinger 上测试了真实世界的投递情况。
本文是一个实战逐步演练,记录了什么有效、什么失败了,以及为什么邮件基础设施是这样设计的。
0、为什么做这个项目
重要澄清:
Gmail 最初并没有阻止邮件。
目标不是绕过垃圾邮件过滤器或发送垃圾邮件。 目标是观察当你试图复制 Mailchimp 的做法但缺少其基础设施时,什么会开始出问题。
我想了解:
- 为什么 ESP(邮件服务提供商)坚持使用静态 IP
- 为什么 Return-Path 和 rDNS 如此重要
- 为什么入站和出站邮件要分开
- 为什么仅靠 Cloudflare 对 SMTP 不够
学习这些的唯一方法就是自己搭建。
为了保持实验的真实性但又经济:
- Postal — 开源邮件服务器
- WSL (Ubuntu) — 本地 Linux 环境
- Cloudflare Tunnel — 安全的公共暴露
- Cloudflare DNS — 域名和邮件记录
- 小型 VPS — 用于入站邮件处理的静态 IP
1、使用 WSL Ubuntu 在本地运行 Postal
我在本地机器的 WSL (Ubuntu) 中安装了 Postal。
为什么用 WSL?
- 快速设置
- 原生 Linux 工具
- 适合实验
- 无需立即购买 VPS
此时的状态:
- Postal UI 在本地运行
- SMTP 服务器已激活
- 一切在
localhost上正常工作
但显然,没有外部邮件服务器能够访问到它。
2、使用 Cloudflare Tunnel 暴露 Postal
我的 ISP 将我的机器放在 CGNAT 后面,这意味着:
- 没有公共 IP
- 无法端口转发
- 没有直接入站访问
所以我使用了 Cloudflare Tunnel。
Tunnel 设置:
postal.domain.com → localhost:5000
Postal 的 Web 界面运行在 端口 5000 上,所以我安全地暴露了它。
结果:
- Postal UI 可通过
https://postal.domain.com访问 - 无需开放路由器端口
- 流量完全加密
此时,控制面板已上线。
3、在 Postal 中创建 SMTP 服务器和发送域名
在 Postal 仪表板中:
- 创建了一个 SMTP 服务器
- 添加了一个 发送域名
- 生成了所需的 DNS 记录:
- SPF
- DKIM
- Return-Path (RP)
所有记录都添加到了 Cloudflare DNS 并成功验证。
4、Gmail 和 Outlook 拒绝了邮件
然后我测试了向以下地址发送邮件:
- Gmail
- Outlook
- Hostinger
Gmail 和 Outlook 在 SMTP 握手阶段就拒绝了邮件。
拒绝日志清楚地显示:
发送 IP 被列入了 Spamhaus
这立即解释了行为:
- Outlook 严重依赖 Spamhaus 阻止列表
- Gmail 也是如此
- 被列入列表的 IP 会导致硬拒绝,不管 SPF 或 DKIM 是否通过
这纯粹是一个 IP 信誉问题,不是配置错误。
为什么本地或共享 IP 会出现这种情况?
在我的案例中:
- IP 属于 ISP 或共享环境
- 我无法控制其历史
- 之前的滥用已经破坏了信誉
这揭示了一个重要事实:
邮件提供商信任的是IP 历史,而不是你的意图。
5、Hostinger 软失败和 Return-Path 发现
Hostinger 的行为不同。
它没有直接拒绝邮件,而是软失败了投递。
日志显示:
rp.portal.domain.com does not resolve to a valid IP这直接指向了 Return-Path 域名。
6、为什么 Return-Path 会破坏本地 SMTP 设置
Return-Path 对于以下功能至关重要:
- 退信处理
- 信誉追踪
- SMTP 信任验证
在我的设置中:
rp.portal.domain.com指向我的本地机器- 我的本地机器:
- 在 CGNAT 后面
- 没有静态 IP
- Cloudflare Tunnel:
- 无法暴露 端口 25
- 无法提供 PTR / rDNS
这是一个硬技术限制,不是配置错误。
为什么 Cloudflare Tunnel 对 SMTP 不够?
Cloudflare Tunnel 非常适合:
- Web 仪表板
- API
- 控制面板
但 SMTP 是基础设施密集型的:
- 端口 25 必须可直接访问
- 静态 IP 是必须的
- 反向 DNS (PTR) 是必需的
- 信誉是基于 IP 的
这就是为什么 ESP 不会完全在 Tunnel 后面运行 SMTP。
7、分离出站和入站(像真正的 ESP 一样)
解决方案是架构层面的,不是战术层面的。
最终架构:
Outbound Emails
→ Local Postal (via Cloudflare Tunnel)
Inbound Emails / Return-Path / Bounces
→ VPS with Static IP
为什么需要 VPS?
- 公共静态 IP
- 正确的 PTR(反向 DNS)
- 允许端口 25
- 行业标准的入站处理
我更新了 DNS:
rp.portal.domain.com → VPS IP
结果:
- Hostinger 不再软失败
- SMTP 信任提升
- 行为与真正的 ESP 一致
为什么 Mailchimp 和 ESP 是这样构建的?
这个实验说明了一切:
- 控制面板可以是动态的
- SMTP 平台必须是稳定的
- 入站邮件对信誉至关重要
- IP 所有权比软件更重要
Mailchimp 不是"打败垃圾邮件过滤器"——它是正确地设计了基础设施。
8、本次实验的关键收获
- Spamhaus 列表 = 立即被拒绝
- Gmail 和 Outlook 的行为是一致且正确的
- 仅靠 SPF/DKIM 不能保证投递
- Return-Path 是不可或缺的
- Cloudflare Tunnel ≠ SMTP 解决方案
- CGNAT 会破坏入站邮件
- 静态 IP 是必须的
这个设置非常适合你,如果你:
- 想深入理解邮件系统
- 正在构建 SaaS 或 ESP
- 更看重架构而非捷径
不适合:
- 只想快速发送事务性邮件
- 不想管理 IP 信誉
9、结束语
这个项目不是为了发送垃圾邮件或绕过 Gmail。
它是为了理解为什么邮件基础设施很困难——以及为什么像 Mailchimp 这样的平台存在。
搭建了这个之后,我不再把邮件看作"只是 SMTP"。
这是分布式信任工程。
原文链接: How I Built a Local SMTP Server Using Postal and Cloudflare to Understand How Mailchimp Really Works
汇智网翻译整理,转载请标明出处