在一台低配服务器上使用Pmail轻松搭建一个自己的邮件服务器 且不会被当成垃圾邮件
哈喽呀~ 今天想跟小伙伴们聊一个有点硬核、但又超级实用的话题:自己搭一台邮件服务器。
是不是一听“邮件服务器”就觉得头大?脑子里立马浮现出 Postfix、Dovecot、MySQL、OpenDKIM…… 一堆配置文件堆起来能绕地球半圈,内存没个 2G 都不敢开机>﹏<
但今天要介绍的这位小可爱—— Pmail,真的能把这件事变得“傻瓜式”。它用 Go 写成,整个服务就一个二进制文件,内存占用低到在一台 1 核 1G 的小水管服务器上都能欢快地跑起来。更关键的是:只要把几个 DNS 记录配好,发出的邮件就不会被 Gmail、QQ、网易当成垃圾邮件丢进垃圾桶。
下面咱们就一步一步,把这台属于你自己的邮件服务器,稳稳当当地搭起来~
PMail 项目地址:https://github.com/Jinnrry/PMail/
一、Pmail 凭啥比别的邮件服务器香?
在动手之前,先说说为什么要选它。常见的自建邮件方案大概有这么几类:
| 方案 | 特点 | 槽点 |
|---|---|---|
| Postfix + Dovecot 手搓 | 老牌经典,资料多 | 配置又臭又长,DKIM/SPF 全靠手工,劝退新手 |
| iRedMail | 一键脚本,功能全 | 组件一堆,吃内存,低配机器吃不消 |
| Mailcow | Docker 全家桶,界面漂亮 | 资源占用高,官方建议至少 2G 内存 |
| Pmail | 单二进制 + Web 管理,开箱即用 | 功能相对精简,但日常收发完全够用 |
Pmail 的核心优势其实就是三个字:轻、简、乖。
- 轻:纯 Go 编写,编译出来就一个可执行文件,跑在 1 核 1G 甚至更低的机器上毫无压力,特别适合咱们手里那些闲置的小鸡(低配 VPS)。
- 简:不需要你自己拼装 SMTP、POP3、IMAP 各种组件,一个容器全包了,还自带网页管理后台。
- 乖:首次启动会引导你完成域名、账号、SSL 证书的配置,连 Let’s Encrypt 证书都帮你自动申请好,不用自己折腾 acme。
一句话总结:如果你想“花最少的时间和资源,拥有一个能正常收发信的私人邮箱”,Pmail 基本就是目前最省心的选择了。💡
二、Docker 一键部署(真的只要一段 yaml)
Pmail 官方提供了打包好的镜像,咱们用 Docker Compose 起一下就好。新建一个 docker-compose.yml,把下面这段乖乖贴进去:
1 | services: |
稍微解释一下这些端口都在干嘛,免得大家贴完一脸懵:
- 25:SMTP,服务器之间投递邮件用的“大马路”。
- 465 / 587:加密的 SMTP 提交端口,你用邮件客户端发信走这里。
- 110 / 995:POP3 及其加密版本(995),用来把邮件下载到本地。
- 143 / 993:IMAP 及其加密版本(993),在服务器上同步管理邮件。
- 80 / 443:Web 管理后台 + 自动申请 SSL 证书时验证域名所有权用。
volumes 那行把宿主机的 ./config 挂进了容器里的 /work/config,这样你的配置、证书、DKIM 密钥都会持久化保存,容器重启也不会丢。✨
保存之后,在同级目录执行:
1 | docker compose up -d |
看到 pmail 容器状态变成 Up,咱们的第一阶段就搞定啦~ 🎉
小提示:有些云厂商默认是封锁 25 端口的,部署前最好先确认一下 25 端口是否已经解封,不然邮件发不出去可就尴尬了。
三、打开浏览器,完成初始配置
容器起来之后,在浏览器里访问 http://你的服务器IP:80,就能看到 Pmail 的设置向导啦。
跟着向导一步步走,主要会让你填这几样东西:
- 服务器域名:比如
mail.yourdomain.com,这个待会儿要写进 DNS 的。 - 管理员账号:也就是你的第一个邮箱账号,例如
admin@yourdomain.com。 - DNS 解析提示:向导会告诉你该填哪些 DNS 记录(MX、SPF、DKIM 等)
- SSL 证书:Pmail 会自动通过 Let’s Encrypt 帮你申请免费的 HTTPS 证书,这一步基本是全自动的,泡杯茶的功夫就好啦。☕
⚠️ 一个很重要的小坑:上面提到的 DNS 解析,如果你用的是 Cloudflare,记得把域名的 代理(小橙云)功能关掉(改成 DNS only,灰色)。Cloudflare 的代理会改掉你的真实 IP,有时候会导致邮件收不到,或者被对方服务器判定异常。咱们搭邮件服务器,DNS 记录最好是“直连”,别走代理哦。
四、把 DNS 记录配齐:MX、SPF、DKIM 一个都不能少
想让发出的邮件不被当垃圾邮件,DNS 才是真正的重头戏。垃圾邮件过滤系统基本就是靠 DNS 里的这几条记录,来判断“这封邮件到底是不是你本人发的”。
1. MX 记录(告诉别人信该投到哪)
| 类型 | 名称 | 内容 | TTL |
|---|---|---|---|
| MX | @ 或你的域名 |
mail.yourdomain.com(优先级 10) |
自动 |
2. SPF 记录(授权哪些 IP 能替你发信)
加一条 TXT 记录:
1 | 类型:TXT |
3. DKIM 记录(给邮件盖个防伪章)
DKIM 是用一对公私钥给邮件签名。Pmail 在初始化时会自动生成 DKIM 密钥,并告诉你该往 DNS 里填的公钥 TXT 记录。
不过这里有个真实踩过的坑,悄悄告诉你:🤫
有时候 Pmail 自动生成的 DKIM 会被某些邮件服务商判定为无效别慌,咱们手动换一把钥匙就行。
去项目目录下的 /config/dkim/ 文件夹,用这个在线工具重新生成一对:
👉 https://www.wiredblade.com/zh-CN/NetworkTools/DKIMWizard
重点来了:生成时一定选 1024 位密钥! 别手滑选成 2048哦
生成好后,把私钥覆盖到 /config/dkim/dkim.priv 文件里,同时把工具给的公钥更新到你的 DNS 的 DKIM 记录(通常是 default._domainkey.yourdomain.com 这条 TXT)里。两边保持一致,防伪章就盖好啦。
下面这张图就是 Cloudflare 里 DNS 解析界面的样子
五、找运营商开反向解析(PTR 记录)
这一步很多教程会漏掉,但它对“不被当垃圾邮件”影响非常大。
正向解析是“域名 → IP”,而 PTR 记录是“IP → 域名”的反向解析。大多数邮件服务器收到信后,会反查发信 IP 对应的域名,如果不一致,立马怀疑你是垃圾源。
因为 PTR 记录是作用在 IP 段上的,咱们自己改不了,得去找你的云服务器厂商(阿里云、腾讯云、AWS 等)提工单申请:
工单模板参考:
“您好,请为我的服务器公网 IP你的IP设置反向 DNS(PTR)解析,指向域名mail.yourdomain.com,谢谢~”
一般来说大厂都免费支持,提交后等几个小时到一天就生效了。搞定这一步,你的邮件可信度又往上蹦了一大截。🚀
六、用 mail-tester 验收,8 分以上就稳了
全部配完、并且耐心等 DNS 全球生效(通常几分钟到几小时,看 TTL)之后,就可以验收成果啦。
打开 👉 https://www.mail-tester.com/
网站会给你一个专属测试邮箱地址(形如 tx@mail-tester.com)。用自己的 Pmail 账号,认认真真发一封邮件过去,然后点“检查分数”。
它会从 SPF、DKIM、PTR、黑名单、邮件头格式等维度给你打分,满分是 10 分。
下面这张就是博主实测的评分图:

可以看到,满分 10 分这一回拿了 7 分。少了那 3 分其实不是配置错了,而是当时 DNS 还没完全生效(PTR 和 DKIM 的同步需要一点时间)。等记录彻底传播开,分数就能稳稳冲到 8 分以上。
💡 经验值:分数 ≥ 8 分,发出的邮件基本就能被 Gmail、QQ 邮箱、网易等主流服务商正常收下,进垃圾箱的概率非常低。所以别看到 7 分就慌,先去喝口水,等 DNS 生效再测一次就好~
小小总结
回头看看,咱们其实就做了这么几件事:
- 用一段 docker-compose 把 Pmail 跑起来;
- 访问
IP:80走完初始化向导,顺手关掉 Cloudflare 代理; - 把 MX / SPF / DKIM 三条 DNS 记录配齐(DKIM 不对就手动换 1024 位密钥);
- 找厂商给 IP 加上 PTR 反向解析;
- 用 mail-tester 测一测,8 分以上收工。
全程下来,哪怕是一台 1 核 1G 的小水管服务器也能轻松扛住,资源占用低得感人。从此你就有了一个真正属于自己、数据自己掌控、还能正常收发信的私人邮箱,再也不用担心哪天第三方邮箱突然收回你的账号啦。🥰
如果在配置过程中遇到什么奇奇怪怪的小问题,欢迎在评论区留言,咱们一起排雷~ 祝大家的邮件都能乖乖送达,永不进垃圾箱!✉️


