Eine der Lösungen für Spam ist eine häufige Aktualisierung-Datenbank mit IP-Adressen, die zu schlecht benehmen. Diese Datenbank sollte vorzugsweise nach dem Zufallsprinzip unter hoher Geschwindigkeit. DNS bietet eine Lösung dafür.
Einleitung.
Glücklicherweise Internet gefunden hat Antworten für die immens wachsende Spam-Problem. Eine Lösung ist eine häufige Aktualisierung-Datenbank mit IP-Adressen, die zu schlecht benehmen. Diese Datenbank sollte vorzugsweise nach dem Zufallsprinzip unter hoher Geschwindigkeit. DNS bietet eine Lösung dafür.
DNS-Einträge können schnell aktualisiert werden. Auch, vor allem gibt es keine Notwendigkeit zum Herunterladen einer Kopie der (potentiell große) Datenbank häufig. Wenn eine E-Mail-Server erkennt, in einem Bruchteil einer Sekunde, dass das Senden von IP ist derzeit der schwarzen Liste, zum Beispiel weil sie mit einem Virus infiziert sind und als Open-Relay, kann effictively Block Empfang.
Ein bekanntes DNSBL-Anbieter ist spamhouse.org. Für eine (vollständige) Liste der DNSBL-Anbieter, sichhier
Usage
Beide SMTP-Server und E-Mail-Clients (oder Mailbox-Reiniger) können mit dieser Methode. Der Weg ging eine E-Mail wird immer gespeichert, so dass Sie immer wieder die IP-Ursprung. Dies ist ein wesentlicher Bestandteil des SMTP-Protokoll.
Mit dem POP3-Protokoll verwenden, können Sie eine Mail-Box, nach oben (nach oben bedeutet: holen nur die Message-Header) der Nachrichten-Header, und siehe, wenn sie von der schwarzen Liste nach der "Received: from somehost (1.2.3.4)" Linien.
Da diese Spam-Datenbanken werden häufig aktualisiert werden, können sie erkennen, effektiv eine große Menge (> 50%?) Von Spam.
Wie funktioniert es
Im Grunde, was Sie tun müssen ist, ob gegen eine DNSBL (DNS Blockierliste) Quelle, wie
www.spamhaus.org. Dies geschieht auf folgende Weise:
Angenommen, Sie wollen prüfen, ob die IP-Adresse 60.70.80.90 ist ein Spammer, die Sie gerade eine DNS-Abfrage an sbl.spamhaus.org, mit der (umgekehrt) die IP-Adresse eingefügt werden, wie
DNS-Abfrage: 90.80.70.60.sbl.spamhaus.org
Wenn Sie wieder einen A-Datensatz, ist dies ein Spammer. Wenn Sie nichts zurück, diese IP ist nicht auf der Spam-Liste.
Testen Sie
Sie können ganz einfach überprüfen, dies mit dem "ping"-Befehl.
Wenn Sie es tun:
Lubos hat dieses Gerät erfolgreich in einem SMTP/POP3 Server Suite.
Sie können dieses Gerät mit oder ohne Synapse TCP / IP-Bibliothek, indem Sie die ($ DEFINE) SYNAPSE Richtlinie.
spamchck.pas
unit spamchck;
interface
//Query's the spamhaus.org database of spammers
Klassen verwendet, Sysutils, ($ IFDEF SYNAPSE SynaUtil), ($ ELSE SynSock WinSock) ($ ENDIF); Typ
TSpamCheck = class (TObject)
geschützt
öffentlichen
FDNSBL: String; / / DNS-Blockierliste
constructor Create;
Funktion IsSpammer (IP: String): Integer; overload;
Funktion IsSpammer (MailHeader: TStrings): Integer; overload;
end;
Umsetzung
TSpamCheck ()
Konstruktor TSpamCheck.Create;
beginnen
inherited;
FDNSBL: = "SBL-xbl.spamhaus.org ';
/ / Alternativ sbl.spamhaus.org ( "Spam") oder
/ / Xbl.spamhaus.org (Open Relays, Proxies)
/ / Oder eine alternative Quelle DNSBL Quelle.
/ / Die SBL-xbl ist die kombinierte Liste.
end;
Funktion TSpamCheck.IsSpammer (IP: String): Integer;
var RevIP: String;
i: Integer;
p: PHostEnt;
beginnen
/ / Abfrage der Datenbank
/ / First, Reverse-IP -
Result: = -1;
($ IFDEF SYNAPSE)
wenn ISIP (IP), dann
($ ENDIF)
beginnen
/ / Reverse die IP -
RevIP: ='';
i: = 0 bis 2 do
beginnen
RevIP: = '.' + Copy (IP, 1, pos ('.', IP) -1) + RevIP;
IP: = Copy (IP-, POS-('.', IP) +1, maxint);
end;
RevIP: = IP + RevIP;
/ / Nun, Abfrage der Datenbank:
RevIP: = RevIP + "." + FDNSBL;
p: = gethostbyname (PChar (RevIP));
wenn die Vergabe von (p), dann
begin / / Ergebnisse wieder als 127.0.0.x wobei x> 1
/ / 127.0.0.2 = Spam
/ / 127.0.0.4 = Open Relay etc.
Ergebnis: = byte (p ^. H_addr ^. S_un_b.s_b4);
Ende
else / / kein DNS-Eintrag gefunden, markieren Sie es als sicher:
Result: = 0;
end;
end;
Funktion TSpamCheck.IsSpammer (MailHeader: TStrings): Integer;
var v, ip: String;
i, r: Integer;
beginnen
/ / Parse eine E-Mail-Header
/ / Suchen Sie nach "Received"-Header
/ / extract IP-Adresse, sofern Form "Received: from (ABCD) von (wxyz)
/ / Validate diese IP-Adresse bei Spamhaus.
i: = 0;
Result: = -1;
während i <MailHeader.Count tun
beginnen
wenn pos ( "Received:" Kleinbuchstaben (MailHeader [i])) = 1, dann
beginnen
v: = MailHeader [i];
/ / Suche nach zusätzlichen Header:
while ((i +1) <MailHeader.Count) und
(MailHeader [i +1 ]<>'') und
(MailHeader [i +1] [1] = '') do
beginnen
inc (i);
v: = v + MailHeader [i];
end;
/ / v enthält nun eine Zeile finden, mit der IP-Adresse:
v: = Kleinbuchstaben (V);
/ / Suche nach:
/ / Received: from somehost.com (1.2.3.4).
v: = Copy (V, pos ( 'aus', v) +4, maxint);
v: = Copy (V, pos ('(', v) +1, maxint);
v: = Copy (v, 1, pos (')', v) -1);
wenn pos ('[', v)> 0 then
/ / gültig ist auch:
/ / Received: from somehost.com (somehost.com [1.2.3.4])
beginnen
v: = Copy (V, pos ('[', v) +1, maxint);
v: = Copy (v, 1, pos (']', v) -1);
end;
Result: = IsSpammer (V);
/ / ein einziges erhalten ist ausreichend
wenn Ergebnis> 0 dann
break;
/ /
end;
inc (i);
end;
end;
Ende.

Delicious
Digg
Google
Yahoo