Appearance
🛡️ Cloudflare
关闭IPV6

bash
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/cfa068f2a1e282a2731ba29a0a24b052/settings/ipv6" \
-H "X-Auth-Email: y950727@gmail.com" \
-H "X-Auth-Key: 830419c40277b1cff929397d7c08b2012c2a" \
-H "Content-Type: application/json" \
--data '{"value":"off"}'URL上的地址: 
X-Auth-Key: 
Email Routing(邮件路由)
Cloudflare Email Routing 可以把一个域名收到的邮件,按规则免费转发到任意已验证的邮箱(比如 Gmail),常用来给域名下的临时地址、分类地址(github@xxx.com、facebook@xxx.com)建一层转发,不用自己搭邮件服务器。前提是这个域名的 DNS 必须托管在 Cloudflare。
开启 Email Routing
- Dashboard 进入 Compute(计算)> Email Service(电子邮件服务)> Email Routing。
- 选择要开启的域名,点击 Onboard Domain(接入域名)。
- Cloudflare 会自动在这个域名下写入所需的 DNS 记录,不需要手动加。
自动写入的 DNS 记录说明
开启后会自动生成三类记录,理解它们的作用即可,一般不需要手动改:
MX 记录:把域名的收信入口指向 Cloudflare 的邮件路由服务器,形如:
example.com. MX XX amir.mx.cloudflare.net. example.com. MX XX linda.mx.cloudflare.net. example.com. MX XX isaac.mx.cloudflare.net.具体主机名和优先级由 Cloudflare 按当前分配生成,直接以 Dashboard 里实际写入的值为准。
SPF TXT 记录:授权 Cloudflare 的服务器代表这个域名收发邮件,值一般是:
v=spf1 include:_spf.mx.cloudflare.net ~all如果域名已经有别的 SPF 记录(比如用了其他邮件服务),要把
include:_spf.mx.cloudflare.net合并进已有的一条 SPF 记录里,一个域名只能有一条 SPF TXT 记录,多条会导致校验失败。DKIM TXT 记录:给"转发出去"的邮件做签名认证,避免被目标邮箱当成伪造邮件拦截。
DNS 生效一般几分钟到十几分钟(用 Cloudflare 解析的域名很快),跨区域最长可能要等 24 小时。
添加并验证目标转发地址
邮件路由规则只能转发到"已验证"的目标地址,不能直接转发到任意邮箱:
- Email Routing > Destination Addresses(目标地址),输入要接收邮件的邮箱(如 Gmail 地址),提交。
- 去这个邮箱查收 Cloudflare 发的验证邮件,点击里面的确认链接。
- 验证完成前,指向这个地址的所有转发规则都会显示为禁用状态,验证通过后自动启用。
创建自定义地址转发规则
- Email Routing > Routing Rules(路由规则)> Create routing rule(创建规则)。
- 填要匹配的本地部分,比如
support(对应support@example.com)。 - 动作选 Send to email,选择一个已验证的目标地址。
- 也可以选 Send to Worker 交给 Worker 处理,或选 Drop 直接丢弃。
规则默认支持 RFC 5233 的子地址(plus addressing):发到 support+abc@example.com 的邮件,会按 support@example.com 这条规则转发,+abc 这段标记会保留在收到的邮件里,方便追踪来源。
Catch-all 兜底规则
Catch-all 是"以上规则都没匹配到时怎么处理"的默认规则,常见两种用法:
- 兜底转发:把所有没被单独规则匹配到的地址(包括拼错的、没提前建规则的)统一转发到一个邮箱,动作选 Send to email。
- 兜底丢弃:只允许已经明确建了规则的地址收信,其余全部丢弃,动作选 Drop,可以减少这个域名被扫描滥用时收到的垃圾邮件。
在 Routing Rules 页面底部的 Catch-all 区域配置,同样需要先启用(enabled)才会生效。
用 API 批量管理规则
规则条数多、或者要脚本化管理时,用 API 比 Dashboard 点击更方便。需要账号邮箱 + Global API Key(或者带 Email Routing Rules Write 权限的 API Token)。
查 zone id:
bash
curl -s "https://api.cloudflare.com/client/v4/zones?name=example.com" \
-H "X-Auth-Email: your@email.com" \
-H "X-Auth-Key: <GLOBAL_API_KEY>"创建一条转发规则:
bash
curl -s -X POST "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/email/routing/rules" \
-H "X-Auth-Email: your@email.com" \
-H "X-Auth-Key: <GLOBAL_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"name": "support 转发到 gmail",
"matchers": [{"type": "literal", "field": "to", "value": "support@example.com"}],
"actions": [{"type": "forward", "value": ["dest@gmail.com"]}],
"enabled": true
}'改已有规则用 PUT /zones/<ZONE_ID>/email/routing/rules/<RULE_ID>,body 结构一样;改 catch-all 规则可以直接用固定路径 PUT /zones/<ZONE_ID>/email/routing/rules/catch_all,不用先查 rule id:
bash
curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/email/routing/rules/catch_all" \
-H "X-Auth-Email: your@email.com" \
-H "X-Auth-Key: <GLOBAL_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"matchers": [{"type": "all"}],
"actions": [{"type": "forward", "value": ["dest@gmail.com"]}],
"enabled": true
}'列出当前所有规则,确认改动生效:
bash
curl -s "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/email/routing/rules" \
-H "X-Auth-Email: your@email.com" \
-H "X-Auth-Key: <GLOBAL_API_KEY>"常见坑
- 域名 DNS 必须托管在 Cloudflare,否则 Email Routing 开不了。
- 目标地址没验证之前,指向它的规则不会生效,别以为规则建了就万事大吉,去邮箱确认验证邮件。
- 域名已有 SPF 记录时,要合并而不是新增一条,多条 SPF TXT 会导致所有邮件的 SPF 校验失败,包括本来发信正常的服务。
- Catch-all 默认是关闭且丢弃的,只加了几条自定义规则、没管 catch-all 的话,其余地址的邮件会直接被丢弃而不是报错退信,容易被误以为"邮件路由坏了"。