2026年4月18日 3 分钟阅读

Mailcow 邮件服务器安装与配置指南

tinyash 0 条评论

简介

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 记录

在域名服务商处添加以下记录:

类型主机说明
Amail服务器 IPv4 地址邮件服务器地址
AAAAmail服务器 IPv6 地址可选,如有 IPv6
MX@mail.example.com优先级 10
TXT@v=spf1 mx a -allSPF 防伪造
TXT_dmarcv=DMARC1; p=quarantine; rua=mailto:postmaster@example.comDMARC
TXTdkim._domainkey(从 mailcow 获取)DKIM 密钥
CNAMEautodiscovermail.example.com自动发现
CNAMEautoconfigmail.example.com自动配置
SRV_autodiscover._tcpmail.example.com 443自动发现 SRV

获取 DKIM 密钥

  1. 登录 mailcow Web UI:https://mail.example.com
  2. 进入 Configuration → Mail Setup → DKIM
  3. 复制 dkim._domainkey 的 TXT 记录内容

配置 PTR 记录(反向 DNS)

联系服务器提供商设置 PTR:

  • IP → mail.example.com

六、初始登录

默认管理员账号

  • 邮箱: admin@example.com
  • 密码: 安装时设置的密码(或在 mailcow.conf 中查看)

登录地址

  • 默认端口:https://mail.example.com
  • 自定义端口:https://mail.example.com:30443

七、创建邮箱

  1. 登录 mailcow 管理后台
  2. 进入 Mail Setup → Mailboxes
  3. 点击 Add Mailbox
  4. 填写:
    • Email: user@example.com
    • Name: 用户名称
    • Password: 设置密码
    • Quota: 邮箱容量(MB)

八、配置 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 配置

九、测试收发邮件

发送测试邮件

  1. 登录 SOGo Webmail:https://mail.example.com/SOGo/
  2. 用创建的邮箱账号登录
  3. 发送一封邮件到外部邮箱(如 Gmail)
  4. 检查是否收到

接收测试邮件

从外部邮箱发送一封邮件到你的新邮箱,检查是否能收到。


十、常见问题

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/

十二、安全建议

  1. 定期更新: git pull && docker compose pull && docker compose up -d
  2. 防火墙: 只开放必要端口
  3. Fail2Ban: mailcow 内置,确保启用
  4. 强密码: 管理员和邮箱密码使用强密码
  5. 双因素认证: 在 mailcow 中为管理员启用 2FA

参考链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。