Applicatieprotocollen Electronic mail
leggen de vorm en structuur van email-berichten vast
• Adressen en berichten
• RFC 822: algemene structuur van een email-bericht, structuur van een email-adres en welke headers er kunnen gebruikt worden in email-berichten
• Transport: Simple Mail Transfer Protocol (smtp - 25)
• MIME-standaard: de structuur van email-bericht met attachments (een bestand dat met het bericht wordt meegestuurd, bijvoorbeeld een tekst in PDF of een plaatje in JPEG)
• Multimedia mail : Multipurpose Internet Mail Extensions • Ophalen : Post Office Protocol (pop - 110) • Ophalen : Internet Message Access Protocol (imap - 143)
• S/MIME-standaard legt vast op welke wijze email-berichten kunnen versleuteld worden zodat ze niet kunnen afgeluisterd worden bij transport over Internet. S/MIME voorziet ook in authenticatie van de afzender van email-berichten.
• de mailserver (sendmail)
Mail programma
applicatie-protocollen
Mail programma
LDAP
POP, IMAP
directory server
POP/IMAP server
SMTP ESMTP
mailbox Mail server
Mail server
bc bc bc
Mail server
transport-protocollen Twee niveaus van communicatie: ∗ mailprogramma (user agent, UA, MUA) waarmee gebruiker zijn post leest en verwerkt (Eudora, Outlook, Ximian Evolution, ...) ∗ mailserver (message transfer agent, MTA) is de postbode die de post over het netwerk verstuurt (sendmail, exchange).
Transportprotocollen op het niveau van de mailservers voor het transport van berichten over het netwerk ∗ normaal SMTP Simple Mail Transport Protocol ∗ uitbreiding ESMTP Extended SMTP ∗ BSMTP Batch SMTP is een variant waarin berichten niet direct via SMTP verstuurd worden, maar in plaats daarvan opgespaard worden om slechts enkele malen per dag in batches verstuurd te worden. Een verzonden bericht passeert doorgaans een aantal mailservers voor het op het postkantoor van de bestemming arriveert. Bijvoorbeeld: een organisatie met meerdere interne mailservers. Deze mailservers maken om security technische redenen geen rechtstreekse SMTP-verbinding met de buitenwereld. Het bericht wordt doorgespeeld aan de mailserver van de firewall die het dan verder stuurt naar de bestemming op het Internet.
Veel gebruikte email-headers Email-adressering • machineadres :
[email protected]
niet aan te raden
voorkeur omdat het korter is en omdat het niet • domeinadres :
[email protected] verandert als de machine waarop de post gelezen wordt, wordt veranderd. MX-record : post wordt afgeleverd op de MX-host van het domein dat na de @ staat. Post voor
[email protected] wordt niet op de host srva00 afgeleverd maar op de host waar het MX-record voor srva00.links.cn naar wijst. Als er geen MX-record bestaat voor srva00.links.cn, wordt een A-record opgezocht en wordt geprobeerd om de post op het bijhorende IP-adres af te leveren. Speciale adresvormen ∗ arpanet kludge: jos%
[email protected] ∗ naam van de gebruiker als commentaar: Jos Willems <
[email protected]> ∗ IP-adres als domein : jos@[10.30.100.2]
Twee delen van een email-bericht Inhoud : een aantal headers en de feitelijke boodschap. De headers worden deels ingevuld door de gebruiker, deels door zijn mailprogramma en deels door de gepasseerde mailservers. Er zijn veel headers die men in emailberichten kan opnemen, ook niet offici¨ele headers. Return-Receipt-To: een niet-offici¨ele header om aan te geven dat een ontvangstbevestiging gestuurd moet worden. Enveloppe : bevat de bezorginformatie en is alleen van belang voor de mailserver. Voor elk transport tussen twee mailservers is er een aparte enveloppe. Een bericht met header To:
[email protected],
[email protected] zal tweemaal bezorgd worden, bij de mailserver van links.cn en bij de mailserver van rechts.cn. Er zijn twee verschillende enveloppen: op de eerste staat aangegeven dat de brief voor jos is en op de tweede dat de brief voor marie is. De inhoud (inclusief de header To: is in beide gevallen hetzelfde.
From: Sender: Reply-To: Resent-.. To: Cc: Bcc: Return-Path: Received: Date: Message-Id: Subject: In-Reply-To: Content-Type: Content-Length: Content-Transfer-Encoding: X-.. (X-Mailer:) (X-Face:)
afzender (auteur) afzender (verzender) adres voor antwoorden (o.a. mailing-lists) bij doorgestuurde post, bijv. Resent-From: geadresseerde, carbon copy, blind carbon copy terugkeeradres bij problemen trace van route mailbericht datum van verzenden unieke identificatie van bericht onderwerp van bericht verwijzing naar eerder bericht MIME-type van bericht lengte van MIME bericht transportcodering vrij beschikbaar, (bijv. gebruikte User Agent) (bijv. foto van afzender)
SMTP is een eenvoudig ASCII protocol. ∗ Client (verzender) maakt een TCP verbinding naar poort 25 ∗ Client wacht tot server zijn eigen identiteit doorstuurt in de vorm van een FQDN en aangeeft dat hij klaar is om mail te ontvangen. ∗ Indien niet, sluit de client de verbinding en probeert later opnieuw. ∗ Indien wel, identificeert de client zichzelf met het HELO command met als argument een FQDN. ∗ De client geeft aan van wie de mail komt (MAIL FROM:) en naar wie hij gaat (RCPT TO:). Bij meerdere ontvangers worden er meerdere RCPT TO: commands gedaan. ∗ Indien zo’n ontvanger langs de serverkant bestaat, geeft deze een go-ahead boodschap. ∗ De client stuurt nu de boodschap (DATA) en de server bevestigt deze. Er zijn normaal geen checksums nodig omdat TCP voorziet in een betrouwbare bytestroom. De boodschap wordt afgesloten met CRLF.CRLF (lijn met alleen een punt). ∗ Tot slot wordt de verbinding verbroken (QUIT).
% telnet costello 25 Trying... Connected to costello.denayer.wenk.be. Escape character is ’^]’. 220 costello.denayer.wenk.be ESMTP Sendmail 8.8.6 (PHNE_17190)/8.8.6; Mon, 21 Nov 2005 15:45:19 +0100 (MET) HELO zeppo.denayer.wenk.be 250 costello.denayer.wenk.be Hello
[email protected] [10.30.1.81], pleased to meet you MAIL FROM:
[email protected] 250
[email protected]... Sender ok RCPT TO:
[email protected] 571
[email protected]... we do not relay RCPT TO:
[email protected] 250
[email protected]... Recipient ok DATA 354 Enter mail, end with "." on a line by itself Hoi
. 250 PAA07687 Message accepted for delivery QUIT 221 costello.denayer.wenk.be closing connection Connection closed by foreign host. %
Bijkomende commands: ∗ RSET breekt de huidige mail transactie af en zorgt er voor dat beiden uiteinden resetten: informatie omtrent zender, ontvangers en maildata wordt weggedaan. ∗ VRFY van de client om een ontvangersadres te verifi¨eren zonder mail te sturen (bijvoorbeeld voor debugging doeleinden). ∗ NOOP doet niets maar forceert de server om met een OK reply code (200) te antwoorden. ∗ EXPN expandeert een mailing list. ∗ TURN draait de rollen van client en server om, zodat mail in omgekeerde richting kan gestuurd worden zonder de TCP verbinding af te breken en een nieuwe op te bouwen. ∗ SEND ,SOML, and SAML (in plaats van MAIL TO:) om mail onmiddellijk op de terminal van de gebruiker af te leveren en/of in de mailbox van de ontvanger.
Beperkingen van SMTP − 7-bits transport : alleen ASCII-data transport, geen Europese tekens − regels van maximaal 1000 tekens: geen binaire data (attachments) Oplossingen:
Groot security probleem:
+ op mailprogramma-niveau: binaire gegevens vertalen naar speciale ASCII-codering
Vervalsen van e-mail berichten (spoofen) door valse afzenderadressen te gebruiken in de enveloppe (MAIL FROM:) en in de inhoud van het bericht (From:).
+ op transportniveau: mailservers beslissen onderling om een 8-bits datakanaal te gebruiken.
Oplossing: cryptografische beveiligingstechnieken (S/MIME).
ESMTP uitbreidingen SMTP-client en -server onderhandelen over speciale diensten: service-extensies, bijvoorbeeld het versturen van binaire data. Drie uitbreidingen: 1. command EHLO: client informeert bij server of hij voorziet in ESMTP en welke service-extensies daarbij ondersteund worden 2. elke service-extensie heeft een bepaalde symbolische naam 3. uitbreiding op de commands MAIL FROM: en RCPT TO: met optionele parameters. Bijvoorbeeld: MAIL FROM:
[email protected] BODY=8BITMIME ∗ 8BITMIME: client en server besluiten om een 8-bits datakanaal te hanteren (maximale lengte van regels blijft op 1000 tekens)
ESMTP service-extensies ∗ BINARYMIME: client en server besluiten om willekeurige binaire data te versturen ∗ SIZE: server maakt aan client kenbaar hoe groot de boodschappen die deze verstuurt, maximaal mogen zijn, zodat deze dat tevoren weet ∗ CHECKPOINT: client en server kunnen in geval van een voortijdig verbroken SMTP-sessie de draad weer op pakken waar ze gebleven waren; handig voor erg grote email-berichten, die dan na een weggevallen verbinding niet in hun geheel opnieuw verzonden hoeven te worden ∗ ETRN: voor het op afstand starten van een queue run. Een mailserver die zijn berichten niet kan verzenden, bewaart deze in zijn mail queue en zal na een tijdje terug proberen. Met ETRN wordt vanuit de ontvangende zijde gevraagd aan de mailserver om terug te proberen. ∗ DSN: Delivery Status Notification: client maakt aan de andere partij kenbaar dat hij een bevestiging van aankomst wenst ∗ AUTH: bij het verzenden van een email-bericht van een UA naar de MTA moet de gebruiker zich authenticeren ∗ STARTTLS: SSL-encryptie van SMTP-sessies.
% telnet costello 25 Trying... Connected to costello.denayer.wenk.be. Escape character is ’^]’. 220 costello.denayer.wenk.be ESMTP Sendmail 8.8.6 (PHNE_17190)/8.8.6; Mon, 21 Nov 2005 15:48:38 +0100 (MET) EHLO zeppo.denayer.wenk.be 250-costello.denayer.wenk.be Hello
[email protected] [10.30.1.81], pleased to meet you 250-VERB 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-XUSR 250 HELP QUIT 221 costello.denayer.wenk.be closing connection Connection closed by foreign host.
Multimedia mail: Multipurpose Internet Mail Extensions Traditionele oplossing voor het 7-bit probleem: 1. handmatig vertalen: uuencode en BinHex ∗ gebruik van een programma om de te verzenden binaire data te vertalen naar een equivalente ASCII-tekst (ongeveer zo’n 30% groter) ∗ het resultaat wordt verstuurd over een 7-bits SMTP-kanaal ∗ de ontvangende zijde decodeert het ontvangen bericht mbv. uudecode. 2. geautomatiseerde vertaling naar een ASCII-representatie in plaats van het tijdrovende handmatige codeer/decodeer werk maar toenemend gebrek aan interoperabiliteit: ∗ verschillende leveranciers: eigen specifieke wijze van ASCII-codering ∗ andere leveranciers: automatisch uitvoeren van uuencode/BinHex bewerkingen maar geen standaardisatie; er is bijvoorbeeld geen eenduidige specificatie van de uuencode-techniek
MIME-headers Karakteristieken van MIME ∗ gebruik van niet-ASCII-tekensets ∗ gebruik van richtext : tekst met attributen: cursief, vetgedrukt, ... ∗ opnemen van attachments : aanhangsels met plaatjes, beeld, geluid, ... ∗ opnemen van verwijzingen naar documenten die niet worden meegestuurd; deze documenten kunnen op verzoek van de gebruiker worden opgehaald door UA ∗ berichten met meerdere delen die parallel afgehandeld moeten worden; bericht met filmpje, tekst en geluid met de bedoeling deze alledrie tegelijk te tonen en af te spelen ∗ berichten met meerdere alternatieve representaties voor bepaalde data (plaatje in GIF-, JPEG- en EPS-formaat); ontvanger kiest het formaat dat hem het beste schikt ∗ grote boodschappen die over meerdere berichten verdeeld worden; ontvangende UA plakt deze automatisch weer aan elkaar
• MIME-Version: om aan te geven dat het bericht een MIME-bericht is (1.0) • Content-Type: MIME-type van de boodschap of van een onderdeel ervan. Een bericht met vijf attachments bevat zes Content-Type headers: ´e´en voor het bericht als geheel (multipart/mixed) en ´e´en voor ieder attachment Optionele parameters voor een nadere specificatie, bijv charset Content-Type: text/plain; charset=us-ascii Content-Type: text/html; charset=iso-8850-1 en boundary om de scheider tussen diverse delen van het bericht aan te geven • Content-Transfer-Encoding: hoe data gecodeerd is voor transport • Content-Description: (optioneel) beschrijving van de inhoud (soort commentaar) • Content-Disposition: (optioneel) hint aan de UA hoe de inhoud verwerkt moet worden, bijvoorbeeld inline zodat de UA de inhoud van een bepaald attachment inline toont of file om de inhoud in een bestand op te bergen
MIME-typering Speciale header voor email-boodschappen in MIME-formaat om het type aan te geven van de inhoud van de mailboodschap: Content-Type: type/subtype Zeven hoofdtypen: geeft het soort gegevens aan en kan meerdere subtypen hebben met en nadere specificatie MIME-type application audio image text video message multipart
betekenis diverse formaten audio formaten grafische formaten tekstformaten videoformaten diverse toepassingen meerdere delen
mogelijke subtypen pdf, postscript, zip, msword basic, x-aiff, x-wav gif, jpeg, tiff plain, html mpeg, quicktime rfc822, external-body, partial mixed, parallel, alternative
experimentele MIME-typen: subtype dat begint met xOOK: Web-servers voorzien data die ze naar browsers sturen, van een MIME-type
MIME transportcoderingen • 7bit: (default) boodschap bevat 7-bits ASCII-tekst • quoted-printable: tekst met klein percentage 8-bit tekens; deze worden gecodeerd als drie 7-bits tekens: = en hex-waarde bijvoorbeeld spaties aan het einde van een regel worden vertaald in =20 • base64: voor binaire data: elke drie bytes (24 bits) worden gecodeerd als een serie van 4 tekens (4 × 6 bits) uit de verzameling [A-Za-z0-9+/] • 8bit: voor situaties waarin een 8-bit clean transport mogelijk is, ESMTP-omgeving met de service-extensie 8BITMIME • binary: voor situaties waarin een binary transport mogelijk is, ESMTP-omgeving met de service-extensie BINARYMIME
MIME text: tekstueel
From:
[email protected] To:
[email protected] Subject: Voorbeeld van richtext Content-Type: text/enriched Content-Transfer-Encoding: quoted-printable
Dit is =E9=E9n voorbeeld van MIME
MIME image: attachments
From: [email protected] To: [email protected] Subject: Voorbeeld van base64 Content-Type: image/gif Content-Transfer-Encoding: base64
Ophalen van post Post wordt doorgaans afgeleverd op een centrale mailbox access server. De post zal door gebruikers op afstand over het netwerk gelezen worden. • POP: Post Office Protocol (POP3) ∗ authenticatie: gebruiker heeft een naam/paswoord waarmee hij zich kan melden bij de POP-server ∗ of alle post wordt getransporteerd naar het systeem van de gebruiker, maar blijft ook in de mailbox op de POP-server staan ∗ of de post wordt na transport verwijderd van de POP-server ∗ met het huidige POP en implementaties is het niet mogelijk om het paswoord te veranderen via POP speciale password-server om vanuit Eudora paswoorden te kunnen veranderen • IMAP: Internet Message Access Protocol om tekorten van POP te ondervangen
R01GODlhIwAjAPIAAP
POP-protocol MIME multipart: bericht dat uit meerdere delen bestaat; elk deel heeft een eigen MIME-type en een eigen transportcodering. Subtypes: ∗ mixed: onderdelen moeten sequentieel afgewerkt worden ∗ parallel: onderdelen moeten (indien mogelijk) tegelijk afgewerkt worden ∗ alternative: alternatieve representaties, waarvan de ontvanger er ´e´en uit mag kiezen. MIME message: bericht dat andere berichten, delen van berichten of verwijzingen naar berichten bevat. Subtypes: ∗ rfc822: bericht dat een bericht bevat; bij doorsturing na ontvangst naar anderen ∗ partial: bericht dat in stukken opgedeeld is omdat de volledige inhoud te groot is; attributen zijn volgnummer van dit deel en het totaal aantal delen ∗ external-body: bericht met verwijzingen naar documenten; als parameter wordt aangegeven hoe het document kan opgehaald worden (bijv. ftp, anon-ftp, local-file).
∗ TCP poortnummer 110 ∗ eenvoudig, ASCII-geori¨enteerd protocol USER STAT RETR DELE TOP LAST AUTH XTND
geef gebruikersnaam status (aantal en totale grootte) haal boodschap op verwijder boodschap toon eerste regels van boodschap nr laatst bekeken bericht onderhandelen authenticatiemethode extended commands bijv. XTND XLST
PASS LIST
bijbehorend paswoord lijst van boodschappen
NOOP RSET QUIT
no-operation reset verbinding sluit verbinding
UIDL APOP
unieke identificatie bericht authenticatiemethode met MD5 van o.a. tijdstempel
extended listing bij LIST
% telnet hardy.denayer.wenk.be 110 Trying... Connected to hardy.denayer.wenk.be. Escape character is ’^]’. +OK QUALCOMM Pop server derived from UCB (version 2.1.4-R3) at hardy starting. USER spin +OK Password required for spin. PASS ++++++ +OK spin has 1 message(s) (577 octets). STAT +OK 1 577 LIST +OK 1 messages (577 octets) 1 577 . RETR 1 +OK 577 octets Received: from zeppo.denayer.wenk.be ([email protected] [10.30.1.81])
by hardy.denayer.wenk.be (8.11.1/8.9.3) with ESMTP id jALEgWp03886 for <[email protected]>; Mon, 21 Nov 2005 15:42:32 +0100 (MET) Received: (from hcr@localhost) by zeppo.denayer.wenk.be (8.9.3 (PHNE_18546)/8.8.6) id PAA20206 for [email protected]; Mon, 21 Nov 2005 15:41:19 GMT Date: Mon, 21 Nov 2005 15:41:19 GMT From: Herman Crauwels Message-Id: <[email protected]>
POP: sterke authenticatie Potentieel probleem met de beveiliging van POP: paswoord wordt onversleuteld over de POP-verbinding verstuurd. In plaats van USER en PASS: gebruik maken van APOP. Ook met een gemeenschappelijk paswoord, maar kennis van dit paswoord kan geverifieerd worden zonder dat de client het over de lijn hoeft te sturen: ∗ direct na het opbouwen van de POP-verbinding stuurt de POP-server een tijdstempel; ∗ de client voert een MD5-berekening uit op basis van de tijdstempel en het afgesproken paswoord en stuurt het resultaat van die berekening naar de POP-server ∗ de POP-server voert dezelfde MD5-berekening uit en controleert of het antwoord van de client correct is. − gedisciplineerde paswoord keuze nodig om aanvallen waarbij paswoorden uitgeprobeerd worden, te vermijden (dictionary attack) − paswoorden worden in onversleutelde vorm op de POP-server bewaard − de berichten zelf worden onversleuteld over het netwerk verstuurd. Met AUTH kunnen nog sterkere authenticatiemethoden onderhandeld worden (bijv. KERBEROS V4, S/KEY, GSSAPI).
IMAP-protocol TCP poortnummer 143
huidige versie: versie 4
Mogelijkheden voor het op afstand beheren van mailboxen: ∗ mail archiveren in directories ∗ wisselen van directories, nieuwe directories maken ∗ boodschappen markeren als gelezen, ... IMAP legt zwaarder beslag op de server: vereiste diskruimte, processing tijd.
Hoi
. QUIT +OK Pop server at hardy signing off. Connection closed by foreign host. %
∗ Intelligente interpretatie van berichten: bijv. op grond van de grootte van attachments beslissen of men individuele attachments wel of niet wil ophalen ∗ Sterke authenticatiemechanismen en mogelijkheden om te onderhandelen over authenticatiemethode + mobiele gebruikers die hun post vanaf verschillende werkplekken (systemen) moeten kunnen benaderen + situaties waarin meerdere gebruikers ´e´en mailbox delen (bijv. bij een helpdesk).
Opzetten van een mailserver Keuze: mogelijkheden van een mailserver
Een mailserver verwerkt binnenkomende email-berichten: • local delivery: bestemd voor een lokale gebruiker ∗ in DNS moet een MX-record voorzien worden ∗ in de configuratie van de mailserver moet het domein toegevoegd worden aan de lijst van domeinen waarvoor lokale aflevering plaats moet vinden • program delivery: na aankomst nabewerken door een programma, bijv. filtering • bericht is niet voor deze mailserver bestemd: het wordt via een geschikt transportmechanisme doorgestuurd naar een andere mailserver Wanneer bij het doorsturen van een bericht naar een andere mailserver een probleem optreedt, wordt het bericht in een mail queue geplaatst. Op een later moment zal de mailserver opnieuw proberen om deze af te leveren. ∗ herschrijven van de adressen in de enveloppe en in de headers, bijvoorbeeld bij een koppeling tussen interne en externe adressen ∗ verwerken van aliassen ∗ toevoegen van poststempels (Received: headers) bij het doorsturen van berichten
• transportprotocollen: SMTP, ESMTP (welke service-extensies), andere • minder gangbare adresvormen, bijv. Arpanet kludge • gateway-functionaliteit: om in een bedrijfsnetwerk een koppeling te maken tussen een intern mail-systeem en Internet-mail ∗ herschrijven van email adressen, bijv. van email-adressen voor intern gebruik naar domeinadressen voor gebruik op Internet (en vice versa) ∗ goede ondersteuning voor MIME-attachments, bijv. omzetting van een eigen attachmentformaat van het bedrijfsinterne mailsysteem • (flexibele) mogelijkheid voor het defini¨eren van aliassen • mogelijkheid tot program delivery • configureerbaarheid: flexibel herschrijven van adressen, verwerken van boodschappen in de mail queue • anti-relay en anti-spam faciliteiten
Relaying: post van een domein A wordt naar een domein C gestuurd via een mailserver in een ander domein B.
mailprogramma
De ontvanger van het bericht ziet niet meer wat de verzendende computer (SMTP-client) in werkelijkheid is. Wanneer ook het afzenderadres vervalst is, wordt het moeilijk om de werkelijke afzender te traceren.
mailbox van ontvanger local delivery mailserver
(E)SMTP
program delivery programma dat de post nabewerkt
mailserver
De mailserver in domein B, die zijn medewerking verleent aan het doorsturen van het email-bericht, fungeert als een relay. Moderne mailservers kunnen relaying uitzetten, maar in praktijk blijkt dat vele mailservers dit onbedoeld open hebben staan. Spamming: spam is ongevraagde, veelal commerci¨ele email.
mail queue
Vele organisaties proberen anti-spam maatregelen te nemen in hun mailservers maar er zijn twee complicerende factoren: ∗ spoofing: het vervalsen van de From: adressen ∗ relaying: mail wordt indirect, via een andere mailserver verstuurd.
sendmail Standaard mailserver op vrijwel alle moderne Unix systemen Berucht om zijn complexiteit; beroemd om zijn flexibiliteit en configureerbaarheid: ongeveer alles krijgt men voor elkaar Robuust, stabiel, schaalbaar, flexibel voor het realiseren van complexe adresvertalingen Gebruikt in overgrote deel van de grote bedrijfs- en organisatienetwerken. sendmail -bd -q15m sendmail -bq sendmail -q sendmail -bt -Cconf.cf mailstats sendmail -bh
als daemon met queue check om de 15 min (mailq) lijst van spooled berichten (runq) verwerking van spooled berichten testen van configuratie van sendmail tonen van statistieken over het volume (hoststat) informatie omtrent status van hosts
You aren’t a real Unix system administrator until you’ve edited a sendmail.cf file. You’re crazy if you’ve attempted to do so twice.