Administrare server open source

Platforma de hosting cu software liber, gratuit, open source.

Daca va ocupati de dezvoltarea siteurilor sigur vi se intampla sa trimiteti mailuri din cadrul unui script PHP. O problema des intalnita este faptul ca mesajele livrate nu ajung in Inbox, cum ar trebui sa ajunga in mod normal, ci ajung in Spam sau Bulk sau, in cazuri mai grave, nu ajung deloc. Motivul pentru care mesajele nu sunt livrate in Inbox este detectarea mesajului ca Spam de catre filtrele antispam.

Ca sa putem evita problema, sa vedem mai intai cum functioneaza un filtru antispam. Cand un mail ajunge pe serverul destinatar filtrele antispam, de obicei SpamAssassin, verifica mesajul. In general cand se trimit mesaje de tip spam sunt cateva elemente care se repeta cum ar fi rescrierea headerelor, existenta unor cuvinte sau siruri de caractere (ex. Viagra), mascarea expeditorului etc. Pentru fiecare din aceste elemente, in functie de frecventa acestora in majoritatea situatiilor, mesajul primit va primi un „spam score„. Dupa ce mesajul a trecut de toate filtrele este calculat un „spam score” in functie de punctele obtinute la fiecare verificare iar daca acest „spam score” este mai mare decat limita impusa in configurare mesajul este sters sau marcat ca spam.

Pentru a evita situatiile de genul acesta putem urma cateva mici reguli care cu siguranta vor mari considerabil rata de livrare a mesajelor:

  • verificati regulat blacklisturile pentru ca IP-ul de expediere sa nu fie listat;
  • evitati expedierea de mesaje nesolicitate;
  • nu trimiteti fisiere executabile care pot fi considerate periculoase;
  • folositi pentru expediere un cont cu autentificare, nu functia mail();
  • nu rescrieti headerele;
  • activati pentru livrarea de mesaje DomainKeys si SPF.

Regulile de mai sus sunt cele mai importante pentru evitarea marcarii mesajelor ca spam. Mai jos incerc sa detaliez fiecare regula in parte.

Verificati blacklisturile

La nivel de server administratorii obisnuiesc sa activeze ca filtru antispam verificarea blacklisturilor. Daca de pe o adresa IP se trimit foarte multe mesaje nesolicitate utilizatorii pot forwarda aceste mesaje catre SpamCop sau alte blacklisturi care vor include adresa IP a expeditorului ca fiind abuziva.

Cand un mesaj ajunge la adresa destinatie se verifica adresa IP a expeditorului si a serverului care a trimis mesajul. Daca vreunul din aceste IP-uri apare intr-un blacklist, mesajul primeste un „spam score” mare si implicit cresc sansele ca la sfarsitul verificarii sa fie considerat ca spam.

Pentru a evita aceasta situatie verificati IP-ul de pe care mesajele urmeaza sa fie transmise, si IP-ul serverului de mail daca este diferit de serverul de rulare. Daca vreunul din IP-uri apare ca fiind abuziv contactati firma care administreaza reteaua sau serverul de hosting. Daca nu se poate, cum e in cazul UPC care nu obisnuieste sa verifice si sa delisteze IP-urile, intrati pe siteul fiecarui blacklist si incercati sa remediati problema. De obicei un IP se delisteaza ca urmare a unei cereri trimisa printr-un formular.

Blacklisturile existente sunt multe si e greu sa le urmariti pe toate. Pentru a simplifica lucrurile obisnuiesc sa folosesc doua site-uri care verifica o adresa IP in mai multe blacklisturi: DNSBL.info si Robotex.com.

Evitati expedierea de mesaje nesolicitate

Pentru ca un IP sa nu ajunga intr-un blacklist e important ca destinatarul sa nu forwardeze mesajul catre unul din blacklisturi. Pentru ca destinatarul sa nu expedieze mesajul intr-un blacklist trebuie sa va asigurati ca mesajele expediate nu sunt si nu pot fi interpretate de destinatar ca fiind mesaje de tip spam. Astfel de situatii se intalnesc in cadrul firmelor care ofera pseudoservicii de SEO, firme care culeg de pe internet liste de mailuri iar apoi trimit mesaje catre adresele respective sau vand baza de date cu adrese pentru ca efectele sa fie suportate de cumparator nu de ei. Mesajele expediate pot lua o forma legitima dar practic orice persoana care primeste in mail un mesaj nesolicitat de la o persoana sau firma necunoscuta care incearca sa ii vanda un produs sau un serviciu stie ca mesajul respectiv este unul nelegitim, un mesaj care nu i se adreseaza lui ca persoana sau firma ci e un mesaj trimis la gramada in speranta castigarii clientilor.

Chiar daca un mesaj poate fi compus in asa fel incat sa arate ca un mesaj legitim, majoritatea destinatarilor sunt capabili sa faca diferenta dintre un mesaj care ii este adresat si un mesaj general formulat la deruta. Deci, daca aveti de trimis mesaje, asigurati-va ca sunt mesaje legitime care nu pot fi interpretate ca spam.

Nu trimiteti fisiere executabile

Se intampla de multe ori ca un mesaj spam sa contina cod executabil care urmeaza sa lanseze un atac asupra sistemului gazda. Drept urmare majoritatea sistemelor antispam ofera un „spam score” mare pentru mesajele care contin fisiere cu extensiile exe, bat, msi, eml etc. Un mesaj cu una din aceste extensii este un mesaj care are posibilitatea de a face rau si implicit trebuie evitat.

Ca solutie puteti arhiva mesajele in .zip, .rar sau .tgz. Astfel mesajele nu mai pot fi executate deci nu prezinta pericol. O alta solutie care este mult mai eficienta pentru ca trece si de filtrele care scaneaza in interiorul arhivelor este sa nu atasati deloc fisierele executabile ci doar un link de download. Uploadati fisierul pe un site gen File Host sau upload.ro.im. Uploadant fisierele pe un server extern filtrul de mail va ignora fisierul iar mesajul nu va fi marcat ca spam.

Folositi un cont cu autentificare

Pentru a expedia un mesaj din PHP majoritatea persoanelor prefera functia mail() care e foarte usor de folosit. Ffunctia mail() are doua probleme. Prima este ca trimite mesajele folosind utilizatorul sub care ruleaza serverul web, nobody, care de multe ori creste „spam score-ul” final. A doua problema este ca adauga anumte headere prin care anunta destinatarul ca mesajul a fost trimis de altcineva, iar adresa expeditorului real nu este una valabila ceea ce din nou va creste „spam score-ul” final.

Pentru a rezolva problema puteti folosi un script care livreaza mesajele cu ajutorul unui cont SMTP. Cel mai bun expeditor de mesaje care l-am folosit pana acum este Swiftmailer care poate fi configurat foarte usor sa foloseasca un cont de mail care il puteti crea din cPanel.

Nu rescrieti headerele

O metoda de a detecta daca un mesaj e spam este rescrierea headerelor. Daca un mesaj este expediat iar utilizatorul injecteaza un header care sa schimbe adresa expeditorului de exemplu, mesajul va primi inainte de livrare un header care sa anunte destinatarul de aceasta modificare. Cand filtrul antispam detecteaza aceste modificari va creste „spam score-ul” mesajului final si implicit va creste sansele ca mesajul sa fie considerat spam.

De obicei headerele sunt suprascrise pentru a schimba expeditorul. Solutia ar fi sa folositi un cont SMTP pentru livrarea mesajelor. Cand folositi un cont SMTP pentru expedierea mesajelor headerele vor confirma ca expeditorul este proprietarul contului iar filtrele nu vor considera mesajul ca fiind spam.

Activati DomainKeys si SPF

Daca folositi cPanel ca sistem de gestiune a contului de hosting aveti posibilitatea de a activa doua metode suplimentare de autentificare a mesajelor, DomainKeys si SPF:
email-authentication

Atat DomainKeys cat si SPF sunt metode de a identifica corect un mesaj bazandu-se pe serviciul DNS. DomainKeys adauga o inregistrare DNS care functioneaza in mod asemanator cu cheile publice/private in cazul criptarii, inregistrare care poate fi folosita pentru identificarea corecta a expeditorului. SPF spre deosebire de DomainKeys nu ofera o identificare a contului ci afiseaza o lista de hosturi carora li se permite livrarea de mesaje.

Mail

30 Responses so far.

  1. Soltare says:

    Super interesant, doar am discutat pe aceasta tema. Intr-adevar, google imi trecea in spam, deoarece expeditorul era [email protected], avand precizat in main.cf acest host. Dupa ce am le-am scos din spam se pare ca-i OK. Dar ma pune pe ganduri acel „spam score”: oare chiar daca primesc mailurile este OK?

  2. Sergiu says:

    Scorul depinde de fiecare server destinatar in parte. Poate sa fie ok pe un server (ex. spam score 0) sau poate fi o problema pe altul (ex. spam score 5). Daca stii vreun server care nu iti accepta mesajele discuta cu adminul sa se uite prin loguri sa vada care e problema si sa iti spuna de ce mesajul e marcat ca spam, daca asta e problema.

    Cum nu exista o regula sau un standard in ceea ce priveste marcarea mesajelor ca spam nu poti spune daca e ok sau nu. Trebuie sa fi nitel superficial si sa zici ca atata timp cat mesajele ajung la destinatie si nu exista o problema majora (ex. sa apara IP-ul intr-un blacklist) totul e ok 🙂

  3. tutoriale pc says:

    Este foarte bine de stiut acetse date. Sunt programator si foloseam functia mail, dar aproape toate mailurile ajungeau in bulk/spam. Am invatat ce inseamna smtp si acum trimit numai prin smtp. Ca expeditor de mesaje prefer sa folosesc phpmailer.

  4. mircea says:

    Nu inteleg de ce nu intra nici un mesaj in INBOX. Ce ar trebui sa fac?

    Mircea

  5. Sergiu Tot says:

    Mircea, articolul de mai sus iti spune ce trebuie sa faci pentru ca mesajele sa intre in Inbox 🙂

    tutoriale pc, phpmailer… swiftmailer… e o chestie de preferinte. Ambele isi fac treaba foarte bine. Ma bucur ca ai gasit articolul util. Poate ti-ar prinde bine sa citesti putin si despre ssmtp. E un utilitar dragut daca ai un server dedicat si vrei sa folosesti un cont SMTP fara sa faci modificari mari intr-un site care e deja in productie si foloseste functia mail() pentru a trimite mesaje 😉

  6. primavara says:

    Salut Sergiu,

    uite ca m-am lovit si eu de o problema ce are legatura cu articolul tau. Mesajele ajung in Inbox, dar au ca expeditor un [email protected] pentru ca folosesc un autoresponder secvential. As putea face ceva sa apara adresa de mail a firmei ca expeditor in loc de acest [email protected]? Responedrul foloseste intr-adevar un sendmail.php pt trimiterea mailurilor… am incercat cu swiftmailer dar mi-am prins urechile pe undeva si n-a mers

  7. Sergiu Tot says:

    Salut,

    Cea mai potrivita metoda ar fi sa folosesti un cont de mail cu autentificare. Daca trimiti mailurile apeland sendmail sau functia mail() din PHP nu ai aproape niciun control asupra livrarii mesajelor.

    Intra pe forum si deschide un topic cu ce ai facut in Swiftmailer si te ajut sa gasesti problema si sa il faci functional 🙂

  8. primavara says:

    Draga Sergiu,

    nu are rost sa pierzi timpul cu ce nu-mi iese mie. Nu stiu programare, mi-am facut site-ul singura, invatand, dar e departe de ce si cum as vrea sa fie.
    Referitor la Swiftmailer ce sa-ti spun? Doar l-am instalat, nici macar nu stiu ce ar mai trebui sa fac. Prin urmare nu vreau sa abuzez de timpul tau si nu are rost sa deschid vreun topic pe forum.
    Multumesc mult pentru ajutor, dar, sincer, nu ma lasa inima sa iau din timpul cuiva stiind ca eu insami nu prea pot ajuta cu nimic… ar insemna ca tu singur sa faci totul.

  9. Sergiu Tot says:

    Imi place sa ajut omul care vrea sa invete. Daca vrei un script, nu ti-l fac eu. Daca vrei in schimb sa inveti cum se face sunt dispus (in limita timpului disponibil, bineinteles) sa iti dau sfaturi si idei pana cand ai ajuns la capat cu ce ti-ai propus.

    Daca vrei sa inveti, nu consider ca imi pierd timpul – chiar de ar fi sa stam cateva zile sa tot discutam fiecare detaliu pe care nu il intelegi.

  10. News says:

    Multumesc foarte mult Sergiu.
    Si eu folosesc cpanel si chiar mi-au prins bine aceste sfaturi

  11. Referat says:

    Problema e ca eu folosesc direct admin si nu prea se aplica tot ce ai spus tu aici…dar oricum este un topic foarte util pentru marea majoritate a utilizatorilor de CPanel.
    P.S. Poate ai timp pt un tutorial direct admin

  12. Mihai Secasiu says:

    cateva corecturi si adaugari la articol

    1) functia mail() poate sa trimita si cu alt expeditor ( header From: ) fara probleme. Chiar si envelope sender ( Return-Path: – adresa unde se intorc mesajele ce nu pot fi livrate ) se poate seta prin intermediul parametrilor aditionali daca nu e safe_mode activat.
    Cand schimbati Return-Path aveti grija la autentificarea prin SPF

    2) header-ul care schimba expeditorul ( From: ) poate fi schimbat fara a afecta filtrele spam daca se face autentificare corecta prin DKIM sau DomainKeys si expeditorul are domeniul acelasi cu domeniul care semneaza mesajul.
    Ideea e sa nu folositi in From: o adresa de la yahoo, gmail sau alt webmail care are deja configurat dkim si de la care clar nu aveti cheia cu care sa semnati mesajele dar daca in from: folositi [email protected] si acolo aveti activat dkim e ok.

    3) trebuie sa aveti grija ca IP-ul sa aiba o inregistrare de tip PTR valida( sau rDNS – reverse DNS ) . Pentru asta trebuie sa discutati cu ISP-ul sau furnizorul de hosting

    4)daca trimiteti newslettere sau multe mesaje in masa aveti grija sa monitorizati rata de bounce ( nr de mesaje respinse relativ la nr de mesaje trimise ) si rata de raportare ca spam. Acestea influenteaza tot mai mult filtrele spam. Uneori o rata de bounce chiar si de sub 0.1% poate duce la trimiterea mesajelor in spam. Deci curatativa listele. Eliminati adresele vechi inactive si folositi dubla confirmare la abonare.

    5) tot pentru newslettere conteaza tot mai mult si engagement-ul , cat de multi iti deschid mesajele, cat de multi dau click, cat de multi vad mesajul in spam si dau click pe „not spam”

    7) ca sa ai un scor de spam mai mic in spamassassin poti aplica pentru whitelisting free aici: http://dnswl.org

    8) daca ai facut tot pana aici si tot iti intra mesajele in junk la marii provideri ca yahoo sau hotmail , contacteaza-i

    9) daca vrei un scor mai mic in spamassasin poti aplica pentru whitelisting platit aici: http://isipp.com

    9) daca vrei sa fi in whitelist la yahoo, hotmail si alte cateva filtre antispam poti aplica pentru alt whitelist platit la http://returnpath.net

    PS: N-am nici o afiliere cu serviciile mentionate in comentariu.

  13. Sergiu Tot says:

    Merci de completare, Mihai!

  14. Mihai says:

    Salutare si eu am aceiasi problema cu yahoo, la mine nu ajunge deloc mail nici la inbox nici la spam, folosesc pannel kloxo, pot primi de la oricine mail pot sa trimit la gmail dar nici decum la nenorociti de yahoo, nu stiu ce sa mai fac.. am facut reverse dns am 1 clasa de ip cumparata de la jump ei au facut reverse mail.netlinkunix.eu… nu stiu ce sa mai fac.. Respecte

  15. Sergiu Tot says:

    mail.netlinkunix.eu nu se poate rezolva. Sigur e totul OK pe acolo?

    Ai citit restul articolului? Nu strica sa iei fiecare aspect in parte si sa-l verifici. De exemplu, am verificat IP-ul domeniului netlinkunix.eu (presupun ca aici e tinut si mailul) si apare listat in dnsbl-3.uceprotect.net. De asemenea, SenderBase Reputation e Poor ceea ce cu siguranta nu e un lucru bun pentru livrarea mesajelor.

  16. Mihai Secasiu says:

    Folosirea mai multor ip-uri nu e o solutie. Cel putin nu folosirea la intamplare ci pentru separarea mesajelor dupa tip ( transactionale, personale si marketing )

    Daca folosesti mai multe ip-uri fiecare trebuie sa aiba propriul ptr. nu toate sprea acelasi pentru ca nu se mai valideaza. Adica:
    ex: 1.2.3.4 are PTR mail.netlinkunix.eu atunci cand dau ping pe mail.netlinkunix.eu
    trebuie sa ma duca la 1.2.3.4
    dar daca si 1.2.3.5 are acelasi ptr atunci cand dau ping la mail.netlinkunix.eu primesc 1.2.3.4 care nu e acelasi cu 1.2.3.5. O astfel de schema duce la +scor de spam.

    Eu as face:
    1.2.3.4 -> maila.whatever
    1.2.3.5 -> mailb.whatever
    etc
    ( atentie am scris maila nu mail1 si mailb nu mail2 … chiar si asta e important, prea multe numere in numele domeniului si filtrele vor crede ca esti pe ip dinamic )

    Dupa ce rezolvi treaba cu PTR-ul si mail-ul tot nu ajunge la yahoo…nici macar in spam uita-te in log-uri la serverul de email. Acolo ar trebui sa vezi exact cauza pentru care mesajele sunt respinse.

  17. Mihai says:

    Salutare eu folosesc kloxo panel am facut ptr doar la 3.87.241.188.in-addr.arpa -> mail.netlinkunix.eu toate domenile ce le am la numar 3 toate folosesc ca si server de mail acelasi ip asa este si in cPanel. asta este erroarea ce imi da in maillog
    ——————–
    Feb 17 18:13:29 netlinkunix qmail: 1297959209.487839 info msg 16384516: bytes 652 from qp 12297 uid 48
    Feb 17 18:13:29 netlinkunix qmail: 1297959209.562719 starting delivery 6: msg 16384516 to remote [email protected]
    Feb 17 18:13:29 netlinkunix qmail: 1297959209.562923 status: local 0/10 remote 1/60
    Feb 17 18:13:30 netlinkunix qmail: 1297959210.036723 delivery 6: deferral: Connected_to_67.195.168.31_but_greeting_failed./Remote_host_said: _421_4.7.1_[TS03]_All_messages_from_188.241.87.3_will_be_permanently_deferred;_Retrying_will_NOT_succeed. _See_http://postmaster.yahoo.com/errors/421-ts03.html/
    ———————————-
    Am completat tot felul de forumulare la yahoo am facut tot ce am stiut si nimik.
    Nu stiu ce sa ma fac cu mailurile astea.
    Respectele mele

  18. Mihai Secasiu says:

    Daca tocmai ai „achizitionat” ip-ul atunci probabil a fost folosit de catre detinatorul anterior pentru a trimite spam. In cazul asta cea mai simpla solutie e sa ceri altul de la isp sau sa incerci altul din clasa aia pe care ai zis ca o ai, desi e probabil ca yahoo sa fi blocat toata clasa.

    Daca ai ip-ul de mult timp atunci poate serverul ti-a fost compromis si spamerii l-au folosit deja sa trimita spam.

    Suportul la yahoo postmaster e pus pe „robot” deci nu spera ca rezolvi ceva acolo.

  19. Mihai says:

    Salutare eu sunt isp eu am cumparat clasa de ip si o am cumparat de 6 luni. cred ca o sa apelez la cPanel pana la urma ca nu stiu ca sa mai fac.

  20. Mihai says:

    Salutare eu sunt isp eu am cumparat clasa de ip si o am cumparat de 6 luni. cred ca o sa apelez la cPanel pana la urma ca nu stiu ca sa mai fac.

  21. Mihai Secasiu says:

    Panoul de control chiar nu conteaza pentru livrarea mesajelor. Poate cPanel sau plesk te ajuta sa setezi DKIM/DomainKeys dar dupa mesajul pe care-l primesti in loguri problema e mult mai grava decat lipsa DKIM/DomainKeys.

    Incearca cu alt ip, si daca nici unul un merge si nu poti sa le schimbi incearca macar sa le delistezi din blacklist(uri)

  22. Mihai says:

    Ok dar cum o sa le delistez am incercat sa schimb domainkey sa vad ce se intampla …. poate o sa mearga asa cumlea mea ca merge sa trimit la gmail si de la yahoo pot primi si de la oricine dar nu pot tirimite la yahoo ….
    Respectele mele Mihai

  23. Mihai Secasiu says:

    Nu cred ca domainkey are de-a face cu problema ta pentru ca mesajul zice clar:
    All_messages_from_188.241.87.3_will_be_permanently_deferred;_Retrying_will_NOT_succeed
    Deci baiu e ip-ul nu domeniul.

  24. Silviana Tomcescu says:

    Am avut niste necazuri cu un hosting provider, toate mailurile pe care le trimiteam de pe contul meu nu mai ajungeau la adresele de Yahoo pentru ca IP-ul serverului shared era blacklisted. Numai dupa ce i-am batut la cap si-au dat seama de problema si au rezolvat-o, mai exact mi-au mutat domeniul pe un alt server…

  25. Au disparut toate mail-urile says:

    Salutare! Am o problema!!! 🙁 nu stiu ce am facut ca au disparut toate mail-urile, TOATE!!! NU sunt pe nicaieri, nici in cosul de gunoi nici la spam… Apoi am intrat undeva la POP si redirectionare & era bifat la Redirecţionare Yahoo! Mail către altă adresă de e-mail: dar era aceasi adresa de e-mail NU era alta…Si mai era o problema nici nu puteam primi e-mail de orice fel ar fii fost el eu NU il primeam…acum am bifat Accesare Yahoo! Mail prin POP si functioneaza pot primi e-mail dar mesajele mele vechi tot nu sunt 🙁 Ce sa intamplat?!

    Multumesc anticipat!