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.
Č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:
- HELO (HELO)
Tento príkaz sa používa na nadviazanie spojenia medzi procesmi "sender-SMTP" a "receiver-SMTP". Argument poľa obsahuje meno hostiteľa "sender-SMTP".
- MAIL (MAIL)
Príkaz sa používa na inicializáciu poštovej transakcie, pri ktorej sú poštové dáta doručené do jednej alebo viacerých poštových schránok. Argument poľa obsahuje spiatočnú cestu.
- RECIPIENT (RCPT)
Tento príkaz je používaný na identifikáciu špecifického príjemcu poštových dát; viacerí adresáti môžu byť špecifikovaní viacnásobným použitím tohto príkazu.
- DATA (DATA)
Príkaz umožňuje zasielanie dát prijímajúcej strane, ktorá ich ukladá do poštového dátového buffera. Posielané dáta môžu obsahovať ľubovoľné znaky tabuľky ASCII. Ako posledné dáta je odoslaná sekvencia <CRLF>.<CRLF>, ktorá indikuje koniec posielania poštových dát.
- SEND (SEND)
Tento príkaz sa používa na inicializáciu poštovej transakcie, pri ktorej sú poštové dáta doručené do jedného alebo viacerých terminálov. Argument poľa obsahuje spiatočnú cestu. Príkaz je úspešný, ak je správa doručená do terminálu.
- SEND OR MAIL (SOML)
Príkaz sa používa na inicializáciu poštovej transakcie, pri ktorej sú poštové dáta doručené do jedného alebo viacerých terminálov alebo poštových schránok. Každému príjemcovi sa správa doručí do jeho terminálu, ak je aktívny, inak sa uloží do jeho poštovej schránky. Argument poľa obsahuje spiatočnú cestu. Príkaz je úspešný, ak je správa doručená do terminálu alebo do poštovej schránky.
- SEND AND MAIL (SAML)
Príkaz sa používa na inicializáciu poštovej transakcie, pri ktorej sú poštové dáta doručené do jedného alebo viacerých terminálov alebo poštových schránok. Každému príjemcovi sa správa doručí do jeho terminálu, ak je aktívny, a aj napriek tomu sa uloží do jeho poštovej schránky. Argument poľa obsahuje spiatočnú cestu. Príkaz je úspešný, ak je správa doručená do poštovej schránky.
- RESET (RSET)
Tento príkaz umožňuje predčasne ukončiť aktuálnu poštovú transakciu. Všetky uchovávané odosielateľove i príjemcove poštové dáta musia byť vymazané. Zmazať treba aj stavové tabuľky a tiež dáta umiestnené vo všetkých používaných bufferoch. "Receiver-SMTP" musí poslať odpoveď OK.
- VERIFY (VRFY)
Príkaz požaduje od "receiver-SMTP" potvrdenie totožnosti užívateľa. Ak je parametrom príkazu meno užívateľa, odpoveďou bude plné meno užívateľa (ak je známe) a úplná špecifikácia poštovej schránky.Príklad:
S: VRFY Crispin
R: 250 Mark Crispin <Admin.MRC@SU-SCORE.ARPA>- EXPAND (EXPN)
Tento príkaz žiada príjemcu, aby potvrdil údaje v mailovom zozname. Odpoveďou sú úplné mená užívateľov (ak sú známe) a úplná špecifikácia poštových schránok jednotlivých členov zoznamu.Príklad:
S: EXPN Interested-Parties
R: 250-Mark Crispin <Admin.MRC@SU-SCORE.ARPA>
R: 250-Fred Fonebone <Fonebone@USC-ISIQ.ARPA>
R: 250-<ABC@MIT-MC.ARPA>
- HELP (HELP)
Príkaz spôsobí, že "receiver-SMTP" pošle "sender-SMTP" informácie o príkazoch. Argumentom môže byť ľubovoľné meno príkazu; odpoveďou je viacej informácii o danom príkaze.
- NOOP (NOOP)
Tento príkaz nemá žiadnu funkciu, žiadne argumenty, používa sa na otestovanie spojenia "receiver-SMTP" posiela odpoveď OK.
- QUIT (QUIT)
Príkaz zatvorí komunikačný kanál, "receiver-SMTP" pošle odpoveď OK.
- TURN (TURN)
"receiver-SMTP" musí poslať odpoveď OK a úlohy sa zmocní "sender-SMTP" alebo odmietne poslať odpoveď a úlohu si ponechá "receiver-SMTP". Ak sa nepodarí vymeniť úlohy, "receiver-SMTP" pošle odpoveď 502.
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"
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
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
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
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
(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.