Utiliser le dns listes de blocs pour détecter le spam
Une des solutions pour le spam est une fréquente mise à jour de la base de données avec les adresses IP qui apparaissent à mal se conduire. Cette base de données devrait, de préférence, être aléatoire accessibles à haute vitesse. DNS offre une solution pour cela.
Introduction.
Heureusement, internet a trouvé des réponses pour l'immens problème croissant de pourriels. Une solution est la fréquence des mises à jour de la base de données avec les adresses IP qui apparaissent à mal se conduire. Cette base de données devrait, de préférence, être aléatoire accessibles à haute vitesse. DNS offre une solution pour cela.
les entrées DNS peut être mis à jour rapidement. Aussi, pour la plupart il n'est pas nécessaire de télécharger une copie de la (potentiellement de grande base de données fréquemment. Si un serveur de messagerie peut détecter, en une fraction de seconde, que l'envoi IP est actuellement mis à l'index, par exemple parce qu'il a été infecté par un virus et est utilisé comme relais ouvert, il peut effictively bloquer la réception.
bien connu DNSBL fournisseur est spamhouse.org . Pour un (complet) liste des DNSBL fournisseurs, regardez ici
Utilisation
les Deux serveurs SMTP et les clients de messagerie (boîte aux lettres ou de nettoyants), peut utiliser cette méthode. Le chemin d'accès d'un message électronique est allé est toujours stockés, de sorte que vous pouvez toujours récupérer l'IP d'origine. C'est une partie essentielle du protocole SMTP.
en Utilisant le protocole POP3, vous pouvez regarder une boite mail, en haut (en haut signifie: récupérer uniquement le message d'en-tête) des en-têtes de messages, et de voir si elles sont sur la liste noire en regardant le 'received: from somehost (1.2.3.4)' lignes.
Depuis ces spam bases de données peuvent être mises à jour fréquemment, ils peuvent détecter efficacement une grande quantité (>50% ?) de spam.
Comment ça marche
en gros, ce que vous devez faire est de vérifier à l'encontre d'une DNSBL (DNS liste de blocs) de la source, comme
www.spamhaus.org. C'est fait de la manière suivante:
Supposons que vous voulez vérifier si l'adresse IP 60.70.80.90 est un spammeur, vous venez d'effectuer une requête DNS sbl.spamhaus.org avec l' (inversé) adresse ip inséré, comme
requête dns: 90.80.70.60.sbl.spamhaus.org
si vous obtenez en retour un record, c'est un spammeur. si vous obtenez de retour rien, cette ip n'est pas sur la liste des spams.
Test
Vous pouvez facilement vérifier cela en utilisant le 'ping' de la commande.
si vous souhaitez faire:
ping 90.80.70.60.sbl.spamhaus.org puis il y a deux options:
* vous obtenez 'hôte inconnu'. C'est ok, l'IP n'est pas sur la liste noire.
* Vous obtenez '127.0.0.x', où x>1, comme 127.0.0.2. X représente un code d'état. Généralement, 2 est utilisée pour les (semi -) permanent netblocks, et 4 est utilisé pour 'open proxy' (comme: machines infectées par un virus).
Exemple
- je utiliser cet appareil avec succès dans un client de messagerie. Lubos a intégré cette unité avec succès dans un serveur SMTP/POP3 suite.
vous pouvez utiliser cet appareil avec ou sans synapse tcp/ip de la bibliothèque par le paramètre {$DEFINE SYNAPSE} directive.
spamchck.pas
unité spamchck
interface
//la Requête de la spamhaus.org base de données des spammeurs
utilise des Classes, SysUtils, {$IFDEF SYNAPSE}SynaUtil, SynSock{$ELSE}WinSock{$ENDIF}
type
TSpamCheck = class (TObject)
protected
public
FDNSBL:Chaîne //DNS liste de blocs
constructeur Créer
fonction de IsSpammer (IP:String):Integer surcharge
fonction de IsSpammer (MailHeader:TStrings):Integer surcharge
fin
la mise en œuvre
{ TSpamCheck }
constructeur TSpamCheck.Créer
begin
hérité
FDNSBL := 'sbl-xbl.spamhaus.org'
// sinon, utilisez sbl.spamhaus.org (spam) ou
// xbl.spamhaus.org (relais ouverts, les proxys)
// ou une source alternative de DNSBL source.
// la sbl-xbl est la liste combinée.
fin
la fonction TSpamCheck.IsSpammer(IP: String): Integer
var RevIP:String
i:Integer
p:PHostEnt
begin
//Requête de la base de données
//tout d'Abord, l'inverse de l'adresse IP
Result := -1
{$IFDEF SYNAPSE}
si IsIP (IP)
{$ENDIF}
begin
//Inverse l'adresse IP
RevIP := '
for i:=0 à 2 do
begin
RevIP := '.' Copier (IP, 1, pos ('.', IP)-1) RevIP
IP := Copy (IP, pos('.', IP) 1 exemple maxint)
fin
RevIP := IP RevIP
//Maintenant, interroger la base de données:
RevIP := RevIP '.' FDNSBL
p := GetHostByName (PChar(RevIP))
s'il est Affecté (p)
begin //Résultats de revenir en tant que 127.0.0.x, où x > 1
// 127.0.0.2 = spam
// 127.0.0.4 = ouvrir relais, etc ...
Result := octet(p^.h_addr^.S_un_b.s_b4)
fin
else //pas d'entrée dns trouvé, il marque aussi sûr:
Result := 0
fin
fin
la fonction TSpamCheck.IsSpammer(MailHeader: TStrings): Integer
var v,ip:String
i,r:Entier
begin
//Analyser une adresse e-mail
//recherche de 'Reçu' en-tête
//extrait de l'adresse IP, en supposant que la forme 'received: from (un.b.c.d) par (w.x.y.z)
//Valider cette adresse IP à spamhaus.
i := 0
Result := -1
while i begin
si pos ('a reçu: ', minuscules (MailHeader[i])) = 1
begin
v := MailHeader[i]
//recherche des en-têtes supplémentaires:
while ((i 1) (MailHeader[i 1]<>') et
(MailHeader[i 1][1]=' ') do
begin
inc (i)
v := v MailHeader[i]
fin
//v contient maintenant une ligne, trouver de l'adresse ip:
v := minuscule (v)
//à la recherche de:
//received: from somehost.com (1.2.3.4).
v := copy (v, pos ('de', v) 4 exemple maxint)
v := copy (v, pos ('(', v) 1, exemple maxint)
v := copy (v, 1, pos (')', v)-1)
si pos ('[', v)>0, alors
//format valide, c'est aussi:
//received: from somehost.com (somehost.com [1.2.3.4])
begin
v := copy (v, pos ('[', v) 1, exemple maxint)
v := copy (v, 1, pos (']', v)-1)
fin
Résultat := IsSpammer (v)
//une seule ligne reçue est suffisante
si Résultat > 0, alors
break
//
fin
inc (i)
fin
fin
à la fin.
Utiliser le dns listes de blocs pour detecter le spam
Utiliser le dns listes de blocs pour detecter le spam : Plusieurs milliers de conseils pour vous faciliter la vie.
Une des solutions pour le spam est une frequente mise a jour de la base de donnees avec les adresses IP qui apparaissent a mal se conduire. Cette base de donnees devrait, de preference, etre aleatoire accessibles a haute vitesse. DNS offre une solution pour cela.
Introduction.
Heureusement, internet a trouve des reponses pour l'immens probleme croissant de pourriels. Une solution est la frequence des mises a jour de la base de donnees avec les adresses IP qui apparaissent a mal se conduire. Cette base de donnees devrait, de preference, etre aleatoire accessibles a haute vitesse. DNS offre une solution pour cela.
les entrees DNS peut etre mis a jour rapidement. Aussi, pour la plupart il n'est pas necessaire de telecharger une copie de la (potentiellement de grande base de donnees frequemment. Si un serveur de messagerie peut detecter, en une fraction de seconde, que l'envoi IP est actuellement mis a l'index, par exemple parce qu'il a ete infecte par un virus et est utilise comme relais ouvert, il peut effictively bloquer la reception.
bien connu DNSBL fournisseur est spamhouse.org . Pour un (complet) liste des DNSBL fournisseurs, regardez ici
Utilisation
les Deux serveurs SMTP et les clients de messagerie (boîte aux lettres ou de nettoyants), peut utiliser cette methode. Le chemin d'acces d'un message electronique est alle est toujours stockes, de sorte que vous pouvez toujours recuperer l'IP d'origine. C'est une partie essentielle du protocole SMTP.
en Utilisant le protocole POP3, vous pouvez regarder une boite mail, en haut (en haut signifie: recuperer uniquement le message d'en-tete) des en-tetes de messages, et de voir si elles sont sur la liste noire en regardant le 'received: from somehost (1.2.3.4)' lignes.
Depuis ces spam bases de donnees peuvent etre mises a jour frequemment, ils peuvent detecter efficacement une grande quantite (>50% ?) de spam.
Comment ça marche
en gros, ce que vous devez faire est de verifier a l'encontre d'une DNSBL (DNS liste de blocs) de la source, comme
www.spamhaus.org. C'est fait de la maniere suivante:
Supposons que vous voulez verifier si l'adresse IP 60.70.80.90 est un spammeur, vous venez d'effectuer une requete DNS sbl.spamhaus.org avec l' (inverse) adresse ip insere, comme
requete dns: 90.80.70.60.sbl.spamhaus.org
si vous obtenez en retour un record, c'est un spammeur. si vous obtenez de retour rien, cette ip n'est pas sur la liste des spams.
Test
Vous pouvez facilement verifier cela en utilisant le 'ping' de la commande.
si vous souhaitez faire:
ping 90.80.70.60.sbl.spamhaus.org puis il y a deux options:
* vous obtenez 'hote inconnu'. C'est ok, l'IP n'est pas sur la liste noire.
* Vous obtenez '127.0.0.x', ou x>1, comme 127.0.0.2. X represente un code d'etat. Generalement, 2 est utilisee pour les (semi -) permanent netblocks, et 4 est utilise pour 'open proxy' (comme: machines infectees par un virus).
Exemple
- je utiliser cet appareil avec succes dans un client de messagerie. Lubos a integre cette unite avec succes dans un serveur SMTP/POP3 suite.
vous pouvez utiliser cet appareil avec ou sans synapse tcp/ip de la bibliotheque par le parametre {$DEFINE SYNAPSE} directive.
spamchck.pas
unite spamchck
interface
//la Requete de la spamhaus.org base de donnees des spammeurs
utilise des Classes, SysUtils, {$IFDEF SYNAPSE}SynaUtil, SynSock{$ELSE}WinSock{$ENDIF}
type
TSpamCheck = class (TObject)
protected
public
FDNSBL:Chaîne //DNS liste de blocs
constructeur Creer
fonction de IsSpammer (IP:String):Integer surcharge
fonction de IsSpammer (MailHeader:TStrings):Integer surcharge
fin
la mise en œuvre
{ TSpamCheck }
constructeur TSpamCheck.Creer
begin
herite
FDNSBL := 'sbl-xbl.spamhaus.org'
// sinon, utilisez sbl.spamhaus.org (spam) ou
// xbl.spamhaus.org (relais ouverts, les proxys)
// ou une source alternative de DNSBL source.
// la sbl-xbl est la liste combinee.
fin
la fonction TSpamCheck.IsSpammer(IP: String): Integer
var RevIP:String
i:Integer
p:PHostEnt
begin
//Requete de la base de donnees
//tout d'Abord, l'inverse de l'adresse IP
Result := -1
{$IFDEF SYNAPSE}
si IsIP (IP)
{$ENDIF}
begin
//Inverse l'adresse IP
RevIP := '
for i:=0 a 2 do
begin
RevIP := '.' Copier (IP, 1, pos ('.', IP)-1) RevIP
IP := Copy (IP, pos('.', IP) 1 exemple maxint)
fin
RevIP := IP RevIP
//Maintenant, interroger la base de donnees:
RevIP := RevIP '.' FDNSBL
p := GetHostByName (PChar(RevIP))
s'il est Affecte (p)
begin //Resultats de revenir en tant que 127.0.0.x, ou x > 1
// 127.0.0.2 = spam
// 127.0.0.4 = ouvrir relais, etc ...
Result := octet(p^.h_addr^.S_un_b.s_b4)
fin
else //pas d'entree dns trouve, il marque aussi sûr:
Result := 0
fin
fin
la fonction TSpamCheck.IsSpammer(MailHeader: TStrings): Integer
var v,ip:String
i,r:Entier
begin
//Analyser une adresse e-mail
//recherche de 'Reçu' en-tete
//extrait de l'adresse IP, en supposant que la forme 'received: from (un.b.c.d) par (w.x.y.z)
//Valider cette adresse IP a spamhaus.
i := 0
Result := -1
while i begin
si pos ('a reçu: ', minuscules (MailHeader[i])) = 1
begin
v := MailHeader[i]
//recherche des en-tetes supplementaires:
while ((i 1) (MailHeader[i 1]<>') et
(MailHeader[i 1][1]=' ') do
begin
inc (i)
v := v MailHeader[i]
fin
//v contient maintenant une ligne, trouver de l'adresse ip:
v := minuscule (v)
//a la recherche de:
//received: from somehost.com (1.2.3.4).
v := copy (v, pos ('de', v) 4 exemple maxint)
v := copy (v, pos ('(', v) 1, exemple maxint)
v := copy (v, 1, pos (')', v)-1)
si pos ('[', v)>0, alors
//format valide, c'est aussi:
//received: from somehost.com (somehost.com [1.2.3.4])
begin
v := copy (v, pos ('[', v) 1, exemple maxint)
v := copy (v, 1, pos (']', v)-1)
fin
Resultat := IsSpammer (v)
//une seule ligne reçue est suffisante
si Resultat > 0, alors
break
//
fin
inc (i)
fin
fin
a la fin.
Utiliser le dns listes de blocs pour détecter le spam
By commentfaire
Utiliser le dns listes de blocs pour détecter le spam : Plusieurs milliers de conseils pour vous faciliter la vie.