En av løsningene på spam er en -frequent updated- database med IP-adresser som synes å oppføre seg dårlig. Denne databasen bør fortrinnsvis være tilfeldig tilgjengelig i høy hastighet. DNS tilbyr en løsning for det.
Introduksjon. Heldigvis internett har funnet svarene for immens voksende spam-problemet. En løsning er en -frequent updated- database med IP-adresser som synes å oppføre seg dårlig. Denne databasen bør fortrinnsvis være tilfeldig tilgjengelig i høy hastighet. DNS tilbyr en løsning for det.
DNS-oppføringer kan oppdateres raskt. Også, for det meste er det ikke nødvendig å laste ned en kopi av (potensielt stort) database ofte. Hvis en e-postserver kan oppdage, i en brøkdel av et sekund, at du sender IP øyeblikket svartelistet, for eksempel fordi det var infisert av et virus, og brukes som åpen stafett, kan det effictively blokkere mottak., En velkjent DNSBL leverandøren er spamhouse.org. For en (komplett) liste over DNSBL leverandører, se her
Bruks Både SMTP-servere og e-postklienter (eller postboks rengjøringsmidler) kan bruke denne metoden. Stien en melding gikk alltid er lagret, slik at du alltid kan hente den opprinnelige IP. Dette er en viktig del av SMTP-protokollen
bruker POP3-protokollen, kan du se en postkasse, topp (øverst betyr: hente bare meldingshodet). Overskrifter av meldinger, og se om de er svartelistet ved å se på " mottatt: fra somehost (1.2.3.4) " . Linjer
Siden disse spam databaser kan oppdateres ofte, de effektivt kan oppdage en stor mengde (>? 50%). Spam
Hvordan virker det
utgangspunktet, hva du trenger å gjøre er å verifisere mot en DNSBL (DNS Blocklist) kilde, som www.spamhaus.org. Dette gjøres på følgende måte:
Anta at du vil sjekke om IP-adressen 60.70.80.90 er en spammer, du bare utføre en DNS-spørring til sbl.spamhaus.org, med (reversert) ip-adresse satt inn, lignende forespørsel dns: 90.80.70.60.sbl.spamhaus.org hvis du får tilbake en A record, dette er en spammer. hvis du får noe tilbake, er dette ip ikke på spam-listen.
Test det Du kan enkelt kontrollere dette ved hjelp av "ping" kommando. Hvis du vil gjøre: ping 90.80.70.60.sbl.spamhaus.org, så er det to alternativer: * du får "ukjent host 'budskap. Dette er ok, IP ikke er svartelistet. * Du får '127.0.0.x', der x > 1, som 127.0.0.2. X representerer en statuskode. Vanligvis 2 brukes for (semi) permanente netblocks, og 4 brukes for "åpne proxyer '(som: maskiner infisert av et virus).
Eksempel jeg bruke denne enheten med hell i en e-postklient. Lubos har integrert denne enheten med hell i en SMTP /POP3 server suite.
Du kan bruke denne enheten med eller uten synapse tcp /ip-biblioteket ved å sette {$ DEFINE SYNAPSE} direktivet.
Spamchck.pas
enhet spamchck;
grensesnitt
//Query-tallet spamhaus.org database av spammere
bruker Klasser, SysUtils, {$ ifdef SYNAPSE} SynaUtil, SynSock {$ ELSE} WinSock {$ ENDOM};
typen TSpamCheck = klasse (TObject) beskyttet offentlig FDNSBL: String; //DNS Blocklist konstruktør Opprett; fungere IsSpammer (IP: String): Integer; overbelastning; fungere IsSpammer (MailHeader: TStrings): Integer; overbelastning; enden,
implementering product: {TSpamCheck}
konstruktør TSpamCheck.Create; begynne arvet; FDNSBL: = 'sbl-xbl.spamhaus.org'; //Alternativt bruke sbl.spamhaus.org (spam) eller //xbl.spamhaus.org (åpne releer, proxys) //eller en alternativ kilde DNSBL kilde. //SBL-XBL er den kombinerte listen. enden,
funksjon TSpamCheck.IsSpammer (IP: String): Integer; Var RevIP: String; i: Integer; p: PHostEnt; begynne //søke i databasen //Først reversere IP Resultat: = 1; {$ Ifdef SYNAPSE} hvis ISIP (IP) deretter {$ ENDOM} begynne //Reverse IP RevIP: = ''; for i: = 0-2 gjør begynne RevIP: '.' = + Copy ( '.' IP, 1, pos (, IP) -1) + RevIP; IP: = Kopier (IP, pos (, IP) 1, MAXINT '.'); ende; RevIP: = IP + RevIP;
//Nå, søke i databasen: RevIP: = RevIP + '.' + FDNSBL; p: = gethostbyname (PChar (RevIP)); hvis Assigned (p), og start //Fasit kommer tilbake som 127.0.0.x der x > 1 //127.0.0.2 = spam //127.0.0.4 = åpent relé etc. Resultat: = byte (p ^ .h_addr ^ .S_un_b.s_b4); ende annet //no dns oppføring funnet, merke den som trygg: Resultat: = 0; enden,
ende;
funksjon TSpamCheck.IsSpammer (MailHeader: TStrings): Integer; Var v, ip: String; i, r: Integer; begynne //Analyser en epost header //Se etter 'mottatt' header //ekstrakt IP-adresse, forutsatt at formen 'mottatt: fra (a.b.c.d) ved (w.x.y.z) //validere denne IP-adressen på spamhaus. i: = 0; Resultat: = 1; mens jeg < MailHeader.Count ikke begynne hvis pos ( 'mottatt:', små bokstaver (MailHeader [i])) = 1 og deretter begynne v: = MailHeader [i]; //Søk etter flere overskrifter: while ((i + 1) < MailHeader.Count) og (MailHeader [i + 1] < > '') og (MailHeader [i + 1] [1] = '') ikke begynne inc (i); v: = v + MailHeader [i]; ende; //V inneholder nå en linje, finne fra ip-adresse: v: = små bokstaver (v); //Søker etter: //mottatt: fra somehost.com (1.2.3.4). v: = kopiere (v, pos ( "fra", v) 4, MAXINT); v: = kopiere (v, pos ( '(', v) en, MAXINT); v: = kopiere (v, 1, pos ( ')', v) -1);
hvis pos ( '[ ,,,0],', v) > 0 da //gyldig format er også: //mottatt: fra somehost.com (somehost.com [1.2.3.4]) starter v: = kopiere (v, pos (' [ ', v) + 1, MAXINT); v: = kopiere (v, 1, pos ( ']', v) -1); enden,
Resultat: = IsSpammer (v);
//én mottatt linjen er tilstrekkelig dersom Resultat > 0 deretter bryte; //End; inc (i); ende; enden,
slutten
.
Slik bruker DNS blocklists å oppdage Spam
Next Page:Vedvarende avledet attributes