Elektronická pošta
Pavel Hančar, 72591@mail.muni.cz
Obsah
Úvod
Elektronickou poštu dělíme na tyto části:
- MUA
- MUA je zkratka pro Mail User Agent, což je program klientské části,
neboli té části, kterou vidíme a používáme k posílání zpráv.
- MTA
- Mail Transfer Agent obvykle znamená v podstatě cokoli mezi různými
MUA. MTA jsou obecně části, které zajišťují směrování a přenos mezi
hostitely poskytovately atd.
- MDA
- Přichází-li e-mail, který nepokračuje dál, MTA ho předá části
MDA (Mail Delivery Agent), která ho vloží do schránky příchozí pošty.
Může zavolat další nástroje, jako je procmail, který se pak stane součástí
MDA.
- MSA
- Jestliže jste například poskytovatel s množstvím uživatelů, kteří
používají MUA na strojích bez vlastního MTA, MSA nenechá tyto uživatele
jednoduše posílat zprávy bez jakékoli autentizace. Jinak by takový systém
mohli zneužít spammeři. Takže přijímání e-mailů od uživatelů pro další
rozeslání se stalo zvláštní úlohou a MTA, které ji vykonávají, mohou být
kvůli rozlišení nazývány MSA.
- MRA
- Část Mail Retrieval Agent vytvoří spojení ke vzdálené schránce a stáhne
zprávu pro lokální použití. Například Fetchmail jako samostatný
program
Např. Mutt je e-mailový klient, tedy MUA. Jeho podpora POP však znamená,
že poskytuje též funkce MRA.
(přeloženo z A short introduction to the notorious MxA bunch).
SMTP
Simple Mail Tranfer Protocol je protokol, pro komunikaci mezi MTA.
Je definován v RFC821
a jedná se protokol nad TCP/IP komunikující na portu 25.
Obálka
Skládá se ze SMTP příkazů, jako je např. MAIL FROM:, a data v ní
obsažená vidí jen MTA, uživatel nikoli.
Vlastní zpráva
Následuje za příkazem DATA, skládá se z hlavičky a těla. Záhlaví
obsahuje mj. pole From: a To:, jejichž hodnoty se nemusí shodovat
s hodnotami argumentů příkazů MAIL FROM: a RCPT TO:.
Příkazy
Příkazy požadované v RFC821 jako minimální implementace pro příjemce:
- HELO <SP> <domain> <CRLF>
- identifikuje odesílající stranu
- MAIL <SP> FROM:<reverse-path> <CRLF>
- zahajuje transakci a svým argumentem určuje adresu odesilatele spolu
s obrácenou cestou přes všechny navštívené MTA, což lze využít
v případě nedoručení zprávy.
- RCPT <SP> TO:<forward-path> <CRLF>
- Určuje jednoho adresáta (více adresátů lze specifikovat použitím více
těchto příkazů) a volitelně též cestu k němu, kterou – pokud
je specifikovaná – musí zpráva projít.
- DATA <CRLF>
- Vše za tímto příkazem až po sekvenci "<CRLF>.<CRLF>"
považuje příjemce za data dané zprávy.
- RSET <CRLF>
- zruší aktuální transakci
- NOOP <CRLF>
- pošle odpověď OK
- QUIT <CRLF>
- požádá příjemce o odpověď OK, a pak uzavře spojení. Strana příjemce
by neměla uzavřít spojení dříve než odpoví na příkaz QUIT.
Ukázka komunikace
(Převzato z Wikipedie.)
C: navázání spojení se serverem (zpravidla na TCP portu 25)
S: 220 mail.example.com ESMTP Postfix
C: HELO example.net
S: 250 Hello example.net
C: MAIL FROM:
S: 250 Ok
C: RCPT TO:
S: 250 Ok
C: DATA
S: 354 End data with .
C: Subject: test message
C: From: sender@example.net
C: To: friend@example.com
C:
C: Hello,
C: This is a test.
C: Goodbye.
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye
Poznámka: S je server, C je klient.
ESMTP
Rozšiřuje SMTP o další příkazy. Rozliší se na základě jiného prvního příkazu: EHLO.
Některé rozšiřující příklady:
(Převzato z Wikipedie)
- 8BITMIME
- umožňuje posílat zprávy v 8bitovém kódování, na rozdíl od SMTP, které používá 7 bitů
- SMTP-AUTH
- umožňuje posílat zprávy až po předchozím přihlášení uživatele
- PIPELINING
- umožňuje serveru posílat více příkazů během jednoho spojení
- SIZE
- přijímající server takto sděluje, jak velkou zprávu maximálně akceptuje; odesílající server takto sděluje, jak velká je doručovaná zpráva
- STARTTLS
- umožňuje šifrované spojení pomocí TLS
DNS
Pro každého příjemce příchozí zprávy se prohledají MX záznamy. Pokud
adrese příjemce odpovídá více MX záznamů, vybere se ten s nejnižší prioritou.
Jestliže nevyhovuje žádný MX záznam, zkusí se vybrat A záznam. Pro vybraný
záznam se naváže SMTP spojení.
(Převzato z referátu Petra Bartela)
- formát emailové adresy:
- místní část - obvykle jméno uživatele
- oddělovač @
- název domény
- obálka (envelope)
- hlavička (header)
- hlavičky (záhlaví) - To, From, Subject, Date
Content-type, Message-Id, Reply-to, Received
- Received není povinné záhlaví, ale obvykle je přidáno každým
MTA, přes který zpráva projde
- jednotlivá záhlaví jsou oddělena od informace znakem ':'
- záhlaví může být víceřádkove – každá další řádky začíná ' '
nebo '\t'
- oddělit od těla prázdným řádkem
- tělo (body)
- vyžaduje ASCII text
- max. 998 řádku
- max. 78 znaků na řádek
- netextové informace musí být kódované - uuencode nebo MIME
Spam
Nevyžádaná pošta je rozesílána na adresy ze spamových databází vytvářených
roboty. Tito roboti např. procházejí webové stránky a získávají z nich adresy.
Možná ochrana – uvádět na webu adresu např. ve tvaru
kdosi(zavinac)kdesi(tecka)cz. Dále roboti získávají adresy slovníkovými
útoky na SMTP servery, takže náchylnější jsou častá jména.
Open relay
Servery by neměly být konfigurované jako open relay, tj. umožňovat průchod
jakékoli pošty. Tím usnadňují práci spammerům a maskují původní IP adresu, což
ztěžuje identifikaci spammera.
Blacklisting
Zda zpráva je, nebo není spam, se rozhoduje podle adresy odesilatele příp. podle
IP adresy serveru, ze kterého zpráva přichází.
Graylisting
Rozhodnutí, zda zpráva je spam se opět děje podle adresy odesilatele a
IP adresy, ale děje se tak dynamicky v závislosti na čase po který se
odesílající server odmlčel.
Antispamové filtry
- Filtry založené na pravidlech
- Filtry založené na učení
POP
POP3 je protokol nad TCP/IP na portu 110. Používá se ke stahování pošty ze
serveru na klienta. Je jednoduchý, má výlučný přístup ke schránce a připojení
trvá jen po dobu stáhnutí pošty.
IMAP
IMAP4 je další protokol pro stahování pošty ze serveru na klienta.
Též nad TCP/IP tentokrát na portu 143. Je vcelku komplikovaný, ale má více
funkcí než POP3. Např. sdílený přístup ke schánce, více schránek (složek),
prohledávání pošty přímo na serveru, připojení zde trvá, dokud je aktivní
uživatelské rozhraní, ...
Literatura