Hướng dẫn Thiết lập Mailcow (Phiên bản Cuối) trên VPS hiệu quả
Hướng dẫn này được tối ưu hóa để triển khai Mailcow: Dockerized cho VPS sử dụng Nginx Proxy Manager (NPM) và Portainer. Nó bao gồm giải pháp cho các lỗi phổ biến như Vòng lặp Chuyển hướng và Lỗi Gateway Timeout 504.
1. Yêu cầu Tiên quyết
VPS đã có Docker & Docker Compose. Domain: mail.khaisanfood.vn (trỏ về IP VPS). Nginx Proxy Manager hoạt động trong một Docker container.
Bản ghi DNS
Type | Name | Value | Proxy Status
A record | mail | IP VPS của bạn | DNS Only
CNAME | autodiscover | mail.khaisanfood.vn | DNS Only
CNAME | autoconfig | mail.khaisanfood.vn | DNS Only
MX record | @ | 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-dockerized
Bước 2: Tạo Cấu hình
./generate_config.sh
Hostname: mail.khaisanfood.vn
Timezone: Asia/HoChiMinh
ClamAV: Y (tôi khuyên RAM > 4GB) hoặc N.
Bước 3: Cấu hình mailcow.conf (Quan trọng)
Chỉnh sửa file config để ngăn chặn và lỗi.
nano mailcow.conf
Set các biến sau:
Tránh Vòng lặp Chuyển hướng: HTTP_REDIRECT=n (NPM sẽ xử lý HTTPS).
Bind vào Tất cả Giao diện: HTTP_BIND=0.0.0.0 HTTPS_BIND=0.0.0.0
Thay đổi Port (tránh xung đột 80/443): HTTP_PORT=8080 HTTPS_PORT=8443
Sửa Xung đột IP ("Pool overlaps"): IPV4_NETWORK=192.168.201
Bước 4: Thiết lập Tường lửa (Sửa lỗi 504)
Cho phép containers kết nối.
ufw allow from 172.16.0.0/12 to any
Bước 5: Khởi động Mailcow
docker compose pull
docker compose up -d
3. Cấu hình Nginx Proxy Manager
Truy cập Nginx Proxy Manager và tạo Proxy Host mới.
Details Tab
Domain Names: mail.khaisanfood.vn
Scheme: http (Important! Connect qua HTTP)
Forward Hostname / IP: 172.17.0.1 (Docker gateway. Check ip addr show docker0).
Forward Port: 8080
Cache Assets: Disabled
Block Common Exploits: Enabled
SSL Tab
SSL Certificate: Request chứng chỉ Let's Encrypt new.
Force SSL: Enabled.
HTTP/2 Support: Enabled.
Nhấn Save. Giờ access https://mail.khaisanfood.vn.
4. Sau khi Cài đặt
Đồng bộ Chứng chỉ SSL (Cho Email Clients)
NPM xử lý, nhưng Mailcow require for SMTP/IMAP.
Copy từ volume NPM.
Tìm ID: NPM dashboard hoặc folder /var/lib/docker/volumes/nginx-proxy-managernpmletsencrypt/_data/live/npm-21.
Lệnh Đồng bộ:
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
Reset Mật khẩu Admin
If admin / moohoo không hoạt động:
cd /opt/mailcow-dockerized/helper-scripts
bash mailcow-reset-admin.sh
DNS / DKIM
Login Mailcow UI -> Configuration -> Mail Setup -> DNS to get bản ghi DKIM và add vào DNS provider.
5. Thêm Tên miền Bổ sung (Multi-Domain)
A. Thêm Domain trong Mailcow
Admin UI -> Configuration -> Mail Setup -> Domains.
Add Domain: dpsmedia.vn.
Restart SOGo.
B. DNS cho Domain Mới
Thêm records trỏ về mail.khaisanfood.vn:
MX | @ | mail.khaisanfood.vn | Priority 10
TXT | @ | v=spf1 mx include:mail.khaisanfood.vn ~all
CNAME | autodiscover | mail.khaisanfood.vn
CNAME | autoconfig | mail.khaisanfood.vn
DKIM | dkim._domainkey | (From Mailcow UI)
DMARC | _dmarc | v=DMARC1; p=none;
C. (Tùy chọn) Truy cập UI qua mail.dpsmedia.vn
nano mailcow.conf
ADDITIONALSERVERNAMES=mail.dpsmedia.vn
docker compose up -d
Duplicate cài đặt NPM same.
6. Sửa lỗi Gửi Email (Gmail Block)
If lỗi 550-5.7.1 (IP uy tín thấp):
A. Reverse DNS (PTR) - Required. Set PTR = mail.khaisanfood.vn in VPS dashboard.
B. SMTP Relay - Use Amazon SES, SendGrid, Mailgun nếu IP blacklist.
7. Hướng dẫn Gỡ cài đặt
Cảnh báo: Delete ALL dữ liệu email.
cd /opt/mailcow-dockerized
docker compose down -v
cd /opt
rm -rf mailcow-dockerized
Xóa Proxy Host trong NPM.
Full guide Mailcow