跳到主要内容

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/s13.6 msg/s4.4×同样硬件每秒多收 3.4 倍邮件
收件 p506.19 s1.35 s4.6×新邮件几乎即时到达收件箱
提交吞吐2.2 msg/s6.8 msg/s3.1×大批量外发队列同样从容
IMAP FETCH p5035.97 ms20.96 ms1.7×读信更跟手,长列表滚动流畅
队列投递2.1 msg/s7.2 msg/s3.4×出站队列清空更快,退信更少
入队→投递 p5035.6 s5.30 s6.7×端到端送达快近 7 倍
队列积压122 封0 封清零高负载下零积压
空闲内存~162 MiB~6.4 MiB1/25小主机也能轻松运行
负载内存~270 MiB~73 MiB1/3.7邮件洪峰下内存依旧平稳

架构设计

协议层

SMTP :1025Submission :1587IMAP :1143POP3 :10110ManageSieve :11490

处理层

反垃圾 (Rspamd)DKIM 签名Sieve 过滤队列管理

存储层

TiDBPebble本地 FSS3-MinIO

快速开始

# 独立开发模式
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 后端自由组合

mailez 的动力核心

Mailezine 是 mailez 全部版本搭载的自研引擎,SMTP / IMAP / POP3 / ManageSieve 全链路经两轮反序基准验证。社区版与企业版运行同一引擎——前者单节点免费开源, 后者升级分布式存储与企业功能,随时平滑升级。