Bouw uw eigen spamfilter met PHP en DNSBLs
Bent u ooit een e-mail vragend of behoefte geworden bepaalde delen van uw lichaam, delen vergrootten geen die u zelfs zou kunnen hebben? Volgende e-mail u één vroeg of lees wilt u de duim losmaken u onlangs hebt bereikt? Merkte u ooit hoe op deze e-mail altijd van mensen zijn dat u hebt niets vrij zekere bent met de inhoud van e-mail te doen. Verzond MTeresa@Vatican.org werkelijk die dieetpil e-mail? Bent u teruggekeerd ooit geworden of verworpen „niet kunnen geleverde“ e-mail van gericht u nooit ooit hebben verzonden een e-mail naar zijn?
Ik heb.
SPAM. Het is AFSCHUWELIJK! Mijn e-maildoos voor Brian@TheCodeCave.com wordt waarschijnlijk 3 tot 1 spam over echte e-mail. Ik verwachtte dat. Ik zette dat adres uit overal en bescherm het niet. Het moet mijn openbaar adres zijn. Maar VAN adressen op al dat e-mail wijst nooit op wie e-mail werkelijk van is. Zelfs wordt de bedrijfinformatie binnen de e-mailkopbal vervalst. Spammers zullen someother naam op hun spamlijst grijpen en zullen het als hun van adres gebruiken. Ik heb mijn naam gezet in van adres van e-mail een paar keer gehad. Het is een lastig probleem, vraag enkel de KernAmerikaanse elanden.
Waarom dit kan gebeuren is een lang verhaal. Het allen brengt terug naar het feit met elkaar in verband dat SMTP en haven 25 nooit voor het voorleggen van e-mail aan e-mailservers werden bedoeld. SMTP werd slechts bedoeld voor server aan server mededelingen. Nochtans, is dat voor een verschillende post. Lang en kort van het is dat alles behalve één ding kan worden vervalst: het IP adres van de server die e-mail verzond.
Omdat dat IP adres nauwkeurig is, kunt u het gebruiken om te vertellen als de persoon die e-mail verzond een spammer is. De post vertelt u een paarmanieren om dat te doen. En omdat dit het Hol van de Code is, wordt u volledig a - functionele php routine aan laars.
Laat me eerst u tonen wat ik over spreek. E-mail bevatten veel informatie geen die u normaal ziet. Het grootste deel van die informatie is in de kopbal van e-mail. Elke e-mailcliënt heeft verschillende manieren om e-mailkopballen te tonen. U zou het kunnen vinden door de eigenschappen van e-mail te bekijken. In Vooruitzichten, kunt u het zien door, van een open e-mail, View->Options te kiezen. Het zal daar onder de naam van de „Kopballen van Internet“ zijn.
Hier is wat één e-mailkopbal als dat kwam terug aan me in Juni keek:
|
Terugkeer-weg: <tkuhnel@alushiptechnology.com> |
Bijna elk van dat informatie in er over wie dit materiaal verzond huisvuil is. „alushiptechnology.com“ had niets met e-mail te doen. Slechte TKuhnel had zeker niets met het te doen. He/She heeft enkel hun e-mailadres daar in de spamgegevensbestanden. Google toont zelfs 10 of meer namen verbonden aan dit slechte shlep.
Maar het geheim is dat „client-ip= 74.139.17.40 ″ in de Ontvangen SPF kopbal nauwkeurig is. Dat is de machine die spam verzond. En als het één spam verzond, is het vrij waarschijnlijk dat het meer heeft verzonden. Dat is wanneer DNSBLs binnen komt. DNSBL betekent de Zwarte Lijst van de Server van de Naam van het Domein. Gewoonlijk worden deze lijsten geproduceerd door een e-mailadres te creëren dat nooit voor echt gebruik wordt bedoeld. Dan om het even welke e-mail die bij dat adres aankomen is, per definitie, spam. Deze adressen worden genoemd Vallen SPAM. En de plaatsen waar zij worden gevestigd worden vaak genoemd de Potten van de Honing.
Deze lijsten van spammerIP adres worden ter beschikking gesteld van iedereen iedereen wie hen wil gebruiken. Neem een blik bij hoe een ander IP adres, 202.177.183.110, door diverse DNSBLs wordt geïdentificeerdl:
DNSBL - Resultaat (Reden)
VERMELDE AHBL - (127.0.0.3)
VERMELDE CBL - (127.0.0.2)
VERMELD DNSBLNETAUOSPS - (127.0.0.2)
VERMELD DNSBLNETAUT1 - (127.0.0.2)
VERMELDE DSBL - (127.0.0.2)
VERMELD DSBLALL - (127.0.0.2)
VERMELD EMAILBASURA - (127.0.0.2)
VERMELD NJABLPROXIES - (127.0.0.9)
VERMELDE PSBL - (127.0.0.2)
VERMELDE SBL-XBL - (127.0.0.2)
VERMELD SORBS-HTTP - (127.0.0.2)
VERMELDE SORBS-SOKKEN - (127.0.0.3)
TQM-DYNAMISCH - VERMELD (127.0.0.2)
VERMELDE TQM-SPAMTRAP - (127.0.0.3)
VERMELD UCEPROTECTL1 - (127.0.0.2)
Duidelijk werd dit adres gebruikt door een spammer. Maar hoe u uit dit kunt voordeel halen?
Goed, één van twee manieren. Eerst kunt u deze plaatsen contacteren DNSBL en de lijst downloaden. Of u kunt hen vragen om één enkel adres tegelijkertijd te verwerken. Dat is wat mijn routine doet. Het neemt een IP adres (202.177.183.110) en formatteert het als dit: 110.183.177.202.bl.spamcannibal.org voor elke spamlijst die ik heb willen om controleren. Dan roep ik een GetHostByName om die server te vragen die die gastheer werkelijk is. Als ik de nauwkeurige zelfde tekst terugkrijg die ik verzond, dan weet ik het adres schoon is. Als ik iets als 127.0.0.2 terugkrijg, weet ik dat het adres in hun DNSBL om reden #2 vermeld is (wat dat aan hen betekent). 127.0.0.3 zou op reden 3 wijzen.
Wanneer dat gebeurt, schrapt mijn routine e-mail.
Wat ik hier post is mijn inleidende versie. Ik heb een volledigere versie die meer geoptimaliseerd is en veel aardiger is aan DNSBLs. Ik zal dat aan iedereen geven wie een schenking aan de plaats maakt en om het verzoekt. Ik zou willen beginnen iets uit deze plaats een weinig te worden en deze routine voegt wat echte waarde toe. Zijn geëlimineerden 98% van mijn SPAM e-mail. Ik ben zeker genoeg daarin dat ik het geplaatst heb om e-mail zonder mijn gelijk permanent te schrappen ziend hen. Deze versie doet dat niet en als het te vaak wordt gebruikt, kon het uw verzoeken veroorzaken om door DNSBLs worden genegeerd. Ik zal ook een grote lijst van alle naamservers verstrekken ik heb en sommige hulpmiddelen verstrek u kunt gebruiken om uw lijsten te stemmen.
Hier is de downloadverbinding:
http://www.thecodecave.com/downloads/php/TCCSpamFilter.php.txt
-
<? php
-
// *************************************************************************
-
// TCCSpamFilter.php                      11/27/2006
-
// dat door Brian Layman wordt geschreven
-
//
-
// a- PHP voorbeeld dat aan filter spam van een webmailrekening wordt uitgeschreven.
-
// verstrekt een voorbeeld van het filtreren DNSBL via de raadplegingen van de domeinnaam.
-
// ziet http://www.thecodecave.com/article288 voor details
-
//
-
// Gebruik:
-
//Â Â Pas het wachtwoord aan, plaats het op uw website, en roep het.
-
//Â Â Alternatief, voeg het aan uw dossier van het cronlusje met een lijn als dit toe:
-
//Â Â 00.15.30.45 * * * * wget - q http://www.example.com/ISpamFilter.php
-
//
-
// WAARSCHUWING: GEBRUIK VAKER DIT MANUSCRIPT NIET DAN ELKE MINUUT 15.
-
// dat u zal worden geblokkeerd als u op deze wijze misbruikt de diensten DNSBL.
-
// heb ik een geoptimaliseerde versie van dit manuscript geschreven dat kan worden in werking gesteld
-
// zal eens per minuut en VEEL minder verkeer dan deze versie produceren.
-
// iedereen wie een schenking aan de plaats maakt, en verzoekt om die bron
-
// kan het krijgen.
-
//
-
De Originele Auteur van // - Brian Layman
-
//
-
GecreÃërd //    - 27/Nov/2006
-
// Gewijzigd Laatste - 02/Dec/2006
-
// Medewerkers: (Gezet uw naam & Initialen bij de bovenkant)
-
//Â Â Brian Layman - BL - http://www.TheCodeCave.com
-
//
-
//
-
// Geschiedenis:
-
//  27/Nov/2006 - GecreÃërd BL -
-
//  02/Dec/2006 - BL - het Verdere Schoonmaken. Definitieve commentaren over Rot13
-
//
-
// Vergunning - als dit u - Groot helpt! Gebruik het; wijzig het; deel het,
-
//Â Â Â Â Â Â verbinding terug naar mijn plaats.
-
//
-
// Schadevergoeding -
-
//Â Â Gebruik dit dossier op uw eigen risico. Ik ga niet doelbewust binnendringen in een beveiligd computersysteem
-
//Â Â uw server, maar anderen zouden kunnen. Ik kan of kan zich niet ongerust gemaakt te hebben
-
//  ongeveer veiligheid toen ik deze routine schreef. Het is aan U te maken
-
//Â Â bepaald dat OM HET EVEN WELKE routines die u op uw Plaats zet veilig zijn. Enkel
-
//Â Â omdat u een variabele ziet die hier door AddSlashes wordt beschermd of
-
//Â Â HTMLSpecialChar betekent niet dat ALLE variabelen beschermd zijn.
-
//
-
//Â Â Als dit dossier een gat in uw plaats toestaat, is het niet mijn fout. In
-
//  het feit, zou u dit dossier tegenhouden en op dit ogenblik enkel moeten schrappen. Voor als
-
//Â Â het veroorzaakt dat blauwe rook worden uitgezonden van uw Webserver, als het
-
//Â Â stelt uw zaken URL terug om aan MyClientsSuck.com te richten, of als het
-
//Â Â veroorzaakt uw zuster verdelen met haar advocaatvriend en begin
-
//Â Â daterend een caver, is het niet mijn fout. (Eigenlijk dat de laatstgenoemde zou kunnen
-
//Â Â ben een verbetering, maar het is nog niet mijn fout.) U is
-
//  verantwoordelijk voor UW plaats. Leer hoe te beschermde het en begrijpen
-
//Â Â wat elke lijn van code doet dat u gebruikt.
-
//
-
// Schenkingen - als dit partijdossier u werkelijk uit helpt, voel vrij te maken
-
//Â Â schenk een espresso via Paypal aan Brian@TheCodeCave.com of enkel
-
//Â Â verlaat een commentaar in http://www.thecodecave.com/did-that-help en
-
//Â Â omvat uw land van herkomst.
-
Â
-
/*********************************************************************************/
-
/*               De Routines van de steun                 */
-
/*********************************************************************************/
-
Â
-
Â
-
// *******************************************************************************
-
// IP in NIET de MOMENTEEL GEBRUIKTE Waaier van het Masker -
-
// staat toe filtrerend via IP maskers enkel zoals een de normale netwerkconfiguraties.
-
// Voorbeeld: ipinmaskrange („192.168.100.0“, „255.255.255.0“, „192.168.100.20“)
-
// keert waar terug omdat het voorbeeld in het netwerk is
-
// Example2: ipinmaskrange („192.168.100.0“, „255.255.255.0“, „192.168.101.20“)
-
// keert vals terug omdat het voorbeeld buiten het netwerk is
-
// *******************************************************************************
-
functie ipinmaskrange ($network, $mask, $ip) {
-
Â
-
  als (($ip_long & $mask_long) == $network_long) {
-
    ware terugkeer;
-
  } anders {
-
    valse terugkeer;
-
  }
-
}
-
Â
-
// *******************************************************************************
-
// IP in Waaier
-
// specificeert een waaier in de vorm ab en de routine keert waar terug als overgegaan
-
// IP het adres is in dat gamma.
-
// Voorbeeld: ipinrange („192.168.100.0 - 192.168.100.255“, „192.168.100.20“)
-
// keert waar terug omdat het voorbeeld in het netwerk is
-
// Example2: ipinrange („192.168.100.0 - 192.168.100.255“, „192.168.101.20“)
-
// keert vals terug omdat het voorbeeld buiten het netwerk is
-
// *******************************************************************************
-
functie ipinrange ($range, $ip) {
-
 als (($remote_ip>= $rangestart) && ($remote_ip <= $rangeend)) {
-
  ware terugkeer;
-
 }
-
 anders {
-
  valse terugkeer;
-
 }
-
}
-
Â
-
// *******************************************************************************
-
// IMAP krijgt Volledige Kopbal
-
// (Dank JamieD - http://www.codingforums.com/archive/index.php?t-89994.html)
-
// keert een serie terug die de oorspronkelijke berichtkopbal bevat
-
// *******************************************************************************
-
functie imap_get_full_header ($p_stream, $p_msg_number)
-
{
-
  $header_string = imap_fetchheader ($p_stream, $p_msg_number);
-
  foreach ($header_array als $line)
-
  {
-
    {
-
      $header_obj [$arg [1]] = $arg [2];
-
      $last = $arg [1];
-
    }
-
    anders
-
    {
-
      $header_obj [$last]. = „\ n „. $line;
-
    }
-
  }
-
  terugkeer ($header_obj);
-
}
-
Â
-
Â
-
// *******************************************************************************
-
// Geblokkeerde IP
-
// voert een DNS controle tegen een specifiek IP adres uit.
-
// de Server van de Naam van het Domein zet het gebruik (van DNSBLs op de zwarte lijst) deze methode om te verklaren of
-
// e-mail is verzonden van een IP adres dat om is gekend te verzenden spam.
-
// *******************************************************************************
-
functie BlockedIP ($Suspect_IP, $DNSvr_Address)
-
{
-
   ware terugkeer;
-
  } anders {
-
   valse terugkeer;
-
  }
-
}
-
Â
-
// *******************************************************************************
-
De Afzender IP van //
-
// Gegeven een brievenbus en berichtaantal, deze routine keert het IP adres van terug
-
// computer die e-mail verzond. „Van“ adres kan worden vervalst, dit IP
-
// het adres kan niet.
-
// *******************************************************************************
-
functie senderip ($mbox, $num) {
-
 $struct = imap_get_full_header ($mbox, $num);
-
 $str_in = $struct [`ont*vangen-SPF'];
-
Â
-
 $tween= „“; // nodig niet maar goede praktijk wanneer het toevoegen
-
 $chr1= `client-ip=';
-
 $chr2= `; ';
-
Â
-
  $tween=$tween.$str_in [$i];
-
 }
-
 terugkeer $tween;
-
}
-
Â
-
// *******************************************************************************
-
Vermeld // is Zwart
-
// dit de kernroutine. Gezien een IP adres, stelt het sommige controles in werking om te beslissen als
-
// e-mail van vermeld zwart spammer werd verzonden.
-
// Gebruik: $is_it_spam = isblacklisted („192.168.100.1“);
-
// *******************************************************************************
-
de functie isblacklisted ($ip) {
-
 // als er sommige mensen zijn die ik nooit zelfs heb willen om een e-mail aan merken, ik zetten=zou=
-
 // hun IP adres in blacklist zich uitstrekt.
-
 // Voorbeeld: $BlackList = serie („192.168.100.1 - 192.168.100.5“, „192.168.102.112 - 192.168.102.112“);
-
Â
-
Â
-
 // als er sommige mensen zijn die als spammers door de blokkerende dienst worden verklaard die ik heb willen om gebruiken
-
 // zou ik hen in de witte lijst verklaren.
-
           „12.196.88.128 - 12.196.88.159 ″); // A valse lijst toe te schrijven aan virusbesmetting die is gezuiverd.
-
Â
-
 // wit de lijstlidmaatschap van de Controle eerst om optimaliseringsredenen.
-
 $allowed = vals;
-
 foreach ($WhiteList als $range) {
-
  als (ipinrange ($range, $ip)) {
-
   $allowed=true;
-
  }
-
 }
-
Â
-
 // als dit adres geen vrije pas krijgt, controleert het verder.
-
 als (! $allowed) {
-
  // herhaalt de zwarte lijsten en controleert het ip adres tegen hen
-
  foreach ($BlackList als $range) {
-
   als (ipinrange ($range, $ip)) {
-
    $blocked=true;
-
   }
-
  }
-
Â
-
  // PHP het gebruik de „Evaluatie van de Kortsluiting“ zo zodra bij waar wordt geraakt, de routine gaat uit weg.
-
  // Deze verklaring met de lokale controle, en toen DNSBLs van eerst zou moeten worden geoptimaliseerd
-
  // het meest inclusief aan de minst. U wilt als weinig externe controles doen mogelijk.
-
  // de volledige versie van dit manuscript met verscheidene andere geadviseerde DNSBLs en mijn volledige lijst komt
-
  // van DNSBLs waarvan ik bewust ben.
-
  terugkeer ($blocked ||
-
      (BlockedIP ($ip, `bl.spamcop.net')) ||
-
      (BlockedIP ($ip, 'sblxbl.spamhaus.org')) ||
-
      (BlockedIP ($ip, `dnsbl2.uceprotect.net')) ||
-
      (BlockedIP ($ip, `blackholes.fivetensg.com')) ||
-
      (BlockedIP ($ip, `bl.spamcannibal.org')) ||
-
     (vals));
-
 }
-
 anders {
-
  valse terugkeer;
-
 }
-
// BLOKKEERT NOOIT MET: BLARSBL, FIVETENIGNORE, FIVETENSRC, JAMMDNSBL, SPAMBAG, SPUIT (dit blok grote IP gamma)
-
// BLOKKEERT NOOIT MET: Kaart-DUL, sorbs-DUHL (deze maken een lijst bewust van IPs die lijst aan geen criteria voldoen).
-
}
-
Â
-
Â
-
// Deze routine herhaalt alle e-mail op de server en de controles als zij spam zijn.
-
// als zij zijn het schrapt hen. Omdat het een server IMAP is, zijn zij nog online
-
// als u wenst om hen te verwijderen, gebruikt een zuiveringsbevel.
-
functie blockspam ($MAILSERVER, $PHP_AUTH_USER, $PHP_AUTH_PW) {
-
 $mbox=imap_open ($MAILSERVER, $PHP_AUTH_USER, $PHP_AUTH_PW);
-
Â
-
 // in deze voorbeeldversie, dit herhaalt ALLE berichten in uw brievenbus.
-
 // de volledige versie herhaalt slechts de nieuwe berichten die binnen zijn gekomen.
-
 // door te doen dat, u deze controle kunt zo vaak in werking stellen zoals eens eens per minuut en veel hebt
-
 // minder verkeer dat de controle in werking stelt eens per uur. Als u de dienst DNSBL misbruikt, zouden zij kunnen
-
 // blok uw IP adres.
-
 voor ($x=0; $x <imap_num_msg ($mbox); $x++) {
-
   $idx= ($x+1);
-
   $ip=senderip ($mbox, $idx);
-
   als (isblacklisted ($ip)) {
-
    imap_delete ($mbox, $idx);
-
   }
-
 }
-
 imap_close ($mbox);
-
}
-
Â
-
/*********************************************************************************/
-
/*                  Hoofd Vraag                 */
-
/*********************************************************************************/
-
 // Deze aanvankelijke versie slechts met imapservers werkt. Dat betekent u gebruikt
-
 // haven 143.
-
 // Uncomment deze lijn en gezet in uw e-mailserver, e-maillogin en wachtwoord
-
 // blockspam („{imap.example.com: 143}“, „you@example.com“, „yourpassword“);
-
Â
-
 // dat ik niet houd van opslaand de wachtwoorden in gewone teksten. U kunt Rot13 als a gebruiken
-
 // werkelijk eenvoudige encryptiemethode dan u dit dossier op het uw scherm kunt hebben
-
 // zonder een voorbijganger die uw e-mailwachtwoord ziet. Rot13 maakt het niet veilig
-
 // geen bidirectionele encyrption in bron, maar het zal het wandelen ogen blokkeren.
-
 // Gebruik http://rot13.thecodecave.com om te worden encyrpted versies van de tekst.
-
 // dat boven lijn iets in die aard zou kijken:
-
 // blockspam (str_rot13 („{vznc.rknzcyr.pbz: 143}“), str_rot13 („lbh@rknzcyr.pbz“), str_rot13 („lbhecnffjbeq“));
-
Â
-
 // als u veelvoudige rekeningen hebt, voegt een andere blok spam lijn toe.
-
Â
-
? >















