用 Docker 搭建自己的邮件服务器,无需抓狂

每个系统管理员或开发者一生中至少尝试过一次从零搭建自己的邮件服务器。通常,这段经历会留下深刻的心理创伤。你安装 Postfix,连接 Dovecot,配置 MySQL 存储用户,然后与 SpamAssassin 搏斗,搭建 OpenDKIM,生成证书,为 SPF 和 DMARC 绞尽脑汁。折腾一周后,邮件仍然被 Gmail 标记为垃圾邮件,配置文件变成一团乱麻。
当我再次需要为几个私人项目和一个小团队的域名搭建邮件服务时,我不想再手动组装这个弗兰肯斯坦了。额外付费使用企业版 Google Workspace 或 Yandex 360 也不在计划之内。就这样,我偶然发现了 Mailu——一个将整套邮件服务器绅士套装打包成整洁 Docker 容器的项目。
什么是 Mailu
Mailu 自我定位为基于 Docker 的隔离式邮件分发系统。该项目自 2016 年存在至今,在 GitHub 上获得了近 7500 颗星,并保持活跃维护。
核心理念很简单:提供一个通过 docker-compose 十分钟即可部署的即用型服务器,但不附带不必要的臃肿组件。与 Zimbra 或 Nextcloud 这类重量级一体化解决方案不同,Mailu 只做一件事——可靠地接收、过滤和发送邮件。内部没有专有代码、追踪器或隐藏付费功能。所有组件都是开源的,采用自由许可证分发。

底层架构
项目架构采用模块化设计。Mailu 不是一个大容器,而是拆分成十几个微服务,每个服务负责各自的领域:
- Nginx 前端处理 Web 流量并重定向邮件端口
- Dovecot 提供 IMAP 和 POP3 协议支持
- Postfix 作为 SMTP 服务器
- Rspamd 提供垃圾邮件防护、自动学习和信誉检查
- ClamAV 扫描入站附件中的病毒
- 基于 Python 和 Flask 构建的控制面板
- 多个可选的 Web 客户端,包括 Roundcube 和 Snappymail
所有这些容器通过 Docker 内部网络通信,数据(邮件、用户数据库、密钥)存储在挂载卷中。
核心功能
无需手动繁琐配置的安全性和送达率
在邮件领域,最难的不是接收消息——而是发送消息时让收件人的邮件服务不会把它扔进垃圾箱。Mailu 为你处理安全配置:
- 通过 Let's Encrypt 自动颁发和续期免费 TLS 证书
- 在管理面板中直接生成 DKIM 密钥,并建议正确的 DNS TXT 记录
- 支持现代投递保护协议,包括 DANE 和 MTA-STS
- 使用 Snuffleupagus(PHP 安全补丁)保护 Web 界面
便捷的管理面板和多域名支持
管理员通过 Web 界面创建域名、设置邮箱、配置别名和临时地址。一个贴心的细节是:你可以将特定域名的管理权限委托给其他人。例如,你托管服务器,但将邮箱管理权移交给客户自己的管理员。
在这里你还可以为每个用户设置磁盘空间配额、全局公告和转发规则。
开箱即用的 Web 客户端和自动配置
用户不一定需要在手机或电脑上安装邮件客户端。套件中包含经典的 Roundcube 和轻量级的 Snappymail。
如果有人偏好 Thunderbird、Apple Mail 或 Outlook,服务器会提供标准的自动配置配置文件。用户只需输入登录名和密码,客户端就会自动获取正确的端口和加密协议。
智能过滤和邮件收取
Mailu 支持 ManageSieve。这意味着用户可以直接在 Web 客户端中设置排序规则、自动度假回复和邮件转发。还有内置的 fetchmail,可以从外部第三方账户收取邮件并归入本地账户。
如何启动
开发者在官网提供了一个出色的 Web 配置生成器 setup.mailu.io。你只需勾选需要的组件(安装哪个 Web 客户端、是否需要杀毒软件、使用哪个数据库),指定服务器的域名,就能得到一个包含两个文件的现成压缩包:mailu.env 和 docker-compose.yml。
之后,启动只需在终端中执行三个命令:
# Переходим в директорию с конфигами
cd /mailu
# Скачиваем образы и запускаем сервисы в фоне
docker compose up -d
# Создаем первого администратора
docker compose exec admin flask mailu admin admin example.com 'ВашСложныйПароль'
然后你只需进入控制面板,在域名注册商处添加 DNS 记录(MX、SPF、DKIM、DMARC),服务器就可以全面运行了。
潜在陷阱
无论软件多么便捷,也无法改变邮件协议的物理特性。部署前请记住以下几点:
- 内存占用。 如果启用 ClamAV,服务器至少需要 3-4 GB 内存。杀毒软件数据库很重。如果你有一台只有 1 GB 内存的弱鸡 VPS,就必须在设置中禁用杀毒软件,只保留 Rspamd。
- IP 地址清洁度。 主机提供商通常会分配有不良历史的地址。启动前务必检查服务器 IP 是否在黑名单(DNSBL)上,并通过主机支持设置 rDNS(PTR 记录),否则邮件无法送达 Gmail 和 Outlook。
- 25 端口。 许多云服务商默认阻止出站 25 端口以打击垃圾邮件发送者。确保你的主机允许开放该端口。
适用人群
Mailu 是网页开发工作室、小型公司和自托管爱好者的绝佳选择。它覆盖了 99% 的企业邮件需求,无需花数小时手动配置 Postfix,用简单的 docker compose pull 即可更新。
如果你厌倦了第三方域名邮件服务不断涨价,或者想完全掌控自己的通信内容,不妨部署一个 Mailu 演示版。你很可能再也不想回到手动组装邮件服务器的时代了。
相关项目