自建邮局搭建教程

举报
yd_229065422 发表于 2026/11/01 20:48:13 2026/11/01
【摘要】 基于 Mailcow(Docker 一键部署),从零搭建一个能收发邮件的自建邮局。全程照着复制命令即可,约 30~60 分钟。 0. 先搞懂:自建邮局是什么?自建邮局就是在自己的服务器上运行邮件服务,让你拥有 你的名字@你的域名 这样的邮箱。你需要:项目要求一台 VPS内存 ≥ 2GB(推荐 4GB 以上),系统 Debian 11/12 或 Ubuntu 22.04/24.04一个域名任意...

基于 Mailcow(Docker 一键部署),从零搭建一个能收发邮件的自建邮局。
全程照着复制命令即可,约 30~60 分钟。


0. 先搞懂:自建邮局是什么?

自建邮局就是在自己的服务器上运行邮件服务,让你拥有 你的名字@你的域名 这样的邮箱。

你需要:

项目 要求
一台 VPS 内存 ≥ 2GB(推荐 4GB 以上),系统 Debian 11/12 或 Ubuntu 22.04/24.04
一个域名 任意注册商均可,下文以 你的域名 代指
一个独立公网 IPv4 必须能开放 25 端口
基础 SSH 能力 会连接服务器、复制粘贴命令即可

⚠️ 买 VPS 前必看(新手最容易踩的坑):

  1. 25 端口:很多云厂商(AWS、GCP、Azure、部分国内外 VPS)默认封禁 25 端口,封了就无法发信。下单前先问客服或看商家说明,是否放行 25 端口。
  2. rDNS / PTR 反向解析:需要能把 IP 反向解析到你的邮件域名(如 mail.你的域名),多数商家可在后台或工单设置。
  3. IP 信誉:新 IP 可能在黑名单上,建议搭好后先检测(见第 8 节)。
  4. 家宽不建议:家庭宽带 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

按提示输入:

  1. Mail server hostname (FQDN):输入 mail.你的域名
  2. Timezone:时区,国内用户输入 Asia/Shanghai
  3. 若询问分支选择,选择**默认稳定分支(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 密钥

  1. 选择域名 你的域名
  2. 密钥长度选 2048,点击添加
  3. 页面会显示一段以 v=DKIM1;k=rsa;... 开头的公钥
  4. 到 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 打分测试(强烈推荐)

  1. 打开 mail-tester 网站(搜索 mail-tester 即可),复制它给出的临时地址
  2. 用你的邮箱向该地址发一封正常内容的邮件
  3. 回网页点击查看评分

目标 ≥ 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. 安全与合规提醒

  1. 管理员密码和邮箱密码都要用强密码,建议开启后台的两步验证(TFA)。
  2. 不要开放不必要的端口,系统及时更新。
  3. 定期查看日志,留意异常登录与大量发信。
  4. 不要用于群发垃圾邮件:会导致 IP 被拉黑、服务器被商家封停。
  5. 请遵守所在地及服务器所在地的法律法规。

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 打分
  • [ ] 设置备份与定期更新

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。