INTEGRITY Dokumentace

SMTP

Cloudflare Email Service poskytuje autentizovaný SMTP submission endpoint, díky kterému můžete odesílat e-maily z jakékoli aplikace, frameworku nebo běžně dostupného e-mailového klienta podporujícího SMTP. Použijte SMTP, pokud REST API a Workers binding nejsou vhodnou volbou, například při integraci existující aplikace, která již komunikuje přes SMTP, nebo knihovny SMTP nativní pro daný jazyk (Nodemailer, smtplib, PHPMailer, JavaMail).

E-maily odeslané přes SMTP procházejí stejným doručovacím procesem jako REST API a vazba Workers: platí pro ně stejné limity, mají stejné podepisování DKIM a ARC a vytvářejí stejné protokoly doručování.

Endpoint

smtp.mx.cloudflare.net:465
Nastavení Hodnota
Host smtp.mx.cloudflare.net
Port 465
Security Implicitní TLS (nazývané také SMTPS)
SMTP AUTH PLAIN nebo LOGIN
Uživatelské jméno Doslovný řetězec api_token
Heslo Token Cloudflare API (viz níže)

Cloudflare nabízí odesílání přes SMTP pouze na portu 465 s implicitním TLS. SMTP v čistém textu, příležitostné STARTTLS na portu 587, a neautentizovaný relay na portu 25 nejsou podporovány pro odchozí odesílání. Port 25 je vyhrazeno pro příchozí poštu na Email Routing.

Předpoklady

Než budete moci odesílat e-maily přes SMTP, potřebujete:

  1. Účet s Email Sending zapnuté.
  2. Alespoň jeden onboarding domény dokončen v části Email Service > Email Sending na Cloudflare dashboardu.
  3. A Token Cloudflare API hodnotou Email Sending: Upravit oprávnění. Akceptovány jsou tokeny vlastněné účtem (doporučeno) i tokeny vlastněné uživatelem; token se používá jako heslo SMTP.

Zacházejte s tímto tokenem jako s přihlašovacím údajem. Kdokoli, kdo jej má k dispozici, může odesílat e-maily z libovolné zapojené domény na odpovídajícím účtu.

Rychlý start

Odešlete e-mail s jedním curl příkaz. Nahraďte <API_TOKEN> s Token Cloudflare API která má Email Sending: Upravit oprávnění a nahraďte --mail-from a --mail-rcpt adresy vlastními.

cat > mail.txt <<EOF
From: [email protected]
To: [email protected]
Subject: Welcome to our service!

Thanks for signing up.
EOF

curl --ssl-reqd \
  --url "smtps://smtp.mx.cloudflare.net:465" \
  --user "api_token:<API_TOKEN>" \
  --mail-from "[email protected]" \
  --mail-rcpt "[email protected]" \
  --upload-file mail.txt

Doména odesílatele ([email protected]) musí být zprovozněna pro Email Sending v účtu, který vlastní API token.

Ověřování

SMTP endpoint Cloudflare podporuje dva mechanismy SASL, oba definované v RFC 4954 ↗:

V obou případech je uživatelské jméno doslovný řetězec api_token a heslem je váš Cloudflare API token.

Sestavte AUTH PLAIN payload

AUTH PLAIN odesílá \0api_token\0<API_TOKEN> zakódovaný v base64:

printf '\0api_token\0%s' "<API_TOKEN>" | base64

Nezpracovaný přepis SMTP relace

Následující přepis ukazuje kompletní ověřené odeslání pomocí openssl s_client. Řádky začínající na > jsou odeslány klientem.

$ openssl s_client -quiet -connect smtp.mx.cloudflare.net:465 -crlf
220 mx.cloudflare.net Cloudflare Email ESMTP Service ready
> EHLO client.example.com
250-mx.cloudflare.net greets client.example.com
250-AUTH PLAIN LOGIN
250-SIZE 5242880
250-8BITMIME
250 ENHANCEDSTATUSCODES
> AUTH PLAIN AGFwaV90b2tlbgBpd0RQLi5oZWw=
235 2.7.0 Authentication successful
> MAIL FROM:<[email protected]>
250 2.1.0 Ok
> RCPT TO:<[email protected]>
250 2.1.5 Ok
> DATA
354 Start mail input; end with <CR><LF>.<CR><LF>
From: [email protected]
To: [email protected]
Subject: Welcome

Thanks for signing up.
.
250 2.0.0 Ok <[email protected]>
> QUIT
221 mx.cloudflare.net Cloudflare Email ESMTP Service closing transmission channel

250 2.0.0 Ok odpověď poté, co tělo zprávy obsahuje přidělené Message-ID. Použijte ji k propojení odeslání se záznamy o doručení v dashboardu.

Příklady

Příklady pro konkrétní jazyky, například curl, Nodemailer nebo Python, smtplib, a PHPMailer, viz Odesílání e-mailů přes SMTP.

Limity

Na odesílání přes SMTP se vztahují následující limity na jednu relaci:

Limit Hodnota
RCPT TO příjemců 50 na relaci
SIZE uvedený v EHLO 5 MiB
AUTH časový limit příkazu 30 sekund
DATA časový limit příkazu 300 sekund

Kvóty platné pro celý účet (denní limity odesílání, limity obsahu, limity hlaviček) jsou sdílené mezi REST API a Workers binding. Více informací najdete v Limity pro úplný seznam.

Kódy odpovědi

SMTP server Cloudflare vrací standardní RFC 5321 ↗ odpovědní kódy vedle RFC 3463 ↗ rozšířené stavové kódy.

Kód Význam
220 Služba je připravena (pozdrav po dokončení TLS handshake).
235 2.7.0 Autentizace proběhla úspěšně.
250 EHLO, MAIL FROM, RCPT TO, nebo DATA byl úspěšně dokončen.
354 Připraven přijmout tělo zprávy, ukončete znakem <CR><LF>.<CR><LF>.
421 Služba je dočasně nedostupná. Zkuste to znovu později.
451 4.3.0 Lokální chyba: zpráva byla přijata, ale odložena. Zkuste to znovu později.
452 4.5.3 Příliš mnoho příjemců v této relaci. Pro zbytek otevřete novou relaci.
500 / 501 Syntaktická chyba v příkazu nebo argumentech.
503 Nesprávná posloupnost příkazů (například MAIL FROM před AUTH).
530 5.7.0 Vyžadována autentizace.
535 5.7.8 Autentizace se nezdařila. Viz Řešení potíží.
550 5.7.1 Odesílatel nebo relay je zamítnut, obvykle MAIL FROM doména není zaregistrována.
552 5.3.4 Zpráva přesahuje 5 MiB SIZE limit.
554 Transakce se nezdařila: obsah byl zamítnut zásadami.

Řešení potíží

535 5.7.8 Authentication failed

Možné příčiny:

550 5.7.1 Sender denied

Adresa v MAIL FROM je na doméně, která není aktivována pro Email Sending v účtu vlastnícím API token. Aktivujte doménu v Email Service > Email Sending v dashboardu, nebo změňte adresu odesílatele.

552 5.3.4 Message too big

Tělo zprávy (včetně příloh po kódování MIME) je větší než 5 MiB. Zmenšete velikost přílohy nebo zprávu rozdělte.

Selhání TLS handshake

SMTP endpoint Cloudflare vyžaduje TLS již od navázání spojení (implicitní TLS). Ujistěte se, že je váš klient nakonfigurován na SSL/TLS na portu 465, nikoli STARTTLS na portu 587 (což není podporováno).

Problémy s ověřováním souvisejícím se SPF, DKIM nebo DMARC na straně příjemce najdete v Řešení problémů se SPF, DKIM a DMARC.