Elektronická pošta

Miroslav Tempír, xtempir@fi.muni.cz


Obsah


Princip fungování SMTP

Architektura SMTP je postavena na modelu klient-server nad protokolem TCP. Klientem je počítač odesílající dopis podle požadavku odesílatele, server je počítač určený v DNS záznamech typu MX jako příjemce zpráv v doméně adresáta. Není výjimkou, že jeden počítač může v různých SMTP spojeních figurovat v různých rolích (v tom případě se mluví o poskytování relayingu).

Pro adresaci uživatelů používáme schéma uzivatel@domena.cz. Odesílající MTA (mail transport agent) získá v DNS (pokud mu není nějakým způsobem řečeno, aby to dělal jinak) IP adresu serveru příjemce (záznam typu MX s nejnižší prioritou) a poté na tento počítač naváže spojení protokolem SMTP na port 25.

Příklad komunikace:

[mira@tux mira]$ telnet mail.mit 25
Trying 10.0.0.1...
Connected to mail.mit.
Escape character is '^]'.
220 mail.mit ESMTP
HELO tux.mit
250 mail.mit
MAIL FROM: <xtempir@fi.muni.cz>
250 ok
RCPT TO: <kas@fi.muni.cz>
250 ok
DATA
354 go ahead
From: Mira Tempir <xtempir@informatics.muni.cz>
To: Yenya <kas@fi.muni.cz>
Subject: P090: referat
X-mailer: telnet v0.17

Nejak jsem na to zapomel, omlouvam se :(
.
250 ok 980378038 qp 10321
quit
221 mail.mit
Connection closed by foreign host.

Veškerá komunikace tedy probíhá po požadavku klienta, který vytvořil obousměrný datový kanál k poštovnímu programu serveru na vyhrazeném portu 25. Odesílatel posílá příkazy, příjemce vrací chybové kódy. Server může komunikaci ukončit jen v případě, že klient poslal příkaz quit nebo když vyprší definovaný interval pro zadání příkazu (timeout).

Přehled vybraných příkazů SMTP


Formát zpráv, MIME

Každá zpráva se při přenosu skládá ze dvou částí: seznamu hlaviček a těla dopisu. Každá hlavička je na samostatném řádku ve formátu
klic: hodnota
Používané hlavičky: From, Reply-To, To, Cc, Bcc, Message-Id, In-Reply-To, References, Subject, X-, Date, User-Agent, Received

MIME

Postupem času vyvstala potřeba přenášet elektronickou poštou binární soubory různých typů. S RFC 822 (2822) nezbývalo nic jiného, než binární soubor překódovat do ASCII (zmenšením abecedy se ale zvětšila délka zprávy) například programy uuencode a uudecode. Řešením výměny binárních dat se stal standard MIME (Multipurpose Internet Mail Extensions). Každá zpráva ve formátu MIME musí obsahovat hlavičku MIME-Version (v současnosti se používá verze 1.0) a Content-Type s formátem:
Content-Type: typ/podtyp; par1=val1; par2=val2
Příklady typů: Jednotlivé části zprávy pak musí ještě obsahovat hlavičku Content-Transfer-Encoding (7bit, 8bit, binary nebo base64), nepovinně pak Content-ID (identifikátor) a Content-Description (textový popis). MIME je definováno v normách RFC 1521-1522, 2045-2049, 2231.

Problém spamu


Princip fungování SMTP serveru qmail

základní informace

DJB, autor spousty dalšího zajímavého SW, jiný styl programování, aktuální verze je z roku 1998. Pro: Proti: qmail je dostupný na cr.yp.to, důležitějším odkazem k zapamatování je ale qmail.org, kde jsou umístěny (a průběžně aktualizovány) odkazy na vše podstatné, co se qmailu týká.

architektura

běží pod 7mi ruznými uživateli, více malých programů, které jsou navzájem dost paranoidní,

konfigurace

Probíhá pomocí souborů v adresáři control. Jednomu souboru odpovídá jeden parametr. Výběr nejpoužívanějších: rcpthosts, morercpthosts, defaultdomain, locals, me, virtualdomains, databytes, concurrencyremote, concurrencylocal, badmailto.
Modifikované verze qmailu mohou používat i další: mfcheck, badmailfrom, tarpitcount, tarpitdelay, servercert.pem, clientcert.pem.
Pěkně řešená správa virtuálních domén: virtualdomains - users/assign - .qmail

politika


Další informace

RFC

Normy které definují princip elektronické pošty.
RFC 2045 - Multipurpose Internet Mail Extensions (MIME) - Part 1
RFC 2046 - Multipurpose Internet Mail Extensions (MIME) - Part 2
FC 2046 - Multipurpose Internet Mail Extensions (MIME) - Part 3
FC 2046 - Multipurpose Internet Mail Extensions (MIME) - Part 4
RFC 2049 - Multipurpose Internet Mail Extensions (MIME) - Part 5
RFC 821 - Simple Mail Transfer Protocol (SMTP)
RFC 1123 - Requirements for Internet Hosts - Application and Support
RFC 1893 - Enhanced Mail System Status Codes
RFC 1566 - Mail Monitoring MIB
RFC 2033 - Local Mail Transfer Protocol (LMTP)
RFC 822 - Standard for ARPA Internet Text Messages
RFC 1869 - SMTP Service Extensions (ESMTP)
RFC 2060 - Internet Message Access Protocol (IMAP) - Version 4 Rev 1
RFC 1939 - Post Office Protocol (POP) - Version 3

SMTP servery

qmail
postfix
exim
courier-mta
sendmail