Mail server e record spf

Introduzione

Mi sono trovato in mezzo a discussioni su sistemi di SPAM e l’uso dei record SPF perché “I moderni sistemi di mail security, attraverso il controllo del record SPF, bloccano le email provenienti da server non indicati nel suddetto record..

A pelle, non mi combaciava con quello che sapevo. Almeno parlando dei fondamentali, di come dovrebbero essere usati i record SPF, di dove devono essere configurati. Quindi visto che i fondamentali fa bene ripassarli ogni tanto ho voluto rileggere e ricercare altre informazioni. Tra tutto quello che ho trovato vi riporto il video di un’azienda in qui è spiegato molto bene.

SPF significa Sender Policy Framework. È una tecnologia utilizzata per collegare un indirizzo email ad un dominio specifico attraverso dei record aggiunti al DNS, appunto i record SPF.
Ha un ruolo fondamentale nel mitigare una piaga presente nei sistemi di email fin dall’inizio. La debolezza è nel fatto che è molto difficile identificare un indirizzo email mittente legittimo da uno falso. Una tecnologia utilizzata per aiutare in questa identificazione sono i record SPF.

In modo semplice possiamo dire che, i record SPF sono alla base del meccanismo che permette, ad un mail server che riceve delle email, di decidere se accettare o rifiutare delle email.

Attenzione! Non è il controllo dello spam. Le email rifiutate con questo controllo, quasi sempre, non vengono recapitate nella casella di destinazione, ma sono direttamente cestinate.

Il meccanismo di controllo si basa su tre passi:

  1. si deve definire nel DNS un record SPF. Al suo interno vengono dettagliate le politiche con cui effettuare il controllo e prendere le decisioni:
  2. il server di posta che riceve l’email esegue un DNS lookup per verificare che il dominio del mittente sia tra queli validi e che la mail arrivi proprio dal server di posta del dominio del mittente
  3. sulla base dell’esito del controllo precedente il server che riceve l’email decide se accettare, respingere o segnalare l’email

Com’è fatto un record SPF?

In modo semplice possiamo dire che l’SPF è strutturato così:

  1. I record SFP sono dei record di tipo TXT che hanno come nome il dominio interessato e come valore un testo che inizia con v=spf1 e continua con una regola che descrive la politica da applicare.
    C’è stato un periodo in cui si usavano dei record specifici di tipo SPF, quindi potreste trovarli ancora in qualche DNS non molto recente. Dal 2014 questi record sono deprecati e non vano più usati.
  2. il proprietario di un dominio da cui devono partire le email aggiunge i record SPF nel suo DNS di tutti quelli che sono leggittimati ad inviare email attraverso il suo mail server o per suo conto. ATTENZIONE in un DNS ci può essere solo un record SPF.

Un caso pratico

Innov2e ha tutti gli indirizzi email che terminano con @innov2e.it ed il suo email server è su OVH ed ha un nome che termina per ovh.com.

Senza far nulla una mail inviata dall’indirizzo abc@innov2e.it all’indirizzo 123@altro.com viene vista, dal mail server di altro.com, recapitata dal dominio ovh.com ma spedita da innov2e.it.

È chiaro che, senza nessun’altra informazione, questo sembra tanto qualcuno che finge di essere qualcun’altro. O almeno sembra tale, e quindi la maggior partre dei server di posta lo considerano sospetto.

Per evitare questo sul DNS di innov2e.it aggiungo un record TXT del seguente tipo:

TXT @ v=spf1 a mx include:mx.ovh.com ~all

Dove:

– TXT è il tipo record,
– @  è il modo in cui il DNS di OVH si referenzia, quindi punta a innov2e.it
– v=spf1 a mx include:mx.ovh.com ~all è la parte testo del record codificata secondo la sintassi dell’SPF che, nello specifico significa:

Attenzione questo è un record SPF (v=spf1) dove c’è scritto che se ti arriva una mail dal server mx.ovh.com da un mittente che ha l’indirizzo email che finisce con innov2e.it (il carattere @) devi considerarlo un mittente attendibile.

Quindi i record SPF sono dei record che, su un dominio che invia email, di dicono chi è autorizzato ad inviare per conto di quel dominio.

Riassumendo una persona invia una email al proprio email server che la trasmette all’emeil server del destinatario, questo interroga il DNS del server che l’ha inviata e se riconosce il mittente che l’ha inviata la inoltra alla casella specifica altrimenti la scarta. Notate i corsivi.

Quale è il mittente che l’ha inviata? Quali sono le parti di una email che vengono (o possono essere) controllate con il meccanismo degli SPF? Quando i server si scambiano le email attivano tra loro una conversazione di tipo back-and-foward, noi diremmo avanti e indietro. È proprio un dialogo fra loro che si basa sul protocollo SMTP.

Questo dialogo tra sistemi educati, a grandi linee, funziona così:

  1. Il server che deve spedire la mail (client SMTP) contatta il server a cui inviare la mail sulla porta TCP (25, 587, 465, …). Se questo è in ascolto e la connessione è accettata risponde con un messaggio 220 (Ready);
  2. Il client chiede di stabilire la sessione SMTP inviando il comando HELO seguito dal FQDN (Fully Qualified Domani Name). Se il server accetta rispondo con un messaggio 250 (Ok);
  3. Il client indica il proprio indirizzo tramite il comando MAIL FROM: <indirizzo mittente>. Il server risponde con 250 (Ok);
  4. Successivamente il client indica al server i destinatari del messaggio tramite RCPT TO: <indirizzo destinatario> ed il server risponde per ogni destinatario accettato un codice 250 (Ok);
  5. Il client comunica al server l’intenzione di scrivere il corpo del messaggio con DATA. Il server risponde con un codice 354 e indica come marcare il termine del messaggio. I campi come Date, Subject, To, Cc, From vanno inseriti tra i dati della mail;
  6. Completato il messaggio, il server memorizza la mail. A questo punto è possibile, scrivere un nuovo messaggio oppure inviare il comando QUIT, dopo il quale il server spedisce i messaggi e risponde con un codice 221 (Closing) e la connessione TCP viene terminata;

Nella parte di dialogo dove il client indica l’indirizzo del Mittente (MAIL FROM) il server che dovrebbe ricevere la mail eseguetutta una serie di controlli per verificare l’attendibilità di chi spedisce.

Per prima cosa esegue un check SPF sul DNS del client. Se questo non va a buon fine, il server di posta che riceve continua controllando se il dominio indicato nel saluto iniziale (HELO) è lo stesso del mittente. Quindi i controlli procedono verificando una serie di domini/indirizzi rispetto ai record SPF presenti:

  • il bounce-address – ossia l’indirizzo a cui la mail deve essere recapitata (rimbalzata)
  • l’envelope-address – un’email, proprio come una lettera vera è imbustata nel dialogo tra client e server  e l’indirizzo del mittente è scritto di fatto due volte: all’interno della mail e nella busta (envelope). La differenza tra questi due indirizzi insospettisce il server ricevente.

 

Quindi è chiaro che il server che riceve effettua non uno, ma una serie di controlli, sugli indirizzi contenuti nella mail e che nelle email ci possono essere indirizzi e domini differenti come “mittenti”. Queste differenze non sono necessariamente un segno di azioni malevoli, ma possono essere uste per far operare correttamente dei sistemi software.

Comunque vada i vari check dell’SPF ed i risultati vengono inseriti nell’header della mail come Received-SPF.  Header che è possibile ispezionare da qualsiasi client di posta ed appare nel seguente formato:

Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=209.85.999.999; helo=mail-ed1-f45.google.com; envelope-from=vvvvv@gmail.com; receiver=ccccc@innov2e.it 

more insights