Elektronická pošta v TCP/IP časť piata


Komunikačné protokoly elektronickej pošty I

V začiatkoch elektronickej pošty sa na prenos správ používal, a dodnes sa používa, protokol UUCP (Unix-to-Unix Copy Protokol). Neskôr na báze TCP/IP vznikol nový poštový protokol - SMTP (Simple Mail Transfer Protokol). Pôvodná verzia tohto protokolu je definovaná v dokumentoch RFC 821 [11] a RFC 822 [12]. SMTP definuje spôsob, akým si jednotlivé MTA (Mail Transfer Agent) vymieňajú správy. Nedefinuje spôsob a miesto uchovávania jednotlivých správ.


Protokol SMTP

SMTP (Simple Mail Transfer Protokol) je nezávislý špeciálny prenosový subsystém, ktorý požaduje len spoľahlivý a usporiadaný dátový kanál. Dôležitou funkciou SMTP je zabezpečovanie spoľahlivého a efektívneho prenosu poštových správ. Protokol SMTP predpokladá, že správa bude prenášaná na takom transportnom spojení, ktoré sa samé postará o zabezpečenie spoľahlivosti prenosu. Toto spojenie sa obyčajne zabezpečuje protokolom TCP (v sieťach na báze TCP/IP prakticky vždy), ale nie je vylúčené ani použitie iného prenosového protokolu zabezpečujúceho spoľahlivý prenos.

Prenosový kanál SMTP je TCP spojenie medzi odosielajúcim procesom U a prijímajúcim procesom L. Toto jednoduché obojsmerné spojenie je používané ako prenosový kanál. SMTP protokol má pridelený port 25 (31 octal), t.j. L=25.

Protokol SMTP predpokladá iba prenos znakov, ktoré sú kódované do siedmich bitov ASCII. Ak sa takéto sedembitové ASCII znaky prenášajú kanálom, ktorý je upravený na prenos osembitových znakov, čo je prípad protokolu TCP, potom SMTP definuje, že sedembitové ASCII znaky majú byť vkladané do 8-bitov tak, aby boli zarovnané doprava a zľava doplnené nulovým bitom.

Dialóg medzi "SMTP-sender" a "SMTP-receiver" (obr. 1) má formu posielania príkazov a zasielania odpovedí na príkazy. Príkazy sú tvorené kľúčovými slovami, za ktorými obvykle nasledujú ďalšie spresňujúce parametre. SMTP príkazy sú znakové reťazce zakončené <CRLF>. Odpovede na príkazy sú zásadne číselné, tvorené trojmiestnymi desiatkovými číslami v ASCII (napr. odpoveď 220 signalizuje pripravenosť druhej strany k prenosu pošty).




Obr. 1: Model pre používanie protokolu SMTP


Akonáhle je vytvorený prenosový kanál, "SMTP-sender" posiela príkaz MAIL, ktorý indikuje zasielanie správy. Ak "SMTP-receiver" akceptuje správu, zareaguje odpoveďou OK. "SMTP-sender" potom pošle príkaz RCPT, aby identifikoval príjemcu správy. Ak "SMTP-receiver" akceptuje správu pre príjemcu, odpovie OK; ak nie, príjemcu odmietne. "SMTP-sender" a "SMTP-receiver" sa môžu dohodnúť aj na viacerých príjemcoch správy. Len čo je príjemca dohodnutý, "SMTP-sender" začne posielať správu pomocou príkazov DATA. Nakoniec je ešte poslaná špeciálna sekvencia <CRLF>.<CRLF>, ktorá ukončí posielanie správy. Ak "SMTP-receiver" úspešne spracoval dáta správy, odpovie OK. Tento dialóg sa ukončí zrušením komunikačného kanála príkazom QUIT.


Príkazy protokolu SMTP

Často sa stáva, že elektronickou poštou posielame aj binárne súbory (napr. súbory s koncovkou *.zip, *.jpeg, *.gif a pod.). Tieto súbory nie je obvykle možné poslať priamo. Z toho dôvodu musí byť použitý algoritmus, ktorý zakóduje binárne dáta do krátkych riadkov 7-bitového ASCII kódu. RFC 1521 obsahuje tieto algoritmy kódovania:

V ďalšom texte budeme používať označenie "R:" pre "receiver-SMTP" a "S:" pre "sender-SMTP". Nasleduje niekoľko príkladov komunikácie medzi "receiver-SMTP" a "sender-SMTP"


Príklad typickej SMTP transakcie
R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready
S: HELO USC-ISIF.ARPA
R: 250 BBN-UNIX.ARPA

S: MAIL FROM:<Smith@USC-ISIF.ARPA>
R: 250 OK

S: RCPT TO:<Jones@BBN-UNIX.ARPA>
R: 250 OK

S: RCPT TO:<Green@BBN-UNIX.ARPA>
R: 550 No such user here

S: RCPT TO:<Brown@BBN-UNIX.ARPA>
R: 250 OK

S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK

S: QUIT
R: 221 BBN-UNIX.ARPA Service closing transmission channel

Príklad prerušenia SMTP transakcie
R: 220 MIT-Multics.ARPA Simple Mail Transfer Service Ready
S: HELO ISI-VAXA.ARPA
R: 250 MIT-Multics.ARPA

S: MAIL FROM:<Smith@ISI-VAXA.ARPA>
R: 250 OK

S: RCPT TO:<Jones@MIT-Multics.ARPA>
R: 250 OK

S: RCPT TO:<Green@MIT-Multics.ARPA>
R: 550 No such user here

S: RSET
R: 250 OK

S: QUIT
R: 221 MIT-Multics.ARPA Service closing transmission channel

Príklad verifikácie a posielania
R: 220 SU-SCORE.ARPA Simple Mail Transfer Service Ready
S: HELO MIT-MC.ARPA
R: 250 SU-SCORE.ARPA

S: VRFY Crispin
R: 250 Mark Crispin <Admin.MRC@SU-SCORE.ARPA>

S: SEND FROM:<EAK@MIT-MC.ARPA>
R: 250 OK

S: RCPT TO:<Admin.MRC@SU-SCORE.ARPA>
R: 250 OK

S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK

S: QUIT
R: 221 SU-SCORE.ARPA Service closing transmission channel

Scenár odosielania (Forwarding Scenarios)
R: 220 USC-ISIF.ARPA Simple Mail Transfer Service Ready
S: HELO LBL-UNIX.ARPA
R: 250 USC-ISIF.ARPA

S: MAIL FROM:<mo@LBL-UNIX.ARPA>
R: 250 OK

S: RCPT TO:<fred@USC-ISIF.ARPA>
R: 251 User not local; will forward to <Jones@USC-ISI.ARPA>

S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK

S: QUIT
R: 221 USC-ISIF.ARPA Service closing transmission channel
Vysvetlivky

RFC (Request for Comments) - Sada článkov, v ktorých sa dokumentujú a zverejňujú štandardy Internetu, návrhy štandardov a obecne odsúhlasené myšlienky.

MD5 (Message Digest) - Algoritmus vyvinutý Ronaldem Rivestem pre podporu elektronického podpisu; výsledkom algoritmu je 128-bitový reťazec slúžiaci ako jednoznačné potvrdenie pravosti obsahu; zmenou akéhokoľvek bajtu pôvodného obsahu sa mení aj výsledný reťazec (message digest); vďaka tomu, že je výsledný reťazec kratší, je proces jeho výpočtu rýchlejší než v prípade algoritmu SHA-1.

(c) 2004 Ing. Peter Gašparovič - www.pgasparovic.com

Literatúra

[1]  Feiber, W.: Encyklopedie počítačových sítí. Praha, Computer Press, 1996.
[2]  Břehovský, P.: Praktický úvod TCP/IP. České Budějovice, KOPP, 1994 .
[3]  Mrázek, L.: První kroky INTERNETEM aneb Je to na WWW!. České Budějovice, KOPP, 1995.
[4]  Šmrha, P. – Rudolf, V.: Internetworking pomocí TCP/IP. České Budějovice, KOPP, 1995.
[5]  Hejna, L.: Lokální počítačové síte. Praha, GRADA, 1994.
[6]  Falk, B.: Průvodce světem Internetu. Praha, Computer Press, 1995.
[7]  Lhotka, L.: SERVER v INTERNETU. České Budějovice, KOPP, 1997.
[8]  Peterka, J.: Co je čím ... v počítačových sítích. COMPUTERWORLD, 1994, č. 4, 7, 9, 17, 21, 35, 44.
[9]  Sterling, B.: Short History of the Internet. The Magazine of Fantasy and Science Fiction, 1993.
[10]  Dostálek, L. - Kabelová, A.: MIME – Multipurpose Internet Mail Extension. http://info.pvt.net/mime.htm, 1997.
[11]  Postel, J. B.: Simple Mail Transfer Protokol. RFC # 821, August 1982.
[12]  Crocker, D. H.: Standard For The Format Of Arpa Internet Text Messages. RFC # 822, August 1982.
[13]  Borenstein, N. - Freed, N.: MIME (Multipurpose Internet Mail Extension) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies. RFC # 1521, September 1993.
[14]  Borenstein, N. - Freed, N.: Multipurpose Internet Mail Extension (MIME) Part One: Format of Internet Message Bodies. RFC # 2045, November 1996.
[15]  Rose, M.: Post Office Protocol – Version 3. RFC # 1225, May 1991.
[16]  Rose, M. - Myers, J.: Post Office Protocol – Version 3. RFC # 1725, November 1994.
[17]  Dresslerová, B. - Veselský, J. - Gombik, G.: LINUX Dokumentační projekt. Praha, Computer Press, 1998.
[18]  Šovčík, J.: Login. PC Revue, 1995, č. 4 až 8.
[19]  Palúch, P.: Poznáte LINUX?. PC Revue, 1998, č. 2.
[20]  Rivest, R.: The MD5 Message–Digest Algorithm. RFC # 1321, Apríl 1992.
[21]  Dostálek, L. a kol.: Velký průvodce protokoly TCP-IP Bezpečnost. Praha, Computer Press, 2001.