Skip to content

Email Routing(收信)

Cloudflare Email Routing 在 Cloudflare 的 MX 服务器上接收邮件,然后按规则转发。 Lumen 使用 “Send to a Worker” 这个动作:每一封路由匹配到的邮件,都会被作为 Worker 的 email() 处理函数调用一次。

Worker 处理流程

worker/index.ts 暴露 email() 处理函数,内部委托给 worker/email.ts。它会:

  1. addresses 表中查找收件地址。
  2. 找不到所有者时调用 message.setReject(...),发件方收到 SMTP 拒绝。
  3. 否则使用 postal-mime 解析原始 MIME,把元数据写入 D1,把原始 .eml 写入 R2 的 raw/<userId>/<messageId>.eml,把每个附件写入 att/<userId>/<messageId>/<attachmentId>
  4. 用发件人信息更新 contacts 表。

配置路由

在 Cloudflare 控制台中:

  1. EmailEmail Routing → 为域名启用。Cloudflare 会自动添加 MX 与 SPF。
  2. RoutesCreate address,选择 Send to a Worker,目的地为 lumen
  3. 想接收任意地址,使用 Catch-all address + 同一个 Worker 即可。

Catch-all

即使开启了 Catch-all,Lumen 仍会拒绝那些 To: 不在用户地址列表里的邮件。

给用户添加地址

每个用户在 设置 → 地址 中维护自己接收的地址。第一个地址自动成为 主地址——这就是写信时的默认发件人。

已验证目的地址

Cloudflare Email Routing 对非 Worker 的目的地址有验证要求。Worker 路由没有这一限制, 因此你可以任意使用本账号下托管的域名地址。

入站尺寸

Cloudflare 入站邮件大小约为 25 MB。Lumen 会原样保存收到的字节,因此请规划好 D1 行尺寸和 R2 存储容量。