Une des solutions au spam est une mise à jour fréquente de la base de données avec des adresses IP qui semblent se conduisent mal. Cette base de données devrait, de préférence, être accessible au hasard à grande vitesse. DNS offre une solution pour cela.

Introduction.


Heureusement, Internet a trouvé des réponses à la immens spam de plus en plus problème. Une solution est une mise à jour fréquente de la base de données avec des adresses IP qui semblent se conduisent mal. Cette base de données devrait, de préférence, être accessible au hasard à grande vitesse. DNS offre une solution pour cela.

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 élevé) de données fréquemment. Si un serveur de messagerie permet de détecter, en une fraction de seconde, que l'envoi de la propriété intellectuelle est actuellement une liste noire, par exemple parce qu'il a été infecté par un virus et utilisés comme relais ouvert, il peut bloquer la réception effictively.

Un célèbre DNSBL fournisseur spamhouse.org. Pour un (complet) de la liste DNSBL fournisseurs, regardezici


Usage


Les deux serveurs SMTP et les clients de messagerie (ou boîte aux lettres de nettoyage) peuvent utiliser cette méthode. Le chemin a été un message électronique est stocké, vous pouvez toujours récupérer les IP d'origine. Ceci est une partie essentielle du protocole SMTP.

En utilisant le protocole POP3, vous pouvez regarder une boîte aux lettres, en haut (en haut signifie: récupérer uniquement les en-tête de message)-têtes des messages, et voir si elles sont sur liste noire en regardant le "Received: from somehost (1.2.3.4)" lignes.

Étant donné que ces bases de données de spam peut être mis à jour fréquemment, elles peuvent détecter efficacement une grande quantité (> 50%?) De spam.

Comment ça marche



Fondamentalement, ce que vous devez faire est de vérifier l'encontre d'un DNSBL (DNS Blocklist) source, comme
www.spamhaus.org. Ceci est réalisé de la manière suivante:

Supposons que vous voulez vérifier si l'adresse IP 60.70.80.90 est un spammeur, il suffit de lancer une requête DNS à sbl.spamhaus.org, avec le (inversé) inséré adresse IP, comme
requête dns: 90.80.70.60.sbl.spamhaus.org
si vous récupérez un enregistrement A, il s'agit d'un spammeur. si vous êtes de retour rien, cette ip n'est pas sur la liste de spam.

Testez


Vous pouvez facilement vérifier en utilisant le 'ping' de commande.
si vous voulez faire:
ping 90.80.70.60.sbl.spamhaus.org, alors il existe deux options:
* Vous "hôte inconnu" message. C'est ok, l'adresse IP n'est pas une liste noire.
* Vous obtenez'127 .0.0. X ', où x> 1, comme 127.0.0.2. X représente un code de statut. En règle générale, est utilisé pour les 2 (semi-) permanente netblocks, et 4 sont utilisées pour «proxy ouverts" (comme: les machines infectées par un virus).


Exemple


i l'utilisation de cette unité 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 l'appareil avec ou sans synapse tcp / ip de la bibliothèque par la mise en ($ DEFINE) SYNAPSE directive.

spamchck.pas

unit spamchck;

interface

//Query's the spamhaus.org database of spammers

utilise des classes, sysutils, ($ ifdef SYNAPSE SynaUtil), ($ SynSock WinSock ELSE) ($ ENDIF);

type
TSpamCheck = class (TObject)
protégées
public
FDNSBL: String; / / DNS Blocklist
constructor Create;
fonction IsSpammer (IP: String): Integer; surcharge;
fonction IsSpammer (MailHeader: TStrings): Integer; surcharge;
fin;


la mise en œuvre

TSpamCheck ()

TSpamCheck.Create constructeur;
commencer
hérité;
FDNSBL: = 'LSB-xbl.spamhaus.org';
/ / Utiliser alternativement sbl.spamhaus.org (spam) ou
/ / Xbl.spamhaus.org (relais ouvert, proxys)
/ / Ou d'une autre source DNSBL source.
/ / SBL-XBL est la liste combinée.
fin;

fonction TSpamCheck.IsSpammer (IP: String): Integer;
var RevIP: String;
i: Integer;
p: PHostEnt;
commencer
/ / Recherche dans la base de données
/ / Tout d'abord, l'inversion de la propriété intellectuelle
Résultat: = -1;
($ Ifdef SYNAPSE)
si ISIP (IP), puis
($ ENDIF)
commencer
/ / Reverse IP
RevIP: ='';
pour i: = 0 à 2 ne
commencer
RevIP: = '.' + Copy (IP, 1, pos ('.', IP) -1) + RevIP;
IP: = Copy (IP, pos ('.', IP) +1, maxint);
fin;
RevIP: = IP + RevIP;

/ / Maintenant, interrogez la base de données:
RevIP: = RevIP + "." + FDNSBL;
p: = gethostbyname (PChar (RevIP));
si Assigned (p), puis
commencer / / Résultats de revenir comme 127.0.0.x où x> 1
/ / 127.0.0.2 = spam
/ / 127.0.0.4 = relais ouvert etc
Résultat: = byte (p ^. H_addr ^. S_un_b.s_b4);
fin
else / / pas trouvé d'entrée dns, marquez-le comme sûrs:
Résultat: = 0;
fin;

fin;

fonction TSpamCheck.IsSpammer (MailHeader: TStrings): Integer;
var v, ip: String;
i, r: Integer;
commencer
/ / Parse une tête d'e-mail
/ / Look for 'Date' header
/ / extraire l'adresse IP, en supposant que la forme "Received: from (abcd) par (wxyz)
/ / Valider cette adresse IP à SpamHaus.
i: = 0;
Résultat: = -1;
while i <MailHeader.Count faire
commencer
si pos ( 'reçu', minuscules (MailHeader [i])) = 1 alors
commencer
v: = MailHeader [i];
/ / recherche de têtes supplémentaires:
while ((i +1) <MailHeader.Count) et
(MailHeader [i +1 ]<>'') et
(MailHeader [i +1] [1] = "") ne
commencer
inc (i);
v: = v + MailHeader [i];
fin;
/ / v contient désormais une seule ligne, de trouver l'adresse IP:
v: = lowercase (v);
/ / recherche:
/ / Date: à partir de somehost.com (1.2.3.4).
v: = copy (v, pos ( 'from', v) +4, maxint);
v: = copy (v, pos ('(', v) 1, maxint);
v: = copy (v, 1, pos (')', v) -1);

si pos ('[', v)> 0 alors
/ / valide le format, c'est aussi:
/ / Date: à partir de somehost.com (somehost.com [1.2.3.4])
commencer
v: = copy (v, pos ('[', v) 1, maxint);
v: = copy (v, 1, pos (']', v) -1);
fin;

Résultat: = IsSpammer (v);

/ / une seule ligne suffit reçu
Résultat, si> 0 alors
break;
/ /
fin;
inc (i);
fin;
fin;

fin.

Average rating: