Hướng dẫn này được tối ưu hóa để cài đặt Mailcow: Dockerized trên VPS chạy Nginx Proxy Manager (NPM) và Portainer. Nó bao gồm các sửa lỗi cho các vấn đề phổ biến như Vòng lặp Chuyển hướng (Redirect Loops) và Lỗi Gateway Timeout 504.

1. Yêu cầu Tiên quyết
- VPS cài sẵn Docker & Docker Compose.
- Domain name:
mail.khaisanfood.vn(trỏ về IP VPS). - Nginx Proxy Manager đang chạy trong một Docker container.
DNS record
| Type | Name | Value | Proxy Status |
|---|---|---|---|
| A | IP VPS của bạn | 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. Các bước Cài đặt
Bước 1: Clone Mailcow
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerizedBước 2: Tạo Cấu hình
./generate_config.sh
Hostname: mail.khaisanfood.vn
Timezone: Asia/HoChiMinh
ClamAV: Y (nếu RAM > 4GB) hoặc N.Bước 3: Cấu hình mailcow.conf (Quan trọng)
Chỉnh sửa cấu hình để tránh xung đột và vòng lặp.
nano mailcow.confThay đổi các biến sau:
- Ngăn chặn Vòng lặp Chuyển hướng:
HTTP_REDIRECT=n
(Chúng ta để Nginx Proxy Manager xử lý HTTPS, vì vậy hãy tắt chuyển hướng nội bộ của Mailcow). - Bind vào Tất cả Giao diện (để NPM có thể nhìn thấy):
HTTP_BIND=0.0.0.0HTTPS_BIND=0.0.0.0 - Thay đổi Port (để tránh xung đột 80/443):
HTTP_PORT=8080HTTPS_PORT=8443 - Tránh Xung đột IP (Sửa lỗi “Pool overlaps”):
IPV4_NETWORK=192.168.201

Bước 4: Thiết lập Tường lửa (Sửa lỗi 504)
Đảm bảo các Docker container có thể giao tiếp với nhau.
ufw allow from 172.16.0.0/12 to anyBước 5: Khởi động Mailcow
docker compose pull
docker compose up -d3. Cấu hình Nginx Proxy Manager
Truy cập Nginx Proxy Manager và thêm Proxy Host mới.
Details Tab
- Domain Names:
mail.khaisanfood.vn - Scheme:
http(Quan trọng! Kết nối qua HTTP) - Forward Hostname / IP:
172.17.0.1
(Đây là IP Gateway chuẩn của Docker. Kiểm traip addr show docker0để xác nhận). - Forward Port:
8080 - Cache Assets: Disabled
- Block Common Exploits: Enabled
SSL Tab
- SSL Certificate: Yêu cầu chứng chỉ Let’s Encrypt mới.
- Force SSL: Enabled.
- HTTP/2 Support: Enabled.
Nhấn Save. Bây giờ bạn có thể truy cập https://mail.khaisanfood.vn.

4. Sau khi Cài đặt
Đồng bộ Chứng chỉ SSL (Cho Email Clients)
NPM xử lý SSL web, nhưng Mailcow cần chứng chỉ cho SMTP/IMAP. Bạn cần copy chúng từ Docker volume của NPM trên host.
Tìm ID Chứng chỉ NPM của bạn: Kiểm tra dashboard NPM hoặc tìm trong thư mục. Ví dụ Host Path: /var/lib/docker/volumes/nginx-proxy-managernpmletsencrypt/_data/live/npm-21 (id 21 sẽ khác nhau cho mỗi tên miền).
Lệnh Đồng bộ:
# Cập nhật đường dẫn này khớp với Host Path của bạn tìm thấy ở trên
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-mailcowReset Mật khẩu Admin
If admin / moohoo không hoạt động:
cd /opt/mailcow-dockerized/helper-scripts
bash mailcow-reset-admin.shDNS / DKIM
Đăng nhập vào Mailcow UI -> Configuration -> Mail Setup -> DNS để lấy bản ghi DKIM và thêm nó vào nhà cung cấp DNS của bạn.
5. Thêm Tên miền Bổ sung (Multi-Domain Setup)
Bạn có thể host nhiều tên miền email (ví dụ: @dpsmedia.vn) trên cùng một server này.
A. Thêm Domain trong Mailcow
- Đăng nhập Mailcow UI với quyền Admin.
- Vào Configuration -> Mail Setup -> Domains.
- Nhấn Add Domain.
- Domain:
dpsmedia.vn(hoặc tên miền mới của bạn). - Nhấn Add Domain và khởi động lại SOGo.
B. DNS cho Domain Mới (dpsmedia.vn)
Vào nhà cung cấp DNS cho dpsmedia.vn và thêm các bản ghi này. Quan trọng: Trỏ chúng về URL server mail hiện tại của bạn (mail.khaisanfood.vn).
| Type | Name | Value | Status |
|---|---|---|---|
| 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 | (Copy value from Mailcow UI -> DNS) | – |
| TXT | _dmarc | v=DMARC1; p=none; | – |
(Bạn KHÔNG cần địa chỉ IP mới. Mọi thứ đều đi qua các IP chính).
C. (Tùy chọn) Truy cập Mailcow UI qua mail.dpsmedia.vn
Nếu bạn muốn truy cập Admin UI qua https://mail.dpsmedia.vn:
Chỉnh sửa Config:
nano mailcow.conf
ADDITIONALSERVERNAMES=mail.dpsmedia.vn
docker compose up -dNginx Proxy Manager: Copy y hệt cài đặt của mail.khaisanfood.vn.
D. Chứng chỉ SSL cho Domain Bổ sung
Option 1: (Khuyên dùng) Sử dụng mail.khaisanfood.vn cho Incoming/Outgoing Server.
Option 2: (Nâng cao) Bật ENABLESSLSNI=y trong config, tạo thư mục SSL riêng và đồng bộ chứng chỉ mới vào đó.
6. Sửa lỗi Gửi Email (Gmail Block)
Nếu gặp lỗi 550-5.7.1, nghĩa là IP của bạn có uy tín thấp.
A. Thiết lập Reverse DNS (PTR) – Bắt buộc
Vào Dashboard của nhà cung cấp VPS, đặt PTR Record cho IP của bạn thành mail.khaisanfood.vn.
B. Sử dụng SMTP Relay
Nếu IP bị blacklist, hãy dùng Amazon SES, SendGrid, hoặc Mailgun làm Relay.
7. Hướng dẫn Gỡ cài đặt
Cảnh báo: Việc này sẽ xóa TOÀN BỘ dữ liệu email.
cd /opt/mailcow-dockerized
docker compose down -v
cd /opt
rm -rf mailcow-dockerizedXóa Proxy Host trong NPM.

