Mailcow 邮件服务器安装与配置指南
简介
Mailcow 是一个基于 Docker 的完整邮件服务器解决方案,集成了:
- Postfix – SMTP 邮件传输代理
- Dovecot – IMAP/POP3 邮件投递代理
- SOGo – Webmail 和群组协作(日历、联系人)
- Rspamd – 垃圾邮件过滤
- ClamAV – 病毒扫描
- Unbound – DNS 解析器
- 内置管理后台 – 可视化配置管理
为什么选择 Mailcow?
| 优点 | 说明 |
|---|---|
| 📦 开箱即用 | Docker 一键部署,无需手动配置各组件 |
| 🛡️ 安全性高 | 内置 Fail2Ban、双因素认证、自动 SSL |
| 📧 功能完整 | 支持邮件、日历、联系人、主动推送 |
| 🔧 易于维护 | Web 界面管理,日志清晰,更新简单 |
| 🌍 社区活跃 | GitHub 10k+ stars,持续更新 |
适用场景
- ✅ 个人/家庭自建邮箱
- ✅ 小企业邮件服务器
- ✅ 开发测试环境
- ✅ 隐私敏感的邮件需求
不适用场景
- ❌ 需要支持数万邮箱的大型企业
- ❌ 25 端口被封锁且无法开放的服务器
- ❌ 内存小于 4GB 的服务器
前置要求
服务器要求
- 系统:Ubuntu 20.04+ / Debian 10+ / CentOS 8+
- 内存:至少 6GB(推荐 8GB+)
- 磁盘:20GB+(根据邮箱容量调整)
- 端口开放:25, 465, 587, 110, 143, 993, 995, 4190, 80, 443
域名要求
- 一个主域名(如
example.com) - 一个子域名用于邮件服务(如
mail.example.com)
一、安装 Docker
# 安装 Docker curl -fsSL https://get.docker.com | bash # 安装 Docker Compose apt-get install docker-compose-plugin -y # Debian/Ubuntu # 或 yum install docker-compose-plugin -y # CentOS # 验证安装 docker --version docker compose version
二、下载 Mailcow
# 克隆 mailcow 仓库 git clone https://github.com/mailcow/mailcow-dockerized cd mailcow-dockerized # 生成配置文件 ./generate_config.sh
三、修改配置
编辑 mailcow.conf:
nano mailcow.conf
关键配置项
# 邮件服务器主机名 MAILCOW_HOSTNAME=mail.example.com # Web UI 端口(可选,默认 80/443) HTTP_PORT=80 HTTPS_PORT=443 # 如果需要改端口(避免与其他服务冲突) # HTTP_PORT=30080 # HTTPS_PORT=30443 # 数据库密码(自动生成,可修改) DBROOT=your_secure_root_password DBPASS=your_secure_db_password
四、启动 Mailcow
# 启动所有容器 docker compose up -d # 查看日志 docker compose logs -f # 检查容器状态 docker compose ps
等待所有容器启动完成(首次启动约 5-10 分钟)。
五、配置 DNS 记录
在域名服务商处添加以下记录:
| 类型 | 主机 | 值 | 说明 |
|---|---|---|---|
| A | 服务器 IPv4 地址 | 邮件服务器地址 | |
| AAAA | 服务器 IPv6 地址 | 可选,如有 IPv6 | |
| MX | @ | mail.example.com | 优先级 10 |
| TXT | @ | v=spf1 mx a -all | SPF 防伪造 |
| TXT | _dmarc | v=DMARC1; p=quarantine; rua=mailto:postmaster@example.com | DMARC |
| TXT | dkim._domainkey | (从 mailcow 获取) | DKIM 密钥 |
| CNAME | autodiscover | mail.example.com | 自动发现 |
| CNAME | autoconfig | mail.example.com | 自动配置 |
| SRV | _autodiscover._tcp | mail.example.com 443 | 自动发现 SRV |
获取 DKIM 密钥
- 登录 mailcow Web UI:
https://mail.example.com - 进入 Configuration → Mail Setup → DKIM
- 复制
dkim._domainkey的 TXT 记录内容
配置 PTR 记录(反向 DNS)
联系服务器提供商设置 PTR:
- IP →
mail.example.com
六、初始登录
默认管理员账号
- 邮箱:
admin@example.com - 密码: 安装时设置的密码(或在
mailcow.conf中查看)
登录地址
- 默认端口:
https://mail.example.com - 自定义端口:
https://mail.example.com:30443
七、创建邮箱
- 登录 mailcow 管理后台
- 进入 Mail Setup → Mailboxes
- 点击 Add Mailbox
- 填写:
- Email:
user@example.com - Name: 用户名称
- Password: 设置密码
- Quota: 邮箱容量(MB)
- Email:
八、配置 Nginx 反向代理(可选)
如果需要在 mailcow 前加一层 nginx:
server {
listen 80;
server_name mail.example.com;
# 强制 HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name mail.example.com;
ssl_certificate /etc/letsencrypt/live/mail.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mail.example.com/privkey.pem;
location / {
proxy_pass https://127.0.0.1:30443; # mailcow HTTPS 端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
# WebSocket 支持
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 超时设置
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
# 大文件上传
client_max_body_size 50M;
}
注意事项
- 不要在 nginx 层添加基础认证(auth_basic),会与 SOGo 认证冲突
- 确保
X-Forwarded-Proto正确传递,否则会有重定向循环 - mailcow 默认监听 80/443,如改端口需同步修改 nginx 配置
九、测试收发邮件
发送测试邮件
- 登录 SOGo Webmail:
https://mail.example.com/SOGo/ - 用创建的邮箱账号登录
- 发送一封邮件到外部邮箱(如 Gmail)
- 检查是否收到
接收测试邮件
从外部邮箱发送一封邮件到你的新邮箱,检查是否能收到。
十、常见问题
1. 重定向循环(ERR_TOO_MANY_REDIRECTS)
原因: nginx 没有正确传递协议头
解决: 确保 nginx 配置中有:
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host;
2. 邮件被标记为垃圾邮件
检查:
- SPF、DKIM、DMARC 记录是否正确
- PTR 记录是否配置
- 服务器 IP 是否在黑名单中
工具:
3. 25 端口被封锁
症状: 能收邮件,发不出去
解决:
- 联系服务器提供商开放 25 端口
- 或配置 SMTP 中继(如 SendGrid、Amazon SES)
4. 容器启动失败
# 查看日志 docker compose logs <容器名> # 重启容器 docker compose restart # 重新创建 docker compose down docker compose up -d
十一、维护命令
# 查看状态 docker compose ps # 查看日志 docker compose logs -f # 重启服务 docker compose restart # 停止服务 docker compose down # 更新 mailcow cd /path/to/mailcow-dockerized git pull docker compose pull docker compose up -d # 备份配置 tar -czf mailcow-backup-$(date +%Y%m%d).tar.gz mailcow.conf data/
十二、安全建议
- 定期更新:
git pull && docker compose pull && docker compose up -d - 防火墙: 只开放必要端口
- Fail2Ban: mailcow 内置,确保启用
- 强密码: 管理员和邮箱密码使用强密码
- 双因素认证: 在 mailcow 中为管理员启用 2FA
参考链接
- Mailcow 官方文档:https://mailcow.github.io/mailcow-dockerized-docs/
- Mailcow GitHub:https://github.com/mailcow/mailcow-dockerized
- DNS 检查工具:https://mxtoolbox.com/
- 邮件测试:https://www.mail-tester.com/