Cool
Cool
Published on 2026-01-09 / 0 Visits
0
0

MailCow 搭建步骤(基于你的 EC2 Amazon Linux 实例)

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:8443https://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. 后续优化

  1. 换真实证书(去掉浏览器警告):

    • 暂时用改端口方式,先确保 80 端口能公网访问(或停 Nginx)
    • 在 UI → Configuration → Configuration & Details → ACME 启用 Let's Encrypt(自动申请)
  2. 添加域名和邮箱

    • UI → Configuration → Mail Setup → Domains → Add Domain:添加 fl0919.com
    • 创建邮箱或别名(用于虚拟发件人)
  3. Java 发送邮件

    • SMTP host:mail.fl0919.com
    • 端口:587(STARTTLS)或 465(SSL)
    • 用你在 UI 创建的邮箱认证
  4. 混合 Google Workspace(你之前的计划):

    • MX 指向 Google
    • Google Admin → Routing → Recipient address map 设置 catch-all 转发到 MailCow
    • SPF 包含 _spf.google.com 和你的 MailCow IP
  5. 更新 MailCow

    cd /opt/mailcow-dockerized
    ./update.sh
    

恭喜!你已经成功搭建好了 MailCow。可以开始创建虚拟邮箱、测试发送营销邮件了。如果后续想用 Nginx 反向代理标准 80/443、或配置 Google 中继提高投递率,随时告诉我,我再给你具体配置。祝营销顺利! 🚀


Comment