用自己的域名收发邮件:PMail 搭建个人邮箱推荐

想用自己域名当邮箱后缀的人越来越多,但这两年反而越来越难:QQ 邮箱、Outlook 陆续停了个人域名邮箱服务,剩下能用的要么开始收费,要么限制一堆。

绕开这些限制的办法只有一个——自己搭。问题是主流自建方案(Mailcow、Mailu 这类)组件多、吃资源,手上那台 1 核 512M 的小鸡基本跑不起来。

PMail 就是冲着这个场景做的。项目地址:https://github.com/Jinnrry/PMail

它是什么

Go 写的一套个人域名邮箱服务,编译出来是单个二进制文件,前端后端都在里面。GPL-2.0 协议,作者 Jinnrry,目前还在活跃维护。

作者自己说得很实在:他的服务器是 1 核 512M、10G 硬盘,市面上大部分邮箱服务装完磁盘就满了,所以干脆自己写了一个。

能干什么

收发与管理

  • 完整的收信、发信能力,附带一个 Web 邮件管理后台
  • 支持附件、抄送、密送、发件人昵称、邮件搜索
  • 自定义邮件分组(文件夹),邮件可以批量移动、删除、标记已读
  • 收信规则:按发件人、主旨、内容匹配(等于 / 包含 / 正则),自动执行转发、移动到分组、标记已读、删除
  • 多用户、多域名,一个后台能给不同人开不同账号,一个账号也能绑多个域名
  • 账号管理支持增删用户、禁用账号、重置密码

协议与安全

  • 支持 IMAP、POP3、SMTP,手机上的 Foxmail、Thunderbird 这类客户端直接能连
  • 支持 SPF、DKIM 校验,配置正确的话 mail-tester 能拿到 10 分
  • 垃圾邮件过滤分四档,可以按 SPF/DKIM 校验结果决定是否拦截
  • 内置 ACME,自动申请并续期 Let’s Encrypt 证书
  • 插件机制:官方带微信推送、垃圾邮件屏蔽,第三方还有 Telegram 推送

部署方式

  • 单文件运行,也可以 Docker 一把梭
  • 数据库三选一:SQLite(默认)、MySQL、PostgreSQL

部署有多简单

作者的说法是”一行代码、一分钟”,从流程上看确实不夸张。

先把程序下下来跑起来:

1
./pmail -p 80

或者用 Docker:

1
2
3
4
5
docker run -d \
-p 25:25 -p 80:80 -p 443:443 -p 110:110 \
-p 465:465 -p 587:587 -p 995:995 -p 993:993 \
-v $(pwd)/config:/work/config \
ghcr.io/jinnrry/pmail:latest

然后浏览器打开服务器 IP,跟着向导走六步:数据库 → 管理员密码 → 域名 → DNS 记录 → SSL 证书。

DNS 那一步挺省心,程序会直接把你域名需要加的 MX、SPF、DKIM 记录列成一张表,照着抄到域名服务商那边就行,不用自己去翻文档。SSL 证书可以选择 HTTP 或 DNS 挑战自动申请,也可以手动上传自己的证书。

部署前建议先去 spamhaus 查一下域名和 IP 有没有进黑名单,这一步能省掉后面很多莫名其妙的退信。

用第三方客户端的话,地址按这个填:

  • IMAP:imap.你的域名,端口 993(SSL)
  • SMTP:smtp.你的域名,端口 25 / 465 / 587(SSL)
  • POP3:pop.你的域名,端口 110 / 995(SSL)

适合谁

  • 有域名、想用自己的域名收发邮件的个人
  • 手上正好有小内存 VPS 的人,1 核 512M 到 1 核 1G 就够用
  • 自托管玩家,喜欢把数据攥在自己手里
  • 需要多域名、多账号的家庭或小团队,一个人维护、全家人用
  • 被商业邮箱政策变化折腾过,不想再被动迁移的人

反过来,下面这几种情况就别折腾了:完全不想碰命令行和 DNS 配置的、需要日历和通讯录协作的、云厂商死活不给解封 25 端口的。

优点

  1. 部署真的简单。单文件扔上去改个配置就能跑,比那些要拉一堆容器、写 compose 的方案友好太多
  2. 省资源。按 README 里的数据,编译后的二进制文件 15MB,运行内存占用在 10MB 以内,小机器完全扛得住
  3. 证书不用管。内置 ACME,申请和续期都自动
  4. 有 Web 后台。收信、发信、建用户、看规则都在页面上点,不用改配置文件
  5. 协议齐全。IMAP、POP3、SMTP 都支持,意味着手机端可以用自己习惯的邮件 App
  6. 多域名多用户。想给家里人各开一个 xxx@你的域名 完全没问题
  7. 规则和分组够用。收信自动分类、自动转发这些日常需求都能覆盖
  8. 有插件生态。收信推微信、推 Telegram 都有现成方案,不用自己写

缺点和要注意的坑

  1. 出站 25 端口是最大的门槛。PMail 发信是直连对方域名的 MX 记录,没有中继功能。阿里云、腾讯云这类厂商默认封 25 端口出站,得开工单申请解封,否则只能收信不能发信。这一点在选 VPS 之前就要确认清楚
  2. 反向解析(PTR)要自己配。这项得在 VPS 商家后台提工单设置,PMail 管不了。没配的话发出去的邮件很容易进垃圾箱
  3. 新 IP 有冷启动期。刚上手的 IP 没有信誉积累,被退信或被判垃圾是常事,要有心理准备
  4. DMARC 得自己加。向导只生成了 MX、SPF、DKIM 三条记录,DMARC 需要自己补一条 TXT
  5. 反垃圾能力有限。只有 SPF/DKIM 校验加上插件层面的关键字过滤,没有商业邮箱那种成熟的垃圾邮件引擎
  6. 功能比商业邮箱少。没有日历、通讯录、日程这些,Web 端就是纯粹的邮件收发和管理
  7. 没有官方 App。手机端靠第三方邮件客户端,体验取决于你选的客户端
  8. 单人维护的项目。遇到问题主要去翻 GitHub 的 Issue 和 Wiki,别指望有客服
  9. 运维全靠自己。备份、升级、安全加固都得自己盯着,把服务暴露在公网上,等于自己当运维
  10. 插件是独立进程跑在服务器上的。README 里也提醒了,第三方插件要自己审代码再用

和其他方案对比

对比项 PMail Mailcow / Mailu 这类 商业域名邮箱
资源占用 很低,小内存 VPS 能跑 组件多,配置要求高 不用自己维护
部署难度 一行命令 + 图形向导 需要 Docker 编排和调参 改几条 DNS 就行
功能完整度 收发 + Web 后台 + 规则 更全,带日历、通讯录 最全
数据掌控 完全在自己手里 自己手里 在服务商手里
主要成本 域名 + 便宜 VPS 域名 + 更高配置 VPS 免费额度有限或订阅
适合谁 个人、小团队 有运维能力的团队 只想用不想折腾的人

结语

PMail 的定位很清楚:不追求做成企业级邮件系统,只解决”个人和小团队想用自己的域名收发邮件”这一件事,而且解决得相当干脆。部署简单、资源占用小、功能该有的都有,这几点加起来,在个人自建邮箱这个方向里算是很能打的了。

当然它也不是开箱即用的东西,25 端口、PTR、DMARC 这几关绕不过去,动手之前把这些确认清楚,能少踩不少坑。

项目地址:https://github.com/Jinnrry/PMail