MailCow 搭建步骤(基于你的 EC2 Amazon Linux 实例)
以下是根据你实际操作过程整理的完整 MailCow 搭建指南。你已经走完了大部分路,这份文档可以作为你的个人记录或后续参考。你的关键配置:
- 服务器:AWS EC2(Amazon Linux)
- MailCow 目录:
/opt/mailcow-dockerized - 主机名:
mail.fl0919.com - 时区:
America/New_York - 分支:master(稳定版)
- 已存在 Nginx 占用 80/443 端口 → 需要改 MailCow 端口避免冲突
- Docker 需要 sudo 执行
1. 前提准备
- EC2 实例有公网 IP(推荐绑定 Elastic IP)
- 安全组开放端口:80、443(证书验证用)、25、465、587(邮件)、以及你改后的 Web 端口(如 8080/8443)
- 域名
fl0919.com已购买,DNS 可编辑(后续加 A 记录指向 EC2 公网 IP) - SSH 登录为
ec2-user
2. 安装 Docker(如果你还没装)
sudo yum update -y
sudo yum install docker -y
sudo systemctl start docker
sudo systemctl enable docker
3. 安装 Docker Compose 插件(新版 v5+,命令为 docker compose)
sudo mkdir -p /usr/local/lib/docker/cli-plugins
sudo curl -SL https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
# 验证
docker compose version # 如果提示需要 sudo,用 sudo docker compose version
注意:后续所有 docker 命令都需要加
sudo(或把 ec2-user 加到 docker group:sudo usermod -aG docker ec2-user,然后重新登录)
4. 克隆 MailCow 并修复权限
sudo git clone https://github.com/mailcow/mailcow-dockerized /opt/mailcow-dockerized
cd /opt/mailcow-dockerized
# 修复 Git 安全警告(必须)
git config --global --add safe.directory /opt/mailcow-dockerized
# 修复权限问题(关键!)
sudo chown -R ec2-user:ec2-user /opt/mailcow-dockerized
5. 生成配置文件
./generate_config.sh
提示时输入:
- Mail server hostname:
mail.fl0919.com(直接回车确认) - Timezone:
America/New_York(直接回车确认) - Branch:输入
1(master 稳定版) - 其他提示直接回车用默认
会看到 Spamhaus 警告,先忽略。后续可去 https://www.spamhaus.com 免费注册 DQS key,加到
mailcow.conf里重启生效。
6. 处理端口冲突(你有 Nginx 占用 80/443)
编辑 mailcow.conf:
vim mailcow.conf
修改以下行(推荐值):
HTTP_PORT=8080
HTTPS_PORT=8443
# HTTP_BIND=0.0.0.0
# HTTPS_BIND=0.0.0.0
保存退出(:wq)。
这样 MailCow Web UI 访问方式变成:
如果你想用标准 80/443,后面可以用你的 Nginx 做反向代理(我可以再帮你写配置)。
7. 启动 MailCow
sudo docker compose pull # 下载镜像(第一次会比较慢)
sudo docker compose up -d # 后台启动
检查状态:
sudo docker compose ps # 所有容器 Status 应为 Up
查看日志(出问题时用):
sudo docker compose logs -f
8. 首次访问 Web UI
- 浏览器打开:
https://你的EC2公网IP:8443或https://mail.fl0919.com:8443(如果 DNS 已解析) - 首次会提示证书不安全(自签名 snake-oil 证书),暂时“高级 → 继续”忽略
- 默认登录:用户名
admin,密码moohoo - 立即修改密码!
9. DNS 配置(必须,影响邮件投递)
在你的域名 DNS 提供商添加:
- A 记录:
mail.fl0919.com→ 你的 EC2 公网 IP - MX 记录(针对 fl0919.com):优先级 10,指向
mail.fl0919.com - 在 MailCow UI 生成 SPF/DKIM/DMARC 记录,复制添加到 DNS(UI → Configuration → Configuration & Details → ARC/DKIM)
10. 后续优化
-
换真实证书(去掉浏览器警告):
- 暂时用改端口方式,先确保 80 端口能公网访问(或停 Nginx)
- 在 UI → Configuration → Configuration & Details → ACME 启用 Let's Encrypt(自动申请)
-
添加域名和邮箱:
- UI → Configuration → Mail Setup → Domains → Add Domain:添加
fl0919.com - 创建邮箱或别名(用于虚拟发件人)
- UI → Configuration → Mail Setup → Domains → Add Domain:添加
-
Java 发送邮件:
- SMTP host:
mail.fl0919.com - 端口:587(STARTTLS)或 465(SSL)
- 用你在 UI 创建的邮箱认证
- SMTP host:
-
混合 Google Workspace(你之前的计划):
- MX 指向 Google
- Google Admin → Routing → Recipient address map 设置 catch-all 转发到 MailCow
- SPF 包含
_spf.google.com和你的 MailCow IP
-
更新 MailCow:
cd /opt/mailcow-dockerized ./update.sh
恭喜!你已经成功搭建好了 MailCow。可以开始创建虚拟邮箱、测试发送营销邮件了。如果后续想用 Nginx 反向代理标准 80/443、或配置 Google 中继提高投递率,随时告诉我,我再给你具体配置。祝营销顺利! 🚀