Elektronická pošta
Petr Velan, 255519@mail.muni.cz
Obsah
Úvod
Elektronická pošta je způsob offline komunikace.
Vznik ještě před internetem, rok 1965.
Původně pouze textové zprávy.
Denně je odesláno asi 300 miliard e-mailů, z toho kolem 90% spamu.
Komponenty poštovního systému
-
MTA (Mail Transfer Agent): Program pro přenos zpráv po síti. Zprávy získávaá lokálně (od uživatelů), nebo od jiných MTA pomocí SMTP a zajištuje další doručení (přeposlání jinému MTA, nebo MUA). Příklad: Postfix, sendmail, exim, ...
-
MUA (Mail User Agent): Uživatelský program pro čtení a posílání zpráv, například: mutt, pine, Mozilla Thunderbird, ...
-
MDA (Mail Delivery Agent): Program pro lokální doručení do schránky, případně pro předání zprávy od MUA k MTA. Příklad: mail, procmail, maildrop, ...
Princip SMTP
- E-mailová zpráva je tvořena hlavičkami a vlastním tělem zprávy, toto jsou z hlediska SMTP protokolu data.
- Skutečný příjemce (server který zpracovává poštu pro danou e-mailovou adresu) a odesílatel (příjemce chybové zprávy) se určuje podle obálky.
-
SMTP transakce se skládá ze tří částí:
- MAIL FROM: zadává se návratová adresa
- RCPT TO: zadává se cílová adresa, může se opakovat
- DATA: vlastní zpráva
- MTA může upravovat hlavičky zprávy (odstranění Bcc, nastavení Return-Path, Received, ...)
Směrování pošty
- Obálková cílová adresa (cílový MTA server) se určuje z adresy hlavičkového příjemce.
- Pro určení cílového MTA se použije DNS MX záznam.
- MX obsahuje prioritu (lze použít i k load-balancingu) a A (AAAA) záznam MTA serveru.
- Jestliže neexistuje MX záznam, hledá se MTA pomocí A záznamu.
Formát zprávy
- Formát zpráv definuje RFC 5322 (dříve 2822, dříve 822).
- Hlavička obsahuje řídící informace, každý řádek je tvaru klíč: hodnota, případně začíná bílým znakem - pokračování z předchozího řádku.
- Tělo zprávy je oddělené prázným řádkem.
MIME
- Multipurpose Internet Mail Extension (RFC 2045-2049)
- Původně bylo možné používat jen ASCII znaky, s MIME jsou na ASCII omezeny jen hlavičky, v těle mohou být libovolné znaky.
- Povinné jsou MIME hlavičky:
- Mime-Version: 1.0
- Content-Type: typ[podtyp[; parametry ... ]]
- Content-Transfer-Encoding: přenosové kódování
-
Jednoduché typy/podtypy:
- text/plain, html, richtext, ...
- image/jpeg, gif, ...
- application/octet-stream, pdf, postscript, ...
-
Složené typy/podtypy:
- multipart/mixed - více ruzných typů objektů.
- multipart/parallel - například text a zvuk.
- multipart/alternative - vybere se nejvhodnější z částí (text/html, text/plain).
-
Přenosová kódování:
- 7bit - jen ASCII.
- base64 - 3 bajty na 4 znaky.
- quoted-printable - ne-ASCII znaky a rovnítko se kódují jako =hexa kód.
- 8bit - přímé kódování, libovolné bajty.
-
Kódování ne-ASCII znaků v hlavičkách:
- Formát =?přenosové kódování?charset?text?=
Příklad SMTP komunikace
telnet smtp.example.com smtp
S: 220 smtp.example.com ESMTP Postfix
C: HELO relay.example.org
S: 250 Hello relay.example.org, I am glad to meet you
C: MAIL FROM:<bob@example.org>
S: 250 Ok
C: RCPT TO:<alice@example.com>
S: 250 Ok
C: RCPT TO:<theboss@example.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: "Bob Example" <bob@example.org>
C: To: "Alice Example" <alice@example.com>
C: Cc: theboss@example.com
C: Date: Tue, 15 Jan 2008 16:02:43 -0500
C: Subject: Test message
C:
C: Hello Alice.
C: This is a test message with 5 header fields and 4 lines in the message body.
C: Your friend,
C: Bob
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye
{The server closes the connection}
Rozšíření:
- Místo HELO lze použít EHLO - server vrátí seznam povolených rozšíření.
- 8BITMIME - možno přenášet 8-bit data.
- SIZE - Server může odmítnout příliš velkou zprávu.
- PIPELINING - klient nemůsí vždy čekat na potvrzení před dalším requestem.
Spam
Většinu e-mailové komunikace tvoří spam. Lze se mu bránit omezením přístupu k MTA a/nebo filtry v MDA.
- Open relay: SMTP server nakonfigurovaný tak, že přeposílá poštu z libovolné adresy kamkoliv. Toto je dnes typicky zakázáno a je vyžadován urřitý stupeň autentizace, ISP omezují připojení pouze na svoji doménu.
- Relaying: Zneužití open relay serverů. Nutno konfigurovat MTA tak, aby nepředávaly zprávy jinam, než je nutné (do vlastní domény).
- Black-listy: Servery mohou udržovat globální seznam IP adres, které jsou podezřeé z rozesílání spamu. Takovýmto adresám je možno přístup zakázat.
- Greylisting: Server odpoví SMTP kódem 4xx (dočasná chyba). Legitimní MTA se o doručení pokusí znovu později.
- Greeting delay: Server nepošle uvítací zprávu hned, ale chvíli čeká. Dle standardu nesmí klient začít komunikaci dříve.
- Spam filtry: Snaží se o každé zprávě rozhodnout, zda je či není spam. Rozhodnutí provádí na základě heuristik - tvaru hlaviček, těla zprávy, případně využívá blacklisty.
- mbox: všechny zprávy v jednom souboru, odděleny znakem > před From. Problémy se zamykáním.
- Maildir: adresář Maildir v home, každá zpráva ma vlastní soubor v jednom z podadresářů tmp, new, cur.
Poštovní klienti
Lokální pošta
- Přímý přístup k mailboxu, nutno řešit zamykání.
- Odesílání přes sendmail(1).
Vzdálení klienti
- Čtení pošty přes POP-3 nebo IMAP.
- Odesílání přes protokol SMTP a relay server.
- Všechny protokoly podporují šifrované verze.
-
POP-3 (Post Office Protocol):
- Výlučný přístup k mailboxu - vše se děje atomicky.
- Nelze být trvale připojen - schránka je zamčena a nepřijímá nové zprávy.
- Nelze mít více schránek v rámci jednoho účtu.
- Lze pouze stáhnout zprávy ze serveru (a smazat je).
-
IMAP (Internet Mail Access Protocol):
- Sdílený přístup k mailboxu.
- Je možné přistupovat z více počítačů do jedné schránky.
- Lze pracovat s více schránkami v rámci jednoho účtu.
- Se zprávami na serveru leze pracovat - přesouvat mezi složkami, mazat, ...
SMTP servery
Nejrozšířenější SMTP servery:
- sendmail: Stále vyvýjený, složitá syntaxe konfiguračních souborů. Dlouhodobě problémy s bezpečností.
- qmail: Složitá konfigurace, dobrá bezpečnost. Dlouho neaktualizovaný.
- exim: Dobrá dokumentace a příklady, stále vyvýjený, historicky ne tak bezpečný jako qmail nebo postfix, je dobře rozšiřitelný
- postfix: Podobně jako exim, s vyšší bezpečností.
Fedora 15 nabízí defaultně postfix, Debian exim4 (a dlouhodobě se na toto téma diskutuje).
Konfigurace serveru Postfix
Defaultní konfigurace by měla poskytovat základní funkčnost pro obecné systémy. Podrobné tutoriály jsou dostupné na webu postfixu.
Dva základní konfigurační soubory: master.cf a main.cf, typicky v /etc/postfix/
- master.cf: Definuje jak se uživatelské programy připojují ke službám a jaké programy se spouští pro jednotlivé služby.
- main.cf: Obsahuje parametry určující chování MTA.
Některé volby v main.cf:
- myhostname: název stroje na kterém postfix běží.
- mydomain: rodičovská doména pro $myhostname.
- myorigin: jaká doména se vyplní u odchozích zpráv.
- mydestination: pro které domény se pošta doručuje lokálně.
- mynetworks: které sítě (IP adresy) smějí posílat zprávy přes tento MTA.
- local_recipient_maps: které lokální uživatele systém zná (jiné zprávy odmítá)
- relay_domains: domény, kterým bude postfix přeposílat zprávy. Defaultně $mydestinations
- virtual_alias_maps: Umožňuje specifikovat aliasy, například celou doménu do jedné chránky (doménový koš).
Doménový koš je schránka do které jsou směrovány zprávy, které patří dané doméně, ale neexistuje pro ně cílový účet.
Literatura