Elektronikus levelezés Répási Tibor Általános Informatikai Tanszék Miskolci Egyetem
Mai program Elektronikus levelezés alapfogalmai Levélkezelési folyamatok Levéltovábbító rendszerek Sendmail Postfix Postafiók hozzáférés POP3 IMAP 2
Alapfogalmak Elektronikus levél Fej (header) és törzs (body) alkotja Szöveg állomány, ASCII kar. készlet Fejrész és törzs között egy üres sor áll Received: (from mail.there.com) by here.com id AA04599 for you; Fri, 13 Dec 1996 08:11:44-0700 Date: Fri, 13 Dec 1996 08:11:43 From: me@there.com (Full Name) Message-Id: <9631121611.AA02124@there.com> To: you@here.com Subject: a test This is a one line message. 3
Alapfogalmak Boríték Feladó cím (FROM) Címzettek címei (RCPT) Nincs köze a levél fejrészén szereplő adatokhoz! Tényleges kézbesítési adatok 4
Alapfogalmak MUA levelező kliens Mail User Agent Felhasználói program levelek feldolgozására Funkciói: Levél szerkesztés, küldés Postafiók hozzáférés, levél olvasás Szolgáltatások: Címtár (helyi, távoli) Másolatok készítése Rendezés és szűrés Archiválás Stb. Példa: Mozilla Thunderbird, Microsoft Outlook, Webmail, stb. 5
Alapfogalmak MTA levelező szerver Mail Transport Agent Levelek továbbításáért felelős szolgáltató program Funkciói: Levelek fogadása (helyi, távoli) Levelek ideiglenes tárolása (queueing) Döntés a levelek sorsáról (mail routing) Levelek kézbesítése (delivery) Levelek továbbítása (relay) Szolgáltatások: Címátírás (rewrite): alias, mailing list, virtual user Levelek szűrése, osztályozása 6
Alapfogalmak Postafiók Levelek tárolását szolgáló adatstruktúra Egy felhasználónak lehet több is (INBOX, Sent, stb.) A kézbesítés célja (delivery destination) Formátuma: MBOX: egyszerű fájl MailDir: jegyzék Egyéb Hozzáférés: Helyi: ez ma már ritka (pl. pine) Távoli: szokásos (POP3 vagy IMAP) 7
Alapfogalmak DSN állapot értesítő Delivery Status Notification Az MTA generálja Alakja: a.b.c Az a mező eredmény: 1 : információ 2 : sikeres továbbítás 3 : átirányítás 4 : ideiglenes hiba 5 : végzetes hiba A b és c mezők további részleteket árulnak el 4.3.0 : a legjobb MTA nem alkalmas 4.0.0 : a kapcsolat az MTA-val megszakadt 5.1.1 : a címzett ismeretlen 5.6.0 : adatformátum hibás 8
Levél kezelési folyamat Feladás (submission) A feladó MUA végzi A MUA ismer egy MTA-t, annak adja fel a leveleket Helyi feladás: ha az MTA a MUA-val egy gépen van, a kommunikáció lokális IPC (pipe) pl. /usr/bin/sendmail [options] < message Távoli feladás: a MUA hálózaton keresztül adja fel a levelet az MTA-nak (SMTP vagy ESMTP protokollt használva) 9
Levél kezelési folyamat 2 Sorba állítás (queueing) Az MTA minden levelet sorba állít Továbbítási költséget számít (prioritás) Kisebb szám jelenti a nagyobb prioritást Induló érték pl. levél méret * címzettek száma Routing során változhat (pl. drága vonalon kell átjátszani) Dinamikusan változik: sikertelen továbbítási kísérlet növeli A sorba állítást megelőzheti egy szűrés (pl. virus szűrés) Ha az üzenet sorba állt: Az MTA DSN=2.0.0, STAT=sent üzenetet ad Ettől kezdve a levél nem veszhet el! 10
Levél kezelési folyamat 3 Sor feldolozás (queue processing) Az MTA feldolgozza a sort: Periodikusan, Adminisztratív utasításra (egy, több vagy az összes levélre), Másik MTA kérésére (ESMTP ETRN) Mozzanatai: Prioritás növelése, Routing: döntés, hogy mit kell tenni a levéllel Rewrite: a levél átírása (a továbbításnak megfelelően) Átadás a mailer-nek Sikeresség esetén eltávolítás a sorból, igén esetén DSN küldés, Régen várakozó levelek továbbításáról értesítés a feladónak (esetlen DSN). Szabály 4H/5D. 11
Levél kezelési folyamat 4 Továbbítás (relay) Ha a levél nem kézbesíthető helyileg. A továbbítás számos módon történhet: SMTP: egyszerű Internetes továbbítás ESMTP: bővített SMTP UUCP, UCX, X.400, stb.: nem Internetes levéltovábbító rendszerek felé Hova továbbítandó? Mailertable DNS lekérdezés a címzett domain MX rekordjaira 12
Levél kezelési folyamat 5 Kézbesítés (delivery) Ha a levél helyben kézbesíthető. LDA (Local Delivery Agent) végzi Lépései: Routing: feloldja az email címet felhasználó névre (virtualuser, alias) Megvizsgálja, hogy van-e a felhasználónak.forward fájlja, értelmezi. Az LDA argumentumban a felhasználót, pipe-on a levelet kapja. Az LDA-nak is lehet felhasználói szintű konfigurációja (pl..procmailrc) A felhasználó postafiókjába helyezi el a levelet. A kézbesítés készen van! 13
Levéltovábbító rendszerek MTA funkciót ellátó szoftverek Sendmail szabványnak minősül nagyon elterjedt egyszerű felépítés, összetett konfiguráció sokat kritizált Egyéb MTA-k Postfix: elterjedt, összetett felépítés, egyszerű konfiguráció, biztonságos, lassú Qmail: gyors, kevésbé elterjedt vannak még: exim, zmail, vmail, ssmtp, M$ Exchange Server,... 14
Sendmail Eric Allmann fejlesztése, első MTA Egyszerű szerkezet: Input: (E)SMTP, local Queue: egy jegyzékben, levelenként 2 fájl Periodikus, kézi vagy ETRN indikált feldolgozás Mailer: többféle van (smtp, local, procmail, ) Szűrők: Milter API-t használó tetszőleges program, használhat input és output szűrőként egyaránt Konfiguráció: igen összetett feldolgozás orientált 15
Sendmail Konfiguráció alapkonfiguráció kb. 2000 sor szabályok szintaxisa: ################################################################### ### Ruleset 90 -- try domain part of mailertable entry ### ################################################################### SMailertable=90 R$* <$-. $+ > $* $: $1$2 < $(mailertable.$3 $@ $1$2 $@ $2 $) > $4 R$* <$~[ : $* > $* $>MailerToTriple < $2 : $3 > $4 check -- resolved? R$* <. $+ > $* $@ $>Mailertable $1. <$2> $3 no -- strip & try again R$* < $* > $* $: < $(mailertable. $@ $1$2 $) > $3 try "." R< $~[ : $* > $* $>MailerToTriple < $1 : $2 > $3 "." found? R< $* > $* $@ $2 no mailertable match 16
Sendmail Egyszerűsített konfiguráció a sendmail.cf fájlt senki sem szerkeszti M4 makrónyelv áll rendelkezésre, egyszerű szerkezetű alapkonfigurációt kb. 84 soros M4 fájlból elő lehet állítani Táblákat és osztályokat használ: aliases: álnevek, listák access: hozzáférés szabályozás local-host-names: saját hosztnevek osztálya virtual-domains: VirtHost osztály virtual-users: csak email-címek hozzárendelése mailertable: domain-hez mailer rendelhető generictable: ez mindent tud! 17
Postfix Wietse Venema fejlesztése Első sorban a biztonság Bonyolult szerkezet sok komponens sok queue Biztonság nincs szüksége root jogra, sem setuid/setgid -re egyszerű (alap)konfiguráció Teljesítmény sokkal lassabb a sendmail-nél 18
Postafiók hozzáférés A felhasználó postafiókjához való hozzáférést nem az MTA biztosítja! Háromféle lehet helyi: ez ma nem szokásos már (pl. pine) távoli: igen elterjedtek a POP3 és IMAP protokollok POP3 (Post-Office-Protocol) egyszerű, korlátozott lista, és get metódusok leave-message-in-mailbox funkció van, de... 19
Postafiók hozzáférés IMAP Internet Mailbox Access Protocol elterjedt, korszerű sok funkció, jó szolgáltatások csak fejrészt tud lekérdezni egyesével letölthetőek a levelek mappák létrehozását támogatja mailbox quota támogatás Egyéb van több egyedi protokoll is, általában POP3 vagy IMAP jellegűek. 20