个人域名邮箱从零搭建 · 学习手册
本手册是一份面向个人站长的域名邮箱搭建入门指南,覆盖「域名解析 → 邮件系统 →
平台操作 → 代码拦截 → 安全策略 → 故障排查」的全流程。
文中所有域名、IP、账号均以占位符代替,可直接用于学习与笔记。
目录
一、约定与占位符
为便于学习与复用,全文统一使用以下占位符:
| 占位符 | 含义 | 示例 |
|---|---|---|
example.com |
你的主域名 | 已注册的任意域名 |
example.net / example.org |
其他域名 | 用于说明多域名场景 |
203.0.113.10 |
你的服务器公网 IP | 网站所在服务器地址 |
user@example.com |
你的域名邮箱 | 任意邮箱地址 |
yourname@provider.com |
你的目标收件箱 | QQ / 163 / Gmail 等 |
xxx.ns.provider.net |
域名服务器地址 | 由 DNS 服务商提供 |
说明:
203.0.113.0/24是 RFC 5737 规定的文档专用网段,
example.com/.net/.org是 RFC 6761 规定的保留示例域名,
可安全用于任何文档与教程。
二、域名与 DNS 基础(最底层)
DNS 是整个邮件系统的地基。域名买在哪、解析交给谁、记录怎么写,
决定了邮件能不能送到。
2.1 域名注册 vs DNS 托管
这是两个独立的概念,很多人会混淆:
- 域名注册:向注册商(如腾讯云、阿里云、Namecheap)付费买下域名的使用权,
通常一年一续。 - DNS 托管:决定「谁来回答外界对这个域名的查询」,也就是谁保管并发布
DNS 记录。
关键认知:域名在 A 家买,解析完全可以交给 B 家。
切换的方式就是修改 NS 记录。
2.2 NS 记录(域名服务器)
NS 记录告诉全球:「这个域名的解析权归谁」。
example.com. NS xxx.ns.provider-a.net
example.com. NS yyy.ns.provider-a.net
想换到另一家 DNS 服务商,就把 NS 改成对方提供的值:
example.com. NS a.ns.provider-b.com
example.com. NS b.ns.provider-b.com
改完 NS 后,原服务商的解析设置不再生效,所有记录都要在新平台重新配置。
2.3 常见 DNS 记录类型
| 类型 | 用途 | 典型值 |
|---|---|---|
| A | 域名指向 IPv4 地址 | @ → 203.0.113.10 |
| AAAA | 域名指向 IPv6 地址 | @ → 2001:db8::1 |
| MX | 邮件服务器地址 | 10 mail.provider.net |
| TXT | 文本信息(验证、安全策略) | SPF / DKIM / DMARC |
| CNAME | 别名,指向另一个域名 | www → example.com |
| NS | 指定子域名的解析服务器 | 子域委派 |
| DS | DNSSEC 密钥摘要 | 与父域联动 |
2.4 权威 DNS 与递归解析
- 权威 DNS:对某个域名”说了算”的服务器,存放着该域名的真实记录。
- 递归解析器:用户电脑实际询问的对象(如运营商 DNS、
8.8.8.8),
它负责代为查询并把结果缓存起来。
改 NS 的本质,就是更换权威 DNS 的归属,从而改变谁对外”说话”。
2.5 DNS 传播时间
改 NS 不是瞬间生效的,因为各地的递归解析器会缓存旧结果。
- 一般情况:10–30 分钟全球逐步生效
- 极端情况:可能数小时(取决于旧 NS 的 TTL)
2.6 DNSSEC 与 DS 记录
DNSSEC 给 DNS 回答加上数字签名,防止记录被篡改。它依赖父域的 DS 记录
指向子域的密钥。
⚠️ 换 NS 前必须先关掉 DNSSEC(或删除 DS 记录)。
否则新旧签名体系冲突,会出现「网站间歇性打不开」的诡异故障。
迁移完成后,再在新平台侧重新开启 DNSSEC。
2.7 TTL(生存时间)
TTL 决定一条记录被缓存多久,单位为秒。
- 常用值:
600(10 分钟) - 修改前可先把 TTL 调小(如 60 秒),让变更更快生效
2.8 代理模式:灰色云朵 vs 橙色云朵
部分 CDN 平台用颜色区分记录的工作模式:
| 模式 | 图标 | 效果 |
|---|---|---|
| DNS Only | 灰色云朵 | 直连源站,真实 IP 暴露 |
| Proxied | 橙色云朵 | 流量经 CDN 转发,隐藏真实 IP |
邮件相关记录(MX、SPF/DKIM/DMARC 的 TXT)必须保持灰色(DNS Only),
否则邮件会投递失败。网站记录可开橙色,兼顾安全与加速。
三、电子邮件系统原理
3.1 MX 记录
MX(Mail Exchanger)告诉发件方:「这个域名的信,送到哪个邮件服务器」。
example.com. MX 1 route1.mail.provider.net
example.com. MX 10 route2.mail.provider.net
- 数字越小,优先级越高
- 多个 MX 可实现主备容灾
3.2 SPF(发件人策略框架)
SPF 通过 TXT 记录声明:哪些服务器有权代表你的域名发信。
example.com. TXT "v=spf1 include:_spf.mail.provider.net ~all"
v=spf1:协议版本include::引入第三方的授权列表~all:软失败(推荐);-all:硬拒绝;?all:不限制
⚠️ 一个域名只能有一条 SPF 记录。多条 SPF 会导致验证失败,
邮件服务直接罢工。
3.3 DKIM(域名密钥标识)
DKIM 用非对称加密给发出的邮件签名,收件方用公钥(放在 TXT 记录里)验签。
selector._domainkey.example.com. TXT "v=DKIM1; k=rsa; p=MIGfMA0..."
selector:选择器,可配置多个(如default、cf2024)- 邮件转发场景下,DKIM 签名能证明转发方是「合法中转站」
3.4 DMARC(域名对齐策略)
DMARC 在 SPF / DKIM 之上,告诉收件方:验证失败时该怎么处理。
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
| 策略 | 含义 | 适用阶段 |
|---|---|---|
p=none |
只监控不处置 | 新域名起步 |
p=quarantine |
放入垃圾箱 | 验证稳定后 |
p=reject |
直接拒收 | 完全可信后 |
建议灰度升级:
none→quarantine→reject。
3.5 ARC(认证结果链)
ARC 解决一个特殊问题:邮件经过合法转发后,SPF 对齐会失败
(因为发件 IP 变了),但邮件本身是合法的。
ARC 把原始的验证结果打包签名,传给下一个服务器,
让收件方知道「这封信最初是通过验证的」。
有 ARC 时,转发邮件更容易通过收件方的安全检查。
3.6 信封收件人 vs 邮件头 To
- 信封收件人(Envelope To):SMTP 协议层面的真实投递目标
- 邮件头 To:邮件正文里显示的收件人
两者可能不同(如密送、转发场景)。在编写邮件处理脚本时,
信封收件人比邮件头 To 更可靠,因为它无法被伪造。
3.7 SMTP 协议基础
SMTP 是邮件传输的基石协议。在拦截脚本中:
setReject("550 5.1.1 user unknown")
这是在 SMTP 会话阶段直接拒收,发件方会收到明确的退信。
3.8 邮件转发 vs 邮件托管
| 模式 | 能力 | 说明 |
|---|---|---|
| 邮件转发 | 只收、只转 | 把 user@ 转到你的真实邮箱,本身不发信 |
| 邮件托管 | 收 + 发 | 完整的邮箱服务,可登录 Web 端、独立发信 |
免费转发服务通常不具备发信能力,需要配合企业邮或第三方邮箱使用。
3.9 Catch-all(兜收)
Catch-all 把发往任意不存在地址的邮件全部收下。
- ✅ 优点:不会漏信,方便使用「任意别名@你的域名」
- ❌ 缺点:会收到大量随机生成的垃圾邮件
四、平台操作要点
4.1 DNS 托管平台
主流平台(如 Cloudflare、DNSPod、阿里云解析)都提供:
- 免费 DNS 托管
- 图形化记录管理
- API 与导入导出
4.2 邮件转发服务
以 Cloudflare Email Routing 为例:
- 免费、无限量转发
- 支持自定义路由规则
- 支持与脚本(Workers)联动
4.3 目标地址验证机制
⚠️ 每次添加转发目标(如 QQ、163 邮箱),必须去目标邮箱点击验证链接。
未验证的目标不会生效,邮件会静默丢失。
4.4 路由规则(Routing Rules)
按地址前缀分流:
| 来源地址 | 目标地址 | 用途 |
|---|---|---|
hi@example.com |
yourname@provider-a.com |
日常通信 |
admin@example.com |
yourname@provider-b.com |
重要通知 |
4.5 邮件处理脚本(Email Workers)
平台支持用 JavaScript 在邮件到达时拦截处理:
- 过滤垃圾邮件
- 按规则改写收件人
- 注入自定义邮件头(供下游分类)
4.6 脚本绑定路由
把某个地址(如 hi@example.com)的邮件交给脚本处理,
需要在平台侧完成绑定。
4.7 脚本日志流
实时查看每封邮件是否触发了脚本逻辑,是排查问题的第一手资料。
4.8 代理模式再强调
- 网站:可开代理(橙色),隐藏源站 IP
- 邮件:必须关闭代理(灰色),否则投递失败
4.9 DNSSEC 迁移
迁移完成后,在新平台侧重新开启 DNSSEC 即可。
五、编程知识(邮件拦截脚本)
5.1 完整示例:按白名单 + 别名映射转发
export default {
async email(message, env, ctx) {
// 1. 白名单:只处理指定地址
const ALLOWED = ['hi@example.com', 'admin@example.com'];
const recipients = message.to.map((x) => x.toLowerCase());
for (const rcpt of recipients) {
if (!ALLOWED.includes(rcpt)) {
message.setReject(`550 5.1.1 <${rcpt}> User unknown`);
return;
}
}
// 2. 别名 → 目标邮箱映射
const TARGETS = {
'hi@example.com': 'yourname@provider-a.com',
'admin@example.com': 'yourname@provider-b.com',
};
const target = TARGETS[recipients[0]];
if (!target) {
message.setReject('550 5.1.1 No target configured');
return;
}
// 3. 注入自定义头,供下游邮箱分类
const headers = new Headers(message.headers);
headers.set('X-Original-From', message.from);
headers.set('X-Original-Recipient', recipients[0]);
// 4. 转发 + 异常兜底
try {
await message.forward(target, { headers });
} catch (err) {
// 主目标失败,兜底到备用邮箱
await message.forward('backup@provider-b.com');
}
},
};
5.2 知识点拆解
| 知识点 | 代码体现 |
|---|---|
| JavaScript / TypeScript | 整个脚本用 JS 编写,符合 Web Worker 规范 |
| 异步编程(async/await) | await message.forward(...) |
| 数组与字符串方法 | ALLOWED.includes()、toLowerCase() |
| 对象字面量与映射表 | TARGETS 对象按别名分流 |
| try/catch 异常处理 | 转发失败时兜底,防止邮件静默消失 |
| Headers 操作 | new Headers()、headers.set() 注入自定义头 |
| 信封收件人取值 | message.to 比邮件头更可靠 |
| SMTP 拒收 | setReject("550 5.1.1") |
六、网络环境与服务商差异
6.1 CDN 平台在大陆的访问
- 部分 CDN 平台的管理控制台在大陆可能不稳定
- 但邮件转发服务不受影响,因为邮件走海外服务器处理
6.2 服务器地域
- 源站若在海外,访问会有跨境延迟
- 可通过 CDN 代理缓解网站访问延迟
- 邮件投递则按邮件服务器的全球网络走,与源站位置无关
6.3 QQ 邮箱反垃圾策略
- 对转发邮件较为严苛,可能静默丢弃(不通知发件方)
- 需要 SPF / DKIM / DMARC 配合,提升可信度
- 网页端支持按发件域、收件人设置分类规则
6.4 163 邮箱反垃圾策略
- 相对宽松,适合做兜底收件箱
- 支持按发件人域名、邮件头设置过滤器
6.5 国内服务关停案例
部分国内邮箱服务已停止运营,例如:
- 某讯域名邮箱(zm.qq.com):2024 年 9 月 30 日关闭
- 某度域名邮箱:早年已关闭
提醒:依赖第三方服务时,务必关注其生命周期与迁移公告。
七、安全与隐私策略
7.1 SPF 记录唯一性
一个域名只能有一条 SPF,合并授权用 include,不要写多条。
7.2 不要把中介 IP 塞进自己的 SPF
有些教程会让你把转发方的 IP 写进 SPF,这是错误做法:
- 会扩大冒用面
- 官方明确不建议
- 正确的做法是依赖转发方的 DKIM + ARC
7.3 新域名声誉低
- 新域名在各大邮箱服务商的声誉从零开始
- DMARC 先
p=none,别上来就reject - 慢慢积累正常邮件量,再逐步收紧
7.4 账号隔离(别名体系)
不同平台用不同别名:
| 用途 | 别名 | 好处 |
|---|---|---|
| 社交媒体 | social@example.com |
泄露可精准定位来源 |
| 金融 | finance@example.com |
隔离风险 |
| 购物 | shop@example.com |
一键拉黑 |
一个别名泄露,不影响其他别名。
7.5 泄露溯源
查看邮件原始头里的 Delivered-To 字段,
可以看出是哪个平台把你的邮箱卖给了第三方。
7.6 隐藏真实 IP
对网站开启 CDN 代理(橙色云朵),可隐藏源站 IP,降低被扫描攻击的风险。
八、项目管理思维
8.1 最小可行方案(MVP)
先跑通最简单的链路:hi@example.com → 你的主邮箱。
进阶功能(多别名、脚本拦截、DMARC 收紧)以后再逐步加。
8.2 风险控制:双邮箱兜底
| 邮箱 | 角色 | 说明 |
|---|---|---|
| Provider A | 日常收信 | 主目标 |
| Provider B | 重要兜底 | 主目标挂了时接手 |
8.3 灰度策略
DMARC 策略的升级路线:
p=none → p=quarantine → p=reject
(监控) (观察垃圾箱) (严格拒收)
8.4 故障排查清单
收不到信时,按顺序查:
- 目标邮箱验证状态(是否点了验证链接)
- MX 记录是否正确(是否指向转发服务)
- 脚本日志流(是否触发、是否报错)
- SPF 是否唯一(多条会直接导致失败)
- 收件方反垃圾(是否进了垃圾箱 / 被静默丢弃)
- DNSSEC / DS(换 NS 时是否关闭)
8.5 服务商锁定评估
- 域名留在注册商,不随 DNS 服务迁移
- 随时可以换回原 DNS 服务商
- 数据是自己的,迁移成本可控
8.6 品牌一致性 vs 实用性
| 方案 | 优点 | 缺点 |
|---|---|---|
单地址(hi@) |
干净、好记 | 无法溯源泄露 |
| 多别名 | 可追溯、可隔离 | 管理成本略高 |
个人使用推荐:一个主地址 + 少量关键别名。
九、故障排查清单
9.1 快速自查表
| 现象 | 优先排查 |
|---|---|
| 网站打不开 | DNSSEC / DS、NS 是否切换正确 |
| 邮件完全收不到 | MX 记录、目标邮箱验证状态 |
| 邮件进垃圾箱 | SPF / DKIM / DMARC 是否齐全 |
| 脚本不生效 | 绑定路由、日志流、脚本语法 |
| 发信被拒 | SPF 是否唯一、对齐是否失败 |
| 换 NS 后异常 | 是否忘记关 DNSSEC |
9.2 常用诊断命令
# 查询 NS 记录
dig NS example.com +short
# 查询 MX 记录
dig MX example.com +short
# 查询 TXT(SPF / DKIM / DMARC)
dig TXT example.com +short
dig TXT _dmarc.example.com +short
dig TXT selector._domainkey.example.com +short
# 从公共 DNS 查询(绕过本地缓存)
dig @8.8.8.8 example.com ANY
十、下一步学习路径
| 阶段 | 目标 | 建议动作 |
|---|---|---|
| 入门 | 跑通转发 | 配好 MX + 目标验证,收到第一封转发邮件 |
| 进阶 | 提升送达率 | 补齐 SPF / DKIM / DMARC,观察 1–2 周 |
| 熟练 | 自动化管理 | 用脚本实现白名单、别名映射、兜底 |
| 精通 | 全链路掌控 | 自建邮件服务器(Postfix / Dovecot),完全自主 |
附录:术语速查表
| 缩写 | 全称 | 一句话解释 |
|---|---|---|
| DNS | Domain Name System | 域名的电话簿 |
| NS | Name Server | 域名由谁解析 |
| MX | Mail Exchanger | 邮件送到哪台服务器 |
| SPF | Sender Policy Framework | 谁有权代发我的邮件 |
| DKIM | DomainKeys Identified Mail | 邮件的数字签名 |
| DMARC | Domain-based Message Authentication | SPF/DKIM 的处置策略 |
| ARC | Authenticated Received Chain | 转发时传承验证结果 |
| DNSSEC | DNS Security Extensions | 给 DNS 回答签名 |
| TTL | Time To Live | 缓存存活时间 |
| SMTP | Simple Mail Transfer Protocol | 邮件传输协议 |
| Catch-all | — | 兜收所有不存在的地址 |
| MVP | Minimum Viable Product | 最小可行方案 |
📘 一句话总结:这套知识覆盖了 域名与 DNS、电子邮件协议与安全、
平台操作、JavaScript 编程、网络环境差异、安全隐私、项目管理 共 7 大板块。
对个人网站而言,核心只有三件事:域名解析交给谁、邮件怎么安全送达、
出了问题解决谁。