V sobotu 2. listopadu proběhla mohutná oslava naší plnoletosti !!
Multimediaexpo.cz je již 18 let na českém internetu !!

Simple Mail Transfer Protocol

Z Multimediaexpo.cz

Simple Mail Transfer Protocol, zkráceně SMTP, je internetový protokol určený pro přenos zpráv elektronické pošty (e-mailů) mezi stanicemi. 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 (off-line) přistupovat (vybírat zprávy) pomocí protokolů 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). SMTP funguje nad protokolem TCP, používá port TCP/25.

Obsah

Architektura pošty

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 Transport 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

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

Poštovní server (MTA) běží obvykle jako démon a naslouchá na portu TCP/25. K tomuto portu se může připojit (navázat TCP spojení) buď poštovní klient, nebo jiný server, který předá zprávu k doručení. 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ě.

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 sendmail, postfix, qmail, Microsoft Exchange, Mercury aj.

Program pro lokální doručování

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 a pod.), 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

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.

Ukázka SMTP komunikace

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.

C: navázání spojení se serverem (zpravidla na TCP portu 25)
S: 220 mail.example.com ESMTP Postfix
C: HELO example.net
S: 250 Hello example.net
C: MAIL FROM: <sender@example.net>
S: 250 Ok
C: RCPT TO: <friend@example.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: Subject: test message
C: From: sender@example.net
C: To: friend@example.com
C:
C: Hello,
C: This is a test.
C: Goodbye.
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye

Poznámka: Příkaz HELO je pozůstatkem starších verzí klientů/serverů, novější používají příkaz EHLO:

S: 220 mail.example.com ESMTP Postfix
C: EHLO example.net
S: 250-mail.example.com
S: 250-EXPN
S: 250-HELP
S: 250 SIZE 1000000
C: MAIL FROM:<sender@example.net> SIZE=500000
S: 250 Address Ok.
C: RCPT TO:<friend@example.com>
S: 250 friend@example.com OK; can accomodate 500000 byte message
C: DATA
S: 354 Send message, ending in CRLF.CRLF.
   ...
C: .
S: 250 Ok
C: QUIT
S: 221 Goodbye

Chyby

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ě.

Související články

Externí odkazy