Email Routing(收信)
Cloudflare Email Routing 在 Cloudflare 的 MX 服务器上接收邮件,然后按规则转发。 Lumen 使用 “Send to a Worker” 这个动作:每一封路由匹配到的邮件,都会被作为 Worker 的 email() 处理函数调用一次。
Worker 处理流程
worker/index.ts 暴露 email() 处理函数,内部委托给 worker/email.ts。它会:
- 在
addresses表中查找收件地址。 - 找不到所有者时调用
message.setReject(...),发件方收到 SMTP 拒绝。 - 否则使用
postal-mime解析原始 MIME,把元数据写入 D1,把原始.eml写入 R2 的raw/<userId>/<messageId>.eml,把每个附件写入att/<userId>/<messageId>/<attachmentId>。 - 用发件人信息更新
contacts表。
配置路由
在 Cloudflare 控制台中:
- Email → Email Routing → 为域名启用。Cloudflare 会自动添加 MX 与 SPF。
- Routes → Create address,选择
Send to a Worker,目的地为lumen。 - 想接收任意地址,使用 Catch-all address + 同一个 Worker 即可。
Catch-all
即使开启了 Catch-all,Lumen 仍会拒绝那些 To: 不在用户地址列表里的邮件。
给用户添加地址
每个用户在 设置 → 地址 中维护自己接收的地址。第一个地址自动成为 主地址——这就是写信时的默认发件人。
已验证目的地址
Cloudflare Email Routing 对非 Worker 的目的地址有验证要求。Worker 路由没有这一限制, 因此你可以任意使用本账号下托管的域名地址。
入站尺寸
Cloudflare 入站邮件大小约为 25 MB。Lumen 会原样保存收到的字节,因此请规划好 D1 行尺寸和 R2 存储容量。