开源了一个自研引擎的邮件系统 Mailez,单二进制跑完整邮件栈
做了一年多、最近刚发 1.0.0 的项目:[Mailez](https://gitee.com/mailez-hq/mailez)(GitHub 同名镜像),一个自托管邮件系统。不一样的地方在于,邮件核心不是拿 Postfix / Dovecot / Roundcube 拼出来的,四个协议(SMTP / IMAP / POP3 / ManageSieve)全部自己实现,装进一个 Go 二进制里(我们叫它 Mailezine)。

起因很简单:想给自己域名搭个邮箱,跟着传统方案的文档走了一圈,被 `main.cf` 和 `dovecot.conf` 劝退了。与其学一套上世纪的配置哲学,不如自己写一个——反正 RFC 都摆在那。
## 为什么敢自己写
- 邮件协议看着老,但 RFC 写得相当清楚,IMAP 的扩展(CONDSTORE / QRESYNC / SORT / ACL)都有明确语义
- 收发、存取、过滤在一个进程里完成,没有组件间的 socket 往返,部署面小、故障面也小
- 存储做了可插拔:单机用 Pebble KV + 本地文件起步,换 TiDB + S3 就能水平扩展,同一份引擎代码
## 实测数据(同机 A/B,10,000 人负载模型)
| 指标 | 传统拼装栈 | Mailezine | 提升 |
| --- | --- | --- | --- |
| 收件吞吐 | 3.1 msg/s | 13.6 msg/s | 4.4× |
| 入队→投递 p50 | 35.6 s | 5.30 s | 6.7× |
| 整栈空闲内存 | ~162 MiB | ~6.4 MiB | 约 1/25 |
| 高负载队列积压 | 122 封 | 0 封 | — |
基准方法和脚本都放在仓库里,欢迎复现打脸。
## 顺手解决的一些事
- 管理后台带域名健康检查:MX / SPF / DMARC / DKIM 公钥比对 / Spamhaus 黑名单逐项体检,DNS 向导直接告诉你该发哪 9 条记录,上线照抄
- Webmail 按原生应用的思路写的:三栏布局、会话视图、快捷键、PWA 离线
- 中文搜索做了双字切分,全文索引随投递自动维护
- 附件全文搜索接了 Tika,PDF / Office 文档都能搜
## 也不避讳说缺点
- 云服务器出站 25 端口被封是行业现状,哪个自建方案都躲不开(要么申请解封,要么走中继,文档里写了一整节)
- 反垃圾默认是内置基线(计分 + DNSBL + 名单),重型场景还是要外接 Rspamd
- 协议兼容性靠主流客户端加一套 e2e 回归撑着,冷门客户端没测全,遇到 issue 提给我
AGPL-3.0 协议,Docker 一条命令起:
```bash
./install.sh # 或 ./deploy/mailezctl.sh up ce
```
在线演示:[https://mail.mailez.cn](https://mail.mailez.cn/)(账号联系 QQ 58786482 或 contact@mailez.cn)
源码:[https://gitee.com/mailez-hq/mailez](https://gitee.com/mailez-hq/mailez) · [https://github.com/mailez-hq/mailez](https://github.com/mailez-hq/mailez)
文档:[https://mailez.net](https://mailez.net/)
QQ 交流群:656868(备注 Mailez)
有问题可以在评论区直接交流,我一直在。
---
原文链接:[点击查看](https://www.v2ex.com/t/1241832)

起因很简单:想给自己域名搭个邮箱,跟着传统方案的文档走了一圈,被 `main.cf` 和 `dovecot.conf` 劝退了。与其学一套上世纪的配置哲学,不如自己写一个——反正 RFC 都摆在那。
## 为什么敢自己写
- 邮件协议看着老,但 RFC 写得相当清楚,IMAP 的扩展(CONDSTORE / QRESYNC / SORT / ACL)都有明确语义
- 收发、存取、过滤在一个进程里完成,没有组件间的 socket 往返,部署面小、故障面也小
- 存储做了可插拔:单机用 Pebble KV + 本地文件起步,换 TiDB + S3 就能水平扩展,同一份引擎代码
## 实测数据(同机 A/B,10,000 人负载模型)
| 指标 | 传统拼装栈 | Mailezine | 提升 |
| --- | --- | --- | --- |
| 收件吞吐 | 3.1 msg/s | 13.6 msg/s | 4.4× |
| 入队→投递 p50 | 35.6 s | 5.30 s | 6.7× |
| 整栈空闲内存 | ~162 MiB | ~6.4 MiB | 约 1/25 |
| 高负载队列积压 | 122 封 | 0 封 | — |
基准方法和脚本都放在仓库里,欢迎复现打脸。
## 顺手解决的一些事
- 管理后台带域名健康检查:MX / SPF / DMARC / DKIM 公钥比对 / Spamhaus 黑名单逐项体检,DNS 向导直接告诉你该发哪 9 条记录,上线照抄
- Webmail 按原生应用的思路写的:三栏布局、会话视图、快捷键、PWA 离线
- 中文搜索做了双字切分,全文索引随投递自动维护
- 附件全文搜索接了 Tika,PDF / Office 文档都能搜
## 也不避讳说缺点
- 云服务器出站 25 端口被封是行业现状,哪个自建方案都躲不开(要么申请解封,要么走中继,文档里写了一整节)
- 反垃圾默认是内置基线(计分 + DNSBL + 名单),重型场景还是要外接 Rspamd
- 协议兼容性靠主流客户端加一套 e2e 回归撑着,冷门客户端没测全,遇到 issue 提给我
AGPL-3.0 协议,Docker 一条命令起:
```bash
./install.sh # 或 ./deploy/mailezctl.sh up ce
```
在线演示:[https://mail.mailez.cn](https://mail.mailez.cn/)(账号联系 QQ 58786482 或 contact@mailez.cn)
源码:[https://gitee.com/mailez-hq/mailez](https://gitee.com/mailez-hq/mailez) · [https://github.com/mailez-hq/mailez](https://github.com/mailez-hq/mailez)
文档:[https://mailez.net](https://mailez.net/)
QQ 交流群:656868(备注 Mailez)
有问题可以在评论区直接交流,我一直在。
---
原文链接:[点击查看](https://www.v2ex.com/t/1241832)
评论
暂无评论。