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í:
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:
From:
- mailboxy osob či systému, které zprávu posílajíSender:
- skutečný odesilatel zprávy, pokud je ve From:
více mailboxůReply-To:
- mailbox, na kterou budou poslány odpovědi. Pokud tento klíč neexistuje, použije se mailbox z klíče From:
To:
- obsahuje adresu příjemce poštyCc:
- zde se píše seznam mailboxů, které mail také dostanou, ačkoliv nejsou hlavními příjemciBcc:
- obdoba Cc:
pouze s tím rozdílem, že jednotliví příjemci neví, kdo jsou ostatní příjemciMessage-ID
- jedinečný identifikátor zprávyIn-Reply-To:
- pokud se jedná o odpověď na již existující e-mail, je zde uvedeno Message-ID
zprávy, na kterou se odpovídáReferences:
- identifikátory předchozích zpráv (např. v listu dlouhého threadu z mailingu listu zde najdeme Message-ID
všech zpráv "rodičovských" zpráv)Date:
- datum vzniku zprávySubject:
- věc zprávyKeywords:
- klíčová slovaX-<cokoli>
- nestandardní hlavičky, např.:
X-Muni-Envelope-From: root@fi.muni.cz X-Muni-Virus-Test: Clean X-Spam-Status: No, hits=3.9 required=5.0 tests=NO_REAL_NAME,DONT_DELETE,NO_MX_FOR_FROM version=2.31 X-Spam-Level: ***
Mime-Version: 1.0
Content-type:
Content-Transfer-Encoding:
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:
Received:
(od koho, kdo a
kdy mail přijal); dle obálky e-mailu se rozhodne, jak s ním naloží,
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:
HELO doména
QUIT
Příklad:
Trying 147.251.48.3... Connected to anxur.fi.muni.cz (147.251.48.3). Escape character is '^]'. 220 anxur.fi.muni.cz ESMTP Sendmail 8.11.6+Sun/8.8.5; Tue, 15 Oct 2002 10:55:27 +0200 (MEST) HELO anxur 250 anxur.fi.muni.cz Hello IDENT:13178@nymfe34.fi.muni.cz [147.251.53.104], pleased to meet you QUIT 221 2.0.0 anxur.fi.muni.cz closing connection Connection closed by foreign host.
MAIL FROM: <odesílatel>
RCPT TO:<adresát>
DATA
Příklad:
Trying 147.251.48.3... Connected to anxur.fi.muni.cz (147.251.48.3). Escape character is '^]'. 220 anxur.fi.muni.cz ESMTP Sendmail 8.11.6+Sun/8.8.5; Tue, 15 Oct 2002 11:33:03 +0200 (MEST) HELO anxur 250 anxur.fi.muni.cz Hello IDENT:13178@nymfe34.fi.muni.cz [147.251.53.104], pleased to meet you MAIL FROM: xholer@fi.muni.cz 250 2.1.0 xholer@fi.muni.cz... Sender ok RCPT TO: xholer@fi.muni.cz 250 2.1.5 xholer@fi.muni.cz... Recipient ok DATA 354 Enter mail, end with "." on a line by itself .. . 250 2.0.0 g9F9XBZ27334 Message accepted for delivery QUIT 221 2.0.0 anxur.fi.muni.cz closing connection Connection closed by foreign host.
ETRN <jméno_uzlu>
Příklad:
... ETRN aisa.fi.muni.cz 250 2.0.0 Queuing for node aisa.fi.muni.cz started ...
VRFY <jméno>
Příklad:
... VRFY xholer 250 2.1.5VRFY nikdo 550 5.1.1 nikdo... User unknown ...
EXPN <mailing_list>
Příklad:
... EXPN p090 250-2.1.5250-2.1.5 Ludek Finstrle <|/export/packages/share/simplemail-2.0b/bin/simplemail@anxur.fi.muni.cz> 250 2.1.5 Jan Kasprzak ...
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:
From:
do hlavičky mailu, upraví mailovou adresu do vhodné formy a případně požádá program trivial-rewrite o přepis adres; obálku mailu zahodí;
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
.
myorigin = $myhostname
myorigin = $mydomain
... určuje doménu, která se zobrazí v mailech odeslaných ze stroje
mydestination = $myhostname localhost.$mydomain
mydestination = $myhostname localhost.$mydomain $mydomain
mydestination = $myhostname localhost.$mydomain www.$mydomain ftp.$mydomain
... seznam domén, pro které bude server doručovat lokálně (tedy bez přeposílávání na jiný stroj)
notify_classes = bounce, 2bounce, delay, policy, protocol, resouce, software
... výčet případů, kdy má být informován postmaster
myhostname = host.local.domain
myhostname = host.virtual.domain
myhostname = virtual.domain
... parametr obsahuje "fully-qualified domain name" stroje, na kterém běží Postfix
mydomain = local.domain
mydomain = virtual.domain
... určuje doménu, ve které je umístěn $myhostname
mynetworks_style = class (default)
mynetworks_style = subnet
mynetworks_style = subnet
... sítě, kterým bude Postfix "důvěřovat"
inet_interfaces = all
... síťová zařízení, na kterých bude Postfix "poslouchat"
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ě
Přidáním těchto řádků do hlavního konfiguračního souboru (
Pokud budeme chtít změnit adresu odchozí pošty z např.
Do souboru
A do souboru /etc/postfix/canonical napsat:
Pak už je potřeba provést jen:
Postfix.orgmaster.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
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
xholer@thunder.ascs.muni.cz
na
xholer@fi.muni.cz
, je potřeba provést následující kroky:
main.cf
umístit:
canonical_maps=hash:/etc/postfix/canonical
xholer@thunder.ascs.muni.cz xholer@fi.muni.cz
[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 - konfigurace
BSD Today: Using Postfix