0. 背景说明※
很多自建邮件服务器的朋友都会遇到两个痛点:
- 公网 IP 不固定:家用宽带 DDNS 虽能解决访问,但邮件解析(MX/SPF)需要稳定指向。
- 多域名托管:主域名在 Cloudflare,而 DDNS 域名在阿里云,如何让两者配合,实现
[email protected]这种规范的邮箱地址?
本教程将以 Cloudflare (主域名) 与 阿里云 (DDNS 中转域名) 配合为例,手把手教你跑通流程。
1. 核心架构图(逻辑梳理)※
在开始前,请理解这个“套娃”逻辑:
- 收信流:外部邮件 ->
main-domain.org(MX) ->mail.ddns-domain.com(阿里云 A 记录) -> 你家最新的公网 IP -> 群晖。 - 发信验证:对方服务器 -> 查询
main-domain.org(SPF) -> 引用 (include)ddns-domain.com的授权 -> 匹配成功。
2. 第一阶段:阿里云(DDNS 中转域名)配置※
假设你的阿里云域名为 ddns-domain.com,且已经通过脚本或群晖自带 DDNS 实现了 IP 自动更新。
你需要确保阿里云侧有以下记录:
- A 记录:名称
mail,记录值1.2.3.4(你的动态 IP),用于 DDNS 同步。 - MX 记录:名称
@,记录值mail.ddns-domain.com,优先级10。 - TXT 记录 (SPF):名称
@,记录值v=spf1 mx -all。
3. 第二阶段:Cloudflare(主域名)关键解析※
这是实现 [email protected] 收发的关键。进入 Cloudflare 解析面板,按表操作:
| 类型 | 名称 (Name) | 内容 (Content) | 代理状态 (Proxy) | 作用 |
|---|---|---|---|---|
| MX | @ | mail.ddns-domain.com | 仅 DNS | 核心:收信路由 |
| TXT | @ | v=spf1 mx include:ddns-domain.com -all | 仅 DNS | 核心:发信授权 |
| CNAME | mail | mail.ddns-domain.com | 仅 DNS (灰云) | 客户端连接地址 |
| TXT | _dmarc | v=DMARC1; p=none; | 仅 DNS | 垃圾邮件防范协议 |
避坑指南:
- 不要开橙色小云朵:Cloudflare 默认只代理 Web 流量,邮件协议(SMTP/IMAP)必须直连 IP,否则客户端会连不上。
- SPF 的 include 技巧:直接 include 已经跑通的阿里云域名,这样主域名会自动继承 DDNS 的 IP 授权。
4. 第三阶段:群晖 MailPlus Server 设置※
- 添加域:进入 MailPlus Server > 域 > 新增,填入你的主域名
main-domain.org。 - 用户授权:在“用户”选项卡中,确保你的账号已关联该新域名。
- DKIM 签名:
- 在“域”设置中点击 编辑 > 常规 > 高级。
- 点击 生成公共密钥。
- 回到 Cloudflare,添加一条 TXT 记录,名称填
default._domainkey,内容贴入刚才生成的公钥字符串。
5. 常见问题排查 (FAQ)※
- Q:为什么邮件发不出去?
- A:家用宽带通常封锁了 25 端口。如果连接超时,请在 MailPlus Server > 服务 > SMTP 中启用“SMTP 中继”,使用第三方服务(如阿里云邮件推送、腾讯企业邮等)进行转发。
- Q:为什么 MX 记录要填阿里云的域名?
- A:因为 Cloudflare 的域名不直接指向 IP。通过指向已做 DDNS 的阿里云子域名,可以实现“动态寻址”。
总结※
这套配置最大的优点在于低维护成本。一旦阿里云的 DDNS 跑通,你在 Cloudflare 侧的设置几乎是一劳永逸的。