一看就会:在VPS上搭建Mailu邮件服务器
既然都来了,肯定知道自建邮件服务器是一个很好玩的东东!能够满足小型企业的收发需求,如果你是做邮件营销,当然也可以用。但是把握一个度。
我计划是把所有的开源邮件程序都演示一遍,时间跨度可能有点大,请大家点点收藏关注。今天先来讲讲:Mailu
Mailu 简介
Mailu 是一个模块化的邮件服务器套件,包含了一个完整的邮件堆栈(SMTP, IMAP, POP3, Webmail, 反垃圾邮件, 杀毒等)。它是一个强大、灵活且易于部署的开源邮件解决方案,它基于 Docker 容器技术,让搭建自己的邮件系统变得前所未有的简单。它的优点:
开源免费: 无需授权费用。
基于 Docker: 部署简单,易于维护和升级。
功能丰富: 支持多域名、垃圾邮件过滤、病毒扫描、Webmail (Roundcube/Rainloop)、CalDAV/CardDAV 等。
用户友好: 提供了直观的 Web 管理界面。
准备工作
在开始安装之前,你需要准备好以下几项:
一台运行 Ubuntu 的服务器 (VPS 或云服务器):
硬件要求: 建议至少 4GB 内存和足够的存储空间,我用的是2核4G,内存小容易卡死。系统我选用的是ubuntu22.04。
网络: 端口 25 必须是开放的! 这是发送邮件的关键端口。很多云服务商默认会封锁端口 25,请提前确认或申请开通这里,我是用 digitalocean 的vps给大家做的演示,直接开了25端口。
干净的 IP 地址: 一个没有被列入常见黑名单的 IP 地址对于邮件送达率至关重要,好在是digitalocean给的IP还是很干净的。
反向 DNS (PTR 记录): PTR 记录应指向你的邮件服务器子域名。有些 VPS 提供商可以在购买时直接设置,或在控制面板中设置,确保它与你的主机名一致。digitalocean的vps要设置反向DNS,将主机名称改成你的邮箱域名即可,虽然简单,但是这一步非常重要!

一个你拥有并管理的域名: 我用的是一个免费的workmail.eu.org。
SSH 客户端: 用于连接到你的 Ubuntu 服务器(如 PuTTY, Xshell, OpenSSH 命令等,我使用的是termius)。
安装步骤详解
步骤一:配置域名 DNS 记录
在开始服务器操作前,我们先配置必要的 DNS 记录。DNS 的修改可能需要一些时间来全球生效,所以提前配置可以节省等待时间。
登录你的域名注册商或 DNS 服务提供商的控制面板,添加或修改以下记录:
A 记录 (邮件服务器主机名):
类型:A
主机记录 (Host):填写你的邮件服务器子域名,例如 mail
记录值 (Value):填写你的服务器公网 IP 地址
TTL:建议设置一个较小的值(如 600 或 300)以便快速更新
MX 记录 (邮件交换记录):
类型:MX
主机记录 (Host):通常填写 @ 或 yourdomain.com
记录值 (Value):填写你的邮件服务器的完全限定域名 (FQDN),即你在上面设置的 A 记录主机名加上你的域名,例如 mail.workmail.eu.org
优先级 (Priority):设置一个数值,例如 10 (数值越低优先级越高)
TTL:建议设置一个较小的值


步骤二:准备 Ubuntu 服务器环境
通过 SSH 连接到你的 Ubuntu 服务器。
更新系统安装依赖:
这是一个好习惯,确保你的系统是最新的。sudo apt update && sudo apt upgrade -y sudo apt install -y ca-certificates curl gnupg gnupg2 ca-certificates software-properties-common
步骤三:安装 Docker 和 Docker Compose
Mailu 运行在 Docker 容器中,所以需要先安装 Docker 环境。
安装 Docker Engine:
1. 添加Docker官方GPG密钥和仓库
bash
# 创建目录(如果不存在)sudo install -m 0755 -d /etc/apt/keyrings# 下载并添加GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg# 添加APT仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 更新APT索引
sudo apt update
2. 安装Docker Enginesudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin
3. 验证安装sudo docker run hello-world如果看到欢迎信息,说明安装成功。
注意:如果你的 Ubuntu 版本较旧,或者想安装独立版本的 docker-compose,请参考 Docker 官方文档,步骤如下:
# (可选)安装独立版本的 docker-compose # 查找最新版本:https://github.com/docker/compose/releases DOCKER_COMPOSE_VERSION="v2.20.2" # 替换为最新版本号 sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose # 验证安装 docker-compose --version

步骤四:生成 Mailu 配置文件
Mailu 提供了一个在线配置工具,非常方便。
访问配置网站:
在浏览器中访问 https://setup.mailu.io/。填写配置信息:
根据你的情况填写以下信息:Mail domain: 你的主邮件域名,例如 yourdomain.com。
Server name: 你的邮件服务器主机名 (FQDN),例如 mail.yourdomain.com。
IP addresses (IPv4/IPv6): 你的服务器公网 IP 地址。
Let's Encrypt: 勾选此项以使用 Let's Encrypt 自动生成和续期 SSL 证书 (推荐)。
Admin interface: 后台管理界面的 URL 前缀,默认 /admin 即可。
Authentication rate limit: 登录失败速率限制。
Website name/Linked website: 可自定义网站名称和链接。
Enable admin UI/API: 勾选启用管理界面。
Webmail: 选择一个 Webmail 客户端,如 Roundcube (推荐)。
Features: 根据需要勾选启用的功能,如 Antivirus, Webdav, Fetchmail 等。
填写完毕后,点击底部的 "Setup Mailu" 按钮。这个步骤新手也不用怕,有些设置根本不用动,除非你有特别的需求。如图:



获取配置文件下载命令:
网站会生成一些命令。这些命令会下载 Mailu 的核心配置文件 docker-compose.yml 和环境变量文件 .env。请复制这些生成的命令,因为 .env 文件中的一些密钥是为你本次生成独有的!

步骤五:部署 Mailu
回到你的 SSH 终端,执行以下步骤。
创建 Mailu 安装目录:
sudo mkdir /mailu cd /mailu下载配置文件:
执行你在 setup.mailu.io 网站上复制的 curl 命令,将 docker-compose.yml 和 .env 文件下载到 /mailu 目录。# 示例命令,请替换为你实际复制的命令 curl -o docker-compose.yml https://setup.mailu.io/core/master/docker-compose.yml curl -o .env https://setup.mailu.io/core/master/dotenv
启动 Mailu 服务:
使用 Docker Compose 以后台模式启动所有 Mailu 相关的容器。sudo docker compose up -d

Docker 会自动下载所需的镜像并启动服务。这个过程可能需要几分钟,取决于你的网络速度。
检查服务状态 (可选):
sudo docker compose ps你应该看到 Mailu 的各个容器(如 admin, antispam, antivirus, imap, smtp, webmail 等)都在运行状态。
步骤六:创建管理员用户
Mailu 启动后,需要创建一个管理员账号来登录 Web 管理界面。
docker compose -p mailu exec admin flask mailu admin admin mail.workmail.eu.org PASSWORD
请务必:
将 yourdomain.com 替换为你的主邮件域名。
将 your_chosen_secure_password 替换为一个强密码,并务必牢记或保存在安全的地方!
我这里的管理员邮箱将是 admin@mail.workmail.eu.org,有点长,其实可以设置为 admin@workmail.eu.org
命令执行成功后,会提示管理员用户已创建。
步骤七:访问 Mailu 管理面板
现在你可以通过浏览器访问 Mailu 的 Web 管理界面了。
访问地址:
在浏览器中输入 https://mail.yourdomain.com/admin (使用你在 DNS 中设置的邮件服务器主机名)。登录:
使用刚刚创建的管理员账号 admin@yourdomain.com 和你设置的密码进行登录。
成功登录后,你就可以在管理面板中进行各种配置,如添加新的邮件域名、创建邮件用户、设置别名、邮件转发等。


步骤八:完善 DNS 记录 (SPF, DKIM, DMARC)
为了提高邮件的送达率、防止邮件被标记为垃圾邮件,并增强邮件安全性,强烈建议配置 SPF, DKIM 和 DMARC 记录。在管理后台,点击重新生成密钥即可生成如下密钥:

SPF (Sender Policy Framework):
添加一条 TXT 记录,告诉接收方哪些 IP 地址被授权代表你的域名发送邮件。类型:TXT
主机记录 (Host):通常填写 @ 或 yourdomain.com
记录值 (Value):v=spf1 mx -all (这是一个基本的示例,表示只有你的 MX 记录指向的服务器被授权发送邮件,其他来源都拒绝 -all)
更推荐的值通常包含 a 和 mx,如 v=spf1 a mx -all,具体取决于你的设置。
如果你只用 Mailu 发信,v=spf1 mx -all 通常是合适的。
如果你还需要通过其他服务(如邮件列表服务)发信,可能需要包含 include:。
TTL:建议设置一个较小的值
DKIM (DomainKeys Identified Mail):
DKIM 为你的邮件添加数字签名,接收方可以通过你的 DNS 记录验证签名的有效性。登录 Mailu 管理面板。
找到 DKIM 设置部分(通常在域名设置或高级设置里)。
生成 DKIM 密钥。
Mailu 会给你一个主机记录名(通常是 dkim._domainkey 或类似名称)和一个很长的密钥值。
在你的 DNS 控制面板添加一条 TXT 记录:
类型:TXT
主机记录 (Host):Mailu 提供的主机记录名(例如 dkim._domainkey)
记录值 (Value):Mailu 提供的 DKIM 密钥值(通常是 v=DKIM1; k=rsa; p=... 开头的一串文本)
TTL:建议设置一个较小的值
DMARC (Domain-based Message Authentication, Reporting & Conformance):
DMARC 基于 SPF 和 DKIM,告诉接收方如果 SPF 和 DKIM 验证失败,应该如何处理这些邮件(监控、隔离到垃圾邮件、拒绝),并且可以请求接收方发送报告。在你的 DNS 控制面板添加一条 TXT 记录:
类型:TXT
主机记录 (Host):_dmarc
记录值 (Value):v=DMARC1; p=quarantine; sp=quarantine; rua=mailto:your_report_email@yourdomain.com (这是一个示例,p=quarantine 表示隔离到垃圾邮件;rua 后面的邮箱用于接收报告,请替换为你的实际邮箱)
p= 的值可以是 none (监控不处理), quarantine (隔离/垃圾邮件), reject (拒绝)。刚开始建议用 none 或 quarantine。
TTL:建议设置一个较小的值
请等待所有 DNS 记录生效 (可能需要几分钟到几小时不等)。 你可以使用在线 DNS 检查工具(如 MXToolbox)来验证你的 A, MX, SPF, DKIM, DMARC 记录是否已正确发布并指向你的服务器。
全部设置完成:

测试邮件功能
创建用户: 在 Mailu 管理面板中为你自己的域名创建一个或多个邮件用户(例如 info@yourdomain.com, yourname@yourdomain.com)。
访问 Webmail: 访问 https://mail.yourdomain.com/ (不带 /admin),使用你创建的邮件用户登录。
发送测试邮件: 从你的新邮件地址向一个外部邮箱(如 Gmail, Outlook 等)发送一封测试邮件。
检查接收: 从外部邮箱回复这封测试邮件,看是否能发送到你的新邮件地址,并在 Webmail 中收到。
检查邮件头: 在外部邮箱接收到的测试邮件中,查看邮件头信息,确认 SPF, DKIM, DMARC 是否显示为 PASS。
如果邮件发送和接收正常,并且 DNS 记录检查无误,恭喜你!你已经成功搭建了自己的 Mailu 邮件服务器。

总结
通过以上步骤,我们成功地在 Ubuntu 系统上使用 Docker 部署了 Mailu 邮件服务器,并进行了基础的 DNS 配置。现在你拥有了一个功能完备、自主可控的邮件系统。
Mailu 还有很多高级功能值得探索,例如设置邮件别名、用户配额、自动回复、Catch-all 地址、Fetchmail 远程收取邮件等。你可以登录管理面板,根据自己的需求进行进一步配置。
