开源邮件服务器Mailcow及其快速部署指南
对于密码朋克(Cypherpunk)来说,架设自己的电子邮件服务器不仅仅是一个技术选择,更是一种数字主权的宣言。这关乎着对数据安全性和邮件传递可靠性的深度掌控。自行管理邮件服务器意味着你可以完全掌控数据的存储位置和访问权限,避免将敏感信息托付给第三方服务商,从而最大程度地降低数据泄露的风险。
当然,维护一个邮件服务器需要投入更多的时间和精力,需要掌握相关的技术知识,例如 DNS 配置、邮件服务器软件的安装和维护、安全策略的制定等等。特别值得注意的是,当前自建邮件服务器面临的最大挑战之一是"信任问题":大型邮件提供商(如 Gmail、Outlook)高度依赖发件人信誉来决定邮件是否进入收件箱。新建立的自托管邮件服务器没有发送历史和信誉积累,邮件可能更容易被标记为垃圾邮件。
根据 Privacy Guides 的建议,高级系统管理员才应考虑自建邮件服务器,因为邮件服务器需要持续的关注和维护才能保持安全和可靠的邮件投递。如果服务器崩溃、被黑客入侵或数据丢失,没有客服可以求助——你需要自己处理备份、安全和故障排除。本文将以 Mailcow 为例,介绍如何快速架设自己的电子邮件服务器。
一、什么是 Mailcow
1.1 Mailcow 概述
Mailcow 是一个基于 Docker 的开源邮件服务器套件,项目名称是"Mail"(邮件)与"Cow"(奶牛)的组合,其口号是"🐮 + 🐋 = 💕",寓意奶牛与 Docker(鲸鱼 logo)的完美结合。它集成了多个关键组件,如 Postfix、Dovecot、Rspamd、ClamAV、SOGo、Unbound 和 MariaDB。Mailcow 通过容器化管理提供了一套完整的邮件服务器解决方案,支持 SMTP、IMAP、POP3 以及 WebMail,并且具备反垃圾邮件、病毒扫描、日历和联系人同步等功能。
📦 Mailcow 核心组件一览:
| 组件 | 功能 | 说明 |
|---|---|---|
| Postfix | SMTP 邮件传输代理 | 负责邮件的发送和接收 |
| Dovecot | IMAP/POP3 服务器 | 提供邮件存储和客户端访问 |
| Rspamd | 反垃圾邮件引擎 | 比 SpamAssassin 更高效、资源占用更低 |
| ClamAV | 病毒扫描 | 实时检测邮件中的恶意软件 |
| SOGo | WebMail 和群件 | 提供日历、联系人、邮件的 Web 访问 |
| Unbound | DNS 解析器 | 本地 DNS 缓存和验证 |
| MariaDB | 数据库 | 存储用户、域名和配置信息 |
| Nginx | Web 服务器 | 提供 Web 界面和 API 访问 |
| Acme | 证书管理 | 自动获取和续签 Let's Encrypt SSL 证书 |
相比传统的邮件服务器,Mailcow 通过 Docker Compose 进行一键部署,大大简化了安装和维护工作。它自带 Web 界面,用户可以轻松管理邮件账户、域名、反垃圾邮件策略和安全认证。Mailcow 还支持 DKIM、SPF 和 DMARC 认证,以提高邮件的可信度和防止邮件欺诈。
1.2 Mailcow 的最新发展(2025-2026)
根据 Mailcow 官方博客 的信息,Mailcow 保持着每月发布更新的节奏,版本号以 YYYY-MM 格式命名。以下是近期的重要更新:
🆕 2026年1月更新(2026-01)——最新版本:
- 支持 PBKDF2-SHA512 哈希算法,增强 FreeIPA 兼容性
- MTA-STS 支持扩展到别名域名
- 管理员可限制邮箱用户的 EAS(Exchange ActiveSync)和 DAV 访问
- Rspamd 升级至 3.14.1 版本
- 支持通过环境变量预设密码
📅 2025年关键更新回顾:
- 2025-12:备份压缩从 pigz 切换到 zstd,提升备份性能
- 2025-09:新增 postfix-tlspol-mailcow 容器,为 Postfix 添加出站 MTA-STS 支持;SOGo URL 加密支持;系统现在要求主机安装 jq
- 2025-05:身份提供商(Identity Provider)改进
- 2025-03:重大更新,大幅改变认证流程,支持外部认证源
1.3 Mailcow 与其他方案的对比
在选择自托管邮件服务器解决方案时,除了 Mailcow 之外,还有其他流行的选择。根据 RunCloud 的对比分析,以下是主要方案的比较:
| 特性 | Mailcow | iRedMail | Mail-in-a-Box |
|---|---|---|---|
| 部署方式 | Docker 容器化 | 传统安装 | Ubuntu 脚本 |
| Web 管理界面 | 功能完整 | 免费版有限/Pro 版完整 | 基础管理面板 |
| 易用性 | 中等 | 需要 Linux 技能 | 新手友好 |
| 资源占用 | 较高(需要 6GB RAM) | 较低(可低至 2GB) | 中等 |
| 反垃圾引擎 | Rspamd(高效) | SpamAssassin | SpamAssassin |
| 适用场景 | 多域名托管、企业级 | 预算有限/极简设置 | 个人/小型组织 |
| Docker 支持 | 原生 | 需要额外配置 | 不支持 |
💡 为什么推荐 Mailcow?
对于密码朋克而言,Mailcow 是理想的选择,因为:
- 容器化隔离增强了安全性,各服务相互独立
- Rspamd 比 SpamAssassin 性能更优且资源占用更少
- 功能完整的 Web 界面降低了日常管理门槛
- 活跃的开发社区和月度更新确保安全性
- 内置双因素认证和 fail2ban 类保护
二、系统需求与准备工作
在开始部署之前,需要确保你的服务器满足 Mailcow 的运行要求。根据 Mailcow 官方文档:
2.1 硬件需求
| 配置项 | 最低要求 | 推荐配置 |
|---|---|---|
| 内存 | 6 GB RAM + 1 GB Swap | 8 GB RAM(5-10用户) |
| 处理器 | 双核 CPU | 四核或更高(高负载) |
| 存储空间 | 20 GB | 50 GB 或更多(多用户/多域名) |
| 网络 | 静态公网 IP | 静态公网 IP + IPv6 |
⚠️ 重要提示:如果内存低于 6GB,可以禁用 ClamAV(病毒扫描),系统可在 2GB RAM 下运行,但这会降低安全性。
2.2 支持的平台
✅ 支持:
- KVM、ESXi、Hyper-V 等完全虚拟化平台
- Debian 12、Ubuntu 24.04 LTS(官方推荐和测试)
- 主流云服务商(AWS、Google Cloud、Azure、Vultr、DigitalOcean 等)
❌ 不支持:
- Synology/QNAP 等 NAS 设备
- OpenVZ、LXC 等容器化平台
- 共享主机环境
2.3 软件依赖
需要在主机上安装以下软件包:
# Debian/Ubuntu
apt update && apt install -y git openssl curl awk grep cut jq
# jq 是 2025-09 版本后的新要求Docker 版本要求:
- Docker Engine >= 24.0.0
- Docker Compose >= 2.0
💡 建议使用 Docker 官方源安装最新版本,而非 Linux 发行版仓库中的旧版本。
三、在 Dockge 中部署 Mailcow
3.1 什么是 Dockge?
Dockge 是一个轻量级的 Docker Compose 管理工具,类似于 Portainer,但更加专注于 Docker Compose 应用的管理。它提供了直观的 Web 界面,允许用户方便地添加、管理和监控多个 Docker Compose 服务。在 Dockge 中,用户可以直接创建 Mailcow 的 Docker Compose 堆栈,并通过 Web 界面进行管理,而无需手动运行命令行操作。
Docker 以及 Dockge 的具体安装方式,请参考基地相关讨论,这里不再赘述。
3.2 推荐的部署方式:官方标准安装
⚠️ 重要说明:原文档中提供的 Dockge 配置方式虽然可行,但 Mailcow 官方推荐使用其标准安装流程,这样可以确保获得完整的功能支持和更好的升级体验。以下是两种部署方式的对比:
方式一:官方标准安装(推荐) ⭐
根据 Mailcow 官方安装文档,推荐按以下步骤操作:
# 1. 克隆 Mailcow 仓库
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
# 2. 生成配置文件
./generate_config.sh
# 系统会提示输入 FQDN,例如 mail.example.com
# 3. 启动所有服务
docker compose pull
docker compose up -d配置生成器会交互式地询问以下信息:
- 邮件服务器的 FQDN(如 mail.example.com)
- 时区设置
- 是否启用 ClamAV(病毒扫描)
- HTTPS 证书来源
方式二:通过 Dockge 管理(进阶用户)
如果你更习惯使用 Dockge 进行统一管理,可以首先按照官方方式完成 Mailcow 的初始安装,然后在 Dockge 中监控和管理已有的堆栈。
首先,需要进入 Dockge 的 Web 界面,通常可以通过 http://your-server-ip:5001 访问。在 Dockge 中,点击 "Add a new stack" 按钮,输入堆栈名称,例如 mailcow,然后在配置界面粘贴以下 docker-compose.yml 配置。
version: "3.7"
services:
mailcow-init:
image: alpine:latest
container_name: mailcow-init
volumes:
- ./mailcow-data:/data
command: >
sh -c "
apk add --no-cache git &&
git clone --depth=1 https://github.com/mailcow/mailcow-dockerized.git /data &&
cp /data/mailcow.conf.example /data/mailcow.conf &&
echo 'MAILCOW_HOSTNAME=mail.example.com' >> /data/mailcow.conf &&
echo 'TZ=Asia/Shanghai' >> /data/mailcow.conf
"
restart: "no"
mailcow:
depends_on:
- mailcow-init
build: ./mailcow-data
container_name: mailcow-server
volumes:
- ./mailcow-data:/opt/mailcow
working_dir: /opt/mailcow
command: >
sh -c "
docker compose pull &&
docker compose up -d
"
restart: "no"点击 "Deploy" 按钮,Dockge 会自动拉取 Mailcow 代码并启动容器。
📝 注意:请将配置中的 mail.example.com 替换为你自己的实际域名,将 Asia/Shanghai 替换为你所在的时区。
四、访问 Mailcow Web 管理界面
4.1 首次登录
Mailcow 启动后,可以在浏览器中访问 https://mail.example.com,默认管理员账户为:
| 项目 | 值 |
|---|---|
| 用户名 | admin |
| 默认密码 | moohoo |
⚠️ 安全提醒:首次登录后请立即修改默认密码!建议启用双因素认证(2FA)以增强账户安全性。
4.2 管理界面功能概览
登录后,你可以在 Mailcow 的 Web 管理后台执行以下操作:
| 功能模块 | 说明 |
|---|---|
| 📬 邮箱管理 | 创建/删除邮箱账户、设置配额、管理别名 |
| 🌍 域名管理 | 添加/配置多个邮件域名 |
| 🛡️ 反垃圾策略 | 调整 Rspamd 规则、查看垃圾邮件统计 |
| 🔐 安全设置 | DKIM 密钥生成、TLS 配置、双因素认证 |
| 📊 监控面板 | 查看队列状态、登录日志、系统健康状态 |
| 🔄 同步服务 | 从其他邮件服务器迁移邮件(imapsync) |
五、配置 DNS 解析 🔧
为了确保邮件服务器可以正常收发邮件,需要在域名服务提供商(如 Namecheap、Cloudflare、GoDaddy)中配置 DNS 解析。正确的 DNS 配置是邮件服务器成功运行的基础,这一点怎么强调都不过分。根据 Mailcow 文档:"正确的 DNS 设置对每个优秀的邮件服务器都至关重要,请确保在开始之前至少完成基础配置!"
5.1 基础 DNS 记录(必需)
| 记录类型 | 主机名 | 值 | 说明 |
|---|---|---|---|
| A | mail | 你的服务器IP | 将 mail.example.com 指向服务器 |
| AAAA | mail | 你的IPv6地址 | (可选)IPv6 支持 |
| MX | @ | mail.example.com (优先级 10) | 指定邮件服务器地址 |
| PTR | - | mail.example.com | 反向 DNS,需在 VPS 提供商处设置 |
💡 PTR 记录(反向 DNS)说明:PTR 记录需要在你的 VPS/云服务提供商的控制面板中设置,而非域名注册商处。这个记录将你的 IP 地址反向解析为域名,是防止邮件被标记为垃圾邮件的重要因素。
5.2 邮件认证记录(关键安全配置)
⚠️ 2025年安全新规:从2025年5月5日起,Microsoft Outlook 开始拒绝不符合 SPF、DKIM、DMARC 认证要求的发件人邮件。Google 和 Yahoo 也有类似的严格要求。根据 Microsoft 官方公告,这些认证已经从"建议"变成了"强制"。
📋 SPF(Sender Policy Framework)
| 记录类型 | 主机名 | 值 |
|---|---|---|
| TXT | @ | v=spf1 mx ~all |
说明:
v=spf1— 声明这是 SPF 记录mx— 允许 MX 记录指定的服务器发送邮件~all— 软失败(softfail),其他服务器发送的邮件会被标记但仍投递- (可选)
-all— 硬失败(hardfail),严格拒绝其他服务器发送的邮件,生产环境推荐
⚠️ SPF 限制:SPF 记录最多允许 10 次 DNS 查询,超过会导致验证失败。如有需要,可使用 SPF 扁平化工具优化记录。
📋 DKIM(DomainKeys Identified Mail)
DKIM 记录需要在 Mailcow 管理后台中生成,路径为:邮件设置 → 配置 → DKIM 密钥
| 记录类型 | 主机名 | 值 |
|---|---|---|
| TXT | dkim._domainkey | v=DKIM1; k=rsa; p=你的公钥... |
🔑 2025年最佳实践:
- 使用 2048 位 DKIM 密钥作为默认配置(而非 1024 位)
- 建议每年轮换 DKIM 密钥 2-4 次
- 为不同邮件流(事务性邮件、营销邮件等)使用不同的选择器(selector)
📋 DMARC(Domain-based Message Authentication, Reporting and Conformance)
| 记录类型 | 主机名 | 值 |
|---|---|---|
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:dmarc@example.com |
🎯 DMARC 策略分级部署建议:
| 阶段 | 策略 | 说明 |
|---|---|---|
| 测试期 | p=none | 仅监控,不采取行动,收集报告 |
| 过渡期 | p=quarantine; pct=25 | 25%不合规邮件进垃圾箱 |
| 执行期 | p=reject | 拒绝所有不合规邮件 |
💡 专家建议:永远不要一开始就使用 p=reject,应先在 p=none 阶段充分收集报告,确认所有合法发送源都已正确配置后再逐步收紧策略。
5.3 MTA-STS(推荐的额外安全层) 🆕
MTA-STS(Mail Transfer Agent Strict Transport Security)是一项相对较新的安全机制,Mailcow 从 2025-09 版本开始提供出站 MTA-STS 支持。根据 IronScales 指南,MTA-STS 可以:
- 强制邮件服务器之间使用加密的 TLS 连接
- 防止中间人攻击和窃听
- 防止 TLS 降级攻击
配置 MTA-STS 需要:
- 添加 DNS TXT 记录:
| 记录类型 | 主机名 | 值 |
|---|---|---|
| TXT | _mta-sts | v=STSv1; id=20250101 |
- 在
https://mta-sts.example.com/.well-known/mta-sts.txt发布策略文件
⚠️ 注意:MTA-STS 要求有效的 TLS 证书,证书过期会导致其他服务器拒绝向你发送加密邮件。
5.4 DNS 验证工具
完成 DNS 配置后,强烈建议使用以下工具验证配置是否正确:
| 工具 | 网址 | 功能 |
|---|---|---|
| MXToolbox | https://mxtoolbox.com | 全面的 DNS 和邮件服务器诊断 |
| Google Admin Toolbox | https://toolbox.googleapps.com/apps/checkmx/ | 检查 MX 记录和邮件配置 |
| Mail-tester | https://www.mail-tester.com | 发送测试邮件评估送达率 |
| DMARC Analyzer | https://dmarcanalyzer.com | DMARC 报告分析 |
六、在 Dockge 中管理 Mailcow
6.1 日常管理操作
Mailcow 部署完成后,可以在 Dockge 的 "Stacks" 页面找到 mailcow,在这里可以随时启动、停止或重新部署容器。在 "Containers" 页面,可以查看 Mailcow 的各个服务是否正常运行,比如 Postfix、Dovecot、Rspamd 等。
🔍 需要重点监控的容器:
| 容器 | 功能 | 停止时的影响 |
|---|---|---|
postfix-mailcow | 邮件发送/接收 | 无法收发邮件 |
dovecot-mailcow | 邮件存储访问 | 客户端无法连接 |
rspamd-mailcow | 垃圾邮件过滤 | 垃圾邮件进入收件箱 |
nginx-mailcow | Web 界面 | 无法访问管理后台 |
mysql-mailcow | 数据库 | 系统完全停止工作 |
6.2 更新 Mailcow
如果需要更新 Mailcow,可以在 Dockge 中点击 "Rebuild & Deploy",Dockge 会自动拉取最新的 Mailcow 版本并重新部署。也可以 SSH 登录服务器,进入 Mailcow 目录后运行以下命令手动更新:
cd /opt/mailcow-dockerized
# 对于 Docker Compose v5 用户,需要先更新更新脚本
git fetch
git checkout origin/master update.sh
# 执行更新
./update.sh📅 更新策略建议:
- Mailcow 每月发布更新,包含安全修复和新功能
- 生产环境建议使用稳定版(非 nightly)
- 更新前务必进行完整备份
- legacy 分支(基于 2025-02)将于 2026 年 2 月停止支持
6.3 备份与恢复 💾
数据备份是自建邮件服务器最关键的运维任务之一。如果服务器发生故障,没有备份可能意味着永久丢失所有邮件数据。
Mailcow 内置备份脚本,可以在系统运行时创建一致性备份:
cd /opt/mailcow-dockerized
./helper-scripts/backup_and_restore.sh backup all备份内容包括:
- 📧 所有邮件数据
- 🗄️ 数据库(用户、配置等)
- 🔐 加密密钥(位于 crypt-vol-1)
- ⚙️ 配置文件
⚠️ 关键提醒:邮件数据是压缩和加密存储的,加密密钥对位于 crypt-vol-1 卷中——请务必将此卷连同其他备份一起保存,否则即使有备份数据也无法恢复!
建议的备份策略:
| 备份类型 | 频率 | 保留期 |
|---|---|---|
| 完整备份 | 每周 | 4 周 |
| 增量备份 | 每日 | 7 天 |
| 异地备份 | 每周 | 长期存储 |
七、创建邮箱账户并测试邮件收发
7.1 创建邮箱账户
登录 Mailcow 管理界面后,可以进入 "Mailbox" 页面创建新的邮箱账户,例如 user@example.com。
创建账户时可以配置的选项:
| 选项 | 说明 |
|---|---|
| 邮箱配额 | 限制邮箱使用的存储空间 |
| 发送配额 | 限制每小时/每天可发送的邮件数量 |
| 别名 | 为同一邮箱设置多个地址 |
| 转发 | 自动将邮件转发到其他地址 |
| 假期回复 | 自动回复(外出通知) |
7.2 邮件客户端配置
创建完成后,可以使用邮件客户端(如 Outlook、Thunderbird 或手机上的邮件应用)连接 Mailcow。
📱 客户端配置参数:
| 服务类型 | 服务器地址 | 端口 | 加密方式 |
|---|---|---|---|
| IMAP | mail.example.com | 993 | SSL/TLS |
| SMTP | mail.example.com | 587 | STARTTLS |
| POP3 | mail.example.com | 995 | SSL/TLS |
💡 协议选择建议:
- 推荐使用 IMAP:邮件保留在服务器上,支持多设备同步
- POP3:邮件下载到本地后从服务器删除,适合单设备使用
- WebMail:直接通过浏览器访问
https://mail.example.com/SOGo
7.3 测试邮件收发
配置完成后,建议进行以下测试:
📤 发送测试:
- 从 Mailcow 邮箱发送邮件到 Gmail/ProtonMail 等外部邮箱
- 检查邮件是否成功送达(而非进入垃圾箱)
- 在 Gmail 中查看"显示原始邮件",确认 SPF、DKIM、DMARC 验证通过
📥 接收测试:
- 从外部邮箱发送邮件到 Mailcow 邮箱
- 确认邮件能够正常接收
- 检查 Rspamd 是否正确处理(非垃圾邮件不应被拦截)
🎯 使用 Mail-tester.com 进行综合评分:
- 访问
https://www.mail-tester.com - 获取一个临时测试邮箱地址
- 从你的 Mailcow 邮箱发送邮件到该地址
- 查看详细的评分报告和改进建议
理想情况下,你的邮件服务器应该获得 9/10 或更高的评分。
八、进阶安全配置
对于密码朋克而言,基础配置只是开始。以下是提升邮件服务器安全性的进阶建议:
8.1 启用双因素认证(2FA)
在 Mailcow 管理界面中,为管理员和重要用户账户启用双因素认证:
- 支持 TOTP(如 Google Authenticator、Authy)
- 支持 U2F/WebAuthn 硬件密钥
8.2 配置 Fail2ban 保护
Mailcow 内置类似 Fail2ban 的保护机制,可以自动封禁:
- 多次登录失败的 IP 地址
- 暴力破解 SMTP 认证的尝试
- 可疑的连接行为
8.3 定期安全审计清单
| 频率 | 任务 |
|---|---|
| 每周 | 检查登录日志,关注异常登录 |
| 每月 | 更新 Mailcow 和主机系统 |
| 每季度 | 审查用户账户和权限 |
| 每年 | 轮换 DKIM 密钥 |
8.4 PGP/GPG 加密(密码朋克必备)
虽然 Mailcow 本身提供了传输层加密(TLS),但真正的端到端加密需要使用 PGP/GPG:
- 在邮件客户端中配置 PGP 密钥
- 通过 WKD(Web Key Directory)发布公钥
- SOGo WebMail 支持 Mailvelope 浏览器扩展
九、小结
Mailcow 是一个完整的邮件服务器解决方案,它基于 Docker 进行容器化管理,具备邮件收发、反垃圾邮件、WebMail、联系人同步等功能。Dockge 作为 Docker Compose 管理工具,使 Mailcow 的部署更加简单,用户可以通过 Web 界面完成所有操作,而无需手动运行命令。
在 Dockge 中部署 Mailcow 只需要创建一个新的堆栈,并粘贴 docker-compose.yml 配置,Dockge 会自动拉取 Mailcow 代码并启动所有必要的容器。部署完成后,用户可以通过 Web 界面管理邮箱账户,并使用邮件客户端进行邮件收发。
正确配置 DNS 记录对于邮件服务器的正常运行至关重要,特别是 SPF、DKIM 和 DMARC 记录,这些可以提高邮件的可信度,防止邮件被标记为垃圾邮件。2025年以来,主流邮件提供商(Google、Yahoo、Microsoft)已将这些认证从"建议"升级为"强制要求",不合规的邮件将被拒绝或进入垃圾箱。 可以使用 MXToolbox 或 Google Admin Toolbox 来检查 DNS 配置是否正确。
通过 Dockge 部署 Mailcow,不仅简化了安装过程,还使得邮件服务器的管理变得更加直观和高效,可以帮助主权个人实现安全、稳定的邮件通信。
回复