Menu Zavrieť

2.5. Aplikačný protokol SMTP

SMTP: simple mail transfer protocolRFC 2821

SMTP protokol je určený na odosielanie mailu od používateľa k svojmu mailovému serveru a na odosielanie mailov od odosielateľovho mailového servera k mailovému serveru príjemcu. SMTP servery počúvajú na porte 25.

SMTP protokol je veľmi starý. Jeho jadro bolo vytvorené už v roku 1982. Z toho plynú niektoré nepríjemné dôsledky, na ktoré sa vtedy nemyslelo.

  • Všetko, čo sa odosiela SMTP protokolom (vrátane príloh), musí byť kódované v 7-bitovom ASCII kódovaní. Z toho vyplýva, že aj text, aj binárne súbory v prílohách musia byť prekódované do tohto kódovania, čo „zbytočne“ zaťažuje procesor a zväčšuje objem prenesených dát. Rozšírenie o prekódované binárne dáta a dáta v inom kódovaní znakov umožňujú multimediálne rozšírenia. Takzvané MIME (multimedia mail extension) typy v hlavičke mailu definujú, akým kódovaním boli tieto dáta prekódované a akého boli pôvodne typu.
  • SMTP protokol nemá žiadnu autorizáciu. To znamená, že môžeme posielať maily z ľubovoľnej e-mailovej adresy. Dôsledok je dobre známy. Až 97 % všetkých e-mailov tvorí spam. Provideri často robia (pseudo)opatrenie, že blokujú odchádzajúcu komunikáciu na port 25 a nedovolia tak svojim zákazníkom prevádzku SMTP serverov.

SMTP správy od servera sú jednoriadkové odpovede v tvare kód a komentár stavu. Klient zasiela buď príkazy alebo obsah mailu podľa toho, v ktorej časti komunikácie sa nachádza. V prípade, že je v stave, že práve posiela mail, môže zasielať toľko riadkov, koľko potrebuje. Koniec odosielania mailovej časti správy oznamuje bodkou na samostatnom riadku. K jednotlivým príkazom sa nie je potrebné vyjadrovať. Tie jednoduché sú samo vysvetľujúce a zložité si môžete pozrieť v RFC 2821. Odporúčam si preštudovať zdrojové súbory vašich vlastných mailov. Uvediem iba jednoduchú komunikáciu na odoslanie krátkeho mailu. „C:“ označuje riadok správy klienta a „S:“ riadok správy servera.

S: 220 mail.ics.upjs.sk
C: HELO doma.sk
S: 250 Hello doma.sk, pleased to meet you
C: MAIL FROM: <alica@doma.sk>
S: 250 alica@doma.sk... Sender ok
C: RCPT TO: <bob@upjs.sk>
S: 250 bob@upjs.sk ... Recipient ok
C: DATA
S: 354 Enter mail, end with "." on a line by itself
C: Prepacte, ze som pred tyzdnom neposlala projekt
C: lebo som velmi chora
C: .
S: 250 Message accepted for delivery
C: QUIT
S: 221 mail.ics.upjs.sk closing connection

Je nutné poznamenať, že mailový server nášho ústavu, teda mail.ics.upjs.sk, je nastavený tak, že nedovolí odosielanie mailov z iných mailových adries ako registrovaných. Nie všetky mailové servery toto dodržiavajú.

Keď mailový server prijme od používateľa mail, vloží mail do radu mailov na odoslanie a následne odosiela tento mail na cieľový server, daný emailovou adresou prijímateľa, opäť protokolom SMTP. Pokiaľ je cieľový server dočasne nedostupný, pokúša sa o spojenie ešte niekoľkokrát v priebehu najbližších hodín a dní. Zároveň upozorňuje odosielateľa o neschopnosti mail doručiť. Po doručení mailu na mailový server prijímateľa, je tento mail uložený v jeho mailovej schránke a čaká, kedy si ho používateľ vyzdvihne.