本指南针对在运行 Nginx Proxy Manager (NPM) 和 Portainer 的 VPS 上安装 Mailcow: Dockerized 进行了优化。它包含了针对重定向循环 (Redirect Loops) 和 504 Gateway Timeout 错误等常见问题的修复。.

1. 前提条件
- 预装了 Docker 和 Docker Compose 的 VPS。.
- 域名:
mail.khaisanfood.vn(指向 VPS IP)。. - Nginx Proxy Manager 正在 Docker 容器中运行。.
DNS记录
| 类型 | 姓名 | Value | Proxy Status |
|---|---|---|---|
| A | 您的 VPS IP | DNS Only | |
| CNAME | autodiscover | mail.khaisanfood.vn | DNS Only |
| CNAME | autoconfig | mail.khaisanfood.vn | DNS Only |
| MX | @ | mail.khaisanfood.vn | Priority 10 |
| TXT | @ | v=spf1 mx ~all | – |
2. 安装步骤
第 1 步:克隆 Mailcow
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized第 2 步:生成配置
./generate_config.sh
Hostname: mail.khaisanfood.vn
Timezone: Asia/HoChiMinh
ClamAV: Y (如果 RAM > 4GB) 或 N。.第 3 步:配置 mailcow.conf (重要)
编辑配置以避免冲突和循环。.
nano mailcow.conf修改以下变量:
- 防止重定向循环:
HTTP_REDIRECT=n
(我们让 Nginx Proxy Manager 处理 HTTPS,因此请关闭 Mailcow 的内部重定向)。. - 绑定到所有接口(以便 NPM 可以访问):
HTTP_BIND=0.0.0.0HTTPS_BIND=0.0.0.0 - 更改端口(以避免 80/443 冲突):
HTTP_PORT=8080HTTPS_PORT=8443 - 避免 IP 冲突(修复 “Pool overlaps” 错误):
IPV4_NETWORK=192.168.201

第 4 步:设置防火墙(修复 504 错误)
确保 Docker 容器可以相互通信。.
ufw allow from 172.16.0.0/12 to any第 5 步:启动 Mailcow
docker compose pull
docker compose up -d3. 配置 Nginx Proxy Manager
访问 Nginx Proxy Manager 并添加新的 Proxy Host。.
Details 选项卡
- Domain Names:
mail.khaisanfood.vn - Scheme:
http(重要!通过 HTTP 连接) - Forward Hostname / IP:
172.17.0.1
(这是标准的 Docker Gateway IP。检查ip addr show docker0以确认)。. - Forward Port:
8080 - Cache Assets: Disabled
- Block Common Exploits: Enabled
SSL 选项卡
- SSL Certificate: 请求新的 Let's Encrypt 证书。.
- Force SSL: Enabled.
- HTTP/2 Support: Enabled.
点击 Save。现在您可以访问 https://mail.khaisanfood.vn.

4. 安装后操作
同步 SSL 证书(用于邮件客户端)
NPM 处理 Web SSL,但 Mailcow 需要 SMTP/IMAP 证书。您需要从宿主机上的 NPM Docker 卷中复制它们。.
查找您的 NPM 证书 ID:检查 NPM 仪表盘或在目录中查找。例如主机路径: /var/lib/docker/volumes/nginx-proxy-managernpmletsencrypt/_data/live/npm-21 (id 21 因域名而异)。.
同步命令:
# 更新此路径以匹配您在上方找到的主机路径
NPMCERTPATH="/var/lib/docker/volumes/nginx-proxy-managernpmletsencrypt/_data/live/npm-21"
cp "$NPMCERTPATH/fullchain.pem" /opt/mailcow-dockerized/data/assets/ssl/cert.pem
cp "$NPMCERTPATH/privkey.pem" /opt/mailcow-dockerized/data/assets/ssl/key.pem
cd /opt/mailcow-dockerized
docker compose restart postfix-mailcow dovecot-mailcow nginx-mailcow重置 Admin 密码
如果 admin / moohoo 不起作用:
cd /opt/mailcow-dockerized/helper-scripts
bash mailcow-reset-admin.shDNS / DKIM
登录 Mailcow UI -> Configuration -> Mail Setup -> DNS 以获取 DKIM 记录并将其添加到您的 DNS 提供商。.
5. 添加额外域名 (多域名设置)
您可以在同一台服务器上托管多个电子邮件域名(例如: @dpsmedia.vn)。.
A. 在 Mailcow 中添加域名
- 以管理员权限登录 Mailcow UI。.
- 进入 Configuration -> Mail Setup -> Domains。.
- 点击 Add Domain。.
- 域名:
dpsmedia.vn(或您的新域名)。. - 点击 Add Domain 并重启 SOGo。.
B. 新域名的 DNS (dpsmedia.vn)
进入 dpsmedia.vn 的 DNS 提供商并添加这些记录。重要:将它们指向您当前的邮件服务器 URL (mail.khaisanfood.vn).
| 类型 | 姓名 | Value | 状态 |
|---|---|---|---|
| MX | @ | mail.khaisanfood.vn | Priority 10 |
| TXT | @ | v=spf1 mx include:mail.khaisanfood.vn ~all | – |
| CNAME | autodiscover | mail.khaisanfood.vn | DNS Only |
| CNAME | autoconfig | mail.khaisanfood.vn | DNS Only |
| TXT | dkim._domainkey | (从 Mailcow UI -> DNS 复制值) | – |
| TXT | _dmarc | v=DMARC1; p=none; | – |
(您不需要新的 IP 地址。所有内容都通过主 IP)。.
C. (可选) 通过 mail.dpsmedia.vn 访问 Mailcow UI
如果您想通过 https://mail.dpsmedia.vn:
访问管理界面,请编辑配置:
nano mailcow.conf
ADDITIONALSERVERNAMES=mail.dpsmedia.vn
docker compose up -dNginx Proxy Manager: 复制与 mail.khaisanfood.vn.
相同的设置。D. 额外域名的 SSL 证书
选项 1: (推荐) 使用 mail.khaisanfood.vn 作为收发服务器。.
选项 2: (高级) 在配置中启用 ENABLESSLSNI=y ,创建单独的 SSL 目录并将新证书同步到其中。.
6. 修复邮件发送问题 (Gmail 屏蔽)
如果遇到错误 550-5.7.1, ,意味着您的 IP 信誉较低。.
A. 设置反向 DNS (PTR) – 强制性
进入 VPS 提供商的仪表板,将您的 IP 的 PTR 记录设置为 mail.khaisanfood.vn.
B. 使用 SMTP 中继
如果 IP 被列入黑名单,请使用 Amazon SES、SendGrid 或 Mailgun 作为中继。.
7. 卸载指南
警告:此操作将删除所有电子邮件数据。.
cd /opt/mailcow-dockerized
docker compose down -v
cd /opt
rm -rf mailcow-dockerized在 NPM 中删除 Proxy Host。.

