E-mail
- Elektronická pošta
- 1965 - MIT v USA
- Komunikace mezi uživateli sálového počítače
- 1966 - přenos zpráv různými počítači
- 1969 - ARPANET
- Nejprve různé systémy přenosu zpráv
- 1971 - znak @
@
- 1971 - Ray Tomlinson
- Zavináč, anglicky "at"
- Původně poštovní adresa pro konkrétní počítač
- Zodpovědnost za příjem pošty pro doménu definuje MX v DNS: počítač přijímající SMTP spojení na dané doméně
E-mailová adresa
- "Petr Novák" <petr.novak42@tul.cz>
- V uvozovkách je „plné jméno“, které si nastavuje sám uživatel včetně národních znaků (Base64)
- Adresa odesílatele se nijak nekontroluje
- Odchozí SMTP servery kontrolují jen existenci domény (např. @gmail.com)
- SMTP server nemá způsob zjistit platnost jména pokud není zároveň příjemcem
MUA
- (Mail) User Agent (též jen UA)
- Program pro čtení a vytváření/odesílání e-mailu
- Čtení pomocí protokolů POP3 nebo IMAP
- Odesílání pomocí SMTP protokolu
- Většinou specializovaná aplikace:
- Outlook
- Thunderbird
- Mail.app
- Mobilní aplikace (Android, iOS, atd.)
- Dnes nejčastěji Webmail - MUA v prohlížeči: GMail a spol.
MTA
- Mail Transfer Agent
- Program pro přepravu elektronické pošty
- Sendmail, Postfix, Exchange, atd.
- Pro komunikaci používá protokol SMTP
- Koncový MTA předává e-mail MDA
- Nutná ochrana proti SPAMu
- Též často specializovaný jako MSA
MSA
- Mail Submission Agent
- Program pro převzetí nového e-mailu od MUA
- Podpora pro mobilní MUA klienty a typicky pro „vlastní“ ověřené uživatele. E-mail pomocí něj lze poslat z libovolného počítače v Internetu
- Kontroluje, zda získaný e-mail není SPAM, HOAX apod.
- Menší objem e-mailů, šifrování, ...
- Není nutné konfigurovat MSA zároveň jako klasické MTA
MDA
- Mail Delivery Agent
- Program, který uloží e-mail uživateli do schránky
- Na Linuxu: procmail, maildrop
- Někdy jako součást MTA (bezpečnostní riziko)
- Některé umožňuje poštu filtrovat, provádět autom. akce
- Schránka typicky v podobě:
MBox
- Tradiční formát - velký soubor s mnoha e-maily
- Pomalejší zpracování, nevhodné pro (rozdílové) zálohování
MailDir
- Sdresář, kde každý e-mail je jeden soubor
- Novější, je typicky rychlejší
SMTP
- Simple Mail Transfer Protocol (1982)
- Slouží pro předávání elektronické pošty
- Používají ho ke vzájemné komunikaci MTA
- MTA se řídí jen údaji v obálce
- Používá standardně TCP port 25
- Původně se počítalo jen s přepravou ASCII: prostý anglický text (spodních 7 bitů)
- SMTP definuje:
- Obálku: reálná adresa odesílatele a příjemce
- Vlastní e-mail: libovolný obsah
Příklad SMTP komunikace
[jirka@proxima ~]$ telnet smtp.tul.cz 25
Trying 2001:718:1c01:16::aa...
Connected to smtp.tul.cz.
Escape character is '^]'.
220 bubo.tul.cz ESMTP Postfix
HELO neco
250 bubo.tul.cz
MAIL From: petr.novak42@tul.cz
250 2.1.0 Ok
RCPT To: jiri.hnidek@tul.cz
250 2.1.5 Ok
DATA
354 End data with .
Subject: Pokus
From: kobliha@cukrarna.cz
To: kremrole@sladarna.cz
Sladky pokus.
.
250 2.0.0 Ok: queued as 614E618050A0C
QUIT
221 2.0.0 Bye
Connection closed by foreign host.
SMTP komunikace
- Obálka: zahodí se po doručení e-mailu do schránky
- HELO jméno-klienta
- MAIL From: <e-mail@odesílatele>
- Slouží při vrácení chybového hlášení
- RCPT To: <e-mail@příjemce>
- Skutečný příjemce, kterému bude e-mail doručen
- Vlastní e-mail (příkaz DATA): hlavičky e-mailu, prázdný řádek, tělo e-mailu, samotná tečka na řádku
- Ukončení komunikace se SMTP serverem
ESMTP
- Rozšíření SMTP (1995)
- RFC 1869
- Indikace pomocí uvítacího příkazu EHLO
- Protistrana reaguje zasláním seznamu rozšíření
- STARTTLS
- Nutná podpora na obou stranách spojení
- Šifrování komunikace pomocí mezivrstvy TLS
- Autentizace serveru (certifikát)
- Řeší přenos hesla pomocí AUTH
- Zabezpečený přenos dat na SMTP server
Chybové zprávy
- Při problému s předáním e-mailu jinému MTA
- Trvalá chyba v doručování:
- Neznámý adresát, neznámá (cílová) doména
- Odmítnutí od MTA příjemce (nebo na cestě)
- E-mail je doručen zpět odesílateli
- Dočasná chyba v doručování
- Přeplněný mailbox uživatele
- Dočasné přetížení na straně cílového MTA
- E-mail zůstane ve frontě a pokus o doručení je opakován
Fronta
- Implementuje MTA (příkaz mailq)
- E-maily čekající na odeslání/doručení
- Je to specifický adresář (/var/spool/mqueue)
- Fronta se používá pro dočasné uložení před odesláním
- Při havárii je neodeslaný e-mail stále na disku
- Vysoká zátěž počítače s MTA
- E-mail se jen uloží do fronty, dále se (zatím) nezpracovává
- MTA se opakovaně snaží položky ve frontě zpracovat
Doručování z fronty
- Průchod frontou vždy po 15 - 45 minutách:
- E-mail zde čeká na nový pokus o doručení
- Z fronty bude smazán až po převzetí dalším MTA tj. po oznámení: „Message accepted for delivery“
- Po cca 4 hodinách:
- Varování odesílateli, že jsou problémy s doručením: „You don't need to resend your message“
- Po cca 4 dnech:
- E-mail vrácen odesílateli spolu s chybovým hlášením> „Mailbox full“, „Connection reset by peer“, ...
Ztráta e-mailu?
- E-mail by se neměl „ztratit“
- Dokud přijímající (MTA) nepotvrdí příjem, musí mít odesílající MTA e-mail stále na disku
- Při příjmu používá MTA zápisové bariéry a fsync()
- MTA přijme (do RAM) a dám pokyn k zápisu na disk
- Dokud disk nepotvrdí, že je zapsáno, nepokračuji dál
- Teprve po potvrzení potvrdím příjem e-mailu protistraně
- Fakticky je tak ztráta e-mailu nemožná
Formát e-mailu
- Hlavičky
- Některé pevně definovány
- From:, To, Subject:, Date:, Received:
- Uživatelské začínají na X-
- X-Virus-Scanned: clamav-milter 0.97.8 at smtp.firma.cz
- Je-li záznam delší, než max. povolená délka řádku, pokračuje se na dalším řádku mezerami
- Prázdný řádek
- Tělo e-mailu s vlastním obsahem
Hlavička e-mailu
- From:
- To:
- Slouží pro zobrazení odesílatele a příjemce při doručování se nijak nevyužívají.
- Subject:
- Date:
- Datum odeslání, sestavuje klient, jen zobrazení
- Received:
Průchody MTA
- Podpis vkládaný MTA při průchodu e-mailu
- Umístěn vždy na začátek hlaviček
- Odkud přijato (from ...), kým převzato (by ...)
- Dokumentuje "cestu" e-mailu skrze různé MTA
- Řádky v hlavičce mohou být zfalšovány odesílatelem!
- V záznamech jsou uvedena ID (vytváří MTA)
- Podle ID lze hledat v záznamech o přepravě (logy MTA)
Tělo e-mailu
- Hlavní část e-mailu
- Původně jen čisté ASCII (7 bitů) znaky s kódy: 0 - 127
- Problém s kódváním národních znaků: jak zakódovat 8 bitů do 7bitů
- Z počátku různé metody závislé na konrétním klientovi
- Např: 8bit, binary
- Způsoby překódování do 7bitové podoby
- uuencode, quoted printable, base64
- Dnes používán MIME standard (umí všichni klienti)
MIME
- Multipurpose Internet Mail Extensions
- RFC 2822 (2001)
- Umožňuje do e-mailu včlenit 8bitový obsah
- Text s národními znaky (+různá kódování). Dnes převážně UTF-8
- Přílohy v e-mailu jako soubory různých typů
- Internet media type (dříve MIME typy):
- image/jpeg, image/gif, image/png, ...
- text/plain, text/html, ...
- application/javascript, application/ogg, application/octet-stream
- audio/mpeg, audio/ogg, ...
POP
- Post Office Protocol (1984), port 110
- Dnes POP3 (verze 3) od roku 1988
- Vybírání poštovní schránky (jen z INBOXu)
- Jen příchozí pošta (resp. nová pošta)
- Určeno k off-line připojení (připojit se, stáhnout poštu, odpojit se)
- Dnes se příliš nepoužívá. Nahrazeno protokolem IMAP.
POP3S
- Podpora SSL/TLS
- Původní verze protokolu používala nezabezpečenou komunikaci
- TCP port 995
- Vložení mezivrstvy zajišťující šifrování
- Zbytek protokolu zůstane stejný
- Využití certifikátů k ověření autenticity protistrany (serveru)
- Šifrování komunikace mezi MTA a MUA
IMAP
- Internet Message Access Protocol (1988)
- RFC 1064, TCP port 143
- Vzdálený přístup k poštovní schránce (on-line)
- Umožňuje pracovat s dalšími složkami, ne tedy jen INBOX jako POP3
- Poměrně složitá a komplexní implementace
- Konkurenční přístup více klientů zároveň
- Nutná vzájemná synchronizace (po smazání emailu atp.)
- Možnost off-line práce s elektronickou poštou
- Prohledávání, přesouvání a kopírování e-mailů
IMAPS
- Podpora SSL/TLS
- Původní verze protokolů jen otevřenou komunikaci
- TCP port 993 (IMAPS)
- Vložení mezivrstvy zajišťující šifrování
- Zbytek protokolu zůstane stejný
S/MIME
- Podpora šifrování a podepsání e-mailu pomocí MIME
- Využití certifikačních autorit, certifikátů
- Hierarchická struktura CA, úložiště certifikátů, ...
- Většina MUA to umí již v základu
- Většinou komerční záležitos: nutnost zaplatit za osobní certifikát
- Každý e-mail vlastník certifikátu a klíče může podepsat
- Pokud máme veřejný klíč příjemce, tak můžeme e-mail i zašifrovat
- Problém s webmaily (jak zacházet s tajným klíčem)
PGP
- Standard definovaný programem PGP
- Umožňuje obsah e-mailu podepsat a případně zašifrovar
- Reimplementace: OpenGPG, GnuPG, gpg
- Volně šiřitelné, kompatibilní, modulární
- Používání sítí důvěry (Web of Trust)
- Vlastní klíčenka, vyjadřování stupně důvěry klíčům, ...
- Typicky jako doplněk do MUA
- Enigmail pro Thunderbird
SPAM & spol.
- Nevyžádaná elektronická pošta
- Typicky reklama na výrobky, služby (Viagra, konference, nigerijské e-maily, atd.)
- Reaguje zanedbatelné množství příjemců
- Rozesíláno obrovská množství e-mailů
- Nízká cena na odeslání 1 e-mailu, proto se vyplatí
- Antispamová ochrana
- Administrátor MTA nebo koncový uživatel
- Restrikce na SMTP servery
- Filtrování zpráv
HAM
- Opak SPAMu
- Většinou žádoucí pošta v podobně obchodních nabídek, bulletinů apod.
- Problém pro odesílatele, že vypadá jako nežádoucí
- Používání whitelistů: seznam výjimek
- E-maily je potřeba odesílat "pomalu" z velkého množství serverů
- Většinou pro firmy dostupné jako placená služba
SPAM a SMTP servery
- Ochrana proti SPAMu zaváděna na konci 90. let 20. století
- Přijímá e-mail pouze od důvěryhodných IP adres
- Od kohokoliv jen jako koncový příjemce:
- MTA s e-mailovými schránkami
- Výjimky:
- Autentizovaní uživatelé: AUTH pro SMTP
- Servery s MX záznamy v DNS
- Spammer pak nemá přes koho rozesílat a vznikají mu další náklady na rozesílání e-mailů
Filtrování zpráv
- Podle charakteristických slov
- Filtr má svoji databázi slov
- Různé váhy na slova: bayesovský filtr
- Vlastně expertní systém s umělou inteligencí
- Musí se nejprve "naučit" - databáze SPAMu
- SPAM je, když je pravděpodobnost větší než X
- Když je ještě větší než Y, pak samoučení
- Charakteristické rysy: špatně formátované hlavičky a podobně
- OCR na obrázkový SPAM
HOAX
- Virální zprávy
- Těží z naivity uživatelů
- Uživatelé si sami zprávy přeposílají
- Příklad: "Daruj krev umírající holčičce", "Pište PIN obráceně", ...
- Často nesmyslné
- Ochrana: nepřeposílat, přemýšlet, školit uživatele
- Jste-li na pochybách: www.hoax.cz - seznam známých HOAXů
Zabiják SPAMu
- SpamAssasin: program pro klasifikaci SPAMu
- Dnes pod hlavičkou Apache Foundation
- Bayesiánský filtr, databáze charakteristik
- Vlastní pravidla, veřejné blacklisty IP adres
- Propojení s externím OCR
- Když je pravděpodobnost nižší než 5, tak je e-mail OK
- Když je vyšší jak 5, označí e-mail jako SPAM
- MUA má pak možnost poštu roztřídit
DNS & MX záznamy
$ dig tul.cz MX
Systémové a virtuální účty
- Systémový účet
- Uživatel má svůj uživatelský účet na cílovém počítači, domácí adresář a v něm poštovní schránka
- Klasická situace, kterou MTA umí obsloužit
- Virtuální účet
- Databáze příjemců mimo systémové účty
- Např. v tabulce SQL serveru, textovém souboru, LDAP
- Hodí se pro například pro hostingy, velké organizace
- Nutná dodatečná podpora v MTA
Poštovní schránka
- Typicky soubor nebo adresář
- Každý uživatel má svoji poštovní schránku
- Nová pošta - INBOX
- Možnost vytváření vlastních složek, do kterých si uživatel může třídit e-maily
- Formát poštovní schránky (složky)
- Soubor (mbox) - klasika (náchylné k souběhu!)
- E-maily jsou za sebou, odděleny prázdným řádkem a "From"
- Pomalé při smazání e-mailu
- Adresář (maildir) - moderní přístup
- 1 e-mail = 1 soubor (FS s podporou velkých adresářů)
Aliasy
- Alternativní adresy
- Jeden uživatel může mít více aliasů
- Typicky pro služby:
/etc/aliases
alias: prijemce1,prijemce2,...
- Po modifikaci příkaz: newaliases
- Vznikne soubor
/etc/aliases.db
- MTA s binárním .db pracuje rychleji a efektivněji
Filtry na příchozí zprávy
- Typická úloha pro MDA
- Uživatel si může pravidla nastavit na serveru sám, pokud tam má účet
- Lze v poštovním programu, ale též na WebMailu
- Možnost automatické odpovědi
- Např: jsem na dovolené, přijedu dne …
- Mělo by se odeslat jen jednou
- Nutnost ukládat ID přeposlaných e-mailů
- Problém s elektronickými konferencemi
- v Linuxu je oblíben procmail:
- Soubory:
/etc/procmailrc
, ~/.procmailrc
Out of Office
- "Jsem týden na dovolené"
- Automatická odpověď od MDA
- Pozor na smyčky: jsou-li oba lidé na dovolené.
- Oznámení by se mělo poslat jen 1x
- automat vede evidenci adres, kam již oznámení poslal
DSN
- Delivery Status Notification
- Oznámení příjemci, že:
- Uživatel si e-mail přečetl: posílá MUA
- E-mail byl doručen do schránky: posílá MTA/MDA
- Neexistuje jednotná závazná akceptovaná norma:
- Podpora je mizerná, uživatelé si to často nepřejí
Webmail
- MUA na webové stránce
- Webová aplikace
- Dnes v HTML5: JavaScript & WebSocket
- Asynchronní zpracování akcí uživatele (ení nutné obnovovat celou stránku)
- Offline fungování
- Příklady:
E-mailová konference
- Automatické rozesílání elektronické pošty, příklad: httpd.apache.org/lists.html
- E-mail poslaný na adresu konference je rozeslán automaticky všem odběratelům
- Program - démon
- Seznam odběratelů
- Mohou mít vlastní nastavení, www rozhraní
- Lze se přihlásit/odhlásit
- Uzavřené, otevřené konference
- Automatické vypnutí, když se e-maily vrací
Děkuji za pozornost. Nějaké otázky?