← Cloudflare Email Service / email-service / api / send-emails
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:
- Účet s Email Sending zapnuté.
- Alespoň jeden onboarding domény dokončen v části Email Service > Email Sending na Cloudflare dashboardu.
- 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.txtDomé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 ↗:
AUTH PLAIN: preferováno. Jediná zpáteční cesta, RFC 4616 ↗.AUTH LOGIN: starší draft-murchison-sasl-login ↗. Podporováno kvůli kompatibilitě se staršími klienty.
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>" | base64Nezpracovaný 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:
- Uživatelské jméno není doslovný řetězec
api_token. API token se zadává do password . - Token nemá Email Sending: Upravit oprávnění.
- Token byl odvolán nebo jeho platnost vypršela.
- U tokenu vlastněného uživatelem je doména v
MAIL FROMnepatří k účtu, pro který má token oprávnění.
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.
Související zdroje
- Odesílání e-mailů přes SMTP : příklady pro curl, Nodemailer, Python a PHP.
- REST API : odesílání e-mailů přes HTTPS.
- Workers API : odesílání e-mailů z Cloudflare Workeru pomocí vazeb.
- Konfigurace domény : zprovoznění domény pro Email Sending.
- MTA-STS : vynucujte TLS pro příchozí poštu.
- E-mailové hlavičky : podporovaná záhlaví a nápovědy pro vlákna zpráv.
- Limity : limity účtu, zpráv a relací.