depozitul de email-uri
In ultima perioada parca primim din ce in ce mai multe e-mailuri, parca tot ceea ce facem este din ce in ce mai dependent de asta. Orice se intampla un administrator primeste un email, o cerere pentru oferta vine prin email, o oferta vine prin email, o informare vine prin email, o poza vine prin email. E-mailul pare fara indoiala cel mai important lucru din universul nostru digital, pare cea mai importanta arhiva de informatii. Tot ce cautam cateodata, o informatie demult uitata se gaseste acolo….
Si tocmai fiindca e asa de important o sa incerc sa va nuantez cate ceva despre locul unde le stocam/securitatea acelui loc/backup.
Ne batem iarasi in standarde… care e mai bun? care e mai rapid? care e mai sigur?
Depinde de mai multi factori: sistem de operare, client de email, interfata web, samd.
Deoarece prefer ca si sistem de operare linux, nu trebuie sa va spun ca e mai stabil, mai sigur, consuma mai putine resurse o sa mergem aici la utilizarea unui sistem de operare linux pentru stocarea mailurilor.
Dupa cum presupun ca daca ajungeti sa cititi acest articol stiti cate un pic despre ce e vorba in linux exista mai multe moduri de a pastra emailurile, o sa enumar principalele metode: mbox – toate emailurile sunt stocate intr-un singur fisier, pur si simplu concatenate la nesfarsit, mbx – cam acelasi lucru doar ca intre emailuri exista niste index-uri si la modificari acesea se modifica dinamic si maildir-ul unde fiecare mail este stocat in cate un fisier separat intr-un anumit folder pe disc. Maildir-ul prezinta niste avantaje cum ar fi: nu necesita “locking” adica blocarea (nu se acumuleaza in cozi operatiunile de citire/scriere, mai pe romaneste spus se pot face mai multe operatiuni simultane), citirea mai rapida, resurse de memorie/procesor ale calculatorului care le citeste/scrie mai putine.
Din toate astea eu aleg sa lucrez cu maildir, nu pot sa ma laud ca am un hardware foarte perorman, si si daca as avea ce ros are sa folosesc solutii mai costisitoare.
Dupa cum bine stiti orice sistem de operare UNIX-like (intra si linux aici) vine implicit cu un MTA instala(un “server” de procesare emailuri, Mail Transporter Agent) care praactic este interfata intre automatismele sistemului de operare si utilizator. Prin email-uri locale se trimit eventualele erori/avertizari ale sistemului de operare. Daca tot exista asa ceva de ce sa nu ne folosim de el. Exista in lumea asta o gramada de polemici legate de care e cel mai cel MTA. Principalii combatanti sunt: Sendmail, Postfix, qmail, CourierMailServer, Exim. Eu zic ca ne putem fixa atentia pe 3 dintre ei: Sendmail, Postfix si qmail. Sendmail… huh.. el e cel mai batran, el este deschizatorul de drumuri, este acolo de cand exista unix de cand exista gnu si linux. Daca a rezistat de atunci inseamna ca e bun la ceva. Am un coleg de serviciu care ar spune la orice ora ca Sendmail poate face orice cu un email, nu vine o discutie despre email sa nu il laude. Practic fisierul de configuratie al acestuia e un adevarat limbaj de programare. Eu zic sa-l lasam pentru cei fanatici, am avut destule experiente cu el mai mult sau mai putin placute. Qmai, un alt mare of… este un MTA foarte performant, se lauda cei care l-au scris ca poate transmite 10 mii de emailuri pe zi pe un 486DX2(hai sa fim seriosi!). Postfix… sunt multe distributii importante din lumea asta care incep sa il foloseasca. Postfix incepe sa devina “the next best thing, de ce: pastreaza aproape in intregime compatibiliatea cu sendmail(as zice ca e sendmailish) dar ofera si mult mai multe posibilitati(un fel de “credit pentru orice”, vezi la tv reclame cu pitici). Este capabil sa faca cam la fel de multe cat orice alt MTA si ramane la fel de performant. O, gata cu lauda, sa trecem la treaba…
Presupunem ca email-ul il pastram acasa (e cel mai logic), si vom presupune in continuare ca vrem ca emailul sa il putem accesa de oriunde(iarasi ceva logic). Vim presupune in continuare ca pentru mobilitate vom folosi un laptop si nu orice alt calculator. Conexiunea la internet pe care o avem este una suficient de buna, avem chiar si mai multe calculatoare in casa si unul dintre ele este “server”(el se ocupa cu partajarea conexiunii la internet), acesta primeste la fiecare conectare la internet automat o alta adresa IP. Acest calculator are deja instalat pe el linux.
Verificam daca pe acel calculator avem sau nu instalat postfix. Comanda pentru acest lucru este postfix. Daca el este instalat va returna ceva de genul “postfix/postfix-script: fatal: usage: postfix start (or stop, reload, abort, flush, check, set-permissions, upgrade-configuration)”, daca nu “-bash: postfix: command not found”.
Daca nu e instalat in functie de distributie umreaza sa il instalam:
CentOS/RHEL/Fedora: yum install postfix
Debian/Ubuntu: apt-get install postfix
Gentoo: emerge postfix
Urmeaza configurarea acestia, care este destul de simpla fisierele de configuratie se gasesc in /etc/postfix. Avem acolo un master.cf care este unpic mai avansat, contine informatii despre componentele MTA-ului care si cu ce parametrii ruleaza si fisierul cu care vom lucra: main.cf.
In main.cf vom modifica aproape tot ce trebuie ca sa avem totul functional:
In ultima perioada parca primim din ce in ce mai multe e-mailuri, parca tot ceea ce facem este din ce in ce mai dependent de asta. Orice se intampla un administrator primeste un email, o cerere pentru oferta vine prin email, o oferta vine prin email, o informare vine prin email, o poza vine prin email. E-mailul pare fara indoiala cel mai important lucru din universul nostru digital, pare cea mai importanta arhiva de informatii. Tot ce cautam cateodata, o informatie demult uitata se gaseste acolo….
Si tocmai fiindca e asa de important o sa incerc sa va nuantez cate ceva despre locul unde le stocam/securitatea acelui loc/backup.
Ne batem iarasi in standarde… care e mai bun? care e mai rapid? care e mai sigur?
Depinde de mai multi factori: sistem de operare, client de email, interfata web, samd.
Deoarece prefer ca si sistem de operare linux, nu trebuie sa va spun ca e mai stabil, mai sigur, consuma mai putine resurse o sa mergem aici la utilizarea unui sistem de operare linux pentru stocarea mailurilor.
Dupa cum presupun ca daca ajungeti sa cititi acest articol stiti cate un pic despre ce e vorba in linux exista mai multe moduri de a pastra emailurile, o sa enumar principalele metode: mbox – toate emailurile sunt stocate intr-un singur fisier, pur si simplu concatenate la nesfarsit, mbx – cam acelasi lucru doar ca intre emailuri exista niste index-uri si la modificari acesea se modifica dinamic si maildir-ul unde fiecare mail este stocat in cate un fisier separat intr-un anumit folder pe disc. Maildir-ul prezinta niste avantaje cum ar fi: nu necesita “locking” adica blocarea (nu se acumuleaza in cozi operatiunile de citire/scriere, mai pe romaneste spus se pot face mai multe operatiuni simultane), citirea mai rapida, resurse de memorie/procesor ale calculatorului care le citeste/scrie mai putine.
Din toate astea eu aleg sa lucrez cu maildir, nu pot sa ma laud ca am un hardware foarte perorman, si si daca as avea ce ros are sa folosesc solutii mai costisitoare.
Dupa cum bine stiti orice sistem de operare UNIX-like (intra si linux aici) vine implicit cu un MTA instala(un “server” de procesare emailuri, Mail Transporter Agent) care praactic este interfata intre automatismele sistemului de operare si utilizator. Prin email-uri locale se trimit eventualele erori/avertizari ale sistemului de operare. Daca tot exista asa ceva de ce sa nu ne folosim de el. Exista in lumea asta o gramada de polemici legate de care e cel mai cel MTA. Principalii combatanti sunt: Sendmail, Postfix, qmail, CourierMailServer, Exim. Eu zic ca ne putem fixa atentia pe 3 dintre ei: Sendmail, Postfix si qmail. Sendmail… huh.. el e cel mai batran, el este deschizatorul de drumuri, este acolo de cand exista unix de cand exista gnu si linux. Daca a rezistat de atunci inseamna ca e bun la ceva. Am un coleg de serviciu care ar spune la orice ora ca Sendmail poate face orice cu un email, nu vine o discutie despre email sa nu il laude. Practic fisierul de configuratie al acestuia e un adevarat limbaj de programare. Eu zic sa-l lasam pentru cei fanatici, am avut destule experiente cu el mai mult sau mai putin placute. Qmai, un alt mare of… este un MTA foarte performant, se lauda cei care l-au scris ca poate transmite 10 mii de emailuri pe zi pe un 486DX2(hai sa fim seriosi!). Postfix… sunt multe distributii importante din lumea asta care incep sa il foloseasca. Postfix incepe sa devina “the next best thing, de ce: pastreaza aproape in intregime compatibiliatea cu sendmail(as zice ca e sendmailish) dar ofera si mult mai multe posibilitati(un fel de “credit pentru orice”, vezi la tv reclame cu pitici). Este capabil sa faca cam la fel de multe cat orice alt MTA si ramane la fel de performant. O, gata cu lauda, sa trecem la treaba…
Presupunem ca email-ul il pastram acasa (e cel mai logic), si vom presupune in continuare ca vrem ca emailul sa il putem accesa de oriunde(iarasi ceva logic). Vim presupune in continuare ca pentru mobilitate vom folosi un laptop si nu orice alt calculator. Conexiunea la internet pe care o avem este una suficient de buna, avem chiar si mai multe calculatoare in casa si unul dintre ele este “server”(el se ocupa cu partajarea conexiunii la internet), acesta primeste la fiecare conectare la internet automat o alta adresa IP. Acest calculator are deja instalat pe el linux.
Verificam daca pe acel calculator avem sau nu instalat postfix. Comanda pentru acest lucru este postfix. Daca el este instalat va returna ceva de genul “postfix/postfix-script: fatal: usage: postfix start (or stop, reload, abort, flush, check, set-permissions, upgrade-configuration)”, daca nu “-bash: postfix: command not found”.
Daca nu e instalat in functie de distributie umreaza sa il instalam:
CentOS/RHEL/Fedora: yum install postfix
Debian/Ubuntu: apt-get install postfix
Gentoo: emerge postfix
Urmeaza configurarea acestia, care este destul de simpla fisierele de configuratie se gasesc in /etc/postfix. Avem acolo un master.cf care este unpic mai avansat, contine informatii despre componentele MTA-ului care si cu ce parametrii ruleaza si fisierul cu care vom lucra: main.cf.
In main.cf vom modifica aproape tot ce trebuie ca sa avem totul functional:
myhostname – este numele calculatorului sau subdomeniului (este bine sa fie un hostname existent si vizibil pe internet)
myorigin = $myhostname este bine sa decomentam linia (adica sa scoatem caracterul # din fata). toate email-urile trimise local in mod automat de pe acest server vor avea tipatul nume@myhostname
mydestination = $myhostname, localhost hosturile (domeniile) pentru care MTA-ul nostru va accepta emailuri.
mynetworks_style = subnet (la trimiterea de email-uri MTA-ul nostru va accepta ca acestea sa fie transmise in reteaula/retelele locale unde se afla acesta)
relayhost serverul de mai prin care un email este transmis mai departe, se trece serverul de SMTP primit de la provider(de ex smtp.rdslink.ro) este in general un lucru bun de pus in momentul in care avem o adresa IP dinamica care ar putea fi la un moment dat pusa in listele de spam
home_mailbox = Maildir/ am scris mai devreme ca vom folis maildir pentru a stoca emailurile Maildir/ este locul standard de unde poate Courier-IMAP sa citeasca emailurile fara setari speciale(vom vedea mai jos)
Urmeaza sa testam functionarea MTA-ului nostru:
ne vom folosi de comenzi simple trimise prin telnet
# telnet localhost 25
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
220 localhost.localdomain ESMTP Postfix
EHLO localhost (il vom lucruile de baza pe care ni le ofera)
250-localhost
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM: <test@localhost> (ii spunem ca trimitem un email de la test@localhost)
250 2.1.0 Ok
RCPT TO: <emil@localhost> (destinatarul emailului este emil@localhost)
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Practic aici putem scrie oricat doar sa punem la sfarsit pe o linie goala un simplu “.”
250 2.0.0 Ok: queued as A39F0439A32
(inseamna ca email-ul nostru a fost acceptat si va fi trimis)
Daca primim un mesaj de genul “550 5.1.1 <emil@localhost>: Recipient address rejected: User unknown in local recipient table” inseamna ca userul nu exista in sistem. Nu vom sta aici sa discutam si alte mesaje de eroare ce ar mai putea aparea.
Ne uitam in continuare in jurnale: tail /var/log/maillog si ar trebuii saavem ceva de genul:
Nov 9 12:39:08 localhost postfix/smtpd[23040]: connect from localhost.localdomain[127.0.0.1]
Nov 9 12:39:24 localhost postfix/smtpd[23040]: 90466439A32: client=localhost.localdomain[127.0.0.1]
Nov 9 12:39:27 localhost postfix/cleanup[23043]: 90466439A32: message-id=<20071109103924.90466439A32@localhost>
Nov 9 12:39:27 localhost postfix/qmgr[23037]: 90466439A32: from=<emil@localhost.localdomain>, size=363, nrcpt=1 (queue active)
Nov 9 12:39:28 localhost postfix/local[23044]: 90466439A32: to=<emil@localhost.localdomain>, orig_to=<emil@localhost>, relay=local, delay=11, delays=11/0.06/0/0.01, dsn=2.0.0, status=sent (delivered to maildir)
Nov 9 12:39:28 localhost postfix/qmgr[23037]: 90466439A32: removed
Nov 9 12:39:30 localhost postfix/smtpd[23040]: disconnect from localhost.localdomain[127.0.0.1]
Acea linie cu delivered to maildir este cea care ne intereseaz(inseamna ca emailul nostru a ajuns unde trebuie)
Bun… hai sa il si citim! Va dati seama ca nu o sa ne ducem cu cat sau less in fiecare fisier in parte, avem nevoie de un server de pop3 sau imap. Vom folsi IMAP deoarece tehnologia presupune sa accesam email-ul de pe server si nu neaparat sa il descarcam pe statia de lucru.
Vom instala Courier-IMAP. multe distributii vin cu el deja pregatit, pentru CentOS va pun la dispozitie la adresa http://emil.edsoft.ro/linux/centos/5/ pachetele necesare.
In functie de distributie fisierele de configurare asupra modului de autentificare si de acces asupra emailurilor se gasesc in /etc/courier sau /etc/courier/authlib sau in /etc/authlib.
Fisierul authdaemonrc contine informatii despre lista modulelor de autentificare. Vom face in acest fisier o singura modificare: authmodulelist=”authpam”. In felul acesta el se va autentifica doar local folosind libraria PAM (va folsii userii reali din sistem). Pornim daemonii(serverele) necesari si trecem la verificari.
Din cauza complexitatii procolului IMAP verificarile le vom face folosind serviciul de POP.
telnet localhost 110
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
+OK Hello there.
USER emil (numele utilizatorului)
+OK Password required.
PASS parola_mea
+OK logged in.
LIST
+OK POP3 clients that break here, they violate STD53.
RETR 1
(vi se pare cunoscut?)
Inseamna ca totul e bine pana aici
Vom configura clientul de email sa foloseasca serverul de IMAP local.
Vom folosi pentru asta Mozilla Thunderbird. Va explic pe acesta deoarece acelasi program este disponibil si pe Windows si pe platformele opensource. In cazul in care va ganditi la ceva schimbari de sistem de operare totul va functiona identic. De pe www.mozilla.com veti putea descarca acest progam.
In cateva imagini va voi ilustra cam ce si cum. In loc de localhost treceti adresa locala serverului dumneavoastra.
Legat de accesul asigurat din alta parte la reteaua locala am scris inainte un alt articol legat de openvpn.
Bun, dar acum cum facem sa ne vina automat toate emailurile aici. Nimic mai simplu: vom folosi fetchmail. Il vom instala ca si pana acum in felul in care ne ajuta distributia de linux pe care am ales-o(yum, apt-get, emerge samd.)
Urmatoarele operatiunii le vom face ca simplu user in sistem si ne vom suida: su – emil
Editam fisierul .fetchmailrc cu editorul de text preferat (nano de ex), presupunem ca avem un cont pe mail.exemplu.com. vrem sa aducem emailurile prim IMAP vom scrie in fisier:
poll mail.exemplu.com with proto IMAP
user emil@exemplu.com there with password parola is emil here fetchall no keep ssl idle
Verificam daca totul functioneaza ok cu comanda fetchmail -v . Verificam acolo mesajele pe care ni le da. Daca totul este in regula si functioneaza putem opri procesul cu combinatia de taste ctr+c.
Urmeaza sa facem ca fetchmail sa porneasca automat de fiecare data cand calculatorul nostru este restarta. Vom scrie in /etc/rc.d/rc.local sau in locul unde se afla rc.local pe distributia dumneavoastra de linux comanda
su – emil -c “/usr/bin/fetchmail -d”
In felul acesta fetchmail va rula la fiecare repornire si emailurile vor fi aduse de pe serverul original pe cel local.
Spor la treaba!









