Acronimul SPF vine de la Sender Policy Framework, noțiune ce s-ar traduce aproximativ prin „set de reguli și principii de expediere a mesajelor email”. Deși nu este universal acceptat ca standard tehnic folosit împotriva spamului, SPF poate ajuta (alături de alte metode precum DKIM sau mai nou, DMARC) la scăderea numărului de mesaje nesolicitate.

Haideți să vedem însă cum e construit și la ce folosește SPF.

În protoistoria internetului, la definirea emailului așa cum îl știm, spamul era inexistent și toată lumea vedea internetul în culori vesele, astfel încât -tehnic vorbind- orice server SMTP putea trimite mesaje de la orice adresă email.

Nu e greu de intuit ce înseamnă asta: dacă cineva configurează un server email (sau mai nou, o rețea de servere) să trimită spam prin mesaje falsificate, ca și cum ar fi expediate de la mail@hangarhosting.net, mesajele trimise ar putea fi acceptate de destinatari, doar în baza protocolului SMTP. Deși adevăratul proprietar al domeniului nu are nimic de-a face cu spamul trimis în numele său, aparențele vor duce către el și-i va fi foarte greu să se disculpe în fața a zeci sau sute de mii de destinatari furioși.

E, aici intervine Sender Policy Framework.

SPF, explicatie
Cum functioneaza SPF

Practic, prin SPF proprietarul domeniului declară public, prin intermediul unor înregistrări DNS, ce servere SMTP au dreptul să trimită mesaje în numele domeniului său. Astfel, orice server email de destinație poate verifica automat, făcând o interogare DNS, dacă expeditorul are sau nu dreptul de a trimite mesaje în numele domeniului pe care pretinde că-l folosește.

În imaginea de mai sus am schițat două servere expeditoare de email: ce de sus este un server de spam, iar cel de jos (mail.domain.tld) este serverul de email pentru domain.tld. Pentru a se prin SPF, administratorul domain.tld trebuie să publice în înregistrările DNS datele care certifică serverul expeditor. În acest exemplu, am declarat astfel:

domain.tld IN TXT “v=spf1 mx a ip4:10.10.10.1 include:mailchimp.com -all”

Ce înseamnă asta ? Uitați-vă la șirul de caractere de după IN TXT:

  • spf1 este tipul înregistrării SPF;
  • mx înseamnă că au dreptul să expedieze mesaje și serverele definite în înregistrările MX pentru domain.tld;
  • a înseamnă că serverul pe care se află domeniul domain.tld are și el voie să trimită mesaje email;
  • ip4:10.10.10.1 înseamnă că și serverul cu această adresă IP are voie să trimită mesaje în numele domeniului (ex. un server de monitorizare);
  • include:mailchimp.com înseamnă că domain.tld permite trimiterea de mesaje în numele său de către MailChimp.com (un excelent  furnizor de servicii de mass-email)
  • -all înseamnă că nicun alt server nu este autorizat și orice mesaj venit din altă parte este un fals

Dacă ne uităm acum la imaginea de mai sus, să presupunem că un spammer trimite mesaje în numele adresei bob@domain.tld, iar unul din mesaje ajunge la serverul de destinație pentru adresa alice@destination.tld. (linia 1 din desen)

Dacă este configurat să țină seama de SPF, serverul de destinație va întreba serverele DNS publice „domnilor, ce servere au dreptul să trimită mesaje email pentru domeniul domain.tld ?” (linia 2 din desen).

Serverele DNS publice vor răspunde cu înregistrarea TXT de mai sus (linia 3) astfel încât serverul de destinație va ști imediat că expeditorul este un spamer și va cataloga mesajul ca atare. (atenție, ce se întâmplă mai departe cu mesajul e altă discuție: unii adminitratori păstrează spamul pentru analize tehnice și rafinarea filtrelor, în timp ce alții le resping imediat).

Pentgru un mesaj legitim (linia 4 din desen), în urma aceleiași verificări, serverul de destinație va ști să livreze corect mesajul către destinatar.

SPF este doar una din metodele de autentificare a mesajelor email. O listă mai detaliată fiind disponibilă pe Wikipedia.

Pentru cei ce vor să implementeze SPF pe serverele proprii, SPF Wizard este un site bun; cei ce au implementat SPF și vor să-l verifice, site-ul SPF are și o adresă email de test, cu un răspuns automat ce conține rezultatele testului.