Greylist e SPF
Al giorno d’oggi penso che non esista piu’ nessun utente di Internet che non riceva la sua dose quotidiana di Spam+Virus. Esistono molti sistemi per riconoscere questi messaggi ed evitare di infettarsi la macchina (vedi SpamAssassin e ClamAV). Molti Provider offrono gia’ un sistema di filtraggio di Spam e Virus. Chi invece ha il suo Server personale oppure lavora presso un Provider, deve cercare di difendersi da solo. Per questi ultimi e’ dedicato questo articolo. Infatti, sebbene si possa decidere di lasciare le E-Mail con Spam e/o Virus sul Server, si consuma banda in ogni caso (per riceverle).
Un buon modo per risparmiare la banda (che si paga!!) e’ di bloccare sul nascere lo Spam e i Virus.
In questo ci aiutano le GreyList e il SPF!
Cos’e’ il Greylisting? Tutti conoscono le WhiteList (IP o indirizzi che vengono sempre accettati) e le Blacklist (IP o indirizzi che vengono sempre rifiutati). E’ un inizio per difendersi dallo Spam, purtroppo ha il grande svantaggio di dover essere configurato e mantenuto MANUALMENTE! Inoltre questi sistemi ben poco possono nel caso che il mittente venga falsificato.
L’idea delle GreyList si basa su un concetto totalmente diverso, automatico e, per giunta, molto semplice!
In pratica: ogni MailServer che sia degno di tal nome mette le sue E-Mails in una coda, poi tenta di spedirle. Se ci riesce le cancella dalla coda, se non ci riesce, riprova fino al raggiungimento di un TimeOut (default: 5 Giorni). Gli Spammer, per contro, vista la mole enorme di messaggi che inviano (e visto che spesso usano PC-Zombie) NON hanno una coda. Il che vuol dire che, se il MailServer con il quale parlano rifiuta (anche temporaneamente!) l’E-Mail, NON ritentano di spedirla, come invece farebbe un qualsiasi MTA.
Quindi cosa fara’ un MailServer che vuole proteggersi dallo Spam con questa tecnologia? Semplice: appena arriva un’E-Mail manda un “450 temporary reject”. Quando poi l’E-Mail arriva di nuovo (dopo qualche minuto) la riconosce e la accetta. In questo modo viene filtrata una percentuale impressionante di Spam e Virus (sul mio Server personale, circa il 97%!! Ovviamente non do’ nessuna garanzia che anche voi riuscirete a raggiungere questi risultati…).
A questo punto, la domanda e’: come faccio ad identificare un’E-Mail per sapere se ha gia’ provato ad essere spedita o meno?
Ci si basa su 3 elementi: E-Mail del mittente, E-Mail del destinatario e IP del mittente. Se questa tripla di elementi e’ gia’ conosciuta (si guarda in un DB!), allora la si accetta, se non e’ conosciuta, si ritorna un “temporary reject”. Si puo’ poi (e si fa cosi’, normalmente!) configurare il sistema per rifiutare (sempre temporaneamente!!) le E-Mail per X secondi (normalmente e’ 5 minuti). Cosi’, se uno Spammer riprova subito a rispedire quell’E-Mail, non ci riuscira’. Se invece un Server riprova dopo quegli X secondi, tutto andra’ in porto.
Addendum
Purtroppo anche le Greylist, come tutte le cose belle, ha un difetto, non tragico, ma pur sempre un difetto… Nel caso in cui il Server al quale voi SPEDITE un’E-Mail faccia un controllo sul VOSTRO Server (alcuni MTA son cosi’ configurati in modo da controllare l’esistenza di un certo account sul Server dal quale ricevono l’E-Mail…) anche questo controllo viene messo in Greylist.
Lo scenario e’ quindi il seguente:
Il vostro Server A parla con il Server B per spedirgli un’E-Mail
Il Server B vuole verificare che il vostro Server A effettivamente gestisca il dominio specificato in “MAIL FROM” e apre una sessione con il Server A, mandando “HELO”, “MAIL FROM ” e “RCPT TO ”
Il vostro Server A, se ancora non conosce quella tripla di indirizzi, manda il “Temporary failure”
Il Server B NON e’ riuscito a verificare il mittente della vostra E-Mail (che tentate di spediregli!) e la rifiuta…
Ovviamente, se ritentate DOPO il periodo da voi indicato per il Greylisting, la tripla sara’ conosciuta e il Server B riuscira’ a verificare il mittente…
L’alternativa, visto che la maggioranza dei programmi, in caso di verifica, cerca di controllare l’esistenza dell’account
e’ di disattivare l’uso delle Greylist per questo account.
Cos’e’ il SPF? SPF, ossia Sender Policy Framework e’ un sistema per identificare esattamente i Servers che sono autorizzati a spedire le E-Mail per un certo dominio.
Normalmente, nelle informazioni del DNS di un dominio, esiste almeno un record MX (Mail-Exchange), ossia il Server che deve essere usato per mandare E-Mail a quel dominio.
SPF implementa l’altra direzione, ossia dice: “guarda che le E-Mail per il dominio xyz.de arriveranno da questi Servers! Non accettare E-Mail @xyz.de da altri!!”.
Visto che, ovviamente, non e’ possibile (almeno in breve tempo) rivoluzionare completamente lo standard del DNS per aggiungere un nuovo campo, si e’ deciso di sfruttare il record TXT che consente di scrivere un testo a piacere.
Secondo una sintassi abbastanza semplice (dettagli su https://www.openspf.org) si scrive in un record TXT quali Servers sono abilitati a mandare E-Mails. Per esempio, se si interroga mydomain.de configurato per offrire informazioni di SPF, otterremo quanto segue (ovvio che mydomain.de e’ del tutto inventato per scopi dimostrativi!!):
l’IP mydomain.de e’ autorizzato a spedire E-Mails (quella “a”)
I Mail-Exchanges di mydomain.de sono autorizzati a spedire E-Mails (“mx”)
Nessun altro server e’ autorizzato a spedire (“-all”)
Avrei anche potuto scrivere un ulteriore campo (mx:) per dire da quali (altri) Servers possono venire spedite le E-Mails.
Sul sito di OpenSPF c’e’ un ottimo Wizard per ottenere le informazioni da scrivere nel proprio DNS, con tanto di istruzioni per vari programmi, quindi non sprechero’ altro tempo per descrivere il sistema.
Il punto, comunque, e’ che il MailServer che riceve l’E-Mail diciamo da test@mydomain.de (per fare un esempio) potra’ verificare se l’IP dal quale arriva l’E-Mail e’ tra quelli che io (come “dnsmaster”) ho autorizzato per spedire le mie E-Mails. Se non e’ cosi’, puo’ tranquillamente rifiutare l’E-Mail e chiudere la porta in faccia allo Spammer.
Addendum
Purtroppo, anche l’SPF ha un difetto: nel momento in cui si ha una casella di posta che rimbalza le mail ad un’altro indirizzo (un forward in pratica), e il server del mittente (non necessariamente il nostro) offre le informazioni dell’SPF e si verifica quanto segue:
la mail viene spedita dal mittente e ricevuta dal vostro server
la mail viene rigirata all’indirizzo di destinazione, mantenendo pero’ mittente e destinatario
il server che riceve la mail controlla le informazioni del mittente, che non e’ il nostro server e, visto che proviene da ip diverso la rifiuta.
Il problema si verifica sia che il nostro server faccia il controllo SPF o meno, basta avere un forward attivo. Che io sappia esistono solo due modi per risolvere il problema:
Non rimbalzare la mail
Riscrivere il mittente prima di forwardare la posta
Connect
Connettiti con me su vari social media...