Pošta (SMTP, Postfix)

Vlastimil Holer, xholer@fi.muni.cz


Obsah


Úvod

Elektronická pošta je jednou z nejstarších a stále více používaných služeb počítačových sítí. Oproti svému staršímu bratru, klasické poště, má velkou výhodu - rychlost. A jediné, co musí každý vlastník elektronické schránky znát, je pouze její jedinečná adresa.

Veškerá komunikace po sítí probíhá mezi počítači sama a uživatel se (kromě napsání a odeslání mailu) nemusí starat o doručení. O to se postarají:

Formát zprávy

Je důležité si uvědomit, že doručování zprávy se řídí informacemi, které jsou uloženy v obálce, nikoliv v hlavičce. Obálky se sestavují z informací, které jsou sděleny poštovnímu serveru (příkazy MAIL FROM a RCPT TO) ještě před tím, než jsou poslány data, tedy hlavička a tělo zprávy.

Nyní se však budeme zabývat formátem zprávy. Ten je specifikován v RFC 2822 "Internet Message Format". Vlastní zpráva je složena z hlavičky a těla zprávy. Jednotlivé řádky hlavičky mají formát:

kde klíč může obsahovat pouze tisknutelné US-ASCII znaky kromě dvojtečky a parametry mohou obsahovat taktéž pouze tisknutelné US-ASCII znaky, kromě CR a LF. Druhá varianta formátu řádku se používá pouze jako víceřádkové pokračování první varianty.

Klíče v hlavičce zprávy

SMTP

SMTP (Simple Mail Transfer Protocol) (RFC 821/2821) je protokol, který je používán při doručování elektronické pošty. Odchozí pošta se za použití SMTP přenese z klientského stroje na server (ten naslouchá na TCP portu 25), kudy dále putuje až k doručiteli.

Obecný princip práce elektronické pošty:

SMTP příkazy

Server komunikuje s okolím tím způsobem, že čeká na spojení na portu 25. Po jeho navázání běžně akceptuje následující příkazy:


Postfix

Postfix je MTA, ktery vznikal jako alternativa k velmi rozšířenému Sendmailu pod křídly "Velké Modré". Jeho autorem je Wietse Venema, který ho začal psát v době, kdy byl zaměstnán v IBM T. J. Watson Research, tehdy ještě pod jménem VMailer. Později přejmenován na Postfix, kvůli podobnosti jména s qmailem.

Mezi jeho přednosti patří:

Na následujícím diagramu je přibližně vidět architektura Postfixu:

Postfix - main.cf

Jedná se o hlavní konfigurační soubor a umožňuje nastavit několik stovek parametrů, které ovlivňují chod systému. Defaultní konfigurační soubor je bohatě komentovaný a ke zprovoznění Postfixu stačí pouze nastavení několika málo parametrů. Všechny konfigurační soubory jsou umístěny v adresáři /etc/postfix.

Postfix - další konf. soubory

master.cf - zde je uložen způsob, jakým mají být spouštěny jednotlivé komponenty Postfixu (chroot/max. proc...)
access - určení, pro které stroje, domény, sítě, mailové adresy bude spojení se serverem povoleno/zakázáno.
aliases - přeposílávání pošty
canonical - mapování adres (např. přepis e-mailové adresy či výmaz řádku z hlavičky mailu)
pcretable, regexptable
relocated - přeposílávání mailů uživatelům, kteří již nemají účet(schránku) na stroji
transport, virtual

Pro většinu konfiguračních souborů (kromě master.cf, main.cf, pcretable a regexptable), je potřeba vygenerovat indexovaný formát pro Postfix. To se provede např. zavoláním programu postmap access, kdy bude vygenerovat soubor access.db.

Postfix - příklad maškarády

Přidáním těchto řádků do hlavního konfiguračního souboru (main.cf) docílíme přepisu (xholer@stroj.fi.muni.cz -> xholer@fi.muni.cz) adres v mailech:

# user -> user@fi.muni.cz
append_at_myorigin = yes
# user@stroj -> user@stroj.fi.muni.cz
append_dot_mydomain = yes
# zmena bude provedena v obalce+hlavicce pro odesilatele a v hlavicce pro dorucitele
masquerade_classes = envelope_sender, header_sender, header_recipient
# maskarada se nebude provadet pro roota
masquerade_exceptions = root
masquerade_domains=$mydomain
		

Postfix - příklad přepisu adresy

Pokud budeme chtít změnit adresu odchozí pošty z např. xholer@thunder.ascs.muni.cz na xholer@fi.muni.cz, je potřeba provést následující kroky:

Do souboru main.cf umístit:

canonical_maps=hash:/etc/postfix/canonical
			

A do souboru /etc/postfix/canonical napsat:

xholer@thunder.ascs.muni.cz xholer@fi.muni.cz
			

Pak už je potřeba provést jen:

[root@thunder postfix]# pwd
/etc/postfix
[root@thunder postfix]# postmap canonical 
[root@thunder postfix]# /etc/init.d/postfix reload
Reloading postfix:                                                             [  OK  ]
			
a je hotovo!

Postfix - linky

Postfix.org
Postfix.org - konfigurace
BSD Today: Using Postfix