在 VPS 上自建邮箱(Mailcow / Mail-in-a-Box)是神器还是作死?25 端口与 PTR 记录坑解析
2026-08-14 · DevCraft Studio
为什么要自建邮箱?现代化一键方案 Mailcow 与 Mail-in-a-Box 怎么搭?现实大坑:25 端口被封、PTR 反向解析、IP 黑名单导致被 Gmail/Outlook 拒收。本文一次讲清。
延伸阅读
更多相关攻略推荐:Ollama AI系列(2):VPS上的AI推理与API应用、Ollama AI系列(2):VPS上的AI推理与API应用、【CPU选型 01】搭载 AMD Ryzen 9950X 的 VPS、ARM / Ampere 席卷 VPS:性价比真香还是兼容陷阱?、Ollama AI系列(2):VPS上的AI推理与API应用。
一、为什么要自建邮箱?先想清楚你图什么
在 VPS 上自建邮件服务器,是很多折腾党绕不开的"成人礼"。刚买小鸡时,看着自己手里闲置的 IP 和域名,脑子里很容易冒出三个念头:第一,我想要一个完全属于自己域名的邮箱,比如 hello@我的域名.com,而不是被大厂 @gmail、@qq 这种后缀框住;第二,我不想让谷歌、微软、腾讯扫描我的邮件内容做广告画像,数据隐私要握在自己手里;第三,大厂的企业邮按座位收费,而我自己搭一套理论上"无限邮箱、零月费",多划算。
这些诉求都是真实的,而且技术上完全可行。但在这股热情冷却之前,我必须先泼一盆冷水:能搭起来 ≠ 邮件能稳定送达。邮件系统和普通网站最大的区别是——它是一对多的信任游戏,你不仅要能收,更要让 Gmail、Outlook、QQ 邮箱愿意收你的信。只要对方把你当成可疑来源,你的邮件就会悄无声息地进垃圾箱,甚至被硬拒。下面先把现代一键方案讲清楚,再重点拆解那些会劝退新手的现实大坑。
二、现代化一键方案:Mailcow 与 Mail-in-a-Box
十年前想自建邮件,得自己一个一个配 Postfix、Dovecot、SpamAssassin、ClamAV、Roundcube,光是让它们互相认识就要掉一层皮。今天已经有了成熟的开箱即用方案,最主流的两个是 Mailcow 和 Mail-in-a-Box。
三、Mailcow:Docker Compose 全家桶
Mailcow(官方叫 mailcow: dockerized)把一整套邮件生态打包进 Docker 容器:Postfix 负责 SMTP 收发、Dovecot 负责 IMAP/POP3、Rspamd 做垃圾邮件打分与 DKIM 签名、ClamAV 做病毒扫描、Roundcube 提供 Webmail、SOGo 负责通讯录与日历同步,外加 Unbound 做本地 DNS 解析、acme 容器自动申请 Let's Encrypt 证书。你几乎不需要手动改配置,跑一条脚本生成配置即可。
典型安装流程:先装好 Docker 与 Docker Compose(官方要求 Docker 24.x 以上),然后克隆仓库、生成配置、拉镜像、启动:
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
./generate_config.sh
docker compose pull
docker compose up -d生成配置时它会问你一个 FQDN(完整主机名,比如 mail.example.com),这个主机名后面要和 PTR 记录、MX 记录严丝合缝地对应。内存紧张时你还可以在 mailcow.conf 里关掉 SOLR 全文检索和 ClamAV 来省资源(通过 SKIP_SOLR / SKIP_CLAMD 环境变量)。ARM64 机器现在也进入了公开测试阶段,树莓派或甲骨文的 ARM 实例都能跑。
四、Mail-in-a-Box:Ubuntu 一键脚本
Mail-in-a-Box(简称 MIAB)走的是另一条路:它不依赖 Docker,而是直接在一台全新的 Ubuntu 22.04 LTS 机器上跑一个 shell 脚本,自动装好几十个 Ubuntu 包并配置成可用的邮件服务器。它内置 Postfix、Dovecot、Roundcube、Nextcloud(通讯录)、Apache SpamAssassin、Postgrey(灰名单),并自带一个 Web 管理面板,能自动配置 SPF、DKIM、DMARC、MTA-STS 等 DNS 记录。
安装简单到令人发指,一条命令就完事:
ssh root@你的服务器IP
curl -s https://mailinabox.email/setup.sh | sudo bash脚本会交互式地问你管理员邮箱和密码,结束后给你一个 https://IP/admin 的管理面板。它理念是"turnkey"——开箱即用、几乎没配置项,装完就能用;但代价是它几乎不允许你事后魔改底层配置。MIAB 官方明确说,如果你想要可深度定制的高级方案,应该去看 iRedMail 或 Modoboa。另外注意:它对机器有洁癖,容器和改过的镜像都不支持,必须是一台干净的原生 Ubuntu。
五、两者怎么选?
简单说:想要灵活、可定制、组件现代化(Rspamd 比 SpamAssassin 更聪明),选 Mailcow;想要最省心、一条命令、自带 DNS 自动配置和面板,选 Mail-in-a-Box。两者都能让你在两三小时内拥有一套看起来"专业"的邮件系统。但重点来了——装起来只是万里长征第一步,下面这些坑才是真正的过滤器。
六、现实大坑一:25 端口被封,你发不出去
这是 90% 新手自建邮件翻车的第一个原因。邮件服务器之间互相投递用的标准端口是 25(SMTP,服务器对服务器)。绝大多数云厂商为了不让自己的 IP 段变成垃圾邮件源头,默认把出向 25 端口封了。结果就是:你的邮局能收信(入向 25 通常开着),但发出去的信永远卡在队列里。
先分清三个端口,别搞混:
- 25:服务器与服务器之间投递邮件的端口,也称 MTA-to-MTA。这是自建邮局能"对外发信"的生命线。
- 465:SMTPS,带隐式 TLS 加密的提交端口,给邮件客户端(你手机/电脑上的 Outlook、Foxmail)用来把信交给自己的服务器。
- 587:Submission 端口,用 STARTTLS 加密,同样是客户端提交信件的标配端口。
换句话说,465/587 是"你 → 你的服务器"用的;而真正的"你的服务器 → 对方服务器"跨服投递,绕不开 25。如果你的商家封了出向 25,光有 465/587 也没用。各商家政策大致是:默认开放的有 Hetzner、OVH、Vultr、Linode;默认封禁但可提工单解封的有 DigitalOcean、Oracle Cloud、AWS(部分);基本解不开的有 Google Cloud 和 Azure(企业协议除外)。特别提醒:阿里云国际、腾讯云国际、AWS、GCP 这些国内玩家常买的商家,25 端口基本都是死的,甲骨文云(Oracle Cloud)更是"无法开放",千万别拿它来自建邮局。
上机前先测一下,省得白忙活:
telnet gmail-smtp-in.l.google.com 25
# 出现 "220 mx.google.com ESMTP" 说明 25 端口通
# 一直卡住超时,就是被商家封了七、现实大坑二:缺了 PTR 反向解析,直接判垃圾
即使 25 端口通了,对方服务器收信时还会做一个检查:你的 IP 能不能反查回一个和你发信域名一致的主机名。这就是 PTR 记录(也叫 rDNS,反向 DNS)。正常 DNS 是"域名 → IP",PTR 是"IP → 域名",两者必须能对上。
比如你的邮件服务器 IP 是 1.2.3.4,主机名是 mail.example.com,那么正向上 mail.example.com 要 A 记录指向 1.2.3.4,反向上 1.2.3.4 的 PTR 也要指向 mail.example.com。这个 PTR 不是在你的域名商那里设,而是在你的 VPS 商家后台设(OVH 叫 Reverse DNS,Hetzner 在 Networking 里,Vultr 在 IPv4 设置里)。设完用下面命令验证:
dig -x 1.2.3.4 +short
# 应当返回 mail.example.com没有 PTR 或 PTR 对不上,Gmail 等会直接把你的信当垃圾甚至拒收。这是新手最容易忽略、却最致命的一步。
八、现实大坑三:SPF、DKIM、DMARC 三件套
就算端口和 PTR 都对了,你还得向对方证明"这封信确实是我发的,不是别人伪造的"。这就是三件套,全都是域名下的 TXT 记录:
- SPF:声明哪些 IP 被允许以你的域名发信。格式类似
v=spf1 ip4:1.2.3.4 ~all。对方一看,发信 IP 不在列表里就标可疑。 - DKIM:用非对称密钥给邮件正文签名,公钥以 TXT 记录公布。对方用公钥验签,确认信没被篡改、确实来自你。
- DMARC:告诉对方"如果 SPF/DKIM 没过,该怎么办"(放进垃圾箱、还是直接拒),并定期回传报告。记录通常放在
_dmarc.example.com。
Mailcow 和 MIAB 都会自动帮你生成 DKIM 密钥和对应的 DNS 记录文本,你只要原样复制到域名 DNS 面板即可。但很多人复制漏了字符、或用了 Cloudflare 的橙色云代理把 MX 记录也代理了(邮件流量必须走 DNS-only 灰云,不能走 CDN 代理),结果三件套形同虚设。MX 记录同样必须正确指向你的邮件主机名,且不能有旧服务商的残留 MX。
九、现实大坑四:IP 干净度,廉价 VPS 的 IP 段常被污染
最扎心的一坑:就算上面全做对了,如果你的服务器 IP 之前被别人拿去发过垃圾邮件,它很可能已经在 Spamhaus、SpamCop、Barracuda 之类的实时黑名单(RBL/DNSBL)里。Gmail、Outlook 收信时会查这些名单,一旦命中,直接拒收或静默丢弃(silent discard,连退信都没有)。
廉价 VPS 的 IP 段经常被反复转手、被滥用,新 IP 没有发信信誉积累,主流邮局本就"天然不信"小服务器,会先观察一段时间。这就是为什么不少帖子里的主角 SPF/DKIM/PTR 全对,邮件照样进垃圾箱——信誉不是配置出来的,是时间养出来的。上线前务必先自查:
# 用 mxtoolbox.com/blacklists 查,或命令行查 Spamhaus
dig +short 你的IP反写.zen.spamhaus.org
# 例如 IP 1.2.3.4 写成 4.3.2.1.zen.spamhaus.org
# 有返回 127.0.0.x 就是被列了如果 IP 已经脏了,最基本的解法是换一台机器、换一个干净 IP,或干脆改用中转/代发(见下)。另外,新服务器发信记得"预热",前几天每天少量发,别一上来就群发几千封。
十、我的结论:什么时候该自建,什么时候该撤
讲了这么多坑,结论其实很务实:个人玩玩、收信、内部系统通知、自己域名的别名邮箱,自建完全 OK,尤其搭配 Hetzner/OVH 这种 25 端口开放、IP 又相对干净的商家,体验相当好。但如果你要的是"给客户发合同、给订阅用户发验证码、重要通知必须 100% 进收件箱"的生产环境,自建就是和自己过不去了——你得 7×24 盯日志、续证书、防黑、养信誉,任何一个环节掉链子就丢信。
更稳的姿势是"混合":邮局负责收信和网页邮箱,发信走专业中继。常见选择有 Resend、Postmark、SendGrid、Mailgun、Amazon SES 这类代发服务——它们有干净的 IP 池和良好信誉,你把自己的 Postfix 配成 smarthost relays,出站邮件交给它们投递。或者干脆用 腾讯企业邮、Google Workspace、Microsoft 365 这类托管企业邮,按人头付费买个省心。说白了吧:发信这种讲究信誉的事,交给专业选手,才是成年人的做法。
一句话总结:自建邮箱是神器还是作死,不取决于你技术多牛,而取决于你愿不愿意为"送达率"这个看不见的指标持续买单。想清楚这一点,你就不会在凌晨三点被一封进垃圾箱的验证码邮件气得睡不着了。
#VPS #自建邮箱 #Mailcow #Mailinabox #邮件服务器 #PTR记录 #SPF #DKIM #DMARC #端口25