Medzi najpopulárnejšie spôsoby komunikácie, ktoré nám priniesol Internet je e-mail. Tento dokument popisuje princípy toho ako e-mail funguje. E-mail (rovnako ako mnoho iných funkcií počítača) môžete používať aj bez toho aby ste vedeli ako to vnútri funguje. Al vedieť viacej je lepšie, nie?
Keď posielate e-mailovú správu môžete vynechať telo správy. Môžete vynechať aj vyplnenie kolonky Predmet (Subject:), ale ak chcete aby správa niekam odišla musíte vyplniť položku Adresát (To:). Cesta e-mailu začína práve tu. Adresa môže vyzerať rôzne. Môže pozostávať len z mena (napr. rastos), môže špecifikovať meno užívateľa a meno počítača (napr. rastos@server), meno počítača môže byť aj úplné (napr. rastos@server.example.org). Najbežnejšou formou však je meno a doména (napr. rastos@example.org). Túto adresu teda zadáme do programu na písanie e-mailov. Aby tento program vedel kam správu poslať má dve možnosti:
sendmail
. Ten potom
použije postup popísaný v nasledujúcom bode.
SMTP server je server, ktorý v závislosti na druhu adresy môže urobiť jednu z nasledujúcich vecí:
smart host.
Veta Pokúsi sa správu doručiť sám
je krátka, ale skrýva sa za ňou
mnoho. SMTP server sa spojí s DNS serverom, aby si od neho vypýtal takzvaný
MX záznam pre danú doménu. MX je z anglického slova Mail
eXchanger
, teda stroj, ktorý je zodpovedný za vymieňanie
e-mailu pre danú doménu. DNS server vracia teda IP adresu tohto stroja.
DNS server môže mať takýchto záznamov viacero - ukazujúcich na rôzne IP
adresy. V takom prípade sa jednotlivé záznamy líšia takzvanou prioritou.
Je to celé kladné číslo, ktoré hovorí o tom, ktorý zo záznamov má vyššiu
prednosť. Nižšie číslo znamená vyššiu prioritu. Ako vyzerajú tieto MX
záznamy si môžeme pozrieť pomocou programu nslookup
, na novších
systémoch programom host
či dig
:
$ host -t mx rastos.org rastos.org mail is handled by 20 mx.smtp.cz. rastos.org mail is handled by 10 in.smtp.cz. $ dig MX +short=yes rastos.org 20 mx.smtp.cz. 10 in.smtp.cz. $ nslookup > set type=mx > rastos.org Server: 192.168.1.102 Address: 192.168.1.102#53 Non-authoritative answer: rastos.org mail exchanger = 20 mx.smtp.cz. rastos.org mail exchanger = 10 in.smtp.cz.
Keď už máme adresu poštového servera, môžeme si vyskúšať, čo vlastne robí náš e-mailový klient, keď mu odovzdáva našu správu cez SMTP:
> telnet in.smtp.cz 25 Trying 81.95.97.116... Connected to in.smtp.cz. Escape character is '^]'. 220 in.smtp.cz ESMTP ehlo yahoo.com 250-in.smtp.cz 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250-PIPELINING 250-STARTTLS 250 8BITMIME mail from: smith@yahoo.com 250 ok rcpt to: testaccount@rastos.org 250 ok data 354 go ahead Subject: citat Four fifths of all our troubles in this life would disappear if we would just sit down and keep still. -C. Coolidge . 250 ok 1086177079 qp 12124 quit 221 in.smtp.cz Connection closed by foreign host.
Ako vidíte server označil odosielateľa aj príjemcu správy za ok
.
Odosielateľ nie je ok
ak jeho doména má existujúci MX záznam.
Príjemca je ok
, ak daný server je skutočne mail exchanger pre
doménu príjemcu. SMTP server môže tiež zo sieťového spojenia zistiť
z akej IP adresy mu správa prichádza a porovnať to s tým, čo tvrdí
odosielateľ.
Server, ktorý nerobí tieto kontroly sa označuje termínom open
relay
. Takýto stroj je pokladom pre odosielateľov spam-u, ktorí
často falšujú adresu odosielateľa. Mnohé (no žiaľ nie všetky), takéto
servery sú zaznamenané v zozname, ako je napríklad
ORDB (Open Relay Database). Keďže e-mail môže prechádzať cez
viacero SMTP serverov, môžu v rámci proti-spamových opatrení jednotlivé
servery tiež kontrolovať či SMTP server, od ktorého preberajú správu,
nie je zaznamenaný v zozname ORDB.
V čase, keď si e-mail ešte len razil cestu na výslnie, sa najčastejšie
pošta preberala z lokálnej e-mailovej schránky. Je to vlastne súbor
do ktorého e-mailový server ukladá prichádzajúce správy jednu za druhou.
Tento súbor sa spravidla nachádza v adresári /var/spool/mail
(na niektorých systémoch /usr/spool/mail
alebo
/usr/lib/mail
). Program na čítanie e-mailu, označovaný
ako mailer (alebo aj Mail User Agent - MUA) číta tento súbor a umožňuje
jednotlivé správy zobraziť a spracovať. To samozrejme môže fungovať
vtedy, keď mailer beží na tom istom počítači, na ktorom sa nachádza
e-mailová schránka. Čo už dnes nie je tak časté.
Najčastejší spôsob prístupu k e-mailovej schránke je asi sieťovým protokolom POP (Post Office Protocol). Je to pomerne jednoduchý protokol, ktorým si mailer preberá správy z poštového servera. Znamená to teda, že správa od odosielateľa dorazí na server, a tam zostáva až do okamihu, kedy si ju odtiaľ nevyzdvihnete. Pri prevzatí správy z POP servera, sa zvyčajne správa na serveri zmaže a zostáva teda len na klientovi. Komunikáciu POP protokolom možno jednoducho nasimulovať napríklad takto:
> telnet pop3.hosting.cz 110 Trying 81.95.97.117... Connected to pop3.hosting.cz. Escape character is '^]'. +OK <29567.1086177339@pop3.smtp.cz> user testaccount@rastos.org +OK pass m0jehe5sl0 +OK list +OK 1 656 . retr 1 +OK Return-Path: <smith@yahoo.com> Delivered-To: testaccount@rastos.org Received: (qmail 12323 invoked from network); 2 Jun 2004 11:54:37 -0000 Received: from unknown (HELO in.smtp.cz) (81.95.97.116) by master.smtp.cz with DES-CBC3-SHA encrypted SMTP; 2 Jun 2004 11:54:37 -0000 Received: (qmail 15491 invoked from network); 2 Jun 2004 11:51:19 -0000 Received: from unknown (HELO yahoo.com) (213.15.194.19) by in.smtp.cz with SMTP; 2 Jun 2004 11:51:03 -0000 Subject: citat Message-ID: <20040602115437.12323.qmail@master.smtp.cz> Four fifths of all our troubles in this life would disappear if we would just sit down and keep still. -C. Coolidge . dele 1 +OK quit +OK Connection closed by foreign host.
Príkazy posielané klientom rozšifrujete asi ľahko: user
a pass
sa postarajú o našu autentifikáciu. list
vypíše koľko správ je v schránke a ako sú dlhé. retr
požiada o výpis správy, dele
správu zmaže a quit
ukončí spojenie.
Protokol POP nie je šifrovaný, takže heslo je prenášané v čistom texte. Tento nedostatok môže pomôcť odstrániť zabalenie POP protokolu do šifrovacieho protokolu SSL - to ale musí prirodzene podporovať ako server tak aj klient.
IMAP protokol sa trocha podobá protokolu POP. Tiež je to protokol, ktorý umožňuje e-mailovému klientovi pristupovať k správam na serveri. Hlavný rozdiel je v tom, že správy zostávajú na serveri. Nepresúvajú sa na lokálny disk. Znamená to teda, že e-mailový klient len sprostredkováva pohľad na schránku sídliacu na serveri. Zmenou klienta či počítača, za ktorým sedíte sa nič nedeje. Stála vidíte tie isté správy, označenie prečítaných správa sa nemení, zostáva štruktúra priečinkov a tak ďalej. Uľahčuje to tiež systém zálohovania pretože sa nemusia zálohovať schránky jednotlivých užívateľov roztrúsené po všetkých pracovných staniciach.
Komunikácia protokolom IMAP je trocha zložitejšia. Tu je stručná ukážka:
> telnet pop3.hosting.cz 143 Trying 81.95.97.117... Connected to pop3.hosting.cz. Escape character is '^]'. * OK Courier-IMAP ready. Copyright 1998-2002 Double Precision, Inc. See COPYING for distribution information. a001 login testaccount@rastos.org m0jehe5l0 a001 OK LOGIN Ok. a002 select inbox * FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent) * OK [PERMANENTFLAGS (\Draft \Answered \Flagged \Deleted \Seen)] Limited * 1 EXISTS * 1 RECENT * OK [UIDVALIDITY 1082124563] Ok a002 OK [READ-WRITE] Ok a003 fetch 1:1 full * 1 FETCH (FLAGS (\Recent) INTERNALDATE "02-Jun-2004 14:00:32 +0200" RFC822.SIZE 669 ENVELOPE (NIL "citat" NIL NIL NIL NIL NIL NIL NIL "<20040602120031.21486.qmail@master.smtp.cz>") BODY ("text" "plain" NIL NIL NIL "8bit" 134 2)) a003 OK FETCH completed. a004 fetch 1:1 body[TEXT] * 1 FETCH (BODY[TEXT] {134} Four fifths of all our troubles in this life would disappear if we would just sit down and keep still. -C. Coolidge ) * 1 FETCH (FLAGS (\Seen \Recent)) a004 OK FETCH completed. a005 store 1:1 +FLAGS (\Deleted) * 1 FETCH (FLAGS (\Seen \Deleted \Recent)) a006 OK STORE completed. a006 expunge * 1 EXPUNGE * 0 EXISTS * 0 RECENT a006 OK EXPUNGE completed a007 logout * BYE Courier-IMAP server shutting down a007 OK LOGOUT completed Connection closed by foreign host.
Väčšina príkazov začína unikátnym identifikátorom (ja som pre jednoduchosť
použil identifikátory začínajúce s a00
). Príkaz select
zvolí priečinok, ktorého sa budú týkať ďalšie príkazy. fetch
môže vrátiť rôzne časti správy. V našom prípade to bola najprv hlavička
a potom telo. Protokol IMAP ponúka tiež rozsiahlu sadu príkazov pre
nastavovanie príznakov správ (videná
, zmazaná
, odpovedaná
,
atď.) a príkazov na prácu s priečinkami (vytvoriť
, zmazať
,
premenovať
, atď.).
Podobne ako pri protokole POP, komunikácia klienta so serverom nemusí byť šifrovaná.
Každá e-mailová správa sa skladá z hlavičky a tela. Oddelené sú prázdnym riadkom.
Hlavička (angl. header) obsahuje niekoľko druhov informácií. Ich význam určujú kľúčové slová na začiatku riadku nasledované dvojbodkov:
Telo e-mailovej správy tvorí užívateľ a preto by sa mohlo zdať, že v ňom môže byť čokoľvek. Ale tak ako aj v iných oblastiach nášho života aj pre telo správy platia isté pravidlá. Spomeniem aspoň niekoľko z nich:
citovaťpôvodnú správu. Citujte to, čo príjemcovi pripomenie tému diskusie, ale necitujte zbytočne veľa.
Okrem týchto pravidiel, ktoré onedlho oslávia 10 výročie vzniku, pridám ešte zopár rád vhodných v súčasnosti. V poslednej dobe sa na Internete šíri nemálo vírusov práve pomocou mailu. Veľká časť z nich sa spolieha na neopatrnosť užívateľov. Preto buďte opatrní; neotvárajte pripojené súbory od neznámych odosielateľov. Vírusy tiež často využívajú chyby v programoch na čítanie e-mailov. Voľte preto dobre.
A mail store is not a file system and SMTP is not a file transfer protocol.