Princíp fungovania
Off-line a primárne textová komunikácia.
Emailová adresa:
local-part@domain
:
524913@mail.muni.cz, foo.bar@[10.0.0.130]
Komponenty poštového systému
-
MUA
- Mail User Agent
- užívateľský program na čítanie a posielanie správ
Thunderbird, mutt, ...
-
MSA
- Mail Submission Agent
- dostane správu od MUA a spolupracuje s MTA na jej odoslaní
- často MTA aj v roli MSA
-
MTA
- Mail Transfer Agent
- program na prenos správ po sieti
postfix, sendmail, qmail
-
MDA
- Mail Delivery Agent
- program na lokálne doručenie pošty
procmail, mail, deliver
DNS MX záznamy
- Určujú kam sa má poslať email pre danú doménu.
- Môže ich byť viac, priorita (nižšia je lepšia) určuje ktorý sa má preferovať.
- Nemôže ukazovať na záznam typu CNAME.
- Ak MX záznam nie je nájdený, MTA sa pokúsi doručiť správu na A/AAAA záznam.
aisa.fi.muni.cz. 1763 IN A 147.251.48.1
aisa.fi.muni.cz. 1290 IN AAAA 2001:718:801:230::1
aisa.fi.muni.cz. 1738 IN MX 50 relay.muni.cz.
Zjednodušený príklad doručovania emailu:
- Užívateľ odošle prostredníctvom svojho MUA email. MUA správu naformátuje a pomocou protokolu SMTP odošle lokálnemu MSA.
- MSA zistí cieľovú adresu podľa adresy poskytnutej v SMTP správe. Dotaz na MX záznam pre doménu na DNS - preklad domain name na FQDN.
- MSA odošle pomocou protokolu SMTP správu na zistenú FQDN adresu. Server ktorý prijal správu (MTA) ju môže ďalej preposielať až kým sa správa nedostane server na ktorom sa nachádza požadovaná emailová schránka (relaying).
- MDA doručí správu do mailboxu popísaného v local-part emailovej adresy.
- Príjemca si správu vyzdvihne použitím protokolu IMAP alebo POP3
Spôsob ukladania správ
O ukladanie sa stará MDA. Existuje viacero spôsobov ukladania:
-
mbox
- jeden súbor
- problémy so zamykaním
-
Maildir
- každá správa v samostatnom súbore
- rozsiahlejšia adresárová štruktúra - tmp, new, cur
Protokoly
SMTP
Popisaný v RFC 5321. Komunikácia prebieha na porte tcp 25, v prípade zabezpečenej komunikácie na porte tcp 587 (465). Po nadviazaní spojenia prebieha komunikácia pomocou textových príkazov.
Správa sa skladá z:
-
Obálky
- Odosielateľ
- Príjemca
-
Samotnej správy
- Hlavička
- Telo správy
S: 220 smtp.example.com ESMTP Postfix
C: HELO relay.example.org // inicializácia
S: 250 Hello relay.example.org, I am glad to meet you
C: MAIL FROM:<bob@example.org> // predanie obálky
S: 250 Ok
C: RCPT TO:<alice@example.com>
S: 250 Ok
C: RCPT TO:<theboss@example.com> // môže byť špecifikovaný viacnásobne
S: 250 Ok
C: DATA // Bude nasledovať samotná správa
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: . // ukončené riadkom s jedným znakom "."
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye
{The server closes the connection}
Rozšírenia v podobe ESMTP.
- EHLO (Extended HELO) - Inicializácia, server zároveň oznámi podporované rozšírenia.
- AUTH - autentizacia klienta voči serveru
- STARTTLS - šifrovaná komunikácia
POP3
- Prístup k mailboxu na serveri
- Typicky sa správy stiahnu aby ich mal užívateľ dostupné neskôr offline
- Výlučný prístup k mailboxu
- Po stiahnutí sa správy typicky mažú zo servera
- Porty tcp 110 a 995
IMAP
- Zdieľaný prístup k mailboxu
- Správy typicky zostávajú na serveri aj po prečítaní
- tcp porty 143 a 993
Formát správy
Popisaný v RFC 5322 (predtým 2822 a 822). Správa sa skladá z hlavičky a tela správy. Povolené su ASCII znaky 1 až 127(dnes už podpora UTF8 RFC 6532). Správa je rozdelená na riadky oddelené znakmi CRLF.
Hlavička
- Pevne daný formát
key: value
From:
mailbox autora správy, môže byť viacSender:
odosielateľ správyTo:
adresa príjemcuCc:
carbon copyBcc:
blind carbon copySubject:
predmet správyMessage-Id:
identifikácia správyRecieved:
každý MTA sa po ceste "podpíše", vždy na začiatok hlavičkyX-*:
neštandardné hlavičky-
Príklad hlavičiek:
Received: by sender-daemon@arethusa2.fi.muni.cz PID 12363 for 524913@mail.muni.cz; Wed, 18 Oct 2023 15:40:12 +0200 Received: from ismu-submit at 2023-10-18 15:38:39 +0200 via SQL From: Dorota Jůvová <166252@mail.muni.cz> To: Peter Romančík <524913@mail.muni.cz> Subject: Zveme vás na Den s průmyslovými partnery ve čtvrtek 23. 11. 2023 Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-Id: <1697636412.216572909.402.762451694421@mail.muni.cz> Date: Wed, 18 Oct 2023 15:40:12 +0200 Return-Path: 166252 X-ISMU-Expires: 2024-04-14
Telo
- Nemusí byť prítomné
- Od hlavičky oddelené prázdnym riadkom
- Len sekvencia ASCII znakov
MIME (Multipurpose Internet Mail Extensions)
- RFC 2045 a množstvo ďalších
- Umožnuje obsah v tele správy bohatší ako len ASCII
-
Povinné hlavičky
Mime-Version: 1.0
Content-Type: type
Content-Transfer-Encoding: 7bit|8bit|base64|quoted-printable
- Priklady typov:
text/html, application/json, image/jpeg
Problém spamu
Nevyžiadaná pošta. Podľa štatistiky v roku 2022 tvoril spam približne 56.5% všetkých emailov. Najčastešjšou kategóriou je reklamný spam.
Open mail relay je MTA nakonfigurovaný tak, že umožňuje správu odoslať komukoľvek.
Techniky na potlačenie spamu:
- blacklisting - databáza open relay serverov, prípadne priamo serverov z ktorých prichádza spam.
-
greylisting
- MTA dočasne zamietne prijatie emailu od odosielateľa ktorého nepozná - kód 4xx
- Ak nejde o spam, server sa pokúsi správu doručiť znova a správa sa po nejakom čase naozaj doručí.
-
SPF - Sender Policy Framework
- potlačenie "sender address forgery"
- SPF dns záznamy
- určujú ktoré servery môžu posielať emaily z danej domény
-
príklad:
example.net. TXT "v=spf1 mx a:pluto.example.net include:aspmx.googlemail.com -all"
-
DKIM - Domain Keys Identified Mail
- potlačenie "sender address forgery"
- do hlavičky sa pridáva privátny kľúč domény odosielateľa
- príjemca overí pomocou verejného kľúča získaného z DNS - TXT záznam
-
Spam filtre
- Využívajú rôzne techniky na rozpoznanie spamu
- Analýza hlavičiek a tela správy
- Užívateľ môže správy označovať za spam
- napr.
SpamAssassin
Postfix
Open source MTA. Implementovaný ako množstvo služieb ktoré bežia na pozadí.
postconf(1)
nástroj na konfiguráciupostmap(1)
aktualizácia maps/etc/postfix
master.cf
- definuje jednotlivé služby a démonov ktoré majú byť zapnuté-
main.cf
- konfiguračné parametremeno = hodnota
, hodnota môže byť prázdna čo má v niektorých prípadoch špeciálny významinet_protocols = all
povolí ipv4 aj ipv6myhostname
meno SMTP servermydomain
meno doménymyorigin
doména pre správy odchádzajúce zo serveramydestination
domény pre ktoré prijímame správymynetworks
špecifikácia klientov od ktorých preposielať správyrelay_domains
do akých destinácii preposielať správyrelayhost
konkrétny jeden server kde sa budú preposielať správy-
transport_maps
môžeme definovať kde sa majú preposielať správy pre ktoré adresy sender_dependent_default_transport_maps
kde poslať správu na základe odosielateľa
Na sprístupnenie POP3/IMAP potrebujeme iný nástroj, napr. dovecot
.
Konfigurácia:
/etc/dovecot
-
dovecot.conf
Literatura
- Archív referátů
- Archív referátů
- Archív referátů
- How Email Works
- Schéma fungovania emailu
- SMTP commands reference
- RFC 5321
- RFC 5322
- RFC 2045
- Materiály k predmetu PV077
- Materiály k predmetu PB156
- Materiály k predmetu PV005 Služby počítačových sítí
- Nikolina Cveticanin - SPAM Statistics for 2023
- Sender Policy Framework Introduction
- Postfix Documentation
- Dovecot - Quick Configuration