mailcow-dockerized 部署指南:快速搭建完整的自建邮件服务器
【免费下载链接】mailcow-dockerizedmailcow: dockerized - 🐮 + 🐋 = 💕项目地址: https://gitcode.com/GitHub_Trending/ma/mailcow-dockerized
mailcow-dockerized 是一套基于 Docker Compose 的邮件服务器发行版,把 Postfix、Dovecot、Rspamd、ClamAV、Web 管理界面等组件打包成一组容器,一条命令拉起整套自建邮件服务器。
mailcow 是什么、适合谁
mailcow 本质上是一个"邮件全家桶":收发(Postfix)、存取(Dovecot)、反垃圾(Rspamd)、病毒扫描(ClamAV)、Web 管理端全部容器化,组件版本互相匹配,省掉了逐个安装配置的功夫。它适合以下三类场景:
- 个人开发者搭自己的邮箱域名:不再依赖第三方免费邮箱,收发自控、数据在手,客户端自动发现省配置。
- 中小团队替换商业邮件服务:按邮箱数量而非人数付费,Web 界面管理域名、邮箱、别名,非专业人员也能操作。
- 需要完整反垃圾能力的运维人员:信誉黑名单、内容检测、附件扫描开箱即用,策略可在 data/conf/rspamd/ 下调整。
部署前的自查清单
动手前确认四项准备到位,可避免绝大多数部署失败。
硬件与系统要求
| 项目 | 最低要求 | 说明 |
|---|---|---|
| 操作系统 | Linux(Ubuntu/Debian/CentOS) | 服务器环境 |
| 内存 | 2 GB | 低于 2.5 GB 建议关闭 ClamAV,防止内存溢出 |
| 磁盘 | 20 GB | 容器镜像 + 邮件数据 |
| 软件 | Docker(≥24)+ Compose 插件 | mailcow 会检查 Docker 版本,过低会拒绝启动 |
域名与 DNS 准备
- 需要一个域名,并为其准备一个子域名作为主机名(如
mail.yourdomain.com),配置脚本会校验 FQDN。 - 需要能自行添加 DNS 记录:
| 记录 | 指向 | 作用 |
|---|---|---|
| A | 服务器公网 IP | 主机名解析 |
| MX | mail.yourdomain.com | 接收外部邮件 |
| SPF(TXT) | v=spf1 ... | 声明发信权限 |
| DKIM(TXT) | Web 界面生成 | 发信签名 |
| DMARC(TXT) | _dmarc.yourdomain.com | 策略管理 |
- 服务器需放行 25、80、443、993、587 等端口的入站流量,且 IP 未被主流黑名单收录。
三步完成部署
整个流程只有三步,按顺序执行即可。
第一步:安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh get-docker.sh获取并安装 Docker 引擎;安装后把当前用户加入 docker 组并重新登录,免去后续 sudo。
第二步:拉取项目代码
git clone https://gitcode.com/GitHub_Trending/ma/mailcow-dockerized.git cd mailcow-dockerized第三步:生成配置并启动
ln -s mailcow.conf .env ./generate_config.sh docker compose up -dgenerate_config.sh会交互式询问主机名(FQDN)、时区、分支,并根据内存大小决定是否跳过 ClamAV,最终生成mailcow.conf;docker compose up -d后台拉起全部容器。
启动后访问https://mail.yourdomain.com,使用默认管理员账户admin/moohoo登录。所有运行参数(端口、SKIP_CLAMD、USE_WATCHDOG等)都集中在这个文件里,需要调整时改它即可。
上线后的 5 件事
容器跑起来只是开始,按顺序完成以下 5 项才算正式可用:
- 改掉默认密码:登录 Web 界面后第一件事就是重置
admin密码,默认口令moohoo是公开信息。 - 核对 DNS:按界面提示逐项检查 MX、SPF、DKIM、DMARC 是否生效,可用 Web 界面自带的 DNS 检查功能。
- 建第一个域名和邮箱:在"电子邮件 → 域名"中添加
yourdomain.com,再在其下创建邮箱(如user@yourdomain.com),设置密码与配额。 - 客户端连接测试:用桌面或手机客户端接入,IMAP 用 993 端口、SMTP 用 587 端口;mailcow 提供自动发现,Outlook/Thunderbird/手机应用多数可免手填。
- 收发验证:给外部地址(如公共邮箱)发一封测试信,再回一封进来,确认双向链路和 SPF/DKIM 均通过。
垃圾邮件与病毒防护:三道防线
mailcow 的反垃圾体系由 Rspamd 主控,邮件依次穿过三道关卡,配置目录统一在 data/conf/rspamd/:
- 第一道:信誉黑名单。基于 IP/域名信誉数据源(RBL 类检查)拦截已知恶意来源,在
local.d/的启用清单中按需开关数据源。 - 第二道:内容检测。Rspamd 内置规则与贝叶斯分类器对邮件头、正文做打分,超过阈值判为垃圾;误判的邮件可通过 Web 界面"举报/非垃圾"回流训练。
- 第三道:附件病毒扫描。ClamAV 容器扫描附件,另有 Olefy 容器专项解析 Office 文档宏威胁;内存不足时可在
mailcow.conf设SKIP_CLAMD=y关闭,Rspamd 会自动感知其缺席。
Web 端管理界面可实时查看 Rspamd 过滤器明细与全局过滤策略,无需登录容器改文件。
日常运维手册
每日
docker compose ps docker exec -it postfix-mailcow postqueue -p第一条确认全部容器为运行状态,第二条查看邮件队列积压;队列长期滞留说明对端拒绝或网络异常,可用docker exec -it postfix-mailcow postsuper -d ALL deferred清理已确认丢失的延迟邮件。
每周
./helper-scripts/backup_and_restore.sh backup all /backup/mailcow完整备份(vmail、加密材料、MySQL、Rspamd、Postfix 配置等),备份目录必须使用绝对路径。可挂入 crontab:0 3 * * 0 /path/to/mailcow/helper-scripts/backup_and_restore.sh backup all /backup/mailcow。建议每周核对一次备份产物是否生成、大小是否正常。
每月
./update.sh拉取并更新各组件,脚本位于项目根目录;更新前先看 release 说明,重大变更建议先在非生产环境验证。同时顺带审查一次 data/conf/ 下关键配置与 fail2ban 封禁列表。
出问题时怎么救
收不到外部邮件
- 症状:自己发得出去,外部邮箱回不来。
- 原因:MX/A 记录未生效,25 端口被防火墙拦截,或 SPF/DKIM 配置错误导致被拒。
- 修复:先
dig验证 MX 与 A 记录解析正确,再确认 25 端口开放;用 Web 界面的 DNS 诊断核对 SPF、DKIM、DMARC 三项。
Web 界面打不开
- 症状:
https://mail.yourdomain.com无响应或证书报错。 - 原因:容器未全部就绪、80/443 端口未放行,或 ACME 证书申请失败。
- 修复:
docker compose ps docker compose logs --tail=50 nginx-mailcow前者确认 nginx、acme 等容器状态,后者看具体报错;确认 80/443 入站放行后,等 Let's Encrypt 申请完成即可恢复。
忘记管理员密码
- 症状:
admin账户无法登录。 - 原因:密码遗失或被遗忘。
- 修复:
./helper-scripts/mailcow-reset-admin.sh按脚本提示重置管理员口令,无需进入数据库手工操作。
结语
部署完成不等于结束:改密码、核 DNS、建首个邮箱、跑通收发、盯住备份,这五件事和日常巡检才是邮件系统长期稳定的关键。更多服务配置可参考 data/conf/ 目录下的各组件配置,备份、重置、更新等维护脚本集中在 helper-scripts/,建议将其加入运维手册。
【免费下载链接】mailcow-dockerizedmailcow: dockerized - 🐮 + 🐋 = 💕项目地址: https://gitcode.com/GitHub_Trending/ma/mailcow-dockerized
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考