Soluții - PC Magazine Romania, August 2004
LINUX - Farul de la capătul lumii
Răzvan Sandu
Scot instrumentul din teacă și îl ajustez încetișor, focalizându-l pe dantela de grinzi arcuite în depărtare.
Mașinăria este un binoclu enorm, de marină, pe care se mai pot citi încă, șters, însemnele militare germane și sigla fabricantului - "Zeiss, 1939". Peste fața argintie a fluviului, dorobanțul de bronz păzește, de mai bine de o sută de ani, opera lui Anghel Saligny. Sentimentul acesta neclar trebuie să-l fi avut și ofițerul navigant neamț, când va fi potrivit, pentru prima dată, cu mâna înmănușată în piele neagră, lentilele gradate mărunt asupra "obiectivului" - ultim avanpost al civilizației inginerești a Europei, în pustietatea calcaroasă de lângă Pontul Euxin…
Astăzi, prieteni, înarmat cu un router Linux pe bancheta din spate a mașinii, am pornit către Constanța. E vară, dimineață, soare - și aici, în apropierea Dunării, mă simt de parcă aș instala primul cablu de comunicație transatlantic…
Nepotul lui Morse
La ultima noastră întâlnire, am avut ocazia să vă prezint, mai în detaliu, modul cum mesajele de poștă electronică ajung în mailbox-urile noastre. Vă spuneam atunci că "vrăjitorul din spatele scenei", care transportă informația, este programul MTA (fie el sendmail, postfix, exim sau altul), iar protocolul pe care calculatoarele îl "vorbesc" este Simple Mail Transfer Protocol (SMTP). Voi adăuga acum că detaliile acestui protocol sunt precizate în documentele Request For Comments (RFC) nr. 821 și 822 (care datează din vara lui 1982).
Rolul protocolului SMTP se "termină", însă, atunci când mesajul care
vă este destinat a ajuns în mailbox. Dacă stația voastră de lucru este o mașină
(Unix?) cu conectare permanentă la Internet, atunci mesajul poate ajunge direct
la voi. Dacă nu, el va "zăbovi" în căsuța de mail pe care ISP-ul vostru
v-o oferă, pe serverul său, până în momentul în care stația voastră se va conecta
la Internet și va "lua" mesajul de acolo. Acesta este cazul utilizatorilor
dial-up, majoritari încă - din păcate - în România.
Protocolul folosit pentru a descărca mesajul e-mail pe stație este mult utilizatul
POP3 (Post Office Protocol, versiunea 3). O altă alternativă o constituie folosirea
protocolului IMAP (Internet Mail Administration Protocol), care permite administrarea
"la distanță" a mesajelor primite, direct pe serverul ISP-ului, fără
a le mai descărca de acolo (citire, ștergere etc.). Deși prezintă unele avantaje
evidente, protocolul IMAP nu este folosit pe scară prea largă pe serverele publice
- utilizatorii vor avea tendința să "țină pe server" mesajele primite,
supraîncărcându-l.
Pentru a se putea "ridica" poșta prin protocolul POP3 sau IMAP, este necesar ca serverul de e-mail (care "stochează" mesajele primite de utilizatori, ce sosesc prin SMTP) să ruleze programe-daemon cum ar fi imapd., Courier-imapd sau dovecot. Tradițional, daemonul de POP3 este Courier, dar dacă rulați Fedora Core 2, soluția cea mai modernă și la îndemână se dovedește dovecot (POP3 și IMAP securizate).
Prăjitorul de pâine
Până când nu am citit documentațiile postfix si dovecot, nu am știut ce ascunde noțiunea de POP3 toaster J?! Voi știați, prieteni? Da, este "bătrânul" server de mail, clasic pentru utilizatorii de dial-up, care rulează atât servicii SMTP cât și POP3… Mesajele e-mail intră și ies din el tot timpul, ca puricii - cum sar, vesele, dimineața, feliile de pâine din prăjitorul meu electric de acasă…
Configurarea serverului dovecot se face cu ajutorul fișierului /etc/dovecot.conf, în care trebuie să setați/modificați cel puțin următorii parametri:
protocols = imap imaps pop3 pop3s
login = pop3
first_valid _uid =UID
last_valid_uid=UID
first_valid _gid =UID
last_valid_gid=UID
default_mail_env = maildir:/home/posta/domains/%d/%n
auth_mechanisms = plain
auth_userdb = passwd-file /home/posta/utilizatori.txt
auth_passdb = passwd-file /home/posta/utilizatori.txt
În cele de mai sus, valoarea numerică UID este un utilizator non-root (numit "posta") care deține fișierul cu useri și parole de e-mail /home/posta/utilizatori.txt. Parametrul default_mail_env conține calea către mailbox-urile în care serverul postfix "depune" mesajele sosite pentru utilizatori (să zicem /home/posta/domains/example.com/prenume.nume) și precizează că aceste mailbox-uri sunt directoare (stil maildir).
Cât despre fișierul utilizatori.txt, el conține parolele utilizatorilor de mail, în linii de forma:
[email protected]: {PLAIN}supersecret:UID:UID:Prenume Nume:/home/vpopmail/domains/ example.com/prenume.nume:/sbin/nologin
Aici "supersecret" este parola în clar, iar UID este userid-ul utilizatorului "posta". Desigur, pe nici un server de e-mail "serios" nu vă recomand stocarea "în clar" a parolelor utilizatorilor, din motive de securitate, dar am procedat așa de dragul simplificării exemplului.
După modificarea fișierelor /home/posta/utilizatori.txt sau /etc/dovecot.conf trebuie să reporniți serviciul dovecot:
[root@mail root]#service dovecot restart
Bineînțeles, acesta trebuie să fie permanent pornit, la bootarea calculatorului (verificați cu utilitarul ntsysv).
Culegătorul
Așa cum spuneam mai sus, pentru mașinile care nu au conectare permanentă la Internet, trebuie să existe un program care să "culeagă" periodic mesajele de pe serverul ISP-ului, folosind POP3. Acest program, aproape universal folosit, este fetchmail.
Fetchmail este controlat de un fișier de configurare propriu utilizatorului, anume .fetchmailrc, aflat în home-directory-ul acestuia (vă reamintesc că în Unix fișierele a căror denumire încep cu punct sunt fișiere ascunse, adică fișiere care nu sunt listate la comanda ls).
Cred că cel mai bine puteți înțelege structura unui fișier .fetchmailrc folosind un exemplu:
set daemon 600; poll mail.example.com proto pop3 user [email protected] there is rpopescu here password crocodile; poll mail.example.net proto pop3 user rpopescu there is rpopescu here; user test there is rpopescu here; user freecomputers there is rpopescu here; poll mail.dot.net proto pop3 user rpopescu there is otheruser here;
Prima linie arată că stația mea interoghează serverul de mail al ISP-ului la
fiecare 10 minute. Mai jos sunt listate toate serverele de e-mail pe care le
"întreb", pe rând, împreună cu numele de utilizator pe care le folosesc
pe fiecare server în parte. Observați că în acest fișier se realizează și corespondența
între numele meu de utilizator local (pe stația mea de lucru) și numele folosite
pe diversele servere (construcțiile there/here).
Ar mai fi de observat și faptul că în linia a treia am folosit o opțiune imprudentă din punct de vedere al securității: parola "crocodile" apare "în clar" în fișierul .fetchmailrc. În toate celelalte cazuri, parolele îmi vor fi cerute la fiecare reinițializare a programului fetchmail.
O soluție industrială
Pentru a completa tabloul serverului de mail, de care ne ocupăm de două numere încoace, mai lipsește un singur element: o soluție scalabilă pentru administrarea userilor virtuali definiți pe server (creare, ștergere, modificare parole, limitarea cotei de disc, etc).
Dacă folosiți serverul de mail qmail, o asemenea soluție există și se numește vpopmail (http://www.inter7/vpopmail). Din păcate, pentru serverul de mail Postfix și pentru dovecot nu am reușit să identific încă programe la fel de "mature" de gestiune a utilizatorilor. O soluție ar fi interfața Web propusă de PostfixAdmin (http://high5.net/postfixadmin) sau modulul (limitat) existent în WebMin (http://www.webmin.com), dar eu devin irascibil, când sunt obligat să încarc interfața grafică X numai pentru a defini un utilizator… J! În plus, sunt necesare Perl, php și alte "bunătăți", iar baza de date cu utilizatori trebuie să se găsească sub forma unei tabele Mysql și nu sub forma unui simplu fișier text. Din nou, eu devin nervos…
De curând, am văzut și soluția propusă de PostfixManager (http://genco.gen.tc/postfix_virtual.php) dar, din câte înțeleg, sunt obligat să folosesc Courier și nu dovecot. E adevărat, nu am avut timp să o testez. Poate unul dintre voi să mă ajute?
În loc de încheiere
Sper că, în sfârșit, am reușit să vă creionez tabloul complet al unui server
e-mail Linux, bazat pe Postfix. Aceasta mi s-a părut, la ora actuală, soluția
practică cea mai simplă pentru a crea o asemenea mașină. Vă cer scuze, trebuie
să plec chiar acum J - dar aștept părerile și întrebările voastre cu mare plăcere,
cât e vacanța de lungă… Mă găsiți, ca de obicei, la www.linuxwill.go.ro
și [email protected] !
|