介绍
本教程将指导您如何在 Hetzner Cloud 的 Ubuntu 服务器上搭建自己的邮件服务器。Mailcow 允许您使用自定义域名托管邮件服务器。此外,Mailcow 还提供联系人和日历同步功能。.
先决条件
- 你需要一个域名。
- 对 Docker 工作原理有一些基本的了解
- 为了防止垃圾邮件,Hetzner Cloud 服务器默认屏蔽 25 和 465 端口。您可以在支付首笔账单后申请解除端口屏蔽。这实际上是一种简单的验证方式,以确认您并非垃圾邮件发送者。.
步骤 1 – 创建新的云服务器
- 登录云控制台
- 创建一个新项目,名称随意。
- 根据您的需求选择服务器位置和类型。如果您不确定,请参阅以下提示。.
- 点击“添加服务器”并选择您的服务器镜像。本教程基于 Ubuntu 22.04,但也可以轻松适配更稳定、更轻量级的 Debian 11。.
- 从“类型”中选择您需要的资源。
- 点击云配置字段,然后输入:#include https://get.docker.com(这将安装 Docker)
- 选择您的 SSH 密钥
- 在“名称”输入框中输入您的服务器主机名(例如 mail.example.com)。
- 点击“创建并立即购买”
如何选择合适的服务器位置和类型
选择地理位置上离您或您的用户群最近的服务器位置。至于合适的服务器类型,请注意 Mailcow 至少需要 7GB 内存才能正常运行。Mailcow 是一款功能齐全的群件解决方案。因此,最低配置的服务器类型是 CX31* 或 CPX31。.
步骤 2 – 设置 DNS
基本上,您需要创建一个名为 mail.example.com 的新 DNS 记录,并将您的 IPv4(A 记录)和 IPv6(AAAA 记录)服务器添加到该记录中。然后,您可以将域的 MX 记录指向新创建的子域 mail.example.com。您还应该设置子域 autodiscover.example.com 和 autoconfig.example.com。这两个记录都应该是 CNAME 记录,并指向 mail.example.com。.
您的DNS配置应如下所示:
# Name Type Value
mail IN A 10.0.0.1
mail IN AAAA 2001:db8:1234::1
autodiscover IN CNAME mail
autoconfig IN CNAME mail
@ IN MX 10 mail对于更高级的设置,Mailcow 文档中还有更多 DNS 记录需要注意。.
步骤 3 – 在服务器上安装更新和 Docker Compose
请稍等片刻,待服务器启动后,使用 SSH 和您的私钥连接到服务器。现在您应该可以通过运行以下命令登录:
apt update && apt upgrade -y所有升级完成后,最好重启服务器,尤其是如果进行了内核更新的话。.
步骤 4 – 克隆 Mailcow 存储库
现在我们要克隆 Mailcow 的 GitHub 代码库,所以首先你需要使用以下命令登录 /opt:
cd /opt进入 /opt 目录后,您可以运行:
git clone https://github.com/mailcow/mailcow-dockerized
步骤 5 – 创建配置、拉取 Docker 容器并启动 Mailcow
要创建配置,请使用 `cd /opt/mailcow-dockerized` 命令将工作目录更改为 `/opt/mailcow-dockerized`,然后运行 `./generate_config.sh` 生成配置。现在您需要输入您的域名(例如 mail.example.com)。我们快完成了。现在您需要运行 `Docker compose pull` 来拉取 Docker 镜像。要启动 Mailcow,请运行 `docker compose up -d .`.
步骤 6 – 设置反向 DNS 条目
要设置反向 DNS 条目,请按照以下步骤操作:
- 前往 Hetzner Cloud 控制台并点击您的项目。
- 选择您创建的服务器,然后转到“网络”选项卡。
- 点击 IPv4 地址旁边的三个点,选择“编辑反向 DNS”,输入您的域名(mail.example.com),然后确认更改。.
- 点击 IPv6 子网旁边的三个点,选择“编辑反向 DNS”,然后在域名 (mail.example.com) 下方的 IP 地址字段中输入 ::1。.
步骤 7 – 首先,登录您的 Mailcow 实例
访问您的 Mailcow 实例(网址为 https://mail.example.org),并使用默认凭据登录:
- 用户名:admin
- 密码:moohoo
重要提示:请尽快更改您的密码,否则您的服务器将面临入侵风险。.
步骤 8 – 将域名添加到 Mailcow
现在您可以将您的域名添加到 Mailcow。只需转到“配置”->“邮件设置”,然后在“域名”选项卡下添加您的域名即可。.
步骤 9 – 设置 DKIM
现在,返回“配置”->“配置和详细信息”,即可设置 DKIM。在“配置”选项卡中,选择侧边栏中的 DKIM(它应该位于顶部)。向下滚动,找到一个可以输入域名的框。点击“选择缺少密钥的域名”快捷方式,即可用您的域名填充该框。现在选择一个 2048 位密钥,然后点击“添加”。密钥添加完成后,您可以复制公钥,并创建一个名为 dkim._domainkey 的 DNS TXT 条目,内容为您刚刚复制的密钥。.
步骤 10 – 创建邮箱
何时 配置 -> 邮件设置 回到家后,您可以通过访问 https://mail.example.com/SOGo 来创建邮箱并登录 SOGo。.
第 11 步 – 创建备份
备份对于大多数服务器配置都至关重要。您的邮件服务器也不例外。Mailcow 提供了一种非常简单的方法来创建邮件数据备份。.
创建手动备份
- 使用 SSH 密钥连接到您的服务器。.
- 进入包含辅助脚本的 Mailcow 目录 /opt/mailcow-dockerized/helper-scripts。.
- 运行备份脚本 /backup_and_restore.sh 全部备份 --删除第 7 天
根据电子邮件的大小和服务器类型,此过程可能需要几分钟到几个小时不等。.
步骤 12 – 更新 Mailcow 实例
Mailcow 通常每月由作者发布一次更新。如有安全补丁或紧急漏洞修复,则会发布更多更新。建议关注 Mailcow 的发布页面,以获取最新信息。.
执行更新前,建议您检查是否已备份数据。您还可以在 Hetzner 云控制台中创建服务器快照,以便在出现问题时快速恢复正常运行。.
如果您不想使用 Hetzner 快照,Mailcow 还内置了回滚更新的方法。.
- 使用 SSH 密钥连接到您的服务器。.
- 转到 Mailcow 文件夹 /opt/mailcow-dockerized
- .运行 ./update.sh
- 最后,Mailcow 会询问您是否要移除未使用的组件。选择“否”,稍后手动移除它们,以便在出现问题时做好准备。.
- 更新完成后,Mailcow 将启动所有服务并执行内部升级。为避免数据损坏,请勿关闭服务器或 Docker 容器。.









