Système anti spam utilisation de blacklist perso et partagées

Soyez le premier à donner votre avis sur cette source.

Vue 6 709 fois - Téléchargée 188 fois

Description

Pour une liste de compte e-mail imap, je compare les adresses ou les server d'expéditeurs à des blacklist
si concordance -> supression

pour executer mon code il faut que le serveur autorise la fonction imap_open()

l'intéret de mon système est d'utiliser la même blacklist pour plusieurs comptes

je suis un peu newbie... donc mon code n'est pas forcement super performant ... à bons entendeurs..... j'me vexerais pas

je n'utilise pas de base de données car j'me dit que dans une optique de partage des blackliste en fichier c'est plus simple.... mais c'est au dépend des perfs bien sûr.

Source / Exemple :


---------------------------   index.php    ---------------------------
liste domaines spamer: <br>
http://www.spamanti.net/rogues.txt <br>
http://blogs.labo-dotnet.com/blacklist.txt<br>
<?php

function scanbal()
{
		$folder = "bal";
	$dossier = opendir($folder);
	while ($Fichier = readdir($dossier)) 
	{
  		if ($Fichier != "." && $Fichier != "..") 
  		{
    		$nomFichier = $folder."/".$Fichier;
    		echo "<a href=\"index.php?bal=".$nomFichier."\">".$Fichier."</a><BR>";
  		}
	}
	closedir($dossier);
}

if ($bal=="")
{
	scanbal();
}

else 
{

	scanbal();
	include($bal);

$mbox = imap_open ("{".$server.":".$port."}$Folder", $adresse, $pass);

function scanBlackList($mbox,$str,$msgId,$blfile)
{
  $compteur=0;  
  $fcontents = file( $blfile ); 
  while ( list( $numero_ligne, $ligne ) = each( $fcontents ) ) 
  { 
          if ($numero_ligne!="0" && strtolower(trim($ligne))==strtolower(trim($str)))
                    delMsg($mbox,$msgId,$ligne);
  } 
}

function delMsg($mbox,$msgId,$adMail)
  {	
  echo("<b>mail de ".$adMail." attention !suppression mail numéro : ".$msgId."</b>");
  imap_delete($mbox, $msgId+1);
  }

echo "<h1>analyse de la BAL</h1>\n";
$headers = imap_headers($mbox);
if ($headers == false) {
   echo "Appel échoué<br />\n";
} else {
   while (list ($key,$val) = each ($headers)) {
  			$Hi=imap_headerinfo($mbox,$key+1,80,80);
   			$fromName=$Hi->from[0]->mailbox;
   			$fromServer=$Hi->from[0]->host;
   			$from=$fromName."@".$fromServer; 
     			scanBlackList($mbox,$from,$key,'blacklist.txt');
     			scanBlackList($mbox,$fromServer,$key,'http://www.spamanti.net/rogues.txt');
     			scanBlackList($mbox,$fromServer,$key,'http://blogs.labo-dotnet.com/blacklist.txt');
       echo "<form action=\"adAdMail.php\">".$val."--".$subject."-- <input type=text name=\"adMail\" value=\"".$from."\"><button type=\"submit\" target=\"_blank\">x</button>--<b>".$key."</b></form>\n";
   }
}
imap_expunge ($mbox);
imap_close($mbox);
}
?> 

---------------------------   adAdMail.php    ---------------------------

<?
$fp=fopen("blacklist.txt","r+"); 
$fsz=filesize("blacklist.txt"); 
fseek($fp,$fsz); 
fputs($fp,"$adMail\n"); 
fclose($fp);
?>
<script>
history.go(-1)
</script>

---------------------------   bal/free.php    ---------------------------
// créez autant de fichier décrivant vos comptes dans un sous repertoire "bal/"
<?
$server="imap.free.fr";
$port=143;
$folder="INBOX";
$adresse="compte@free.fr";
$login="compte";
$pass="pass_compte";
?>

Conclusion :


Ben merci à
http://www.spamanti.net/rogues.txt
http://blogs.labo-dotnet.com/blacklist.txt

d'avoir partagé leurs blacklists

j'imagine que y'en a surement plein d'autres ce sont les premières que j'ai trouvé... plus y en a moins c'est rapide

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Huugooo
Messages postés
122
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
2 juillet 2014
-
Cool ! Je cherchais exactement ça !
Je comptais m'en faire un mais qui vérifie aussi l'entete des mails. Jle changerai un ptit peu !
"Re:Your document" "Re:Hello" "....viagra for free..." "\/lagra..." etc....
cs_scullder
Messages postés
36
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
12 novembre 2004
-
bon bah voilà, je suis arrivé au résultat que je voulais et je vais donc utiliser ce script. Voilà, par contre, j'ai un peu modiifé pour pouvoir me connecter à ma bal sur un compte pop, et pr qq autres truc, je laisse le zip ici, ça marche niquel ton script izt00good :
http://scullder.free.fr/php/stopspam.zip
C'est réindenté, et j'ai relu le script, normalement là tout fonctionne niquel pour les serveurs pop du moins :-D
Merci d'avoir laissé cette source :)
cs_scullder
Messages postés
36
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
12 novembre 2004
-
alors après test, voilà ce que j'ai à dire :
de gros problèmes d'indentations (oui ça m'a gêné quand je zieutait le code)
j'ai fait un peu de deboguage ^^, c'est à dire que j'ai besoin de me connecter à un serveur pop3 perso et voilà la biggous erreur à cette ligne
$mbox = imap_open ("{".$server.":".$port."}$Folder", $adresse, $pass);
tu as mis une majuscule à $Folder et pas dans le fichier de config alors tout de suite ça marche moins bien, puis après avoir regardé la doc sur http://www.php.net, j'ai fini par remplacer cette ligne par celle là :
$mbox = imap_open ("{".$server.":".$port."/pop3}".$folder, $login, $pass);
notez aussi que j'ai mis $login et pas $adresse comme nom d'utilisateur.
Voilà après avoir fait ça, je n'avais plus cette magnifique erreur :-D :

Warning: imap_open(): Couldn't open stream {pop.no-log.org:110} in C:\apache\www\stopspam\index.php on line 34

Fatal error: Maximum execution time of 30 seconds exceeded in C:\apache\www\stopspam\index.php on line 34

Y'a aussi des fonctions qui se trouvent à l'intérieur d'une condition, c'est pas très propre à mon goût (je savais même pas que c'était possible).
cs_scullder
Messages postés
36
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
12 novembre 2004
-
ohlalala, moi aussi je teste ça, je cherchai justement sur google un tutorial pour utiliser la librairie imap pour faire la même chose. :-D

"je suis un peu newbie... donc mon code n'est pas forcement super performant ... à bons entendeurs..... j'me vexerais pas"

Si, ton code à l'air bon, à part quelques problèmes d'indentation ^^ (perso j'utilise scite, je peux plus m'en passer :-D)
Huugooo
Messages postés
122
Date d'inscription
mercredi 25 février 2004
Statut
Membre
Dernière intervention
2 juillet 2014
-
Je vais tester ça !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.