UNIX a Internet

E-mail

Autor: Jiří Hnídek / jiri.hnidek@tul.cz

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
    • MailDir

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
    • QUIT

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:
    • Předmět e-mailu
  • Date:
    • Datum odeslání, sestavuje klient, jen zobrazení
  • Received:
    • Průchody MTA

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?