从零部署 mailcow Docker 邮件服务器完整指南:4 条命令搭建企业级邮件系统
从零部署 mailcow Docker 邮件服务器完整指南4 条命令搭建企业级邮件系统【免费下载链接】mailcow-dockerizedmailcow: dockerized - 项目地址: https://gitcode.com/GitHub_Trending/ma/mailcow-dockerized还在为自建邮件服务器头疼吗Postfix 的配置写了一屏、Dovecot 的认证调了三天、垃圾邮件过滤器换了两个都不顺手——最后发现光是让邮件发得出去就耗掉了整个周末。mailcow: dockerized 就是来解决这个问题的它把 Postfix、Dovecot、Rspamd、ClamAV、MariaDB 等十几个组件打包进 Docker 容器一条docker compose up -d全部拉起。这篇文章带你走一遍 mailcow Docker 部署的完整流程4 条命令、30 分钟左右你的企业级邮件服务器就能跑起来。 动手前的 3 项准备先花 2 分钟确认环境能省掉后面 80% 的排查时间准备项要求说明系统LinuxUbuntu/Debian 推荐需要已装好 Docker 24 与 Docker Compose资源内存 ≥ 2GB4GB 更稳、磁盘 ≥ 20GB内存 ≤ 2.5GB 时建议关闭 ClamAV域名一个你控制 DNS 的域名如 yourdomain.com需要一个独立子域名作主机名如 mail.yourdomain.com为什么用 mailcow 而不是自己装对比一下就清楚了传统方式要手动协调 10 组件的版本兼容性升级时牵一发动全身而 mailcow 用容器隔离每个服务版本由官方统一锁定安全更新一条./update.sh搞定备份恢复也内置了脚本。对新手来说这是直接拥有和慢慢调通的区别。 四步从零到可收信第一步把代码拿到服务器上git clone https://gitcode.com/GitHub_Trending/ma/mailcow-dockerized cd mailcow-dockerized第二步生成 mailcow.conf 配置文件mailcow 用mailcow.conf这一个文件承载所有关键配置主机名、数据库密码、时区、功能开关由 generate_config.sh 交互式生成。注意脚本要求当前目录存在指向它的软链接ln -s mailcow.conf .env ./generate_config.sh脚本会依次问你 4 件事逐个来邮件服务器主机名FQDN填mail.yourdomain.com。注意这是服务器的主机名不是你将来收发的邮件域名必须带子域名裸域名官方提示未充分测试。时区直接回车接受系统检测到的值如Asia/Shanghai。ClamAV 病毒扫描开关内存不足 2.5GB 时脚本会建议你选y关闭之后随时可在mailcow.conf里把SKIP_CLAMDn重新打开。分支选择选master稳定版推荐生产使用nightly是测试分支legacy仅收安全更新。生成的文件里已自动填好随机数据库密码、管理员默认账号admin/moohoo等信息无需手填。第三步启动并验证docker compose up -d首次启动需要拉取并初始化一批镜像耐心等几分钟。然后确认所有容器都是Up状态docker compose ps如果某个容器在反复重启用docker compose logs 容器名看日志十有八九是端口冲突或 DNS 解析问题。第四步打开 Web 界面建第一个域名和邮箱浏览器访问https://mail.yourdomain.com用admin/moohoo登录。第一件事就是改掉默认密码这是唯一不能偷懒的步骤。登录后在 Web 界面里进入电子邮件 → 域名添加yourdomain.com界面会生成该域名需要的 DNS 记录清单MX、SPF、DKIM 等照着去 DNS 服务商处配置域名验证通过后新建第一个邮箱设置密码与配额发一封测试邮件验证收发。到这一步你的 mailcow 邮件服务器已经真正活着了。 容器都在跑什么1 分钟看懂架构mailcow 本质是一组职责单一的容器通过内部网络互相通信全部由 docker-compose.yml 编排。你不需要背下每一个知道谁管什么即可容器角色nginx-mailcow统一入口反向代理 Web 界面与 SOGo Webmailpostfix-mailcow邮件收发MTA核心中的核心dovecot-mailcow邮件存储与 IMAP/JMAP 服务rspamd-mailcow反垃圾邮件过滤与评分clamd-mailcowClamAV 病毒扫描可关sogo-mailcowSOGo Webmail支持 Exchange ActiveSyncmysql-mailcow / redis-mailcow配置与缓存存储unbound-mailcow内部递归 DNS 解析器watchdog-mailcow健康检查与异常自愈邮件的流转路径是这样的发件时 Postfix 把邮件先交给 Rspamd 评分Rspamd 再调用 ClamAV 扫附件通过才投递收件时外部邮件同样先过 Rspamd被判为垃圾的进隔离区而不是直接丢进用户收件箱——这一点在管理界面的隔离区里可以随时复查。️ 反垃圾不是玄学三层防线怎么分工mailcow 的防垃圾能力来自 data/conf/rspamd/ 下的配置三层防线各司其职第一层 · 信誉查询基于 RBL/黑名单实时查询发信 IP 与域名的信誉拦截绝大多数裸奔的垃圾源第二层 · 内容评分Rspamd 对邮件头、正文做规则匹配与贝叶斯学习分数超过阈值判为垃圾第三层 · 附件杀毒ClamAV 扫描所有附件防病毒也防带毒的正常邮件。日常你几乎不用碰它的配置。Web 界面的 Rspamd 面板里可以查看实时评分、白/黑名单还有基于正则的自定义规则——够用了。真遇到误判优先把对方加入白名单而不是盲目调阈值。 收信的三种姿势装好之后客户端接入比想象中简单浏览器直接用https://mail.yourdomain.com/SOGoSOGo Webmail 开箱即用日历和通讯录也一起给你了IMAP/SMTP 客户端Outlook、Thunderbird 等主流客户端都支持自动发现填邮箱和密码就能连上IMAP:993SMTP:587手机/Exchange 协议SOGo 提供 ActiveSync 接口手机当 Outlook 用。 常见坑位与排查路径收不到外部邮件十有八九在 DNS按顺序检查MX 记录是否指向mail.yourdomain.com、SPF 是否声明了发信 IP、DKIM 公钥是否已发布。Web 界面的域名详情页有 DNS 检测按钮先让它告诉你缺哪条。Web 界面打不开三步定位docker compose ps docker compose logs --tail50 nginx-mailcow再看服务器防火墙是否放行 443/80。绝大多数打不开是容器没起来或端口没放行而不是程序本身的问题。忘了管理员密码项目内置了重置脚本一行命令搞定./helper-scripts/mailcow-reset-admin.sh内存被 ClamAV 吃光2.5GB 以下的机器记得在mailcow.conf里设SKIP_CLAMDy后重启容器杀毒扫描是内存大户。 备份与升级两个脚本管全年邮件服务器的长期风险不在部署而在出事能不能恢复和版本能不能跟上。mailcow 把这两件事都收敛到了 helper-scripts/ 目录备份./helper-scripts/backup_and_restore.sh backup all /backup/dir建议写进 crontab 每天凌晨跑一次备份物包含数据库、所有配置和mailcow.conf。恢复时把backup换成restore即可——先恢复到一个临时目录验证再上生产这是官方文档反复强调的做法。升级拉取新版后执行./update.sh脚本会自动拉取镜像、重启容器并迁移配置。升级前养成先备份的肌肉记忆。社区的新代码在合并进稳定版之前会先被切到 staging 分支做验证这就是配置里让你选master而非nightly的原因——你日常用的是经过筛选的稳定代码每周 10 分钟例行清单✅docker compose ps确认全部容器健康✅df -h看磁盘Rspamd 与日志会缓慢增长✅docker exec -it postfix-mailcow postqueue -p查看邮件队列积压的邮件通常意味着某个域名 DNS 出了问题✅ 确认当天备份任务成功生成 下一步做什么到这里你手上已经有一套能收发的邮件系统。建议接下来三周按这个节奏走第一周把所有用户邮箱建齐、客户端连好第二周过一遍隔离区里被判成垃圾的邮件调教白名单给重要发件人加 DKIM 验证第三周演练一次备份 → 恢复真的把恢复流程跑通一遍而不是只相信备份文件存在。记住部署只是开始mailcow.conf和定期备份才是你的保命符——改完默认密码的这一刻你的邮件服务器才算真正上岗。【免费下载链接】mailcow-dockerizedmailcow: dockerized - 项目地址: https://gitcode.com/GitHub_Trending/ma/mailcow-dockerized创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考