Decentralization? We're still early!

开源邮件服务器Mailcow及其快速部署指南

alberta, canada, lake

对于密码朋克(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 核心组件一览:

组件功能说明
PostfixSMTP 邮件传输代理负责邮件的发送和接收
DovecotIMAP/POP3 服务器提供邮件存储和客户端访问
Rspamd反垃圾邮件引擎比 SpamAssassin 更高效、资源占用更低
ClamAV病毒扫描实时检测邮件中的恶意软件
SOGoWebMail 和群件提供日历、联系人、邮件的 Web 访问
UnboundDNS 解析器本地 DNS 缓存和验证
MariaDB数据库存储用户、域名和配置信息
NginxWeb 服务器提供 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 的对比分析,以下是主要方案的比较:

特性MailcowiRedMailMail-in-a-Box
部署方式Docker 容器化传统安装Ubuntu 脚本
Web 管理界面功能完整免费版有限/Pro 版完整基础管理面板
易用性中等需要 Linux 技能新手友好
资源占用较高(需要 6GB RAM)较低(可低至 2GB)中等
反垃圾引擎Rspamd(高效)SpamAssassinSpamAssassin
适用场景多域名托管、企业级预算有限/极简设置个人/小型组织
Docker 支持原生需要额外配置不支持

💡 为什么推荐 Mailcow?

对于密码朋克而言,Mailcow 是理想的选择,因为:

  • 容器化隔离增强了安全性,各服务相互独立
  • Rspamd 比 SpamAssassin 性能更优且资源占用更少
  • 功能完整的 Web 界面降低了日常管理门槛
  • 活跃的开发社区和月度更新确保安全性
  • 内置双因素认证和 fail2ban 类保护

二、系统需求与准备工作

在开始部署之前,需要确保你的服务器满足 Mailcow 的运行要求。根据 Mailcow 官方文档:

2.1 硬件需求

配置项最低要求推荐配置
内存6 GB RAM + 1 GB Swap8 GB RAM(5-10用户)
处理器双核 CPU四核或更高(高负载)
存储空间20 GB50 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 记录(必需)

记录类型主机名说明
Amail你的服务器IP将 mail.example.com 指向服务器
AAAAmail你的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 密钥

记录类型主机名
TXTdkim._domainkeyv=DKIM1; k=rsa; p=你的公钥...

🔑 2025年最佳实践:

  • 使用 2048 位 DKIM 密钥作为默认配置(而非 1024 位)
  • 建议每年轮换 DKIM 密钥 2-4 次
  • 为不同邮件流(事务性邮件、营销邮件等)使用不同的选择器(selector)

📋 DMARC(Domain-based Message Authentication, Reporting and Conformance)

记录类型主机名
TXT_dmarcv=DMARC1; p=none; rua=mailto:dmarc@example.com

🎯 DMARC 策略分级部署建议:

阶段策略说明
测试期p=none仅监控,不采取行动,收集报告
过渡期p=quarantine; pct=2525%不合规邮件进垃圾箱
执行期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 需要:

  1. 添加 DNS TXT 记录:
记录类型主机名
TXT_mta-stsv=STSv1; id=20250101
  1. https://mta-sts.example.com/.well-known/mta-sts.txt 发布策略文件

⚠️ 注意:MTA-STS 要求有效的 TLS 证书,证书过期会导致其他服务器拒绝向你发送加密邮件。

5.4 DNS 验证工具

完成 DNS 配置后,强烈建议使用以下工具验证配置是否正确:

工具网址功能
MXToolboxhttps://mxtoolbox.com全面的 DNS 和邮件服务器诊断
Google Admin Toolboxhttps://toolbox.googleapps.com/apps/checkmx/检查 MX 记录和邮件配置
Mail-testerhttps://www.mail-tester.com发送测试邮件评估送达率
DMARC Analyzerhttps://dmarcanalyzer.comDMARC 报告分析

六、在 Dockge 中管理 Mailcow

6.1 日常管理操作

Mailcow 部署完成后,可以在 Dockge 的 "Stacks" 页面找到 mailcow,在这里可以随时启动、停止或重新部署容器。在 "Containers" 页面,可以查看 Mailcow 的各个服务是否正常运行,比如 Postfix、Dovecot、Rspamd 等。

🔍 需要重点监控的容器:

容器功能停止时的影响
postfix-mailcow邮件发送/接收无法收发邮件
dovecot-mailcow邮件存储访问客户端无法连接
rspamd-mailcow垃圾邮件过滤垃圾邮件进入收件箱
nginx-mailcowWeb 界面无法访问管理后台
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。

📱 客户端配置参数:

服务类型服务器地址端口加密方式
IMAPmail.example.com993SSL/TLS
SMTPmail.example.com587STARTTLS
POP3mail.example.com995SSL/TLS

💡 协议选择建议:

  • 推荐使用 IMAP:邮件保留在服务器上,支持多设备同步
  • POP3:邮件下载到本地后从服务器删除,适合单设备使用
  • WebMail:直接通过浏览器访问 https://mail.example.com/SOGo

7.3 测试邮件收发

配置完成后,建议进行以下测试:

📤 发送测试:

  1. 从 Mailcow 邮箱发送邮件到 Gmail/ProtonMail 等外部邮箱
  2. 检查邮件是否成功送达(而非进入垃圾箱)
  3. 在 Gmail 中查看"显示原始邮件",确认 SPF、DKIM、DMARC 验证通过

📥 接收测试:

  1. 从外部邮箱发送邮件到 Mailcow 邮箱
  2. 确认邮件能够正常接收
  3. 检查 Rspamd 是否正确处理(非垃圾邮件不应被拦截)

🎯 使用 Mail-tester.com 进行综合评分:

  1. 访问 https://www.mail-tester.com
  2. 获取一个临时测试邮箱地址
  3. 从你的 Mailcow 邮箱发送邮件到该地址
  4. 查看详细的评分报告和改进建议

理想情况下,你的邮件服务器应该获得 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,不仅简化了安装过程,还使得邮件服务器的管理变得更加直观和高效,可以帮助主权个人实现安全、稳定的邮件通信。

作为非营利站点,基地的建设离不开大家的捐助支持。在Cardano钱包(如Lace、Eternl 等)中输入 ADA Handle 名称$brave2049,即可为基地提供小额捐助。为支持Cardano治理和基地建设,亦欢迎将Cardano链上治理权限委托给Brave(Brave的Cardano链上治理DRep信息)

回复