这是什么
Mailcow(mailcow-dockerized)是一套自托管邮件套件,将 Postfix、Dovecot、Rspamd、SOGo webmail、ClamAV 以及一个管理界面整合进单一的 Docker Compose 部署中。它为你提供无限量的域名、邮箱和别名,支持按域名设置 DKIM、垃圾邮件过滤、真正的推送式 IMAP,以及基于浏览器的管理面板——托管邮箱能做到的一切,都由你掌控的硬件来实现。
为何选择离岸托管
你的收件箱是打开你所有其他账户的万能钥匙,因此它存放在哪里至关重要:在无需 KYC 的离岸 VPS 上,邮件服务器所归属的司法管辖区由你自己选择、用加密货币支付,而不必依赖某个可以读取、扫描、冻结或被传票调取你邮件的服务商。ChainVPS 保持 25 端口开放,为批量发送提供不限流量带宽,并支持设置匹配的 PTR 记录——这三项恰恰是低价主机商通常会封锁、从而扼杀自建邮件服务的关键。
部署过程
一套可用的参考配置
将其复制到全新的 ChainVPS 实例中。替换占位符后即可启动。
# Ubuntu 24.04 — full working Mailcow deploy
# Prereq: DNS A/AAAA for mail.example.com -> your VPS IP, and a
# matching PTR (rDNS) record set from the ChainVPS panel.
# 1. Install Docker Engine + Compose plugin
curl -fsSL https://get.docker.com | sh
# 2. mailcow requires umask 0022
umask 0022
# 3. Clone the project
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
# 4. Generate mailcow.conf (prompts for the mail FQDN + timezone).
# Use a subdomain like mail.example.com — NEVER the bare domain.
./generate_config.sh
# 5. (optional) trim heavy containers on a small VPS
sed -i 's/^SKIP_CLAMD=.*/SKIP_CLAMD=y/' mailcow.conf # saves ~1-2 GB RAM
sed -i 's/^SKIP_SOLR=.*/SKIP_SOLR=y/' mailcow.conf # disables full-text search
# 6. Pull images and bring the stack up
docker compose pull
docker compose up -d
# 7. Admin UI: https://mail.example.com (default login: admin / moohoo)
# Log in, CHANGE the password, add your domain, then copy the
# generated DKIM record into DNS alongside SPF and DMARC.
防火墙
需开放的端口
| 端口 | 协议 | 用途 |
|---|---|---|
| 25 | TCP | SMTP——接收其他服务器发来的邮件并进行出站中继(必须双向不被屏蔽) |
| 587 | TCP | Submission(STARTTLS)——经过身份验证的客户端发信 |
| 465 | TCP | SMTPS——通过隐式 TLS 进行身份验证的客户端发信 |
| 143 | TCP | IMAP(STARTTLS) |
| 993 | TCP | IMAPS——邮件客户端通过隐式 TLS 访问 |
| 110 | TCP | POP3(STARTTLS) |
| 995 | TCP | POP3S |
| 4190 | TCP | ManageSieve——服务器端邮件过滤规则 |
| 80 | TCP | HTTP——Let's Encrypt ACME 验证及 HTTPS 跳转 |
| 443 | TCP | HTTPS——SOGo webmail 与管理界面 |
按需调配规格
您需要哪种套餐
VPS Small — 2 vCPU / 6 GB RAM / 60 GB
6 GB 是运行完整技术栈较为舒适的最低配置;建议保留 ClamAV 以实现真正的垃圾邮件/病毒过滤。
VPS Pro — 4 vCPU / 8-12 GB RAM / 160 GB SSD
为 Rspamd、Solr 全文搜索及高负载 IMAP 预留充足余量;磁盘容量应根据邮箱保留策略相应扩容。
Dedicated / Storage VPS — 8+ vCPU, 16-32 GB RAM, large disk
将邮件数据迁移至 Storage 套餐,以低成本实现 TB 级留存;独享 CPU 可确保 ClamAV 与 Solr 不会拖慢邮件投递。
最佳地区: 选择一个隐私等级较高的节点(NL、CH、RO、IS、MD、LU),让你的邮箱司法管辖区成为深思熟虑的选择——瑞士和冰岛在存储邮件的数据隐私与信息披露标准方面最为严格。无论你选择哪一个,都要确认 25 端口双向开放,并设置与 MAILCOW_HOSTNAME 匹配的 PTR(rDNS)记录;这些节点的不限流量带宽正是批量发送和邮件通讯得以实现的关键,内置的 DDoS 防护也能确保 SMTP 在流量攻击下依然可达。
全面加固安全
安全加固清单
- 送达率取决于 DNS:发布 SPF 记录(v=spf1 mx ~all),将 Mailcow 生成的 DKIM 密钥复制进 DNS,添加 DMARC 记录,并设置与 MAILCOW_HOSTNAME 完全一致的 PTR/rDNS——如果正向与反向 DNS 不匹配,大多数服务器都会拒收你的邮件。
- 立即修改默认的 admin/moohoo 账号密码,并在 Mailcow 管理界面为管理员和邮箱登录启用 TOTP 双重验证。
- Mailcow 自带一个直接管理 iptables 的 netfilter/fail2ban 容器——切勿在其上再叠加 ufw;如果你运行主机防火墙,只需将邮件端口加入白名单,DOCKER-USER 链应留给 Mailcow 自行管理。
- 保持及时更新:定期在 mailcow-dockerized 目录下运行 ./update.sh,并使用 helper-scripts/backup_and_restore.sh 定期备份(将备份存放在 VPS 之外)。
- 新的离岸 IP 没有任何发信信誉——需要逐步预热,上线前先在 Spamhaus/Barracuda 黑名单中检查该 IP,如果该 IP 段此前曾被标记,应申请移除。
- 在内存较小的节点上,设置 SKIP_CLAMD=y 和 SKIP_SOLR=y 可将内存占用控制在约 3-4 GB;但在内存条件允许后,应重新启用 ClamAV——它能显著减少入站恶意软件。
问题
主机服务 Mailcow — 常见问题
ChainVPS 会像大多数主机商一样封锁 25 端口吗?
不会。25 端口双向开放,让 Mailcow 既能接收邮件,也能直接进行中继——这正是低价/云主机商在自建邮件服务上失败的最主要原因。
我可以设置反向 DNS(PTR)以提高送达率吗?
可以。在控制面板中设置与你的 MAILCOW_HOSTNAME(例如 mail.example.com)相匹配的 PTR 记录。正向与反向 DNS 必须一致,否则各大邮件服务商会延迟或拒收你的邮件。
Mailcow 实际需要多少内存?
完整技术栈建议预留 6 GB 内存。若在 mailcow.conf 中设置 SKIP_CLAMD=y 和 SKIP_SOLR=y,可将内存需求降至约 3-4 GB,但会失去内置病毒扫描和全文搜索功能。
哪个节点位置最适合搭建私有邮箱?
选择隐私等级较高的节点——瑞士或冰岛提供最强的信息披露保护,若你希望在欧盟与离岸延迟之间权衡,也可以选择 NL/RO/MD/LU。这些节点均保持 25 端口开放并支持 PTR 设置。
在无需 KYC 的 VPS 上,我的邮件真的私密吗?
服务器完全属于你:邮件存储在你掌控的磁盘上,位于你自己选定的司法管辖区,以加密货币支付且不关联任何身份信息。配合全盘加密和异地备份,只有你自己(而非邮箱服务商)能够读取这些存储的数据。
我该如何保持更新并做好备份?
定期在 mailcow-dockerized 目录下运行 ./update.sh 拉取新镜像,并使用 helper-scripts/backup_and_restore.sh 对邮件、配置和数据库进行快照备份——将这些备份推送到独立的 ChainVPS Storage 套餐中保存。