跳转到内容
搜索文档

电子邮件生命周期

了解 Cloudflare Email Service 从收到请求到最终投递状态的完整电子邮件处理生命周期

最后更新 查看 MarkdownAgent 设置

电子邮件生命周期描述了一封电子邮件在 Cloudflare Email Service 中的完整旅程。了解此过程有助于您优化电子邮件实现并排查投递问题。

Email Sending 与 Email Routing 遵循不同的处理流水线。出站流程涵盖您通过服务发送的电子邮件;入站流程涵盖在已配置 Email Routing 的域名上收到的电子邮件。

出站流程(Email Sending)

通过 Cloudflare Email Service 发送的每封电子邮件都遵循此处理流水线:

flowchart LR
    A[Request Received] --> B["Rate Limit, Authentication & Suppression Check"] --> E[Delivery Attempt]
    E --> G{Success?}
    G -->|Yes, successfully delivered| F[Final Status & Metrics]
    G -->|No - Soft Bounce| H[Retry with Exponential Backoff]
    G -->|No - Hard Bounce| F
    H -->|Retries remaining| E
    H -->|Max retries exceeded| F

阶段详情

  1. 收到请求: 系统验证电子邮件格式、发件人授权和消息结构。无效请求会被立即拒绝,不会进入下一阶段。

  2. 速率限制检查: 系统按账户、域名和收件人检查发送 限制,以防止滥用。超出这些限制的请求会被临时拒绝,必须稍后重试。

  3. 身份验证与信誉:系统执行电子邮件身份验证检查并评估发件人信誉:

    • SPF(Sender Policy Framework):通过检查 DNS TXT 记录,验证发送 IP 地址是否被授权为该域名发送电子邮件。这可防止域名伪造并提高可投递性。
    • DKIM(DomainKeys Identified Mail):验证电子邮件的加密签名,以确保消息完整性并验证发件人域名。这有助于在收件服务器建立信任。
    • DMARC(Domain-based Message Authentication):对未通过 SPF 或 DKIM 检查的电子邮件应用域名所有者策略,有助于防止钓鱼和品牌冒充,同时提供反馈报告。

    这些身份验证机制共同确立发件人合法性并防范电子邮件欺诈。信誉评分较低的发件人可能会遇到限流或延迟处理。

  4. 抑制列表检查: 系统将收件人与账户的抑制列表进行比对,列表包括退信、投诉和退订。出现在列表中的收件人将被阻止接收该电子邮件。

  5. 投递尝试: 系统连接到收件人的邮件服务器,并通过 SMTP 尝试投递消息。当投递失败时,系统根据失败类型应用不同的重试逻辑:

    • 软退信(4xx 响应):系统使用指数退避时间重试投递
    • 硬退信(5xx 响应):系统将电子邮件标记为永久失败,不进行重试
  6. 服务器响应处理: 系统处理收件服务器的 SMTP 响应代码,以确定最终电子邮件状态:

    • 2xx 代码:电子邮件投递成功
    • 4xx 代码:发生临时失败,将重试该电子邮件
    • 5xx 代码:发生永久失败,电子邮件无法投递
  7. 最终状态与指标: 根据服务器响应,系统为电子邮件分配以下最终状态之一:

    • Delivered(已投递):电子邮件已被收件服务器成功接受
    • Delivery failed(投递失败):电子邮件永久投递失败(硬退信)或超过最大重试次数(软退信)。通过 GraphQL Analytics API 查询时,此状态显示为 deliveryFailed

入站流程(Email Routing)

在已配置 Email Routing 的域名上收到的每封电子邮件都遵循此处理流水线:

flowchart LR
    A[SMTP Receipt] --> B[Authentication Check]
    B --> C{Authenticated?}
    C -->|Yes| D[Rule Match]
    C -->|No| R[Reject]
    D --> E{Action?}
    E -->|Send to email| F[ARC Sign & SRS Rewrite]
    E -->|Send to Worker| W[Worker]
    E -->|Drop| X[Drop]
    W --> Y{Worker action?}
    Y -->|forward| F
    Y -->|reply| F
    Y -->|setReject| R
    F --> G[Outbound Delivery]
    G --> H[Final Status & Metrics]

阶段详情

  1. SMTP 接收: 发送服务器连接到 Cloudflare MX 服务器,并通过 SMTP 提交消息。大于 入站消息大小限制 的消息会在此阶段被拒绝。

  2. 身份验证检查: 系统对入站消息执行 SPF、DKIM、DMARC 和 ARC 检查。根据发件人 DMARC 策略未通过身份验证的邮件会被拒绝。位于实时阻止列表(Realtime Block List)上的 IP 地址发来的邮件也会在此阶段被拒绝。详情请参阅 Postmaster information

  3. 规则匹配: 系统将收件人地址与您配置的 路由规则 进行匹配。如果启用了 子地址,带有子地址的收件人会回退到基础路由规则。如果没有规则匹配且启用了 catch-all 规则,则应用 catch-all 规则。

  4. 操作: 系统应用匹配规则的操作:

    • 发送到电子邮件:消息被转发到已验证的目标地址(阶段 5)。
    • 发送到 Worker:消息被传递到您的 Worker。Worker 可以调用 forward()reply()setReject()
    • 丢弃:消息被静默丢弃,不再进行后续处理。
  5. ARC 签名与 SRS 重写: 对于转发的消息,系统添加 ARC 密封以保留原始身份验证结果,并使用 Sender Rewriting Scheme 重写信封发件人。这允许 SPF 在目标服务器上通过。

  6. 出站投递: 系统连接到目标邮件服务器并投递消息。软退信会以指数退避方式重试。硬退信会在会话中作为上游 SMTP 错误返回给原始发件人。请参阅 Postmaster: SMTP errors

  7. 最终状态与指标: 最终结果会被记录,并可通过 Activity logGraphQL Analytics API 查看。

这篇文档对您有帮助吗?