Přejít na obsah

Nastavení cookies

Zvolte, které druhy cookies povolíte. Svou volbu můžete kdykoli změnit přes Nastavení cookies v dolní části každé stránky. Prohlášení o ochraně osobních údajů

Nezbytné

Vždy zapnuté

Potřebné pro přihlášení, uchování košíku a zapamatování vašich voleb. Jsou vždy zapnuté.

Které cookies?
  • weboke_sessie, weboke_klant, weboke_remember: vaše relace a trvalé přihlášení
  • weboke_basket: váš košík
  • wkBtwIncl: zobrazení cen s DPH nebo bez DPH
  • wok_cookies: vaše volba cookies, 12 měsíců

Měří, která reklama vede k návštěvě nebo objednávce, abychom neplatili za reklamy, které nic nepřinášejí.

Které cookies?
  • Google Ads přes Google Tag Manager (_gcl_au, _gcl_aw), až 90 dní
  • OpenAI Ads, reklamy v ChatGPT
  • wok_aff: partner, který vás k nám doporučil (partnerský program), 60 dní

4,6

Země a jazyk

Každá země má vlastní web s cenami a DPH dané země.

Zobrazit

SMTP: rozhovor mezi mailovými servery

Modul 1: Jak funguje e-mail · Doba čtení: 10 minut

Cíl lekce: Po této lekci dokážete přečíst SMTP rozhovor, vysvětlit, co dělají příkazy EHLO, MAIL FROM, RCPT TO a DATA, a podle odpovědního kódu poznat, zda je chyba dočasná nebo trvalá.

Klíčové pojmy: SMTP (RFC 5321), relace, EHLO/HELO, MAIL FROM, RCPT TO, DATA, QUIT, odpovědní kód (2xx, 3xx, 4xx, 5xx), rozšířený stavový kód, rozšíření (STARTTLS, AUTH, SIZE), null MX

Rozhovor v obyčejném textu

SMTP je velmi starý protokol (první verze pochází z roku 1982), a proto je velmi dobře čitelný. Dva servery si posílají řádky textu. Odesílatel (klient) posílá příkaz, příjemce (server) odpovídá trojciferným číslem a krátkým vysvětlením. Takový rozhovor si můžete doslova přečíst v chybovém hlášení nebo v logu, a právě proto se vyplatí mu rozumět.

Níže je kompletní rozhovor. S: je přijímající server, C: odesílající server. Pošta jde z anna@example.com na jan@example.net.

S: 220 mx1.mailprovider.example ESMTP ready
C: EHLO out.hosting.example
S: 250-mx1.mailprovider.example Hello out.hosting.example [192.0.2.25]
S: 250-SIZE 52428800
S: 250-8BITMIME
S: 250-STARTTLS
S: 250 SMTPUTF8
C: STARTTLS
S: 220 2.0.0 Ready to start TLS
   (od tohoto okamžiku je spojení šifrované; klient znovu pošle EHLO)
C: EHLO out.hosting.example
S: 250 ...
C: MAIL FROM:<anna@example.com> SIZE=24310
S: 250 2.1.0 Ok
C: RCPT TO:<jan@example.net>
S: 250 2.1.5 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: Anna <anna@example.com>
C: To: Jan <jan@example.net>
C: Subject: Offerte
C: Date: Sun, 8 Nov 2026 10:15:00 +0100
C: Message-ID: <a1b2c3@example.com>
C:
C: Hoi Jan, hierbij de offerte.
C: .
S: 250 2.0.0 Ok: queued as 4F2A1B
C: QUIT
S: 221 2.0.0 Bye

Příkazy jeden po druhém

PříkazVýznamPozor
(navázání spojení)Server se přivítá kódem 220 a svým jménem.Toto se nazývá banner. Pokud server rovnou odpoví 554, znamená to, že s Vaší IP adresou vůbec nechce mluvit (často kvůli blokovacímu seznamu).
EHLO jméno"Dobrý den, jsem out.hosting.example." Server odpoví rozšířeními, která zná.Jméno by mělo být skutečným jménem odesílajícího serveru, nejlépe shodným s jeho PTR záznamem (lekce 5.1). HELO je starší varianta bez rozšíření.
STARTTLS"Od této chvíle šifrujme."Pouze pokud to server nabízí. Mezi servery je to obvykle dobrovolné (lekce 5.4).
MAIL FROM:<adresa>Odesílatel obálky (envelope sender): sem chodí chybová hlášení.Později se z toho stává hlavička Return-Path. SPF kontroluje právě tuto adresu. Prázdného odesílatele <> používají servery pro vlastní chybová hlášení, aby bounce nikdy nevyvolal další bounce.
RCPT TO:<adresa>Příjemce. Může se opakovat, jeden pro každého příjemce.Právě zde by měl server už sdělit, zda adresa existuje. 550 5.1.1 v tomto okamžiku je slušná, hned rozpoznatelná chyba.
DATA"Teď přijde samotná zpráva." Server odpoví 354.Poté následují hlavičky, prázdný řádek a text zprávy. Řádek obsahující pouze tečku rozhovor ukončí.
QUITKonec rozhovoru.

Nejdůležitější poznatek: vše před DATA je obálka, vše po DATA je obsah. To, co je uvedeno v MAIL FROM, a to, co je v hlavičce From:, se dodávají odděleně a nemusí si být rovny. Server doručuje podle RCPT TO; řádek To: v obsahu při doručování nehraje žádnou roli.

Odpovědní kódy

Nejdůležitější je první číslice kódu:

Začíná naVýznamCo dělá odesílatel?
2Povedlo se.Pokračuje se dalším krokem. 250 po DATA znamená: server zprávu přijal a nyní je za ni odpovědný.
3Pokračujte, čekám na víc.Pouze u 354 po DATA (a při přihlašování).
4Dočasná chyba: teď ne, zkuste to později.Zpráva zůstává ve frontě a bude později znovu nabídnuta.
5Trvalá chyba: toto se nepodaří.Odesílatel to vzdá a pošle chybové hlášení (bounce) na odesílatele z obálky.

Za trojicí čísel uvádějí moderní servery rozšířený stavový kód ve tvaru class.subject.detail (RFC 3463), například 5.1.1. První číslice je opět 2, 4 nebo 5. Druhá číslice říká, čeho se problém týká: 1 = adresa, 2 = schránka, 3 = mailový systém, 4 = síť a směrování, 5 = protokol, 6 = obsah, 7 = zabezpečení a zásady. Několik příkladů, se kterými se často setkáte:

550 5.1.1  The email account that you tried to reach does not exist
452 4.2.2  Mailbox full (dočasně)
552 5.3.4  Message size exceeds fixed limit
451 4.7.1  Greylisted, please try again later
550 5.7.1  Message rejected (zásady: spam, blokovací seznam, DMARC)

V modulu 6 se naučíte přečíst kompletní bounce zprávu a najdete tam tabulku s nejčastějšími kódy.

Proč je rozdíl mezi dočasnou a trvalou chybou tak důležitý

Server, který si není jistý, často odpovídá kódem 4xx. Známým příkladem je greylisting: server, který odesílatele ještě nezná, mu poprvé řekne "zkuste to později". Skutečný mailový server se za pár minut vrátí, mnoho spamových programů nikoli. Velcí příjemci také používají 4xx ke zpomalení tempa, pokud IP adrese ještě nedůvěřují. Pro Vás jako odesílatele to znamená: zpoždění, ale ne ztrátu. Systém to obvykle vyřeší sám.

5xx je jiná situace. Tam se odesílatel znovu pokoušet nebude. Pokud dostanete 5xx, musí někdo něco změnit: adresu, obsah, nebo nastavení odesílající domény.

Nástraha: některé servery vrací 5xx, přestože je problém dočasný (například u plné schránky 552 5.2.2), a jiné vrací 4xx u něčeho, co se nikdy nepodaří. Čtěte proto vždy text za kódem, nejen samotné číslo.

Kdo je odpovědný?

Po kódu 250 na tečce ukončující DATA leží odpovědnost na přijímajícím serveru. Pokud se mu následně nepodaří zprávu uložit do schránky, musí sám odeslat chybové hlášení zpět. To je zdroj nepříjemného jevu zvaného backscatter. Server, který nejdřív všechno přijme a teprve později zjistí, že adresa neexistuje, pošle bounce na odesílatele z obálky. Pokud byl tento odesílatel podvržený spammerem, dostane bounce nevinná třetí strana. Proto by servery měly odmítat už při RCPT TO to, co stejně nepůjde doručit (viz také catch-all v lekci 3.3).

V praxi: SMTP ve vašem vlastním prostředí

Běžný uživatel vidí SMTP rozhovor zřídka celý, ale vidí jeho části:

  • v bounce zprávě je poslední řádek rozhovoru, například Remote-MTA: mx1.mailprovider.example a Diagnostic-Code: smtp; 550 5.1.1 ...;
  • v hlavičkách přijaté zprávy je u každého serveru řádek Received: s EHLO jménem a IP adresou (lekce 1.5);
  • v panelu s mailovým logem, jako je E-mailové sledování v DirectAdminu u WebOké, vidíte u každé zprávy odpověď přijímajícího serveru. U jiných poskytovatelů se podobná funkce nazývá například sledování zpráv nebo mail log a obsah je srovnatelný.

Nemusíte se tedy sami připojovat k mailovému serveru, abyste si toto mohli přečíst. Kdo to přesto chce vyzkoušet: pomocí openssl s_client -starttls smtp -connect server:25 můžete vést rozhovor ručně, ale mnoho domácích poskytovatelů internetu blokuje odchozí provoz na portu 25 (lekce 1.4).

Shrnutí

  • SMTP je čitelný rozhovor: EHLO, (STARTTLS), MAIL FROM, RCPT TO, DATA, QUIT.
  • Vše před DATA je obálka (doručování a chybová hlášení), vše po DATA je obsah s hlavičkami, které vidíte.
  • 2xx = povedlo se, 4xx = dočasně (zkusit znovu později), 5xx = trvale (bounce).
  • Rozšířený kód X.Y.Z sděluje, čeho se problém týká; X.1 adresa, X.2 schránka, X.7 zásady a zabezpečení.
  • Vždy čtěte text za kódem; servery nejsou vždy důsledné.

Kvíz

1. Který příkaz obsahuje adresu, na kterou jde chybové hlášení?



2. Server odpoví 451 4.7.1 Greylisted, please try again later. Co udělá dobrý odesílající server?



3. Ve které části rozhovoru se nachází hlavička Subject:?



4. Co sděluje druhá číslice v kódu 550 5.1.1?



5. Proč je lepší, aby server odmítl neexistující adresu už při RCPT TO, místo aby zprávu nejdřív přijal?



Úkol

Úkol Z1.2: Doména, která nepřijímá poštu. Najděte MX záznamy domény example.com. Zapište, co jste zjistili, a vyberte, co udělá odesílající server se zprávou pro info@example.com: (a) doručí ji na server s prioritou 0, (b) zkusí A záznam, (c) rovnou to vzdá, nebo (d) zkusí to znovu později. Program si živě zjistí MX záznam a výsledek zkontroluje.

Úkol Z1.2: Doména, která nepřijímá poštu

Vyhledejte MX záznamy domény example.com a vyberte, co odesílající server udělá s poštou pro info@example.com.



Co vyplníte a co zjistíme, neukládáme. Váš prohlížeč si pamatuje Vaše odpovědi a to, zda jste úkol splnili. Pokud jste přihlášeni, ukládáme v sekci Moje kurzy pouze to, že jste úkol měli (téměř) správně; i to tam můžete odstranit.

Další čtení

Kroky v těchto článcích platí pro panely WebOké; u jiných poskytovatelů to funguje obdobně.

Chvíli strpení…

Nastavení vašich domén

U každé domény nastavte jmenné servery, propojení s hostingem a to, kdo bude držitelem.

Načítání vašich domén…