Blog

邮件自托管?Postfix 的现实与劝退

四月又有人(包括我自己)刷到「用 Docker 五分钟搭完整邮箱」的教程,手指已经放到 docker compose up 上。写这篇是为了在你点下去之前泼一盆冷水:家庭实验室自建全功能收发邮箱,我劝退。 特殊需求可以往下读可行替代路径;若你的目标只是「实验室里多一个服务」,邮件多半是乐趣与痛苦比最差的那一个。

为什么装上 Postfix 不等于能发信

把 MTA 跑起来是简单题。让 Gmail、Outlook、企业邮箱稳定收你的信,是另一门生意——而且对方规则还在变,你的家宽不会因此变干净。

IP 声誉。 家宽出口几乎注定在动态池里,很多段直接被拒或进垃圾箱。普通云厂商的廉价 VPS 网段同样「脏」:前任租户发过垃圾邮件,你继承黑名单。干净 IP 要么贵,要么要养很久,养的过程里朋友已经骂过你两回「验证码收不到」。

DNS 全家桶。 SPF、DKIM、DMARC、PTR(反向解析)缺一不可;PTR 还经常要给厂商提工单才能改。配对了只是入场券,队列里的 defer、bounce、投诉反馈循环才要长期盯。某天 DMARC 报表里一堆失败,你得有心理准备去读那些报表,而不是只看绿色对勾截图。

申诉与封禁。 某天起所有信进垃圾箱,你要去 Spamhaus 与各大 ISP 工单里解释「我只是家庭实验室」。耗的是日历时间与情绪,不是 CPU 时间。教程不会写这一段,因为写了就不好看了。

可用性预期。 邮件是异步的,但账单、验证码、密码重置、同学聚会通知都靠它。实验室主机重启、硬盘告警、证书过期——朋友只会觉得你的域名「就是收不到信」,不会关心你在升级 OpenWrt。

装个 MTA 很容易;让对方邮箱愿意收你,很难。两者差的不是一行配置,是声誉与运维承诺。家庭实验室里大多数服务「挂了可以明天再修」;邮件一旦成为家人或朋友的主联系方式,你就在用业余时间承担准生产通信的 SLA,这个交换通常不划算。

常见幻觉

  • 「我 SPF、DKIM 全绿就稳了」——绿的是语法,不是声誉。
  • 「用住宅 IP 更真实」——很多运营商直接拦 25 端口出站,真实变成发不出去。
  • 「反正只给自己用」——自己用也要给手机厂商推送、给 Git 平台绑邮箱;进垃圾箱一样痛。
  • 「Docker 镜像帮我全配好了」——镜像不负责你的 IP 历史,也不负责对方策略变更。
  • 「挂了可以再装」——邮件丢的是信任与时效,不是容器层。

可行替代路径(按推荐顺序)

一、主通信交给成熟托管。
个人或家庭用 Fastmail、Purelymail、Migadu,或大厂域名邮箱均可。钱换的是投递率和别人已经养好的出站池。把「自建」精力留给你真正在乎的数据服务:照片、备份、密码库、代码。邮箱这种强依赖对方策略的东西,外包往往更理性。

二、事务邮件与告警走外部 SMTP。
Prometheus Alertmanager、各面板通知、应用注册信:用 SES、Resend、Mailgun,或托管邮箱提供的 SMTP。主题里带主机名,凭证放密钥库,出站与家宽解耦。这样「盘要挂了」的通知不会建立在自己摇摇欲坠的邮件栈上。

# Alertmanager 示意:别把 SMTP 指到自家 Postfix
global:
  smtp_smarthost: 'smtp.example-provider:587'
  smtp_from: '[email protected]'
  smtp_auth_username: '...'
  smtp_auth_password: '...'

三、自建只做内网可见的通知中转(可选)。
若你坚持实验室里有个 Postfix,让它只监听内网或 VPN,对外转发到上面的外部 SMTP(smart host)。本地服务仍可写 localhost:25,真正出网信誉不绑家宽。这已经不是「全功能邮箱」,而是中继,复杂度与风险都小一截。

四、必须自建全功能时的最低条件。
独立干净 IP、完整 PTR 与 SPF、DKIM、DMARC、双反查一致、反馈循环与队列监控、出站速率冷却、隔离的滥用投诉处理流程。先给自己往 Gmail 与 Outlook 连发两周测试信,看投放位置,再邀请任何真人使用。多数人在第二周会改回托管——这很正常,不是失败,是信息到位后的理性收敛。

什么时候可以不劝退

  • 你在做邮件相关的工作或研究,实验室就是实验本身,失败可接受。
  • 公司已有干净 ASN 与专职抗滥用,你只是其中一环。
  • 只收不发,且接收方全是你控制的系统(仍然要设计投递失败时怎么办)。

若以上都不占,把生命花在和黑名单斗争上,通常不划算。自托管的边界感,有时比多跑一个容器更值钱。认输有时是工程成熟度:不是所有服务都值得放进机柜。

我自己的落点很务实:对外身份邮箱用托管;实验室告警与系统通知走外部 SMTP;内网若需要本机投递,最多做 smart host 中继。这样既保留一点「自己控链路」的手感,又不用在每次搬家换 IP 后重新养声誉。若你读完仍想全自建,至少把本文的最低条件当成上线检查单,而不是教程末尾的彩蛋。

← Back to Blog