Una delle soluzioni per lo spam è un frequente aggiornamento della banca dati con gli indirizzi IP che sembrano misbehave. La banca dati dovrebbe, preferibilmente, essere accessibili casuale ad alta velocità. DNS offre una soluzione per questo.
Introduzione.
Per fortuna Internet ha trovato risposte per il immens crescente problema dello spam. Una soluzione è un frequente aggiornamento della banca dati con gli indirizzi IP che sembrano misbehave. La banca dati dovrebbe, preferibilmente, essere accessibili casuale ad alta velocità. DNS offre una soluzione per questo.
DNS può essere aggiornato rapidamente. Inoltre, la maggior parte non c'è bisogno di scaricare una copia del (potenzialmente grandi) base di dati frequentemente. Se un server di posta in grado di rilevare, in una frazione di secondo, che l'invio di IP è attualmente nella lista nera, per esempio perché è stato infettato da un virus e usati come relay aperto, si può bloccare la ricezione effictively.
Un noto DNSBL prestatore è spamhouse.org. Per un (completo) elenco dei fornitori di DNSBL, guardaqui
Uso
Entrambi i server SMTP e client di posta elettronica (casella e-mail o detergenti) può utilizzare questo metodo. Il percorso di un messaggio e-mail è andato sempre memorizzati, in modo che tu possa sempre recuperare il carattere originario PI. Questa è una parte essenziale del protocollo SMTP.
Utilizzando il protocollo POP3, è possibile guardare un casella di posta, in alto (in alto significa: recuperare solo il messaggio di intestazione) le intestazioni dei messaggi, e vedere se sono nella lista nera guardando il "Ricevuto: da somehost (1.2.3.4)" linee.
Poiché questi spam database può essere aggiornato di frequente, che può efficacemente rilevare una grande quantità (> 50%?) Di spam.
Come funziona
In sostanza, ciò che devi fare è verificare nei confronti di un DNSBL (DNS blocco) di origine, come
www.spamhaus.org. Questo viene fatto nel modo seguente:
Si supponga di voler verificare se l'indirizzo IP 60.70.80.90 è uno spammer, basta eseguire una query DNS per sbl.spamhaus.org, con l'(invertita) inserito l'indirizzo ip, come
query DNS: 90.80.70.60.sbl.spamhaus.org
se tornare uno Un record, questo è uno spammer. se si ottiene nulla di nuovo, questo indirizzo IP non è in elenco spam.
Provatelo
Si può facilmente verificare usando il 'ping' comando.
se volesse fare:
ping 90.80.70.60.sbl.spamhaus.org, poi ci sono due opzioni:
* Si ottiene 'ospite sconosciuto' messaggio. Questo è ok, il periodo non è nella lista nera.
* È possibile ottenere'127 .0.0. X ', dove x> 1, come 127.0.0.2. X rappresenta un codice di stato. Generalmente, viene utilizzato per 2 (semi) permanente netblocks, e 4 è usato per 'open proxy' (ad esempio: macchine infettate da un virus).
Esempio
Io uso questa unità con successo in un client di posta elettronica. Lubos ha integrato con successo questa unità in una suite di server SMTP/POP3.
si può usare questa unità, con o senza sinapsi tcp / ip biblioteca impostando il () $ DEFINE SYNAPSE direttiva.
spamchck.pas
spamchck unità;
interfaccia
/ / Query spamhaus.org il database di spammer
utilizza classi, SysUtils, ($ ifdef SYNAPSE SynaUtil), ($ SynSock WinSock else) ($ ENDIF);
tipo + + digitare
TSpamCheck = class (TObject)
protetta
pubblico
FDNSBL: String; / / DNS blocco
Crea costruttore;
funzione IsSpammer (PI: String): Integer; sovraccarico;
funzione IsSpammer (MailHeader: TStrings): Integer; sovraccarico;
fine;
attuazione
TSpamCheck ()
TSpamCheck.Create costruttore;
iniziare
ereditato;
FDNSBL: = 'SBL-xbl.spamhaus.org';
/ / Uso di sbl.spamhaus.org (spam) o
/ / Xbl.spamhaus.org (aperto relè, proxy)
/ / O una fonte alternativa DNSBL fonte.
/ / L'SBL-XBL è la congiunzione di liste.
fine;
funzione TSpamCheck.IsSpammer (PI: String): Integer;
var RevIP: String;
i: Integer;
p: PHostEnt;
iniziare
/ / Query al database
/ / In primo luogo, invertire il PI
Risultato: = -1;
Ifdef SYNAPSE $ ()
se IsIP (PI), poi
($ ENDIF)
iniziare
/ / Reverse IP
RevIP: ='';
per i: = 0 a 2 do
iniziare
RevIP: = '.' + Copy (PI, 1, pos ('.', PI) -1) + RevIP;
PI: = Copy (PI, pos ('.', PI) 1, maxint);
fine;
RevIP: = IP + RevIP;
/ / Ora, interrogare il database:
RevIP: RevIP + = '.' + FDNSBL;
p: = gethostbyname (PChar (RevIP));
se destinazione (p) e poi
inizia / / Risultati ritornare come 127.0.0.x dove x> 1
/ / = 127.0.0.2 spam
/ / = 127.0.0.4 relay aperto ecc
Risultato: byte = (p ^. H_addr ^. S_un_b.s_b4);
fine
else / / dns non entrata trovati, come marchio di sicurezza:
Risultato: = 0;
fine;
fine;
funzione TSpamCheck.IsSpammer (MailHeader: TStrings): Integer;
var v, ip: String;
i, r: integer;
iniziare
/ / Parse un email intestazione
/ / Se vuoi inserire 'Ricevuto' intestazione
/ / estrarre l'indirizzo IP, assumendo forma 'Received: a partire da (ABCD) da (wxyz)
/ / Valida a questo indirizzo IP Spamhaus.
i: = 0;
Risultato: = -1;
mentre i <MailHeader.Count fare
iniziare
se possibile ( 'ricevuto:', minuscole (MailHeader [i])) = 1 allora
iniziare
v: = MailHeader [i];
/ / ricerca di ulteriori intestazioni:
while ((i +1) <MailHeader.Count) e
(MailHeader [i +1 ]<>'') e
(MailHeader [i +1] [1] = '') non
iniziare
inc (i);
v: v = + MailHeader [i];
fine;
/ / v ora contiene una sola riga, trovare l'indirizzo ip da:
v: = minuscole (v);
/ / per la ricerca:
/ / Received: da somehost.com (1.2.3.4).
v: = copia (v, pos ( 'da', v) +4, maxint);
v: = copia (v, pos ('(', v) 1, maxint);
v: = copia (v, 1, pos (')', v) -1);
se pos ('[', v)> 0 allora
/ / formato valido è anche:
/ / Received: da somehost.com (somehost.com [1.2.3.4])
iniziare
v: = copia (v, pos ('[', v) 1, maxint);
v: = copia (v, 1, pos (']', v) -1);
fine;
Risultato: IsSpammer = (v);
/ / una sola linea ricevuto è sufficiente
se Risultato> 0 allora
break;
/ /
fine;
inc (i);
fine;
fine;
fine.

Delicious
Digg
Google
Yahoo