30分钟部署一套完整可用的 mailcow-dockerized 邮件服务器:新手实战避坑指南
【免费下载链接】mailcow-dockerizedmailcow: dockerized - 🐮 + 🐋 = 💕项目地址: https://gitcode.com/GitHub_Trending/ma/mailcow-dockerized
你想给自己的域名配一个真正能收发的邮箱,但光是"要装 Postfix、Dovecot、Rspamd、ClamAV"这句话就让你没了兴趣?mailcow-dockerized 把一整套企业级邮件服务器——收发、反垃圾、杀毒、网页邮箱、管理界面——全部打包进了一组 Docker 容器里,配置、拉镜像、启动,三步就能跑起来。这篇文章按"装、配、验、扩、排障"的任务流水线带你走完全程,读完你会带走一个能用的mail.yourdomain.com,以及维护它的底气。
🐮 装:让 mailcow-dockerized 在你的服务器上跑起来
先确认 3 个前提条件(约 5 分钟)
先别被"企业级"三个字吓到,它对硬件的要求其实很朴素:
- 一台2GB 内存起步的 Linux 服务器。内存低于 2.5GB 时,安装脚本会建议关掉 ClamAV 杀毒,因为它相当吃内存;
- 一个已注册、能编辑 DNS 记录的域名;
- 服务器上装好Docker(24 及以上版本)和 Compose 插件,装完记得让你的用户能执行 docker 命令。
手动搭和用 mailcow-dockerized 到底差在哪?先看这张表:
| 对比项 | 手动搭邮件服务器 | mailcow-dockerized |
|---|---|---|
| 组件数量 | Postfix、Dovecot、Rspamd、ClamAV、网页邮箱、证书续期……逐个装,10+ 个 | 一条 docker compose 全量拉起 |
| 版本兼容 | 依赖关系自己查,版本容易打架 | 官方镜像打包测试,版本互相匹配 |
| 日常管理 | 配置文件散落系统各处,SSH 逐个改 | 一个 Web 界面 + 一个 mailcow.conf |
| 升级 | 逐个更新,然后祈祷没事 | 跑一次 ./update.sh + 拉新镜像 |
| 备份恢复 | 自己研究各组件怎么导 | backup_and_restore.sh 一条命令 |
拿到代码并生成配置(约 5 分钟)
下面这几条命令负责拉取代码、建立配置软链接并启动配置向导:
git clone https://gitcode.com/GitHub_Trending/ma/mailcow-dockerized cd mailcow-dockerized ln -s mailcow.conf .env && ./generate_config.sh先说明一下这个.env软链接:Docker Compose 约定从.env读环境变量,mailcow 把它指向mailcow.conf,等于整个系统只有一份配置,这也是为什么向导要求你在安装目录里执行脚本。
generate_config.sh会问你四个问题,答完就算完成"配置"了:
- 邮件服务器主机名(约 1 分钟):填一个带子域名的完整域名,比如
mail.yourdomain.com。注意脚本特意提醒过——这不是你注册邮箱用的邮件域名,而是服务器自己的身份,SSL 证书和客户端自动发现都挂在它上面; - 时区:会探测系统默认值,直接回车即可;
- ClamAV 开不开:小内存机器按建议跳过,以后随时能开;
- 分支:生产环境选
master(稳定),想尝鲜有nightly。
答完后脚本会生成mailcow.conf,端口、内部网段、各类开关全在里面,数据库密码、Redis 密码都是自动随机生成的,你不用手写任何密钥。
拉镜像并启动容器(约 10~15 分钟)
回到 mailcow 安装目录,这条命令负责拉取全部镜像并启动整套服务(首次拉取比较久,泡杯茶):
docker compose pull docker compose up -d到这一步,你的 mailcow-dockerized 已经能跑了。打开浏览器访问https://mail.yourdomain.com,用默认账户admin / moohoo登录,第一件事:改掉管理员密码。
你会发现第一次打开页面会有证书警告——因为你的 DNS A 记录还没指过来时,mailcow 先挂的是一张自签占位证书。把mail.yourdomain.com的 A 记录指到服务器后,acme 容器会自动申请 Let's Encrypt 证书替换掉它,不用手动折腾。
整套东西启动后,一封邮件的旅程大致长这样:
你的邮件客户端 ──(IMAP/SMTP)──▶ mail.yourdomain.com │ Nginx(80/443) ──┬──▶ SOGo 网页邮箱 + PHP 管理界面 ├──▶ Postfix 收发 ──▶ Rspamd 反垃圾 │ └──▶ ClamAV 查毒 └──▶ Dovecot 存邮件 / 提供 IMAP MySQL:账户与配置 Redis:缓存与日志⚙️ 配:加域名、建邮箱、填 DNS 记录
添加你的第一个域名(约 3 分钟)
在管理界面找到"添加新域名",输入yourdomain.com,保存。你会发现自己基本不用记任何 DNS 知识:保存后 mailcow-dockerized 会直接列出一份需要你去填的 DNS 记录清单,照抄到域名的 DNS 解析面板即可:
MX yourdomain.com 10 mail.yourdomain.com TXT yourdomain.com "v=spf1 mx -all" TXT _dmarc.yourdomain.com "v=DMARC1; p=quarantine;"还有一条 DKIM 记录,值是 UI 里给你生成的一长串,同样复制粘贴。为什么要填这四样?一句话白话:MX 告诉全世界"这个域的邮件送到我服务器",SPF 说明"只有我的服务器有资格代发",DKIM 给每封邮件盖防伪印章,DMARC 规定对方验证失败时怎么处理。四样齐了,Gmail 这类大服务商才不会把你的邮件拒收。
创建第一个邮箱(约 2 分钟)
域名就位后,在域名下添加邮箱:输入邮箱名前缀(比如me)、设置密码、拖动配额滑块。到这一步,me@yourdomain.com这个真实存在的邮箱账户就建好了。
你会注意到整个过程中没碰过任何"邮件怎么存储"的细节:账户数据进 MySQL,邮件文件进数据卷,网页邮箱 SOGo 的配置在 data/conf/sogo/ 里。这些你平时都不用打开,知道它们存在就行。
✅ 验:三个测试确认它真的能收发
服务器全绿不等于真能用,花十分钟跑三个实测:
- 给自己发一封(约 1 分钟):登录内置的 SOGo 网页邮箱,给
me@yourdomain.com写封新邮件。收到,说明 Dovecot 存储、网页邮箱、内部投递链路都没问题; - 发到外部:发给一个 QQ 邮箱或 Gmail 地址。进收件箱说明发得出去;进垃圾箱的话,多半是 SPF/DKIM 记录还没生效,用免费的外部邮件检测工具能看到具体扣分项;
- 让外部回一封:对方回复能到,说明 25 端口收信链路和防火墙都正常。
三项全过,恭喜你,一套完整可用的邮件服务器就此完工。想再确认一下健康状态,跑docker compose ps看容器是否全部运行即可,有重启循环的直接跳去下面最后一节。
📦 扩:备份、升级和常用开关
备份:一条命令全带走(约 1 分钟)
账户、配置、邮件数据,mailcow-dockerized 提供了一个 维护脚本 就能整体打包,这条命令会把整套服务备份到指定目录:
./helper-scripts/backup_and_restore.sh backup all /backup恢复时把backup换成restore即可;也支持只备vmail(邮件文件)或mysql(账户配置)等单块。这里有个真实的教训:备份脚本本身很可靠,但"从没试过的恢复"不算恢复过——找个时间真的 restore 一遍到临时目录,心里才踏实。
升级:staging 测试后再进 master
想升级 mailcow-dockerized 时,执行./update.sh(约 10 分钟)更新代码和配置,再docker compose pull && docker compose up -d换新镜像。
有个细节值得知道:官方新功能都会先进staging分支跑一段时间,测稳了才合并进master——这就是生产环境选 master 分支的底气所在。下图就是他们合并流程的截图:
你可能想改的三个开关
打开mailcow.conf,搜这三个词就能定位:
- SKIP_CLAMD:ClamAV 杀毒开关,
y为关闭。小内存机器关掉能省下近 1GB 内存; - USE_WATCHDOG:默认开启的"看门狗",哪个容器不健康就自动重启它,还能发邮件通知你;
- MAILCOW_HOSTNAME / TZ:想改主机名或时区,只改这里,然后重建容器。
改完配置统一用docker compose down && docker compose up -d应用。
🛠️ 排障:最常见的 3 个坑和修法
坑一:收不到外部邮件,或总是进垃圾箱
九成是 DNS 记录的问题,不是服务器的问题。按顺序查:MX 是否指向mail.yourdomain.com;SPF 里列的服务器是否与实际一致;DKIM 的 TXT 记录是否生效——新加的 TXT 记录全球生效需要 10 分钟到几小时不等,急也没用。记录确认无误后,用外部邮件送达性检测工具发封测试邮件,哪个环节扣分一目了然。
坑二:配置环节就卡住走不下去
最高频的是主机名填错:把邮件域名yourdomain.com填成了服务器主机名(或反过来)。别慌,generate_config.sh会把旧文件挪成mailcow.conf_backup再重新生成,删掉软链接重跑一遍、重新回答四个问题就行。另一种是 80/443 端口被宿主机上的 Nginx 等程序占用,compose 起不来——把占用方停掉,或在mailcow.conf里改掉HTTP_PORT/HTTPS_PORT。
坑三:某个容器反复重启
先docker compose ps找出重启循环的容器名,再docker compose logs 容器名看报错尾部。两种高频情况:watchdog 判定它不健康反复拉起(日志里能看到死因),或者你改了配置却没重建容器。实在看不出所以然,管理界面里有专门的日志页,能直接翻各服务最近几百行日志,不用 SSH 进容器挨个看。
下一步行动清单
- 改掉 admin / moohoo 默认密码
- 建一个备份目录,跑一次完整备份,并挂上每周定时任务
- 让外部同事发封测试邮件,确认落在收件箱而不是垃圾箱
- 观察一周
docker compose ps,全部常绿才算稳定上线 - 把
mail.yourdomain.com的 MX / SPF / DKIM / DMARC 记录抄一份存在手边,下次排障不用重新查
【免费下载链接】mailcow-dockerizedmailcow: dockerized - 🐮 + 🐋 = 💕项目地址: https://gitcode.com/GitHub_Trending/ma/mailcow-dockerized
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考