Levelezésről általában
A Linuxot használtam eddig desktop környezetként, mostanában ismerkedem a különféle szerver szolgáltatásokkal. Az egyik fontos szolgáltatás a Linux világban a levelezés. Az itt leírtak desktop környezetben is használhatók, de igazából a nagy előnye a szerverek világában van.Mint mindig most is magamnak írom a postot, a saját tapasztalataim lejegyzetelésére. Kérem, hogy így kezelje mindenki aki olvassa.
Az első dolog amit látni kell az a levelezés infrastruktúrája, felépítése, működése. Én magam még nem teljesen értem, jónéhány paradigmától kellett megszabadulnom.
Először is látni kell hogy ha levelező szervert készítünk, akkor mindent amit átlag felhasználóként tapasztaltam a levelezésről teljesen más. Talán bonyolultabb, de ez igazából a rugalmasság elérése miatt tűnhet bonyolultnak.
Levélküldés (MUA, MTA, SMTP)
Nézzük először az elveket, amik bizony már 40 évesek. Az akkori technikai rendszerekhez igazodtak és aszerint lettek kialakítva. Manapság az elv ugyan az csupán a különféle elemek kerültek át a központi gépekből a felhasználói desktopokra, majd vissza a szerverekre.Abban az időben a felhasználóknak buta termináljaik voltak, amikkel egy központi gépre kapcsolódtak és ott futtatták más felhasználókkal együtt, párhuzamosan a programjaikat. Tehát minden program egy központi gépen futott, még a levelező kliens is (Mail User Agent, MUA), ami egyszerű parancssori alkalmazás volt, gyakorlatilag felhasználói felület nélkül, egyszerűen a terminálra kiírta a szöveges információt.
Az egyik legismertebb MUA a mailx volt a Unix világban. Segítségével pl így lehetett levelet írni:
mailx -s "Elso level" user@pelda.hu
A parancs hatására elindítottunk egy levél megírását. A levél tárgya "Elso level" és a címzett user@pelda.hu volt. A feladó természetesen az a felhasználó, aki bejelentkezés után kiadta a parancsot.
A parancs jóváhagyása után beadhattuk a levél törzsét amit egy CTRL-D billentyűvel lezárhattunk. A levél pedig elküldésre került.
Ugyan ezen a központi gépen futott egy úgynevezett levelező szerver is. Ennek a dolga az hogy más levelező szerverek által nekünk továbbított üzeneteket a saját (helyi) felhasználóink postafiókjába tegye. A másik feladata a saját felhasználóink által megírt levelek továbbítása a célfelhasználó levelező szerverének, ami majd beteszi a címzett postaládájába a levelünket. Mint látható ez a szerver leveleket továbbít, innen is ered a neve Mail Transfer Agent (röviden MTA). Természetesen többféle MTA megvalósítás létezik (postfix, sendmail), ezek bemutatása, konfigurálása egy későbbi cikkben történik. Ez is mint a hálózaton történő kommunikációk mindegyike egyfajta alkalmazás szintű protokollt használ aminek segítségével az üzenetek elküldésre kerülnek. A protokoll neve a Send Mail Transfer Protocol (SMTP). A protokol alapértelmezésben a 25-ös TCP porton kommunikál, ezért nevezik ezt a portot smtp portnak.
Régen az MTA-k nem voltak authentikálva, tehát gyakorlatilag ha valaki ismert egy működő MTA-t akkor igen könnyen tudott levelet küldeni. Manapság az MTA-k mind authentikációval érhetők el és korlátozva is vannak általában a saját hálózatra.
A 90-es és a 2000-es években megnőtt a felhasználói munkaállomások teljesítménye és a levelező kliensek jellemzően a felhasználók saját gépein futottak, távol a levelező szervertől. Ezek a kliensek már grafikus programok voltak, rengeteg kényelmi funkcióval felszerelve. Aztán a kliensek átkerültek a 2000-es évek végére a web-re. A webtechnológiák és a hálózati kommunikációs sebesség drasztikus növekedése már lehetővé tette hogy webes alkalmazásként jelenjenek meg a különféle asztali alkalmazások, többek között az email kliensek is.
A lényeg azonban változatlan maradt. A felhasználó valamilyen levélszerkesztővel megírja az emailt, amit a 25-ös smtp porton továbbít valamilyen MTA-nak. Ezután MTA-MTA közti kommunikáció folyik, végül a címzett postafiókjában tárolódik a levél.
A tatooine gépre bejelentkezik laci felhasználó és elindítja az email szerkesztő alkalmazását, márha nem terminálba akarja közvetlenül az SMTP protokoll nyelvén megadni a szükséges adatmezőket. (ez is lehetséges, érdekes jó kis tapasztalat). Az email megírása után elküldi az üzenetet (pontosabban az alkalmazást utasítja arra, hogy az SMTP szabályoknak megfelelően a tatooin 25-ös portjára csatlakozzon és küldje el az üzenetet). A kommunikációs csatornán fogadja a tatooine MTA-ja a levelet. A protokol szabályok alapján kiszedi belőle a címzettet és megszólítja a címzett naboo gépet a 25-ös portján. Átküldi a levelet a naboo MTA-ja tárolja a levelet tomi felhasználó postafiókjában.
Ott tartunk tehát hogy egy levelező klienssel megírt és elküldött levél megérkezik a címzett postafiókjába. De mi történik ezután?
Levelek olvasása (MUA, POP3, IMAP)
A levelek olvasására jellemzően ugyan azt a programot használjuk mint az írásra. Tehát ez is egy Mail User Agent, azaz egy MUA.Régen a buta terminálok idejében, amikor a felhasználó bejelentkezett a terminálon akkor mindenféle okos scriptek futottak le és különféle beállításokat végeztek illetve információkat adtak. Az ősidők óta az egyik ilyen információ az volt hogy olvasatlan levele van a postafiókjában. Itt értesülhetett a felhasználó levél érkezéséről. Ezután valamilyen parancssori programmal lekérdezhettük a postafiókunkat. Találtam a neten egy képet erről a folyamatról:
Látszik hogy a James felhasználó miután bejelentkezett a Metroid-4 nevű szerverre, értesül hogy levele érkezett (You have new mail.).
Ezután kiadja a mail parancsot. A program kiírja a verziószámát, meg egy rövid help szöveget, végül pedig azt is hogy 1 üzenet van a postaládában ami még nincs olvasva (1 message 1 new), majd a levelek listája jön (itt egyetlen sor). A sor elején az N betű jelzi hogy új levél (New), még olvasatlan, majd a levél sorszáma, címzettje dátum és a tárgy.
Utána a ? a mail program promptja. Ez jelzi hogy érvényes parancsra vár. A felhasználó beírta a print parancsot, melynek hatására megjeleníti az összes olvasatlan levelet teljes egészében. Látható a levél, majd ismét a ? prompt.
Ugye kényelmes így levelezni? :)
A lényeg a fentiekből, hogy valamiféle UNIX postaládába érkezett levelet a UNIX terminálba lekérdeztük és elolvastuk. Igen ám, de mi nem itt akarjuk ezt megtenni, hanem távol a saját okos számítógépünkön.
Két lehetőségünk van. Az egyik az, hogy letöltjük a leveleinket a saját gépünkre, a másik pedig az hogy a távoli gép postafiókját jelenítjük meg és kezeljük.
Erre két protokoll van segítségünkre. A POP3 protokoll a 110-es porton és az IMAP protokoll a 143-as porton.
POP3 segítségével letölthetjük a leveleinket a saját gépünkre. A protokoll akkor élte virágkorát, amikor nem volt állandó kapcsolat, hanem betárcsázós módon (dial-up) kapcsolódtak a kliensek a világhálóra. Ilyenkor letöltötték a leveleket, majd bontották a vonalat. Offline módon olvasták és kezelték a leveleket a saját gépükön.
Az IMAP protokoll a modernebb technológia. Segítségével levélkezelés valósul meg, de a szerver oldalon, így kisebb adatforgalom keletkezik, ugyanis a levél nem töltődik le a kliensre. A levelek keresése, kezelése a szerveren történik, de ugyanakkor kényelmes kliens alkalmazás segítségével.
Ezen protokollokat is egy szerver oldali folyamat kezeli. Ilyen alkalmazás például a Dovecot vagy a Courier, melyek mind a POP3 mind az IMAP protokollokat támogatják.
Összefoglalás
Ezzel gyakorlatilag áttekintettük a levelezés legfontosabb folyamatait:- levél megírása (MUA)
- levél továbbítása, fogadása és tárolása (MTA, SMTP protokoll)
- postafiók lekérdezése, levelek olvasása (MUA, POP3/IMAP protokollok)
Amit még levelezés kapcsán meg lehet (és meg is kell) tenni, de ez már egy további szint:
- levélküldési biztonság (SMTP authentikáció)
- levélszűrés (tartalomra, csatolmányokra)
- vírusellenőrzés
Nincsenek megjegyzések:
Megjegyzés küldése