部署到生产:硬件配置与域名 DNS
快速开始带你把系统跑起来;本文补充两件上生产前必须做的事: 准备什么样的服务器,以及给邮件域名配哪些 DNS 记录。
硬件与系统要求
操作系统与软件
- 生产部署:Linux 服务器(x86_64 / aarch64 均可)+ Docker(Compose v2)。
四个生产档位(ce / ee / multi / ha)均为全容器化交付,
由
mailezctl统一管理,也可以用发行包的install.sh交互式安装 (预检 Docker、Compose v2、openssl、curl)。 - 开发体验:引擎与控制面在 Linux / macOS / Windows 三平台原生运行, 开发机不受限;Go 工具链(1.22+)只在从源码构建镜像时需要。
- 时间同步:启用 NTP。多实例 HA / 多活集群的租约机制对时钟偏差敏感, 单机部署也建议保持时间同步(定时发送、日志排障都依赖准确时钟)。
配置建议
邮件栈本身很轻:Mailezine 引擎单实例空闲内存约 24 MiB、万人负载模型下 峰值约 34 MiB(内部基准)。整套系统的资源大头在控制面与基础组件 (MySQL、TiDB、Rspamd、MinIO)。下表为建议起步值,按邮箱规模选档:
| 场景 | 档位 | vCPU | 内存 | 磁盘(SSD) |
|---|---|---|---|---|
| 个人 / 试用 / 演示 | dev 或 ce | 1–2 | 2 GiB | 20 GB |
| 小团队(≤ 50 邮箱) | ce | 2 | 4 GiB | 100 GB |
| 中型组织(≤ 500 邮箱) | ce 或 ee 单机 | 4 | 8–16 GiB | 按配额估算 |
| 规模化(ee + multi/ha) | 组件分节点部署 | 每节点 4+ | 每节点 8 GiB+ | 按配额估算 |
磁盘容量估算:每个邮箱默认配额 1 GiB(可在管理台按用户或按域调整), 再叠加全文搜索索引、日志与附件中转的余量。正文大 Blob 与云盘建议企业版 落到 MinIO/S3 对象存储,本地盘只保留热数据。
网络与端口
服务器需要一个公网 IP,并开放以下端口:
| 端口 | 用途 | 开放范围 |
|---|---|---|
| 25 | SMTP(服务器间收信) | 对公网入站;出站见下文说明 |
| 465 / 587 | 客户端发信(SMTPS / Submission) | 对公网(供邮件客户端) |
| 110 / 995 | POP3 / POP3S | 对公网(如使用 POP3) |
| 143 / 993 | IMAP / IMAPS | 对公网(供邮件客户端) |
| 4190 | ManageSieve(过滤器同步) | 对公网(如客户端管理 Sieve) |
| 80 / 443 | 网关:Web 入口 + ACME 自动证书 | 对公网 |
| 8081 / 8082 / 8083 | 后端 API / 管理台 / Webmail | 仅内网或经网关反代,不建议对公网裸露 |
云厂商出站 25 端口通常默认封锁(防垃圾邮件):要么向云厂商申请解封, 要么在管理台配置外部 SMTP 中继(smarthost,支持 SASL 认证),出站邮件 经中继投递;转发场景由引擎自动做 SRS 改写,回信不会退到你的域。
域名 DNS 配置
以邮件域 example.com、邮件主机 mail.example.com(即
MAILEZ_HOSTNAMES)为例。DNS 记录全部在你的域名服务商处添加:
| 类型 | 主机记录 | 记录值 | 作用 | 必需性 |
|---|---|---|---|---|
| A / AAAA | mail | 服务器公网 IP | 客户端接入与 MX 指向的主机名;ACME 证书签发也依赖它 | ✅ 必需 |
| MX | @ | mail.example.com(优先级 10) | 他方服务器投递 *@example.com 的路由依据 | ✅ 必需 |
| TXT(SPF) | @ | v=spf1 a mx -all | 声明"只有本主机有权替我发信",收件方据此防伪造 | ✅ 强烈建议 |
| TXT(DKIM) | <选择器>._domainkey | v=DKIM1; k=rsa; p=<公钥> | 出站签名公钥;管理台一键生成后复制完整记录 | ✅ 强烈建议 |
| TXT(DMARC) | _dmarc | v=DMARC1; p=quarantine; rua=mailto:postmaster@example.com | 告知收件方 SPF/DKIM 失败时的处理策略与报告邮箱 | ✅ 强烈建议 |
| PTR(rDNS) | 服务器 IP | mail.example.com | 反向解析;在云厂商/运营商处设置,不归 DNS 服务商管 | ⭐ 强影响送达率 |
| CNAME(可选) | autodiscover | mail.example.com | 企业版 Outlook / Exchange ActiveSync 自动发现 | 可选 |
几点说明:
- DKIM:在管理控制台「域名 → DKIM」一键生成密钥,页面直接给出
完整记录名与记录值,复制到 DNS 即可。选择器默认
dkim(MAILEZ_DKIM_SELECTOR可改),记录名形如dkim._domainkey.example.com。 重新生成即轮换密钥(切换窗口期间在途邮件可能 DKIM 失败,属预期)。 - SPF:
a mx覆盖"邮件主机 A 记录 + MX 指向"两种发信路径;若还经 中继商发信,按中继商文档追加include:。收信方向上,引擎对每一封 入站邮件做 SPF / DKIM / DMARC 全量验证并输出 Authentication-Results, 与你是否发布这些记录无关——发布它们保护的是你发出去的邮件。 - PTR 反向解析:多数收件方的反垃圾体系(含 mailezine 内置信誉评分) 会核对发信 IP 的 PTR 与 EHLO 主机名一致性。没有 PTR 的公网 IP 发信 很容易进垃圾箱,上生产前务必在云厂商控制台把它配上。
- TLS 证书:
MAILEZ_TLS=letsencrypt时网关自动申请续期(要求 80/443 可达且mail.example.com的 A 记录已生效);也可以自行放置cert.pem/key.pem(见仓库deploy/certs/README.md)。465/993/995 隐式 TLS 复用同一套证书。 - 生效验证:记录保存后用
dig/nslookup确认已全球生效 (dig MX example.com、dig TXT dkim._domainkey.example.com), 管理台 DKIM 状态会随 DNS 生效变为已验证;再从外部邮箱(Gmail、 QQ 邮箱等)互通一封测试信,查看对方显示的 Authentication-Results 是否spf=pass dkim=pass dmarc=pass。也可用在线邮件健康检测服务 做一次综合体检。
上线检查清单
- 服务器满足配置建议,NTP 已启用,Docker + Compose v2 就绪
- 公网 IP 就绪,出站 25 已解封或已配置中继
-
mailez.env已设置MAILEZ_SECRET_KEY/MAILEZ_STACK_SECRET/MAILEZ_DOMAIN/MAILEZ_HOSTNAMES(生产拒绝占位密钥启动) - DNS:A / MX / SPF / DKIM / DMARC 已生效,PTR 已在云厂商配置
- 端口:邮件端口对公网开放,管理端口不对公网裸露
- TLS:
MAILEZ_TLS=letsencrypt(或自备证书),465/993/995 隐式 TLS 可握手 - 管理员账号已创建(
mailez-seed),默认口令已修改 - 备份:配置导出 + 引擎
backup(KV+blob 全量导出)纳入例行运维 - 企业版:
MAILEZ_LICENSE_FILE授权文件已挂载,概览页显示授权正常
规模选型与横向扩容的运维细节见仓库 docs/scaling.md;升级流程见
docs/upgrades.md 与 docs/rollout-runbook.md。