INTEGRITY Dokumentace

Životní cyklus e-mailu

Životní cyklus e-mailu popisuje celou cestu e-mailu službou Cloudflare Email Service. Pochopení tohoto procesu vám pomůže optimalizovat implementaci e-mailů a řešit problémy s doručováním.

Email Sending a Email Routing využívají odlišné zpracovatelské toky. Odchozí tok zahrnuje e-maily, které odesíláte prostřednictvím služby, zatímco příchozí tok zahrnuje e-maily přijaté na doménách nakonfigurovaných pro Email Routing.

Odchozí tok (Email Sending)

Každý e-mail odeslaný přes Cloudflare Email Service prochází tímto zpracováním:

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

Podrobnosti fáze

  1. Požadavek přijat: Systém ověří formát e-mailu, autorizaci odesílatele a strukturu zprávy. Neplatné požadavky se okamžitě odmítnou a nepostupují do další fáze.

  2. Kontrola limitu rychlosti: Systém zkontroluje odesílající limity na účet, doménu a příjemce, aby se zabránilo zneužití. Požadavky, které tyto limity překročí, jsou dočasně odmítnuty a je nutné je zopakovat později.

  3. Autentizace a reputace: Systém provede kontroly ověření e-mailu a vyhodnotí reputaci odesílatele:

    • SPF (Sender Policy Framework): Ověřuje kontrolou záznamů DNS TXT, zda je odesílající IP adresa oprávněná odesílat e-maily za danou doménu. Tím se zabraňuje spoofingu domény a zlepšuje se doručitelnost.
    • DKIM (DomainKeys Identified Mail): Ověřuje kryptografický podpis e-mailu, čímž zajišťuje integritu zprávy a ověřuje doménu odesílatele. To buduje důvěru u serverů příjemců.
    • DMARC (Domain-based Message Authentication): Uplatňuje zásady vlastníka domény pro zpracování e-mailů, které neprojdou kontrolou SPF nebo DKIM, čímž pomáhá předcházet phishingu a zneužití značky a zároveň poskytuje zpětnovazební zprávy.

    Tyto ověřovací mechanismy společně potvrzují legitimitu odesílatele a chrání proti e-mailovým podvodům. Odesílatelé s nízkým reputačním skóre mohou zaznamenat omezování rychlosti nebo zpožděné zpracování.

  4. Kontrola seznamu vyloučených adres: Systém porovná příjemce s potlačovacím seznamem vašeho účtu, který zahrnuje nedoručené zprávy, stížnosti a odhlášení. Příjemcům z tohoto seznamu se e-mail nedoručí.

  5. Pokus o doručení: Systém se připojí k poštovnímu serveru příjemce a pokusí se zprávu doručit přes SMTP. Pokud doručení selže, systém uplatní odlišnou logiku opakování podle typu selhání:

    • Dočasně nedoručené zprávy (odpovědi 4xx): Systém opakuje doručení s exponenciálně prodlužovanými intervaly (exponential backoff)
    • Hard bounce (odpovědi 5xx): Systém označí e-mail jako trvale nedoručitelný bez dalších pokusů o doručení
  6. Zpracování odpovědi serveru: Systém zpracuje kódy odpovědi SMTP od serveru příjemce a určí konečný stav e-mailu:

    • kódy 2xx: E-mail byl úspěšně doručen
    • kódy 4xx: Došlo k dočasnému selhání, doručení e-mailu bude zopakováno
    • kódy 5xx: Došlo k trvalému selhání, e-mail nelze doručit
  7. Konečný stav a metriky: Na základě odpovědi serveru systém přiřadí e-mailu jeden z těchto konečných stavů:

    • Doručeno: E-mail byl úspěšně přijat serverem příjemce
    • Doručení selhalo: Doručení e-mailu trvale selhalo (hard bounce), nebo byl překročen maximální počet opakovaných pokusů (soft bounce). Tento stav se zobrazuje jako deliveryFailed při dotazování na GraphQL Analytics API.

Tok příchozích e-mailů (Email Routing)

Každý e-mail přijatý na doméně nakonfigurované pro Email Routing prochází tímto zpracováním:

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]

Podrobnosti fáze

  1. Přijetí SMTP: Odesílající server se připojí k serveru Cloudflare MX a odešle zprávu přes SMTP. Zprávy větší než limit velikosti příchozí zprávy jsou v této fázi odmítnuty.

  2. Kontrola autentizace: Systém provede SPF, DKIM, DMARC a ARC kontroly příchozí zprávy. Pošta, která neprojde ověřením podle DMARC politiky odesílatele, je odmítnuta. V této fázi je odmítnuta i pošta z IP adres uvedených na Realtime Block List. Více informací najdete v Informace pro postmastera s podrobnostmi.

  3. Shoda pravidla: Systém porovná adresu příjemce s vaším nakonfigurovaným pravidla směrování. Pokud podadresování je povoleno, příjemci se sub-adresou se řídí základním směrovacím pravidlem. Pokud žádné pravidlo neodpovídá a pravidlo catch-all je povoleno, uplatní se pravidlo catch-all.

  4. Akce: Systém uplatní akci odpovídajícího pravidla:

    • Odeslání na e-mail: Zpráva je přeposlána na ověřenou cílovou adresu (fáze 5).
    • Odeslání na Worker: Zpráva je předána vašemu Worker. Worker může volat forward(), reply(), nebo setReject().
    • Drop: Zpráva je tiše zahozena. Žádné další zpracování neproběhne.
  5. Podpis ARC a přepis SRS: U přeposílaných zpráv systém přidá pečeť ARC, která zachovává původní výsledky ověření, a přepíše odesílatele obálky pomocí Sender Rewriting Scheme. Díky tomu může na cílovém serveru projít kontrola SPF.

  6. Odchozí doručování: Systém se připojí k cílovému poštovnímu serveru a doručí zprávu. Dočasná selhání doručení se opakují s exponenciálně rostoucím intervalem mezi pokusy. Trvalá selhání doručení se vrací původnímu odesílateli v rámci stejného spojení jako chyby SMTP z nadřazeného serveru. Viz Postmaster: chyby SMTP.

  7. Konečný stav a metriky: Konečný výsledek se zaznamená a je dostupný prostřednictvím Activity log a GraphQL Analytics API.