Elektronická pošta

Vlastimil Zeman, zeman@mail.muni.cz

Obsah

Úvod

Elektronická pošta bola pôvodne jednoduchá služba, ktorá kopírovala súbor z jedného počítača do druhého, kde ho pripojila k súboru poštovej schránky adresáta. V zásade tento proces predstavuje podstatu elektronickej pošty, aj keď stále rastúca sieť viedla k nutnosti nájsť prepracovanejšiu schému.

Boli napisané rôzne štandardy výmeny elektronickej pošty. Systémy v sieti Internet sa držia štandardu, ktorý bol uvedený v dokumente RFC 2822 a ktorý doplňuje niekoľko daľších dokumentov RFC. Tieto dokumenty RFC popisujú spôsob prenášania špeciálných znakov apod., ktorý nie je závislý na počítačovej platforme. Daľším štandardom je napr. X.400, čo je sada doporučení od ITU-T. Na Internete sa nepresadila, ale napriek tomu býva používaná v rámci intranetu organizácií a ako časť proprietiárneho softvéru.

Vo svete elektronickej pošty je možné jednotlivé programy rodeliť na nasledujúce entity:

RFC 2822

Tento štandard špecifikuje syntax pre textové správy, ktoré sú posielané medzi užívateľmi počítačov. Nahradzuje dokument RFC 822, Standard for the Format of ARPA Internet Text Messages, a doplňa ho zmenami, ktoré boli špecifikované v iných dokumentoch RFC a teda uceluje skúsenosti získané od uvedenia dokumentu RFC 822.

Poštová správa sa spravidla skladá z obsahu správy, čo je text napisaný odosieľatelom, a z dát, ktoré sa vzťahujú k transportnému médiu ako je adresa odosielateľa a adresáta, ktoré sa nazývajú obálka správy.

V závislosti na tom, kadiaľ prechádza daná správa, možu byť dáta na obálke pozmenené.

V RFC 2822 sa popisuje iba obsah správy. Ten sa skladá z postupnosti ASCII znakov rozdelených do riadkov. Riadky môžu byť maximálne 988 znakov dlhé a sú od seba oddelené sekvenciou znakov Carriage return a Line feed (CRLF). Obsah správy predstavujú všetky dáta, ktoré sú potrebné pri manipulácii s poštovou správou a ktoré sa nevzťahujú k žiadnemu transportnému mechanizmu ako napr. riadok s predmetom správy, zoznam všetkých adresátov alebo dátum zaslania danej správy. Táto kategória dát je zväčša uvedená pred vlastným textom poštovej správy a tvorí tzv. hlavičku správy. Od textu správy je oddelená prázdnym riadkom.

Hlavička sa skladá z jednotlivých polí (header fields), ktoré majú nasledujúci formát:

nazov pola: telo pola

Názov poľa môžu tvoriť iba tlačiteľné znaky okrem dvojbodky. Telo môže byť buď neštukturované alebo štukturované. Štrukturované telo ma špecifickú syntax popísané v dokumente RFC 2822. Jediné povinné polia sú orig-date (dátum a čas, kedy užívateľ predal správu poštovému serveru na doručenie) a from (zoznam adries odosielaťela správy; ak je uvedená viac než jedna adresa, musí byť prítomná aj hlavička sender).

From: John Doe 
To: Mary Smith 
Subject: Saying Hello
Date: Fri, 21 Nov 1997 09:55:06 -0600
Message-ID: <1234@local.machine.example>

This is a message just to say hello.
So, "Hello".

Multipurpose Internet Mail Extensions

Ako bolo uvedené na začiatku, štandard RFC 2822 špecifikuje syntax len pre textové správy. Nepopisuje sa v ňom práca s obrázkami, audiom, atď. Toto rozšírenie, známe ako MIME, je špecifikované v sérii dokumentov RFC 2045 až RFC 2049, ktoré popisujú mechnizmus pre vysielanie takýchto dát s pomocou eletronickej pošty.

Dokumenty RFC, ktoré špecifikujú MIME sú delené podľa predmetu špecifikácie na:

Príklady typov:

Jednotlivé časti správy musia ešte obsahovať hlavičku Content-Transfer-Encoding (7bit, 8bit, binary alebo base64) a nepovinne Content-ID (identifikátor) a Content-Description (textový popis).

Simple Mail Transfer Protocol

SMTP je relatívne jednoduchý, znakovo orientovaný protokol určený na odosielanie správ, v ktoré môžu mať jedného alebo viacerých adresátov. Je definovaný v dokumente RFC 2821. Funguje na princípe klient/server, kde klient vysiela poštovú správu na server. Klientom môže byť buď MUA koncového užívateľa, alebo daľší server MTA.

SMTP klient inicializuje TCP spojenie so serverom na porte 25 (ak nie je v konfigurácii uvedené inak). Protokol SMTP je neautentizovaný a nešifrovaný. Je celkom jednoduché otestovať SMTP server s pomocou programu telnet (viď. Príklad komunikácie s SMTP serverom).

Práca s poštou

Nasledujúci obrázok zjednodušene zobrazuje priebeh zaslania a doručenia elektronickej pošty. Schéma práce systému elektornickej pošty

  1. Užívateľka Alica napíše text správy a určí adresáta. Tieto dáta od nej prevezme jej MUA a pridá ku nim základnú hlavičku a celé to pošle k doručeniu lokálnemu MTA smtp.a.org s použitím protokolu SMTP.
  2. MTA doplní hlavičku o ďalšie údaje.

  3. MTA sa zameria na doménovú adresu adresáta (bob@b.org)a požiada DNS pre doménu b.org ns.b.org o zaslanie zoznamu serverov zodpovedných za prímanie pošty.
  4. Každá doména môže mať určených niekoľko počítačov prímajúcich poštové správy. V systéme DNS sú zoradené podľa tzv. prioritného čísla (čím je menšie, tým vyššia je priorita) zapísaného v tzv. MX (Mail Exchange) zázname. V nasledujúcom MX zázname má počítač prioritu 10.

    MX 10 mx.b.org.

  5. smtp.a.org obdrží od ns.b.org zoznam serverov spolu s ich prioritnými číslami.
  6. smtp.a.org sa pokúsi nadviazať spojenie so serverom s najnižším prioritným číslom (mx.b.org). Ak sa nepodarí nadviazať spojenie s týmto serverom je oslovený ďaľší server s vyšším prioritným číslom. Ak sa nepodarí nadviazať spojenie so žiadnym autoritatívnym serverom, môže byť odoslanie správy odložené a neskôr stornované s vygenerovaním chybovej správy odosielateľovi alebo správcovi poštového serveru.
    Ak by smtp.a.org neobdržalo žiaden MX záznam, ale len A záznam, bude použitý namiesto MX záznamu A záznam. A záznam však nemie byť použitý ak bol obdržaný alespoň jeden MX záznam.
    Akonáhle sa MTA smtp.a.org podarí nadviazať spojenie s niektorým serverom, prenesie mu správu prostredníctvom protokolu SMTP.
  7. Prímajúce MTA mx.b.org skontroluje časť na ľavo od zavináča (bob@b.org). Po úspešnej kontrole doručí správu do Bobovej schránky.
    Pre úplnosť je treba dodať, že medzi MTA a poštovou schránkou uživateľa môže pôsobiť MDA, ktorý preskúma správu a môže na ňu aplikovať radu filtrov.Tak je možné docieliť napr. doručenia do rôznych poštových schránok, automatické odpovede odosielateľovi, presmerovanie pošty, atď. To všetko priamo na serveri bez aktívneho zásahu adresáta.

  8. Hneď ako je správa doručená do poštovej schránky môže si ju adresát prečítať. Buď k tomu použije MUA, ktorý beží priamo na serveri (ak na ňom má účet), alebo si ju stiahne na svoj osobný počítač. Na to sú navrhnuté napríklad protokoly POP3 anebo novší IMAP4. V tomto prípade si Bob stiahne svoju poštu od Alice z POP3 servera pop3.b.org.
  9. POP3 (Post Office Protocol version 3) - internetový protokol aplikačnej vrstvy, ktorý sa využíva na prijatie pošty zo vzdialeného servera prostredníctvom TCP/IP spojenia na porte 110. Protokol POP3 je tretia verzia POP protokolu. POP3 bol štandardizovaný v roku 1996 v dokumente RFC 1996.
    POP3 je výhodný pre užívateľov, ktorí majú časovo obmädzené pripojenie k Internetu (ako je napr. dial-up). Správy si zo svojho poštového serveru iba stiahnu, odpoja sa a môžu si čítať doručenú poštu ľubovolne dlho a byť pri tom odpojený od Internetu. Menšou nevýhodou (ale pre niekoho to môže byť i vyhodné) je fakt, že po prenesení správ zo serveru do klienta sa na serveri tieto správy vymažú. Vetšina poštových klientov však zanechanie správ na serveri umožňuje.

    IMAP (Internet Mail Access Protocol) - internetový protokol umožňujúci prístup k poštovým schránkam. V súčasnosti sa používa verzia IMAP4 (IMAP version 4 revision 1 - IMAP4rev1) definovaná v RFC 3501.
    Na rozdiel od protokolu POP3 je optimalizovaný pre prácu v dlhodobo pripojenom režime, keď správy zostávajú uložené na servere a priebežne sa sťahujú, keď sú potrebné. Rozdiely zahrňujú podporu pre prácu viacerých pripojených klientov zároveň, uchovávánie stavov správ na servere, podporu viac zložek a prehľadávanie správ na strane servera.

Príklady

Nasledujúci príklad komunikácie s SMTP serverom smtp.sks2.muni.cz, ktorý sa nachádza na Komárove. Príklad ukazuje nezávislosť obálky poštovej správy od jej hlavičky. Po tomto príklade je uvedený obsah poštovej správy.

Komunikácia s SMTP serverom

V nasledujúcej komunikácii je pre vstup užívateľa použité zväčšené tučné písmo. Výstup servera je napisaný bez zvýraznenia.

xzeman2@benqo:~$ telnet smtp.sks2.muni.cz 25
Trying 147.251.205.1...
Connected to ns.sks2.muni.cz.
Escape character is '^]'.
220 ns.sks2.muni.cz ESMTP Postfix
HELO sks2.muni.cz
250 ns.sks2.muni.cz
MAIL FROM:<komarov@sks2.muni.cz>
250 Ok
RCPT TO:<zeman@mail.muni.cz>
250 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: posta z Komarova
From: iny.komarov@sks2.muni.cz
To: xzeman2@aisa.fi.muni.cz

Posielam Ti srdecne pozdravy z Komarova.
.
250 Ok: queued as 4B1613B540
QUIT
221 Bye
Connection closed by foreign host.

Prijatá správa

Nasledujúci výpis zobrazuje poštovú správu, tak ako bola doručená potom čo bola odoslaná podľa predchádzajúceho postupu.

Received: from the incoming queue by sender:ariadna.fi.muni.cz@ariadna.fi.muni.cz at Tue, 23 Oct 2007 09:51:28 +0200
X-Muni-Spam-Status: -9 CRM114_HAM,NO_REAL_NAME
X-CRM114-Status: Ham, Score=3.2729
X-Bogosity: Unsure, tests=bogofilter, spamicity=0.501661, version=1.1.5
		Return-Path: <komarov@sks2.muni.cz>
Delivered-To: 140506@mail.muni.cz
Received: from minas.ics.muni.cz (minas.ics.muni.cz [147.251.4.40])
	by arethusa2.fi.muni.cz (Postfix) with ESMTP id 9FAFD66C776
	for <zeman@mail.muni.cz>; Tue, 23 Oct 2007 09:51:24 +0200 (CEST)
Received: from ns.sks2.muni.cz (stud-koma.bb.muni.cz [147.251.242.58])
	by minas.ics.muni.cz (8.13.8/8.13.8/SuSE Linux 0.8) with ESMTP id l9N7pNGL030160
	for <zeman@mail.muni.cz>; Tue, 23 Oct 2007 09:51:24 +0200
Received: from sks2.muni.cz (benqo.sks2.muni.cz [147.251.206.28])
	by ns.sks2.muni.cz (Postfix) with SMTP id 4B1613B540
	for <zeman@mail.muni.cz>; Tue, 23 Oct 2007 09:49:43 +0200 (CEST)
Subject: posta z Komarova
From: iny.komarov@sks2.muni.cz
To: xzeman2@aisa.fi.muni.cz
Message-Id: <20071023074943.4B1613B540@ns.sks2.muni.cz>
Date: Tue, 23 Oct 2007 09:49:43 +0200 (CEST)
X-Filter-Version: 1.15 (minas)
X-Muni-Envelope-From: komarov@sks2.muni.cz
X-Muni-Virus-Test: Clean
X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-3.0 (minas.ics.muni.cz [147.251.4.35]); Tue, 23 Oct 2007 09:51:24 +0200 (CEST)
X-ISMU-Expires: 2008-10-22

Posielam Ti srdecne pozdravy z Komarova.

Spam

To čo je to vlastne spam, má niekoľko definícií:.

Open relay

V minulom desaťročí boli pri zasielaní spamu nejbežnejšie používať tzv. open relay serveri. Open relay je MTA, ktorý je konfigurovaný tak, aby poslal správu z akéhokoľvek miesta akumukoľvek adresátovi. V pôvodnej SMTP architektúre, bolo toto východzím správaním, lebo štandard bol napísaný pred érou spamu, keď sa na Internete vyskytovalo len zopár pripojených staníc. S narastajúcim počtom užívateľov Internetu spam dostal svoj význam. Spameri teda využívali open relay serveri na preposielanie hromady spamu, o ktorého doručenie sa starali open relay serveri.

Blacklisting

Blacklisting rozhoduje, či správa je alebo nie je spam, buď podľa adresy odosielatela, alebo podľa IP adresy, z ktorej dopis prišiel na cieľový SMTP server. Tieto adresy sú pridávané na tzv. Čiernu listinu (blacklist). Na základe tohoto zoznamu, systém buď správu rovno odmietne, alebo je informácia o umiestnení odosielatela na blacklistu použitá pri ďalšom filtrování pošty.

Blacklisty fungujú na mnohých princípoch, dnes sú nejčastejšie zoznamy pracujúce v reálnom čase (tzv. RBL - realtime blackhole list), ktoré ku svojej funkcii typicky používajú systém DNS, takže sa často označujú skratkou DNSBL. Tieto blacklisty prevádzkujú organizácie, ktoré zbierajú a registrujú hlásenia o spamujúcich počítačoch a poskytujú informácie o tom, či sa nejaká IP adresa v zozname nachádza alebo nie.

Greylisting

MTA, ktorý používa greylisting, dočasne odmieta poštové správy od odesielatela, ktorého nepozná. Ak sa nejedná o spam, pokúsi sa odosielatel po určitej dobe odoslať správu znova, pokiaľ servery, ktoré rozosieľajú spam sa často neobťažujú odeosielať správy viackrát a spam tak v mnohých prípadoch vôbec nedorazí.

Server používajúcí greylisting si typicky ukládá trojicu údajov: IP adresu pripojeného serveru, adresu odesílatele a adresáta na obálke. Ak server obdrží správu s údajmi, ktoré nemá v databáze, email dočasne odmietne.

Výhody:

Nevýhody:

Nolisting

Princíp tohto spôsobu obrany pred spamom je žaložený na neexistencii primárneho mail servera a pracujúcom sekundárnom mail serveri. Teda pokus poslať správu na primárny mail server musí vždy skončiť neúspechom. Ak sa nejedná o spam, odosielajúci mail server sa pokúsi poslať správu na sekundárny mail server. kde by mal byť pokus úspešný. Ak bola správa od spamera tak sa pravdepodobne už nepokúsi poslať ju znova. Napriek tomu, niektoré spamery sú známe tým, že obchádzajú primárny mail server a pristupujú priamo k sekundárnemu. Ten je väčšinou menej zabezpečený ako primárny, u ktorého by tento spam nebol akceptovaný.

Antispamové filtre

Ak je spam doručený na cieľový počítač, môže užívateľ použiť antispamové filtre, ktoré sa ďalej snažia oddeliť nevyžiadanú poštu od relevantných správ. Hneď ako MTA doručí poštovú správu na cieľový systém, preberá ju MDA, ktorý môže správu filtrovať ešte pred vlastným doručením do užívateľovej poštovej schránky. Medzi nejpoužívanejšie antispamové programy patrí SpamAssassin, ktorý funguje ako poštový filter a klasifikátor prichádzajúcich poštových správ. Na základe širokej škály heuristických testov priradí každej správe hodnotu vyjadrujúce pravdepodobnosť, že daná správa je nevyžiadaná. SpamAssassin môže zvýšiť svoju úspešnosť a znížiť chybovosť tým, že se učí rozoznávať spam nad pravideľne aktualizovanou množinou nevyžiadaných správ a množinou relevantních zpráv.

MDA potom podľa získanej klasifikáce môže napr. správu presunúť do užívateľom oddelenej časti.

Postfix

Postfix je MTA, teda počítačový program starajúci sa o smerovanie a doručovanie pošty. Ma za cieľ byť rýchlym, jednoducho administrovateľným a bezpečnejším ako široko používaný Sendmail MTA.

Vydáva sa pod licenciou IBM Public License 1.0, čo je licencia, ktorá zaraďuje Postfix medzi freeware, ale je nekompatibilná s licenciou GPL.

Kedysi bol Postfix známy pod menom VMailer a IBM Secure Mailer, ktorého autorom bol Wietse Venema, ktorý ho napísal počas svojho pôsobenia v IBM. Dodnes sa však podiela na vývoji Postfixu.

Ako hlavné rysy postfixu je môžné zmieniť:

Postfix je možné získať z jeho domovskej stránky wwww.postfix.org. V nasledujúcich častiach je používaný Postfix 2.4 stable release Patchlevel 6.

Inštalácia

Postfix pracuje podobne ako sendmail s unixovou poštovou schránkou, používa aliasy a rozumie i súboru ~/.forward. Ak je v systéme inštalovaný sendmail, jeho binárne súbory v /usr/bin budú prepísané, preto je vhodné pred inštaláciou vytvoriť ich zálohu.

Hlavným démonom servera Postfix je démon master, ktorý podľa potreby spúšťa ďalšie programy. Spustenie a zastavenie agenta Postfix zaisťuje príkaz postfix. Ďalšie jeho príkazy sa rovnako ako tento nachádzajú v adresári /usr/bin (ak nebolo pri inštalácii definované inak) a ich názvy začínajú textom post.

Pred inštaláciou je potrebné vytvoriť skupiny a užívateľov, s ktorými bude Postfix pracovať. Je teda potrebné doplniť súbor /etc/group napríklad týmito skupinami:

_postfix:*:507:_postfix
_postdrop:*:508:

a súbor /etc/passwd

_postfix:*:507:507:Postfix Daemon:/nonexistent:/sbin/nologin

Teraz je už možné spustiť kompiláciu a inštaláciu Postfixa (na rozdiel od mnohých programov sa pred kompiláciou Postfixa nespúšta skript configure). Ak sú vyriešené všetky závislosti tak príkaz make prebehne bez chybových hlásení. Základná konfigurácia (v ktorej si je možné vybrat kde budú jednotlivé časti Posfixa uložené, pod akým užívateľom budú spušťané, atď.) prebieha počas vykonávania príkazu make install.

Do adresára /var/spool/postfix sú ukladané všetky prichádzajúce správy s ktorými server pracuje (ak nebolo pri inštalácii definované inak). V tomto adresári je možné nájsť tiež poštové fronty nad ktorými Postfix pracuje. Pre ich kontrolu môžeme využívať štandardné unixové príkazy (find, cat, grep ...).

Konfigurácia

Postfix sa konfiguruje pomocou premenných v súbore /etc/postfix/main.cf. V súbore main.cf.default je možné nájsť východzie hodnoty premenných. Všetky premenné sú v súboroch dobre okomentované. Väčšina hodnôt je dobre nastavená hneď po inštalácii. Prípadné ďaľšie informácie je možné získať z dokumentácie na domácej stránke Postfixa.

Dôležité konfiguračné voľby v main.cf:

Súbor master.cf obsahuje nastavenia procesov servera Postfix (ktoré programy a ako spúšťať napr. pre príjmanie správ, prepisovanie hlavičky/obálky, lokálny/nelokálny relay apod.).

Ďalšie konfiguračné súbory sú:

Niektoré konfiguračné súbory je potrebné previesť do indexovaného formátu, ktorý je Postfix schopný rýchlo prehľadávať. Pre tento prevod slúži príkaz postmap.

Doménový kôš

Pred vytvorením doménového koša musíme určiť účet pre posielanie správ adresovaných neexistujúcim užívateľom. Môžeme využiť už existujúci účet alebo vytvoriť nový, speciální:

# useradd -g nogroup -d /no/home -s /bin/false mailbin

Pri nastavovaní Postfixu je dôležité, aby lokálnu poštu doručoval podsystém 'local', inak parameter luser_relay nebude fungovat:

luser_relay = mailbin@$domain

local_recipient_maps =
Podsystém local sám rozhodne, ktoré účty existujú.

Aliasy

Súbor /etc/aliases slúží k mapovaniu jedného uživateľského mena na iné. Má formát jednoduchého textu a vytvára sa z neho indexovaná databáza. Pre vytvorenie tejto databázy slúži príkaz newaliases.

Riadok súboru aliases vypadá nasledovne:

bfu: bfu@server.mojadomena.org

Okrem riadku špecifikujúceho preposielanie správy inému užívateľovi tu môže byť uvedený súbor, do ktorého sa majú správy uložiť:

bfu: /subor

Príkaz, na ktorého štandardný vstup bude správa predaná:

bfu: |prikaz

Vložený súbor s pravidlami:

bfu: :include:/subor

Pokiaľ je potrebné zadať viacero pravidiel, oddelujú sa čiarkami. Aby nebolo nutné aliasy sekvenčne prochádzať a vyhodnocovať je nutné použiť príkaz postalias, ktorý súbor prevedie do formátu, v ktorom Postfix dokáže rýchlo vyhľadávať.

Užívateľ sa môže rozhodnúť presmerovávať svoju poštu na iný stroj. K tomu slúží súbor ~/.forward, ktorý má rovnakú štruktúru, ako pravá strana pravidla v súbore aliases.

Literatúra