Základy elektronickej pošty v TCP/IP 6

Často sa stáva, že elektronickou poštou posielame aj binárne súbory (napr. súbory s koncovkou *.zip, *.jpeg, *.gif a po...


Č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 7bitového ASCII kódu.
RFC 1521 obsahuje tieto algoritmy kódovania:
l7-bit: Ide o implicitnú metódu kódovania, ktorá sa predpokladá, pokiaí nie je
hlavičkové pole Content-Transfer-Encoding uvedené. Dáta takto spracované nie sú
vÖbec kódované, sú iba rozdelené do krátkych riadkov, ktoré obsahujú len znaky
us-ascii, t.j. znaky zo základného rozsahu 32 až 126.
l8-bit: Dáta transformované týmto algoritmom opäť nie sú kódované, sú iba
rozdelené do krátkych riadkov. MÖžu sa tu vyskytnúť aj znaky mimo základný
rozsah 32 až 126.
binary: Okrem možného výskytu znakov mimo rozsahu 32 až 126 nie je zaručená ani
dížka riadkov. Tento algoritmus nepredstavuje žiadne kódovanie.
quoted-printable: Tento typ kódovania je vhodný pre dáta, ktoré z väčšej časti
obsahujú ASCII znaky zo základného rozsahu (32 až 126) a len malý počet je ich
treba kódovať. Výsledkom kódovania je teda ASCII text, ktorý je aj bez
dekódovania relatívne čitateíný. Kódovaný mÖže byť aj text, ktorý obsahuje len
ASCII znaky. Robí sa to z dÖvodu zabezpečenia integrity dát (napr. ak dáta
prechádzajú cez bránu (gateway), ktorá vykonáva náhradu znakov alebo
zarovnávanie riadkov).
Ďubovolný znak (okrem znaku konca riadku) je nahradený znakom =, za ktorým
nasleduje hexadecimálna hodnota znaku. Znaky s desiatkovou hodnotou od 33 do 60
a od 62 do 126 vrátane sú nahradené ASCII znakmi (od ! do < a od > do
~). Znaky s hodnotou 9 a 32 sú nahradené znakmi TAB a SPACE. Tieto znaky sa
nesmú vyskytnúť na konci riadku. Koniec riadku je vyjadrený znakom CRLF.
Zakódovaný riadok mÖže mať maximálne 76 znakov. Pokiaí je riadok dlhší, vloží
sa na jeho koniec znak =.
base64: Tento algoritmus je pravdepodobne najvhodnejším pre kódovanie binárnych
súborov. Kódované dáta sú iba o tretinu dlhšie než dáta pÖvodné. Kódovací
algoritmus je jednoduchý. Používa tabuíku base64, ktorá obsahuje 64 znakov a
znak "=". Znak "=" sa používa pre špeciálne účely. Na začiatku kódovania sa
binárne dáta rozdelia na skupiny po troch bajtoch a 24 bitov každej trojice sa
prerozdelí na 4 bloky po 6 bitov. Každých 6 bitov je potom nahradených
zodpovedajúcim znakom z tabuíky base64. Takto zakódovaný binárny súbor sa musí
usporiadať do riadkov, ktorých maximálna dížka je 76 znakov. Pokiaí nie je
dížka pÖvodného súboru deliteíná tromi, zostane nám na konci kódovania menej
než 24 bitov, teda 8 alebo 16. V prvom prípade sa počet bitov doplní sprava
nulami na 12, teda dva bloky, ktoré sa zakódujú pomocou dvoch znakov. Za týmito
znakmi sa ešte vloží dvakrát znak "=". V druhom prípade sa počet bitov doplní
sprava nulami na 18, z toho dostaneme tri znaky, ktoré ešte sa doplnia znakom
"=". Dížka výsledného kódovaného binárneho súboru je vždy deliteíná štyrmi.
lx-anything: Štandard RFC 1521 umožňuje použiť aj ďalšie typy kódovania. Ich
označenie v hlavičkovom poli Content--Transfer-Encoding musí začínať prefixom
x-. Tieto nové typy kódovania mÖžu byť použité pre experimenty. Ak sa majú
používať v praxi, musia byť podía RFC 2048 registrované odoslaním príslušného
dokumentu na adresu: ietf-types@iana.org. Registrované algoritmy sú uverejnené
na adrese: ftp://ftp.isi.edu/
in-notes/iana/assignments/transferencodings. Komunikačné protokoly
V začiatkoch elektronickej pošty sa pre 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 a RFC 822. 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. Druhým typom
protokolov, ktoré úzko súvisia s elektronickou poštou, sú protokoly POP3 a
IMAP4. Okrem nich existuje aj ich staršie verzie napr. POP2, IMAP2, IMAP2BIS,
IMAP3 apod. Tieto protokoly zabezpečujú prenos správ zo servera (MTA) ku
klientovi (UA). Najznámejší a najpoužívanejší protokol POP3 je definovaný v
dokumente RFC 1725.
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 protokolu 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 siedmych
bitov ASCII. Ak sa takéto 7bitové ASCII znaky prenášajú kanálom, ktorý je
upravený na prenos 8bitových znakov, čo je prípad protokolu TCP, potom SMTP
definuje, že 7bitové 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" 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). 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, odmietne príjemcu. "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 sa ešte pošle š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
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. lDATA (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ť íubovolné znaky tabuíky ASCII. Ako posledné dáta sa odošle
sekvencia <CRLF>.< CRLF>, ktorá indikuje koniec posielania poštových dát.
lĘ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, 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 jeho poštovej schránky.
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.
HELP (HELP): Príkaz spÖsobí, že "receiver-SMTP" pošle "sender-SMTP" informácie
o príkazoch. Argumentom mÖže byť íubovolné meno príkazu, odpoveďou je viacej
informácií 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 budem používať označenie "R:" pre "receiver-SMTP" a "S:" pre
"sender-SMTP". Nasleduje príklad 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
Protokol POP3
POP3 je najnovšou a najčastejšie používanou verziou protokolu Post Office
Protocol, ktorý klientom poskytuje prístup k poštovému serveru (poštovej
schránke MAIL BOX), na ktorom sú ukladané správy pre užívateía. Užívatelia si
tak mÖžu vyberať správy elektronickej pošty dočasne uložené na servery POP3.
Protokol POP3 používa podobne ako protokol SMTP príkazy, na základe ktorých
umožňuje prenos pošty zo servera do lokálneho počítača.
Protokol POP3 je definovaný v dokumente RFC 1725. Štandardne je služba POP3
poskytovaná na port 110. Relácia POP3 zahrňuje výmenu správ medzi klientom a
serverom. Odovzdávanie správ medzi nimi sa riadi formátom správ špecifikovaných
v dokumente RFC 822. Relácia je tvorená dvomi druhmi správ: príkazmi a
odpoveďami.
Relácia POP3 je uskutočňovaná v niekoíkých fázach: lSpojenie: Klient otvorí
spojenie a server odpovie pozitívne napríklad S: +OK POP3 server ready.
Autorizácia: Po vytvorení spojenia server vyžaduje, aby sa klient
identifikoval. Pre tieto účely sú dostupné dva mechanizmy: Jeden z nich
zahrňuje šifrovanie a je použitý v prípade, že užívateí nechce posielať heslá.
Aktualizácia: Keď užívateí pošle príkaz QUIT, server prejde do štádia
aktualizácie. Sú vykonané všetky aktualizácie súborov (napríklad mazanie), o
ktoré užívateí požiadal. Pokiaí má byť spojenie ukončené ešte pre zadaním
príkazu QUIT, server vynechá aktualizačnú fázu a ponechá súbory v stave, v akom
boli pred začatím relácie.
Príkazy protokolu POP3
V ďalšom texte budem používať označenie "C:" pre klienta a "S:" pre server.
USER name: Argument "name" je reťazec identifikujúci poštovú schránku. Po
vytvorení spojenia server vyžaduje, aby sa klient identifikoval. Príkazom "USER
name" sa serveru posiela prihlasovacie meno užívateía. Server odpovedá +OK, ak
mailbox so zadaním meno existuje a ERR, ak mailbox neexistuje.
Príklad: C: USER peterg
S: +OK
...
C: USER xyz
S: -ERR
PASS string: Argument "string" je reťazec umožňujúci prístup k poštovej
schránke. Po vytvorení spojenia server vyžaduje, aby sa klient identifikoval.
Príkazom "PASS string" sa serveru posiela heslo užívateía.
QUIT: Príkaz sa používa na uzatvorenie komunikačného kanála.
STAT: Tento príkaz sa používa na zistenie aktuálneho stavu komunikácie.
Príklad: C: STAT S: +OK 2 320
Prvé číslo nás informuje o počte správ, ktoré sa nachádzajú v poštovej schránke
(mailbox). V poradí druhá hodnota predstavuje súčet veíkostí správ, ktoré sa v
tom čase nachádzajú v poštovej schránke (táto hodnota sa udáva v oktetoch).
LIST [msg]: Príkaz LIST umožňuje zistiť počet správ uložených na serveri (v
poštovej schránke daného užívateía) a veíkosť správ v oktetoch. Argument
príkazu je voliteíný a obsahuje číslo správy.
RETR msg: Príkazom sa prenesie požadovaná správa zo servera ku klientovi.
Argument príkazu musí obsahovať číslo správy.
DELE msg: Príkaz vymaže zadanú správu zo servera. Argument príkazu musí
obsahovať číslo správy.
NOOP: Tento príkaz nemá žiadnu funkciu, žiadne argumenty, používa sa na
otestovanie spojenia, server POP3 posiela odpoveď +OK.
RSET: Príkaz umožňuje predčasne ukončiť aktuálnu poštovú transakciu, server
POP3 posiela odpoveď +OK.
APOP name digest: Je voliteíný príkaz, ktorý sa používa v priebehu autorizácie
užívateía na serveri. Argumentom príkazu je reťazec identifikujúci poštovú
schránku a MD5 string, ktorý je definovaný v dokumente RFC 1321 (obidva
argumenty musia byť zadané).
TOP msg n: Argument "msg" označuje číslo správy, argument "n" označuje počet
riadkov tela správy. Napr. po zadaní príkazu TOP 1 10 server POP3 pošle
záhlavie správy, prázdny riadok a prvých 10 riadkov tela správy.
UIDL [msg]: Ak bol argument zadaný, server POP3 vydá pozitívnu odpoveď z
riadkom obsahujúcim informáciu pre danú správu. Tento riadok sa nazýva
"unique-id listing" správy a vyjadruje íubovolný reťazec určený serverom,
zostavený zo znakov z rozsahu 33 až 126, ktorý je jedinečným identifikátorom
správy v "maildrop" a ktorý trvá počas spojenia. Server "unique-id" nemÖže
použiť, kým ho používa iný objekt. Maximálna dížka tohto reťazca je 70 znakov.
Dokument RFC 1725 stanovuje minimálnu konfiguráciu príkazov protokolu POP3
takto: USER, PASS, QUIT, STAT, LIST, RETR, DELE, NOOP a RSET. Zostavajúce tri
príkazy sú voliteíné a server POP3 ich nemusí podporovať. Každý príkaz
protokolu POP3 mÖže poslať klientovi odpoveď buď "+OK" kladná odpoveď, príkaz
bol úspešne vykonaný, alebo "-ERR" záporná odpoveď, chybový stav. Server nesmie
poslať tieto odpovede takto: "+ok, -err", t.j. konvertované do malých písmen
ASCII.
Protokol IMAP4
Bol predstavený v decembri 1994, pod označením IMAP4 (RFC 1730). Predchádzajúce
protokoly, ktoré vykonávali rovnaké úlohy, mali rovnakú skratku, ale iné
prípony: IMAP2 (RFC 1176) a IMAP3 (RFC 1203) sa pokladali za "Interactive Mail
Access Protocols" (Interaktívne protokoly pre prístup k pošte). IMAP beží na
vrchole TCP/IP. Nejde však o protokol pre vlastné posielanie elektronickej
pošty.
IMAP (Internet Mail Access Protocol) je novým poštovým protokolom, ktorý má
tendenciu konkurovať dnes používanému protokolu POP3. IMAP sa od POP3 podstatne
líši zatiaí čo POP3 iba prehrá celý mailbox z poštového servera na lokálny
počítač, IMAP ponúkne svojmu klientovi na začiatku spojenia len zoznam správ.
Klient si potom má možnosť vybrať správu, ktorú chce vidieť a IMAP mu ju dodá.
Rozdiel je teda ten, že IMAP neprenáša mailbox z jedného počítača na druhý,
mailbox je stále na serveri a klient s ním mÖže pracovať ako keby bol mailbox
na jeho vlastnom počítači. Výhodou protokolu IMAP je, že mÖže pracovať navlas
rovnako ako protokol POP3. Podstatnou nevýhodou tohoto protokolu je jeho
výrazne menšie rozšírenie oproti POP3.
Najnovšia verzia tohto protokolu pochádza z decembra 1996 a má označenie
IMAP4rev1. Protokol IMAP4rev1 má pridelený port 143 a je definovaný v dokumente
RFC 2060.
Záver
Cieíom seriálu bolo zoznámiť užívateíov so základnými princípmi elektronickej
pošty. Dúfam, že získane informácie vám pomohli preniknúť do jej "pozadia".

Archív RFC dokumentov
Štandardy Internetu sa zverejňujú v RFC dokumentoch. Tieto dokumenty sú
umiestnené v rÖznych archívoch siete Internet. Jeden zaujímavý archív týchto
dokumentov, nielen o elektronickej pošte sa nachádza na adrese
http://www.rfc.net/.
MIME
Aktuálny listing registrovaných MIME (Multipurpose Internet Mail Extensions)
typov, prípadne detailnejšie informácie híadajte na serveri:
http://www.mime-types.com/
1 0795 / pen









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.