SMTP
Simple Mail Transfer Protocol (zkratka SMTP) je internetový protokol určený pro přenos zpráv elektronické pošty (e-mailů) mezi přepravci elektronické pošty (MTA). Protokol zajišťuje doručení pošty pomocí přímého spojení mezi odesílatelem a adresátem; zpráva je doručena do tzv. poštovní schránky adresáta, ke které potom může uživatel kdykoli přistupovat (vybírat zprávy) buď přímo na serveru, nebo z jiného počítače pomocí protokolů jako POP3 nebo IMAP. Jedná se o jednu z nejstarších aplikací, původní norma RFC 821 byla vydána v roce 1982 (v roce 2001 ji nahradila novější RFC 2821 s rozšířením ESMTP). SMTP funguje nad protokolem TCP, používá port TCP/25 pro komunikaci mezi poštovními servery a port TCP/587 pro příjem e-mailů od e-mailových klientů.
Doručování elektronické pošty po Internetu se účastní tři druhy programů:
MUA – Mail User Agent, poštovní klient, který zpracovává zprávy u uživatele
MTA – Mail Transfer Agent, server, který se stará o doručování zprávy na cílový systém adresáta
MDA – Mail Delivery Agent, program pro lokální doručování, který umísťuje zprávy do uživatelských schránek, případně je může přímo automaticky zpracovávat (ukládat přílohy, odpovídat, spouštět různé aplikace pro zpracování apod.)
Poštovní klient je program, který zajišťuje odesílání zpráv a vybírání schránek. Příkladem je např. Microsoft Outlook, Mozilla Thunderbird, Opera, Mutt, Pine a další. Je to v podstatě specializovaný editor, který umí kromě vytvoření zprávy také manipulovat se schránkami, odeslat zprávu nejbližšímu MTA a převzít zprávu ze serveru prostřednictvím POP3 nebo IMAP. Vlastním doručováním zprávy po síti až k adresátovi se klient nezabývá. Součástí klienta bývá také více či méně složitý adresář, který pomáhá uživateli udržet přehled o adresách.
Poštovní server (MTA) běží obvykle jako démon či Služba Windows. Server naslouchá na portu TCP/25, ke kterému se může připojit (navázat TCP spojení) jiný server, který předá zprávu k doručení. Dále server naslouchá na portu TCP/587, ke kterému se připojují poštovní klienti (dříve se i pro tento účel používal port TCP/25). MTA zkontroluje, zda je zpráva určena pro systém, na kterém běží. Pokud ano, předá ji programu MDA (lokální doručení). Pokud je zpráva určena jinému počítači, naváže spojení s příslušným serverem a zprávu mu předá.
Při vyhledávání vzdáleného serveru, kterému má předat zprávu, musí MTA spolupracovat se systémem DNS. Od serveru DNS si vyžádá tzv. MX záznam pro cílovou doménu, který obsahuje IP adresu počítače, který se stará o doručení pošty v této doméně. Pokud DNS tento záznam neobsahuje, pokusí se poštovní server doručit zprávu přímo na počítač uvedený v adrese za zavináčem (podle A/AAAA DNS záznamů).
Poštovní server obsahuje v konfiguraci řadu parametrů, pomocí kterých můžeme mimo jiné nastavit, pro které domény MTA přijímá zprávy. Stejně tak je možné určit, od koho bude nebo nebude zprávy přijímat, což je velmi důležité z hlediska bezpečnosti a ochrany proti spamu.
Nejčastějšími programy v roli MTA jsou exim, IBM Lotus Domino, Mercury, Microsoft Exchange Server, IceWarp Mail Server, postfix, qmail, sendmail aj.
Server by mohl zprávy do uživatelských schránek ukládat přímo, ale výhodnější je k tomu použít specializovaný program. To umožňuje při doručování ještě dále zprávy zpracovávat nebo filtrovat. Příkladem může být třídění zpráv do různých schránek uživatele podle obsahu (odesilatele, subjektu apod.), nebo odstraňování nežádoucích zpráv (viry, spam). Tyto volby si může každý uživatel nastavit samostatně nezávisle na ostatních.
Typickými představiteli MDA jsou procmail a maildrop.
Formát zprávy popisuje norma RFC 2822, která v roce 2001 nahradila původní RFC 822 z roku 1982. Zpráva se skládá z hlavičky a těla zprávy. Tělo může obsahovat kromě vlastní textové zprávy také volitelné přílohy s libovolným obsahem.
Po ustanovení spojení mezi klientem a serverem dochází k SMTP přenosu. V následující ukázce je vše, co začíná C:, odesláno klientem a vše, co začíná S:, odesláno serverem.
Poznámka: Příkaz HELO se používá pro starší SMTP spojení, novější servery používají ESMTP a příkaz EHLO:
Doprava dopisu protokolem SMTP může selhat z mnoha různých příčin. SMTP protokol rozeznává dva typy chyb. Trvalé chyby (jejich číselný kód začíná 5) jsou např. „uživatel neexistuje“, „server neexistuje“. V případě trvalé chyby se odesílateli okamžitě posílá zpráva o nedoručení a jeho příčině.
Dočasná chyba (její číselný kód začíná 4) může být způsobena např. tím, že cílový server je momentálně nedostupný, nekomunikuje nebo je zaneprázdněn. Odesílající server má v tom případě dopis uložit do fronty a po nějakou nastavenou dobu (typicky několik dní) by měly být činěny opakované pokusy (typicky po několika málo desítkách minut) o doručení. Některé servery posílají po několika hodinách neúspěšných pokusů odesílateli zprávu že doručení se prozatím nepodařilo, ale že to server bude zkoušet dál. Pokud pokusy o doručení jsou po nastavenou dobu neúspěšné, posílá se odesílateli zpráva o nedoručitelnosti a dopis se zahodí.
Zprávy o chybách a varováních bývají v angličtině.