# Email 生命周期与 TTL ## 接收 ```text Cloudflare -> Email Worker -> Node -> Console ``` Console 验证 Node 身份和请求完整性,然后解析 MIME、提取 header、text/html 和附件,保存元数据,raw MIME/大附件写入 R2,计算 expires_at,并创建 Webhook Delivery。 ## TTL 默认保留 1 天: ```text received_at = 2026-09-30T10:00:00Z expires_at = 2026-10-01T10:00:00Z ``` Retention 可按 Mailbox 配置。 ## Cron 使用 Cloudflare Cron Trigger,建议每 15 分钟执行一次清理。实际频率根据当前 Cloudflare 限制调整。 ```text Cron -> 查询 expires_at <= now -> 删除 R2 -> 删除附件 -> 删除 Email ``` 删除必须幂等。 ## Webhook 邮件保存成功后再执行 Webhook。Webhook 失败不能导致邮件重新进入 Node。 ## 异常 R2 删除失败时保留数据库记录并记录 cleanup error,下一次 Cron 重试。数据库已删除但 R2 删除失败时,需要 orphan cleanup。 ## 数据最小化 邮件、附件、raw MIME、Webhook Delivery 和临时日志都应有生命周期,不做无限期保存。