Elektronicka posta

Elektronická pošta

Ondřej Chaloupka, 98674@mail.muni.cz


Obsah


Zaslání e-mailu

V linuxovém světě se poštovní systém skládal ze čtyř součástí, které zaručovaly odeslání a doručení elektronické zprávy.

Dnes jsou úlohy plněné těmito agenty většinou do jisté míry integrovány a spojovány do celků pod hlavičku jednoho programu. Příklady programů, které se věnují těmto čínnostem, jsou: Původním klientem MUA v linuxu byl program mail, dnes jsou však spíše používány jiní klienti, např. programy mutt, pine a další nebo některý z grafických klientů, pro příklad to mohou být KMail nebo Mozilla Thunderbird. Jako historický standard programů pro odesílání pošty lze jednoznačně považovat program Sendmail, který spojuje funkce MSP a MTA. Jinými zástupci jsou např. QMail nebo Postfix. Agentem MDA je program Procmail či Maildrop.
Základním schematem odesílání pošty je vytvoření zprávy v MUA klientovy. Ten ji následně předá MTA, ten dle svých pravidel poštu pošle cílovému poštovnímu serveru, kde jsou zpracovávány zprávy náležející této doméně. Zde agent MDA poštu rozřadí do schránek uživatelů.


Podoba e-mailu

Specifikace struktury elektronického dopisu je uvedena ve specifikaci RFC 822 a specifikace MIME lze naléztv RFC 2045 až 2049. E-mailová zpráva musí obsahovat hlavičku a tělo zprávy. Hlavička obsahuje provozní informace dopisu. Jsou zde uloženy informace o odesílateli a příjemci, předmět zprávy, čas odeslání apod. Tělo zprávy je určeno pro lidského příjemce a nese vlastní sdělení. Tělo a hlavička jsou odděleny prázdným řádkem.
Položky hlavičky jsou každá na jednom řádku a mají následující podobu:
název:hodnota
Názvy jsou dány RFC specifikacemi, obsahy hodnot závisí na názvu dané položky (mohou být nestrukturované nebo mít určený formát). Pokud je prvním znakem na řádku mezera nebo tabelátor, tak je tento řádek považován za pokračování předchozího.
Příklad e-mailové zprávy:

Return-Path: 
X-Spam-Checker-Version: SpamAssassin 3.1.0 (2005-09-13) on aisa.fi.muni.cz
X-Spam-Level: 
X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=failed 
	version=3.1.0
Received: from anxur.fi.muni.cz (anxur.fi.muni.cz [147.251.48.3])
	by aisa.fi.muni.cz (8.13.6/8.12.8) with ESMTP id k34GXZUr14469704
	for ; Tue, 4 Apr 2006 18:33:35 +0200 (MET DST)
Received: by anxur.fi.muni.cz (Postfix)
	id 9347222B383; Tue,  4 Apr 2006 18:33:35 +0200 (CEST)
Received: from [192.168.2.122] (ij2klc.chello.upc.cz [68.242.122.200])
	by anxur.fi.muni.cz (Postfix) with ESMTP id 6742122B02B
	for ; Tue,  4 Apr 2006 16:33:35 +0200 (CEST)
Message-ID: <44329FDF.1090907@mail.muni.cz>
Date: Tue, 04 Apr 2006 18:33:35 +0200
From: chalda 
User-Agent: Thunderbird 1.5 (X11/20051201)
MIME-Version: 1.0
To: xchalou2@fi.muni.cz
Subject: Predmet zpravy
Content-Type: text/plain; charset=ISO-8859-2; format=flowed
Content-Transfer-Encoding: 7bit

Text zpravy

Omezení specifikace RFC 822 však je fakt, že dopis může obsahovat pouze textová data. Proto byl vytvořen nový standart MIME (Multipurpose Internet Mail Extensions). Tento standard umožňuje přenášet i multimediální soubory, ale zachovává kompatabilitu s RFC 822. To znamená, že provádí konverzi vnitřku dopisu tak, aby bylo možné ho odeslat a doručit standardní cestou. To zda je e-mail kódován pomocí MIME zjsitíme z hlavičky dopisu, pokud obsahuje položku MIME-Version. Ostatní MIME hlavičky začínají slovem Content.
MTA agenti však do hlaviček dopisu nenahlížejí. Adresa příjemce a další provozní informace, které si mezi sebou vyměňují, jsou obsaženy v obálce. Obálka zaniká v okažiku jejího doručení a uživatel se o ní nedozví.


DNS

Elektronická adresa se skládá ze dvou částí oddělených zavináčem. Údaj před zavináčem slouží k identifikaci uživatele na daném systému a je zpracováván doručovacím agentem. Za zavináčem je adresa domény, kam má být zadaný e-mail odeslán. Stroj kterému se má pošta pro tuto doménu odeslat je zjistitelný z DNS záznamu dané domény. Pokud v DNS záznamech neexistuje MX záznam, pošta bude odeslána na stroj dle DNS záznamu. Pokud, ale chceme nastavit poštovní server pro celou doménu a nechceme, aby pošta přicházela přímo na uživatelské stroje, je třeba uvést MX záznamy, které specifikují stroj na který má být odeslána pošta dané domény či skupiny strojů. MX záznamy jsou určeny prioritou a to tak, že přenosový systém se pokouší nejprve spojit se strojem, který má nejnižší prioritu. Počítače s vyššími prioritami bývají záložní a často slouží jen jako dočasné úložiště, dokud není zprovozněn hlavní mail server.


Přenos zpráv - protokol SMTP

SMTP je protokol, který je určen pro přenášení elektronické pošty. Je definován normou RFC 821 již z roku 1982. Jeho rozšířením je protokol ESMTP, který definuje několik dalších příkazů, které si mezi sebou servery vyměňují. SMTP pracuje na portu 25 protokolu TCP.

Příklad spojení při použití programu telnet:

tnymfe16:/home/xchalou2>$ telnet aisa 25
Trying 147.251.48.1...
Connected to aisa.fi.muni.cz (147.251.48.1).
Escape character is '^]'.
220 aisa.fi.muni.cz ESMTP Sendmail 8.13.6/8.12.8; Tue, 4 Apr 2006 19:28:01 +0200 (MET DST)
ehlo aisa
250-aisa.fi.muni.cz Hello nymfe16.fi.muni.cz [147.251.53.26], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
mail from: nekdo@mail.muni.cz
250 2.1.0 nekdo@mail.muni.cz... Sender ok
rcpt to: chalda@mail.muni.cz
250 2.1.5 chalda@mail.muni.cz... Recipient ok
data
354 Enter mail, end with "." on a line by itself
Text mailu
.
250 2.0.0 k34HS1bM14253841 Message accepted for delivery
quit
221 2.0.0 aisa.fi.muni.cz closing connection
Connection closed by foreign host.

Protokol SMTP je neautentizovaný a nešifrovaný.
Server, který nemá nastavena žádná pravidla pro přeposílání a přeposílá veškerou poštu o jejíž přeposlání je požádán se nazývá open relay. Takovéto servery byly zvláště dříve používány pro rozesílání spamu. Existují databáze takovýchto serverů, které mohou být potencionálními původci nevyžádané pošty, např. ORDB (Open Relay Database).
Dalším řešením jak se bránit proti nevyžádané poště jsou tzv. black listy, což jsou seznamy užívatelů a domén, které jsou filtrovány, protože z nich příchází nevyžádaná pošta. Sofistikovanější metodou jsou spamové filtry. Jedním z programů, který takovouto filtrací provádí je spam assassin. Ten prochází příchozí mailové zprávy a v jejich obsahu hledá znaky nevyžádané pošty. Každé podobnosti je pak přiřazena určitá "trestná bodová hodnota" a pokud součet těchto trestných bodů dosáhne administrátorem určené hodnoty, je mail označen za spam. Další možností jak odhalit spam jsou tzv. databáze spamu. Došlý e-mail je zahashovan nějakou funkcí a výsledek porovnán s databází.


POP3

POP3 (Post Office Protocol version 3) je protokol specifikovaný v normě RFC 1939. Pracuje s protokolem TCP obvykle na portu 110. Je určen k přenosu elektronických zpráv ze serveru k užívateli. Uživatel si zprávy ze serveru musí skutečně stáhnout (a to např. včetně spamu) a pak s nimi pracuje na lokálním počítači. Protokol je nešifrovaný, ale autentizovaný. Specifikace definuje volitelnou metodu APOP, která používá k přenosu hesla od klienta k serveru pomoci md5 hashe. Některé servery podporují kódování celého POP přenosu za užítí SSH.


IMAP

IMAP (Internet Mail Access Protocol) definován normou RFC 3501. Stejně jako protokol POP3 slouží užívateli pro prohlížení zpráv na poštovním serveru, ale je určen spíše pro dlouhodobější připojení. Zprávy zůstanou uloženy na serveru a průběžně se stahují dle potřeby. Rozdílem od POP je např. podpora připojení současně více klientů, uchovávání stavu zprávy, mopžnost manipulace s více mailovými schránkami, stažení pouze hlavičky zprávy či prohledávání na straně serveru. Protokol je v autorizovaný a nešifrovaný.


Postfix server

Postfix jako poštovní server je alternativou k rozšířenému sendmailu. Měl by být celkem bezpečný, snadno konfigurovatelný a relativně výkonný. Lze ho stáhnout na adrese www.postfix.org. Postfix pracuje podobně jako sendmail s unixovou poštovní schránkou, používá aliasy a rozumí i souboru ~/.forward.
Pokud je na systému nainstalován sendmail, jeho binární soubory v /usr/bin budou přepsány, proto je vhodné před instalací vytvořit jejich zálohu.
Hlavním démonem serveru postfix je démon master, který dle potřeby spouští další programy. Spuštění a zastavení agentu Postfix zajišťuje příkaz postfix. Další jeho příkazy se stejně jako tento nacházejí v adresáři /usr/bin a jejich názvy začínají textem post.
Do adresáře /var/spool/postfix jsou ukládány všechny příchozí zprávy s kterými server pracuje. V tomto adresáři najdeme též poštovní fronty nad kterými postfix pracuje. Pro jejich kontrolu můžeme využívat standardní unixové příkazy (find, cat, grep ...).
Fronty:
incoming - všechny příchozí zprávy (lokální i vnější)
active - zprávy jež jsou doručovány nebo jsou k doručení chystány
defered - zprávy jež není možno okamžitě doručit, odloží se a provede se další pokus
corrupt - nečitelné nebo poškozené zprávy

Aliasy

Souboru /etc/aliases slouží k mapování jednoho uživatelského jména na jiné. Má formát prostého textu a vytváří se z něj indexovaná databáze. Pro vytvoření této databáze slouží příkaz newaliases.
Řádka souboru aliases vypadá následovně:
xchalou2: xchalou2@aisa.fi.muni.cz
Krom řádky specifikující přeposlaní zprávy jinému uživateli, ze může být uveden soubor, do kterého se mají zprávy uložit:
xchalou2: /soubor
příkaz, na jehož standardní vstup bude zpráva předána:
xchalou2: |prikaz
vložen soubor s pravidly:
xchalou2: :include:/soubor
Pokud chceme zadat více pravidel, oddělíme je čarkami.
Aby nebylo nutné aliasy sekvenčné procházet a vyhodnocovat, musíme použít příkaz postalias, který soubor převede do formátu v kterém postfix dokáže rychle vyhledávat.
Uživatel se může rozhodnout přesměrovávat svou poštu na jiný stroj. K tomu slouží soubor .forward v domovském adresáři, který má stejnou strukturu, jako pravá strana pravidla v souboru aliases.

Konfigurace

Konfigurační soubory nalezneme v adresáři /etc/postfix.
Všechny konfigurační soubory jsou dobře okomentovány a lze tak jednoduše pochopit význam jednotlivých parametrů.
master.cf - nastavení pro jednotlivé procesy (démony) balíku postfix.
main.cf - základní konfigurační soubor systému postfix. Formát souboru je na každém řádku:
parametr = hodnota
dalsiParametr = $parametr
Některé konfigurační volby:
myhostname - což je plné jméno hostitelského systému. Pokud není zadáno použíje postfix funkci systému gethostname
mydomain - jméno domény. Pokud není zadána použíje postfix doménové jméno z myhostname
mydestination - seznam názvů domén pro které bude server přijímat poštu (odděleny mezerou)
myorigin - definice názvu domény, doplňovaný ke zprávám odeslaným lokálně (tedy pokud adresa obsahuje jen jméno uživatele)
mynetworks_style, mynetworks, relay_domains - parametry sloužící k nastavení relayování relayhost - přeposlání zprávy pokud nevyhovuje pravidlo v souboru transport

Dalšími konfiguračními soubory jež v adresáři nalezneme jsou:
access - nastavení pravidel k přistupu k SMTP
canonical - přepis adres před uložením do fronty
generic - přepis adres při doručení pošty
virtual - virtuální přepis adres; přepisuje obálku
relocated - přeposlání zpráv pro neexistující adresy (např. pokud si uživatel změní adresu)
transport - konfigurace relayování (dle adresy, domény...)
header_check - ovlivnění přijímání pošty dle obsahu hlaviček
Většinu konfiguračních souborů je třeba převést do indexovaného formátu, který je postfix je schopen rychle prohledávat. Pro tento převod slouží příkazem postmap. Umístění těchto vygenerované souborů lze změnit v souboru main.cf
Dokumentaci lze nalézt na stránkách programu Postfix a též na wiki na adrese postfixwiki.org.


Zdroje

Root.cz
Wikipeida
Archiv předmětu PV090
Používáme Linux; Matt Welsh, Matthias Kalle, Terry Dawson, Lar Kaufman, Computer Press 2003
LINUX - Internet server; Pavel Satrapa, Jiří A. Randus, Neokortex 1998