自建邮局搭建教程
基于 Mailcow(Docker 一键部署),从零搭建一个能收发邮件的自建邮局。
全程照着复制命令即可,约 30~60 分钟。
0. 先搞懂:自建邮局是什么?
自建邮局就是在自己的服务器上运行邮件服务,让你拥有 你的名字@你的域名 这样的邮箱。
你需要:
| 项目 | 要求 |
|---|---|
| 一台 VPS | 内存 ≥ 2GB(推荐 4GB 以上),系统 Debian 11/12 或 Ubuntu 22.04/24.04 |
| 一个域名 | 任意注册商均可,下文以 你的域名 代指 |
| 一个独立公网 IPv4 | 必须能开放 25 端口 |
| 基础 SSH 能力 | 会连接服务器、复制粘贴命令即可 |
⚠️ 买 VPS 前必看(新手最容易踩的坑):
- 25 端口:很多云厂商(AWS、GCP、Azure、部分国内外 VPS)默认封禁 25 端口,封了就无法发信。下单前先问客服或看商家说明,是否放行 25 端口。
- rDNS / PTR 反向解析:需要能把 IP 反向解析到你的邮件域名(如
mail.你的域名),多数商家可在后台或工单设置。 - IP 信誉:新 IP 可能在黑名单上,建议搭好后先检测(见第 8 节)。
- 家宽不建议:家庭宽带 IP 段基本被各大邮箱拒收。
1. 整体规划
本教程约定:
- 邮件服务器主机名:
mail.你的域名 - 邮箱域名:
你的域名(最终邮箱形如me@你的域名) - 服务器 IP:
1.2.3.4(请换成你自己的)
以下所有
你的域名、1.2.3.4都要替换成你自己的域名和 IP。
2. 准备服务器
2.1 SSH 登录
ssh root@1.2.3.4
2.2 更新系统
apt update && apt upgrade -y
2.3 设置主机名
hostnamectl set-hostname mail.你的域名
2.4 安装基础工具和 Docker
apt install -y curl git nano
然后安装 Docker:在搜索引擎搜索"Docker 官方 Linux 安装教程",找到 Docker 官方文档中的一键安装脚本命令,复制到服务器里执行即可(需要安装的是 Docker Engine,并确保带有 docker compose 插件)。
验证安装:
docker --version
docker compose version
两条命令都有版本号输出即成功。
2.5 检查端口是否被占用
Mailcow 需要以下端口:
| 端口 | 用途 |
|---|---|
| 25 | SMTP 收信(服务器之间) |
| 465 / 587 | SMTP 发信(客户端) |
| 143 / 993 | IMAP 收信 |
| 110 / 995 | POP3 |
| 80 / 443 | 网页管理、证书申请 |
| 4190 | Sieve 过滤 |
查看是否有程序占用:
ss -tlnp | grep -E ':(25|80|143|443|465|587|993|995|110|4190)\s'
- 没有输出 = 正常
- 有输出 = 说明某服务占用了,需要先停掉(如 Apache、Nginx、postfix)
2.6 放行防火墙
如果服务器启用了防火墙,需放行上述端口。以 ufw 为例:
ufw allow 25,80,110,143,443,465,587,993,995,4190/tcp
同时检查云服务商控制台的安全组/防火墙,同样要放行这些端口。
3. 配置 DNS 解析(最关键的一步)
登录你的域名 DNS 管理面板(Cloudflare、DNSPod、阿里云等),添加以下记录。
3.1 基础记录(必须)
| 类型 | 名称 | 值 | 说明 |
|---|---|---|---|
| A | mail |
1.2.3.4 |
邮件服务器地址 |
| MX | @ |
mail.你的域名(优先级 10) |
告诉别人邮件发到哪 |
| TXT | @ |
v=spf1 mx a -all |
SPF:声明谁能代表你发信 |
| TXT | _dmarc |
v=DMARC1; p=quarantine; rua=mailto:postmaster@你的域名 |
DMARC:处理伪造邮件的策略 |
3.2 自动配置记录(推荐,方便手机/客户端自动识别)
| 类型 | 名称 | 值 |
|---|---|---|
| CNAME | autodiscover |
mail.你的域名 |
| CNAME | autoconfig |
mail.你的域名 |
3.3 DKIM 记录(稍后添加)
DKIM 密钥要等 Mailcow 装好后在后台生成,见第 6 节。
3.4 ⚠️ 使用 Cloudflare 的注意事项
mail 这条 A 记录必须关闭小云朵代理(设为"仅 DNS"/灰色云),否则邮件服务无法正常工作。
3.5 验证解析是否生效
dig +short mail.你的域名
dig +short MX 你的域名
dig +short TXT 你的域名
输出应分别为你的 IP、10 mail.你的域名.、SPF 内容。
4. 设置反向解析(rDNS / PTR)
到 VPS 商家的控制面板(或提交工单),把 1.2.3.4 的反向解析设置为:
mail.你的域名
验证:
dig -x 1.2.3.4 +short
返回 mail.你的域名. 即可。
为什么重要:Gmail、Outlook 等会检查"发信 IP 的反向解析是否与主机名一致",不一致大概率进垃圾箱或被拒收。
5. 安装 Mailcow
5.1 下载
先进入 /opt 目录:
cd /opt
然后从 GitHub 克隆 Mailcow 官方仓库:在 GitHub 搜索 mailcow-dockerized,进入 mailcow 官方组织下的同名仓库,点击 Code,复制 HTTPS 克隆命令,粘贴到服务器执行(格式为 git clone 仓库地址)。克隆完成后进入目录:
cd mailcow-dockerized
5.2 生成配置
./generate_config.sh
按提示输入:
- Mail server hostname (FQDN):输入
mail.你的域名 - Timezone:时区,国内用户输入
Asia/Shanghai - 若询问分支选择,选择**默认稳定分支(master)**即可
5.3 小内存机器的优化(内存 < 4GB 必做)
nano mailcow.conf
找到并修改以下几项:
SKIP_CLAMD=y # 关闭杀毒(占内存大户,约省 1GB+)
SKIP_SOLR=y # 关闭全文搜索(若有此项)
保存:
Ctrl + O→ 回车 →Ctrl + X退出。
不同版本配置项略有差异,找不到某项可忽略。
5.4 启动
docker compose pull
docker compose up -d
首次拉取镜像需要几分钟,耐心等待。
5.5 检查运行状态
docker compose ps
所有容器状态均为 Up / running 即成功。
6. 后台初始化
6.1 登录管理后台
浏览器访问:
mail.你的域名
(使用 HTTPS 访问,浏览器提示证书正在签发时稍等几分钟再刷新)
- 默认账号:
admin - 默认密码:
moohoo(部分新版本首次登录会强制要求你设置新密码)
登录后第一件事:立刻修改管理员密码,用强密码。
路径:右上角 → 编辑管理员 / Edit administrator。
6.2 添加域名
路径:配置(Configuration)→ 邮件设置(Mail Setup)→ 域名(Domains)→ 添加域名
- 域名填:
你的域名 - 邮箱数量、配额按需设置,保持默认也行
- 点击添加
6.3 创建邮箱
路径:邮箱(Mailboxes)→ 添加邮箱
- 用户名:
me(即me@你的域名) - 设置名称和密码
- 保存
6.4 生成 DKIM 并添加解析
路径:配置 → 配置与详情 → ARC/DKIM 密钥
- 选择域名
你的域名 - 密钥长度选 2048,点击添加
- 页面会显示一段以
v=DKIM1;k=rsa;...开头的公钥 - 到 DNS 添加一条记录:
| 类型 | 名称 | 值 |
|---|---|---|
| TXT | dkim._domainkey |
复制出来的整段 v=DKIM1;... |
注意:有些 DNS 面板对长 TXT 会自动分段,一般不影响;如果提示过长,按面板说明分段填入即可。
7. 收发邮件
7.1 网页邮箱
访问 mail.你的域名,在地址后面加上 /SOGo,即可打开网页邮箱。
用 me@你的域名 + 密码登录,即可在网页里收发邮件。
7.2 手机 / 电脑客户端设置
| 项目 | 值 |
|---|---|
| 收信协议 | IMAP |
| 收信服务器 | mail.你的域名 |
| 收信端口 | 993(SSL/TLS) |
| 发信协议 | SMTP |
| 发信服务器 | mail.你的域名 |
| 发信端口 | 465(SSL/TLS)或 587(STARTTLS) |
| 用户名 | 完整邮箱地址 me@你的域名 |
| 密码 | 创建邮箱时设置的密码 |
由于配置了 autodiscover / autoconfig,Outlook、Thunderbird、iOS 邮件等多数客户端只需输入邮箱和密码即可自动配置。
8. 测试与排查
8.1 互发测试
用你的新邮箱分别给 Gmail、Outlook、QQ 邮箱各发一封信,再从这些邮箱回信,确认既能发出、也能收到。
8.2 打分测试(强烈推荐)
- 打开 mail-tester 网站(搜索 mail-tester 即可),复制它给出的临时地址
- 用你的邮箱向该地址发一封正常内容的邮件
- 回网页点击查看评分
目标 ≥ 9/10。扣分项页面会逐项说明(SPF / DKIM / DMARC / rDNS / 黑名单等)。
8.3 查询 IP 是否被拉黑
- 使用 MXToolbox 的 Blacklist Check 工具(搜索 MXToolbox 即可)
- 输入
1.2.3.4,查看是否命中黑名单 - 命中少量小黑名单通常影响不大;命中 Spamhaus 等主流名单需要联系商家换 IP 或申请移除
8.4 常见问题速查
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| 网页打不开 | 80/443 未放行 / 容器未启动 | 检查防火墙与安全组;docker compose ps |
| 发信一直转圈或超时 | 服务商封了 25 端口 | 联系商家解封;或改用第三方 SMTP 中继 |
| 能收不能发 | 25 端口出站被封 | 同上 |
| 能发不能收 | MX 记录错误 / 25 入站未放行 | dig MX 检查,放行 25 端口 |
| 发到 Gmail 进垃圾箱 | 缺 DKIM / SPF / rDNS,或新 IP 信誉差 | 补全记录,平稳少量发信养信誉 |
| 证书报错 | 域名未解析到服务器 / 80 端口被占 | 确认 A 记录正确,等待自动签发 |
| 内存不足、容器崩溃 | 机器配置太低 | 关闭 ClamAV;加 Swap;升级配置 |
8.5 查看日志
cd /opt/mailcow-dockerized
docker compose logs -f --tail=100 postfix-mailcow
docker compose logs -f --tail=100 dovecot-mailcow
按 Ctrl + C 退出日志查看。
9. 日常维护
9.1 更新 Mailcow
cd /opt/mailcow-dockerized
./update.sh
更新前建议先备份,并看一眼官方更新说明。
9.2 备份
cd /opt/mailcow-dockerized
MAILCOW_BACKUP_LOCATION=/backup ./helper-scripts/backup_and_restore.sh backup all
把 /backup 里的文件定期下载或同步到别处,不要只存在同一台服务器上。
9.3 添加 Swap(小内存机器防崩溃)
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
10. 安全与合规提醒
- 管理员密码和邮箱密码都要用强密码,建议开启后台的两步验证(TFA)。
- 不要开放不必要的端口,系统及时更新。
- 定期查看日志,留意异常登录与大量发信。
- 不要用于群发垃圾邮件:会导致 IP 被拉黑、服务器被商家封停。
- 请遵守所在地及服务器所在地的法律法规。
11. 附:常见替代方案
| 方案 | 特点 | 适合谁 |
|---|---|---|
| Mailcow(本教程) | 功能全、有网页后台、社区活跃,但较吃内存 | 想要完整体验的新手 |
| Poste | 单个 Docker 容器,部署最简单 | 配置较低、想快速上手 |
| Mail-in-a-Box | 需要干净系统,傻瓜式但自定义少 | 想要省心全自动 |
| Docker Mailserver | 纯配置文件,轻量,无后台界面 | 习惯命令行的进阶用户 |
12. 一页速查清单
- [ ] VPS 开放 25 端口,已设置 rDNS
- [ ] 域名解析:
A mail、MX @、SPF、DMARC - [ ] 防火墙 + 安全组放行邮件相关端口
- [ ] 安装 Docker,拉取 Mailcow,生成配置
- [ ] 启动容器,登录后台并改管理员密码
- [ ] 添加域名与邮箱
- [ ] 生成 DKIM 并添加 TXT 记录
- [ ] 互发测试 + mail-tester 打分
- [ ] 设置备份与定期更新
- 点赞
- 收藏
- 关注作者
评论(0)