Mailezine 引擎
mailez 全版本搭载的自研邮件引擎:单二进制、可插拔存储, 一个文件替代 Postfix + Dovecot 传统组合。
为什么需要 Mailezine?
传统邮件系统依赖多个独立组件拼装,运维复杂、调试困难。Mailezine 用单一二进制重新定义邮件引擎——现已服务 mailez 全部版本。
传统方案(Postfix + Dovecot)
- ❌ 5+ 个要自己安装、接线、调参的组件(Postfix、Dovecot、Rspamd、Unbound、nginx)
- ❌ 组件间通过 socket/pipe 通信,调试困难
- ❌ 配置分散在多个文件,格式各异
- ❌ 依赖系统包管理,版本升级风险
- ❌ 仅支持 Linux,Windows 开发需 WSL
- ❌ 存储绑定 Maildir,无法选择
Mailezine
- ✅ 单二进制,一个文件包含所有功能
- ✅ 进程内调用,零 IPC 开销
- ✅ 统一配置,环境变量 + TOML 覆盖文件
- ✅ 静态编译,跨平台部署
- ✅ Linux / macOS / Windows 原生支持
- ✅ 可插拔存储(Pebble / TiDB,正文可存 S3 对象存储)
核心特性
单二进制部署
一个可执行文件承载邮件核心——SMTP、IMAP、ManageSieve、队列、DKIM 签名; 反垃圾内置基线档默认启用,也可对接 Rspamd 扫描。 无需安装依赖,无需包管理器,复制即用。
可插拔存储
多种存储后端自由选择:TiDB(分布式 KV,生产默认,支撑横向 扩容)、Pebble(纯 Go LSM KV,本地开发默认);正文可存 本地 FS 或 MinIO/S3 对象存储。同一套代码,同一套测试。
多活集群
企业版可选引擎全服务多活:任意副本服务任意账户,无主备、 扩容即加副本;出站投递按消息事务认领,节点崩溃后租约到期 自动接管——经真实双进程 kill -9 故障演练验证。
协议完整
SMTP 收发、Submission、IMAP、POP3、ManageSieve 全协议支持; 协议实现经过生产验证。
预集成反垃圾
引擎内置基线反垃圾(信誉计分 / DNSBL / 名单 / 可选灰名单); 配置 Rspamd 后即切换扫描档(社区版即可),企业版另启用 自学习。DKIM/DMARC 签名校验,出站邮件自动签名,入站邮件自动验证。
零 IPC 开销
传统方案中 Postfix 和 Dovecot 通过 socket 通信,Mailezine 全部在进程内完成。 更低的延迟,更高的吞吐。
跨平台原生
Go 静态编译,Linux / macOS / Windows 原生运行。 无需 WSL,无需虚拟机,开发体验一致。
对象存储
邮件正文可存储到 S3/MinIO,适合大规模部署;元数据可落 TiDB KV 或 Pebble,本地与云端通过统一接口切换,零代码改动。
全文搜索
内嵌 FTS 索引(bleve,默认开启),中文按双字切分精准检索; 支持 Tika 提取 PDF / Office / ODF 等附件内容——附件正文也能搜到。
多实例 HA 与横向扩容
Active-passive 租约自动接管;TiDB + S3 架构下实例可横向 扩展,容量与吞吐随存储层线性增长。
端到端测试
完整的端到端测试覆盖:SMTP→存储、SMTP→IMAP、中继入队、Sieve→Junk。 每次提交自动验证,质量有保障。
实测基准:Mailezine vs 传统邮件栈
10,000 人企业负载,MySQL 生产形态,两轮反序验证。
| 指标 | 传统方案(Postfix + Dovecot) | Mailezine | 提升 | 说明 |
|---|---|---|---|---|
| 收件吞吐 | 3.1 msg/s | 13.6 msg/s | 4.4× | 同样硬件每秒多收 3.4 倍邮件 |
| 收件 p50 | 6.19 s | 1.35 s | 4.6× | 新邮件几乎即时到达收件箱 |
| 提交吞吐 | 2.2 msg/s | 6.8 msg/s | 3.1× | 大批量外发队列同样从容 |
| IMAP FETCH p50 | 35.97 ms | 20.96 ms | 1.7× | 读信更跟手,长列表滚动流畅 |
| 队列投递 | 2.1 msg/s | 7.2 msg/s | 3.4× | 出站队列清空更快,退信更少 |
| 入队→投递 p50 | 35.6 s | 5.30 s | 6.7× | 端到端送达快近 7 倍 |
| 队列积压 | 122 封 | 0 封 | 清零 | 高负载下零积压 |
| 空闲内存 | ~162 MiB | ~6.4 MiB | 1/25 | 小主机也能轻松运行 |
| 负载内存 | ~270 MiB | ~73 MiB | 1/3.7 | 邮件洪峰下内存依旧平稳 |
架构设计
协议层
处理层
存储层
快速开始
# 独立开发模式
export MAILEZINE_DIRECTORY_FILE="internal/directory/testdata/dev-directory.json"
export MAILEZINE_AUTH_DEV_FILE="internal/auth/testdata/dev-passwords.json"
# 启动引擎
go run ./cmd/mailezine
# 验证
curl http://127.0.0.1:11480/health
# 端到端测试
go test ./cmd/mailezine -run TestEndToEnd -v存储后端对比
TiDB
分布式 KV,企业版默认存储后端
- MySQL 协议兼容
- 多副本高可用
- 容量与吞吐水平扩展
- 支持传统架构(Maildir)单向迁入
Pebble
纯 Go LSM KV,社区版/本地开发默认
- 纯 Go 实现,无 CGO 依赖
- 跨平台支持
- 轻量零外部依赖
- 适合中小规模部署
S3 对象存储
正文 Blob 层,弹性容量
- MinIO / S3 兼容
- 单请求上传优化
- Blob 层独立水平扩展
- 与 KV 后端自由组合