Erreur : le fichier d\'alias ne peut pas être écrit. Merci de contacter l\'administrateur'); } if (defined('BLACKLIST') && !is_readable(BLACKLIST)) { exit('
Erreur : un fichier de blacklist est renseigné mais n\'est pas lisible. Merci de contacter l\'administrateur
'); } if (defined('ALIASDENY') && !is_readable(ALIASDENY)) { exit('
Erreur : un fichier d\'alias interdit est renseigné mais n\'est pas lisible. Merci de contacter l\'administrateur
'); } function VerifMXemail($email) { require_once 'Net/DNS2.php'; $domaine=explode('@', $email); $r = new Net_DNS2_Resolver(array('nameservers' => array(NS1, NS2))); try { $result = $r->query($domaine[1], 'MX'); } catch(Net_DNS2_Exception $e) { return false; } if ($result->answer) { return true; } else { return false; } } function UpdateVirtualDB() { echo exec(BIN_POSTMAP.' '.FICHIERALIAS,$output,$return); } function AjouterAlias($alias,$email) { $fichier=fopen(FICHIERALIAS,'a+'); fputs($fichier, $alias.'@'.DOMAIN.' '.$email."\n"); fclose($fichier); UpdateVirtualDB(); } function SupprimerAlias($alias,$email) { file_put_contents(FICHIERALIAS, preg_replace('#\n\#[0-9]+ '.$alias.'@'.DOMAIN.' '.$email.'#U', '', file_get_contents(FICHIERALIAS)/*, 1*/)); file_put_contents(FICHIERALIAS, preg_replace('#\n'.$alias.'@'.DOMAIN.' '.$email.'#U', '', file_get_contents(FICHIERALIAS)/*, 1*/)); # http://www.siteduzero.com/forum-83-542138-p1-supprimer-une-ligne-d-un-fichier-texte-avec-regex.html UpdateVirtualDB(); } function parseFileRegex($file, $chaine) { $return=false; $handle = fopen($file, 'r'); while (!feof($handle)) { $buffer = fgets($handle); $buffer = str_replace("\n", "", $buffer); if ($buffer) { if (!preg_match('/^(#|$|;)/', $buffer) && preg_match($buffer, $chaine)) { $return=true; break; } } } fclose($handle); return $return; } function BlacklistEmail($email) { if (defined('BLACKLIST')) { return parseFileRegex(BLACKLIST, $email); } else { return false; } } function AliasDeny($alias) { if (defined('ALIASDENY')) { return parseFileRegex(ALIASDENY, $alias); } else { return false; } } function ListeAlias($email) { $handle = fopen(FICHIERALIAS, 'r'); while (!feof($handle)) { $buffer = fgets($handle); if ($buffer) { $bufferExplode = explode(' ', $buffer); if (!preg_match('/^(#|$|;)/', $buffer) && preg_match('/^'.$email.'$/', $bufferExplode[1])) { $alias[]=$bufferExplode[0]; } } } fclose($handle); return ($alias); } if (DEBUG) { echo '
Debug activé
'; print_r($_REQUEST); } echo '

Emails poubelle libre

Générer des emails poubelle sans contrainte de durée de vie.

'; if (isset($_REQUEST['Validemail'])) { if (preg_match('/#'.$_REQUEST['Validemail'].' [a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+ [a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+/', file_get_contents(FICHIERALIAS),$res)) { $data=explode(' ', $res[0]); $aliasExplode=explode('@', $data[1]); $alias=$aliasExplode[0]; $email=$data[2]; SupprimerAlias($alias,$email); AjouterAlias($alias,$email); echo '
Votre email poubelle '.$alias.'@'.DOMAIN.' > '.$email.' est maintenant actif
'; } else { echo '
Erreur : ID introuvable
'; } } elseif (isset($_REQUEST['list'])) { $email=strtolower($_REQUEST['email']); if (! filter_var($email, FILTER_VALIDATE_EMAIL)) { echo '
Erreur : Adresse email incorrect
'; } else if (! VerifMXemail($email)) { echo '
Erreur : Adresse email incorrect (2)
'; } else if (!preg_match('#\n[a-z0-9]+@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS))) { echo '
Vous n\'avez encore aucun alias d\'actif
'; } else { # Envoi de l'email récapitulatif : if (!preg_match('#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#', $email)) { $passage_ligne = "\r\n"; } else { $passage_ligne = "\n"; } $header = 'From: '.EMAIL_FROM.$passage_ligne; $header.= 'MIME-Version: 1.0'.$passage_ligne; $message= 'Liste de vos redirections poubelles : '.$passage_ligne; foreach (ListeAlias($email) as $alias) { $message.=' * '.$alias.$passage_ligne; } $message.= 'Pour supprimer un email poubelle vous pouvez vous rendre sur le lien ci-dessou : '.$passage_ligne; $message.= "\t * ".URLPAGE.$passage_ligne; mail($email,EMAIL_SUJET_LISTE,$message,$header); echo '
Un email vous a été adressé avec la liste de vos emails poubelles actifs.
'; } } elseif (isset($_REQUEST['email']) && isset($_REQUEST['alias'])) { $alias=strtolower($_REQUEST['alias']); $email=strtolower($_REQUEST['email']); if (! filter_var($email, FILTER_VALIDATE_EMAIL)) { echo '
Erreur : Adresse email incorrect
'; } else if (! VerifMXemail($email)) { echo '
Erreur : Adresse email incorrect (2)
'; } else if (! preg_match('#^[\w.-]+$#',$alias)) { echo '
Erreur : email poubelle incorrect
'; } else if (AliasDeny($alias)) { echo '
Erreur : email poubelle interdit
'; } else if (BlacklistEmail($email)) { echo '
Erreur : vous avez été blacklisté sur ce service
'; } elseif (isset($_REQUEST['ajo'])) { if (preg_match('#\n'.$alias.'@'.DOMAIN.'#', file_get_contents(FICHIERALIAS)) || preg_match('#\n\#[0-9]+ '.$alias.'@'.DOMAIN.'#', file_get_contents(FICHIERALIAS))) { echo '
Erreur : cet email poubelle est déjà utilisé
'; } else { if (preg_match('#\n[a-z0-9]+@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS))) { AjouterAlias($alias,$email); echo '
Votre email poubelle '.$alias.'@'.DOMAIN.' > '.$email.' est maintenant actif
'; } else { $id=rand().date('U'); $alias_desactive='#'.$id.' '.$alias; AjouterAlias($alias_desactive,$email); # Envoi de l'email : if (!preg_match('#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#', $email)) { $passage_ligne = "\r\n"; } else { $passage_ligne = "\n"; } $header = 'From: '.EMAIL_FROM.$passage_ligne; $header.= 'MIME-Version: 1.0'.$passage_ligne; $message= 'Confirmation de la création de votre redirection email poubelle : '.$passage_ligne; $message= $alias.'@'.DOMAIN.' => '.$email.$passage_ligne; $message= 'Cliquer sur le lien ci-dessous pour confirmer : '.$passage_ligne; if (URLREWRITE_DEBUT && URLREWRITE_FIN) { $message.= "\t * ".URLREWRITE_DEBUT.$id.URLREWRITE_FIN.$passage_ligne; } else { $message.= "\t * ".URLPAGE.'?Validemail='.$id.$passage_ligne; } $message.= 'Pour supprimer cet email poubelle vous pouvez vous rendre sur le lien ci-dessou : '.$passage_ligne; if (URLREWRITE_DEBUT && URLREWRITE_FIN) { $message.= "\t * ".URLPAGE.$passage_ligne; } else { $message.= "\t * ".URLPAGE.'?sup=true&email='.$email.'&alias='.$alias.$passage_ligne; } mail($email,EMAIL_SUJET_CONFIRME.$alias,$message,$header); echo '
Votre email ('.$email.') nous étant inconnu, une confirmation vous a été envoyé par email.
'; } } } else if (isset($_REQUEST['sup'])) { if (preg_match('#\n'.$alias.'@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS)) || preg_match('#\n\#[0-9]+ '.$alias.'@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS))) { SupprimerAlias($alias,$email); echo '
Votre email poubelle '.$alias.'@'.DOMAIN.' est maintenant supprimé !
'; } else { echo '
Erreur : l\'email poubelle n\'existe pas
'; } } } ?>
@

ou la redirection poubelle

Version - Créé par David Mercereau sous licence GNU GPL v3

Télécharger et utiliser ce script sur le site du projet emailPoubelle.php