邮件投递平台 Postal 的使用经验
内容提要
本文总结了使用邮件投递平台Postal替代SendGrid的经验。主要问题包括:SMTP 25端口可能被VPS限制,可用iptables或Socks代理解决;需拆分Web和SMTP服务域名,配置smtp_hostname;PTR记录需与主机名一致,但helo_hostname配置有缺陷,需临时修改;TLS证书建议使用多域名或通配符证书。总体认为Postal是值得尝试的自建方案。
延伸解读
25端口限制的应对策略
许多VPS厂商会限制出站25端口,导致Postal无法直接通过SMTP发送邮件。文章提供了两种解决方案:使用Socks代理,但代理服务器也可能受限;或在Postal服务器上用iptables将备用端口(如587、2525)重定向到25端口。这为受限制的用户提供了可行的变通方法。
域名拆分与PTR记录配置
Postal的Web和SMTP服务共用域名,但为了使用Cloudflare代理或独立管理,需拆分域名。配置smtp_hostname为独立域名,并确保PTR记录与主机名一致。若使用多个出站IP,默认smtp_hostname可能无法匹配所有PTR,需临时修改配置并重启服务,使helo_hostname生效,以通过PTR检查。
TLS证书选择建议
Postal在25端口支持STARTTLS,但客户端验证证书的规则不统一,有的要求主机名匹配,有的要求与MX记录或连接域名匹配。为避免兼容性问题,建议使用包含所有邮件域名的多域名证书或通配符证书,确保在各种客户端下都能通过验证。
Q&A
Postal 邮件平台相比 SendGrid 有什么优势?
Postal 可以完全替代 SendGrid,并且是自建方案,可以避免依赖第三方服务,减少账户风险。
VPS 限制了 25 端口出站流量,如何解决 Postal 发信问题?
可以使用 Socks 代理让 25 端口流量绕道,或者在 Postal 服务器上用 iptables 将备用端口(如 587、2525)重定向到 25 端口。
为什么需要将 Postal 的 Web 服务和 SMTP 服务域名拆分?
因为 Postal 的 Web 服务和 SMTP 服务共用同一个域名时,无法使用 Cloudflare 代理加速 Web 服务,所以需要拆分域名,通过配置 smtp_hostname 实现。
Postal 的 PTR 记录与主机名有什么关系?
SMTP 服务器在 STARTTLS 协商时会声明自己的 hostname,对方会验证该 hostname 与 PTR 记录是否一致。因此建议主机名与 PTR 记录保持一致。
Postal 的 helo_hostname 配置有什么问题?如何解决?
helo_hostname 配置目前无效,无法直接生效。解决方法是先修改 smtp_hostname 为 helo.example.com,重启 SMTP 服务,再改回 smtp.example.com 并重启 Web 服务,同时为 helo.example.com 创建指向所有出站 IP 的 A 记录。
Postal 的 TLS 证书应该怎么配置?
需要在配置文件中开启 smtp_server.tls_enabled: true,并将密钥和证书放到 /opt/postal/config/smtp.key 和 /opt/postal/config/smtp.cert。建议使用包含所有邮件域名的多域名证书或通配符证书。
为什么建议使用多域名或通配符证书?
因为 SMTP 客户端验证证书的规则没有统一标准,可能要求证书与主机名、MX 记录或连接域名匹配,使用多域名或通配符证书可以覆盖所有情况,避免验证失败。