diff --git a/aliasdeny.txt b/aliasdeny.txt
new file mode 100644
index 0000000..e3cb516
--- /dev/null
+++ b/aliasdeny.txt
@@ -0,0 +1,22 @@
+/^root$/
+/^mail$/
+/^email$/
+/^test$/
+/^toto$/
+/^www-data$/
+/^www-owne$/
+/^manager$/
+/^admin$/
+/postmaster/
+/^MAILER-DAEMON$/
+/^abuse$/
+/^spam$/
+/^backup$/
+/^list$/
+/^nobody$/
+/^vmail$/
+/^mysql$/
+/^web$/
+/^git$/
+/^mail$/
+/^[1-9]+$/
diff --git a/blacklist.txt b/blacklist.txt
new file mode 100644
index 0000000..2221216
--- /dev/null
+++ b/blacklist.txt
@@ -0,0 +1,4 @@
+/^exemple@exemple.com$/
+/.pl$/
+/^exemple[1-9]+@toto.fr$/
+
diff --git a/conf.php b/conf.php
index 567d374..fca7bc5 100755
--- a/conf.php
+++ b/conf.php
@@ -1,63 +1,52 @@
');
-# Alisas interdit :
-$aliasInterditListe = array('root', 'mail', 'email', 'test', 'toto', 'www-data', 'www-owne', 'manager', 'admin', 'postmaster', 'MAILER-DAEMON', 'abuse', 'spam', 'backup', 'list', 'nobody', 'vmail', 'mysql', 'web', 'git');
+// Alisas interdit : (regex ligne par ligne) - commenter pour désactiver
+define('ALIASDENY', './emailPoubelle/aliasdeny.txt');
+
+// Blackliste d'email : (regex ligne par ligne) - commenter pour désactiver
+define('BLACKLIST', './emailPoubelle/blacklist.txt');
?>
diff --git a/emailPoubelle.php b/emailPoubelle.php
index db7a88a..5d4e9ee 100644
--- a/emailPoubelle.php
+++ b/emailPoubelle.php
@@ -5,16 +5,22 @@
// Licence : GNU GPL v3 : http://www.gnu.org/licenses/gpl.html
// Créateur : David Mercereau - david [.] mercereau [aro] zici [.] fr
// Home : http://poubelle.zici.fr
-// Date : 08/2012
-// Version : 0.2
+// Date : 08/2013
+// Version : 0.3
// Dépendance : Postifx
//-----------------------------------------------------------
include_once('./conf.php');
-# Init
+# Init & vérif
if (!is_writable(FICHIERALIAS)) {
- exit('
Erreur : le fichier d\'alias ('.FICHIERALIAS.') ne peut pas être écrit. Merci de contacter l\'administrateur
');
+ exit('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) {
@@ -49,8 +55,57 @@ function SupprimerAlias($alias,$email) {
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
@@ -59,8 +114,8 @@ echo 'Emails poubelle libre
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]);
- $aliasZici=explode('@', $data[1]);
- $alias=$aliasZici[0];
+ $aliasExplode=explode('@', $data[1]);
+ $alias=$aliasExplode[0];
$email=$data[2];
SupprimerAlias($alias,$email);
AjouterAlias($alias,$email);
@@ -68,7 +123,33 @@ if (isset($_REQUEST['Validemail'])) {
} else {
echo 'Erreur : ID introuvable
';
}
-} else if (isset($_REQUEST['email']) && isset($_REQUEST['alias'])) {
+} 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)) {
@@ -77,10 +158,12 @@ if (isset($_REQUEST['Validemail'])) {
echo 'Erreur : Adresse email incorrect (2)
';
} else if (! preg_match('#^[\w.-]+$#',$alias)) {
echo 'Erreur : email poubelle incorrect
';
- } else if (in_array($alias, $aliasInterditListe)) {
+ } 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))) {
+ 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))) {
@@ -112,7 +195,7 @@ if (isset($_REQUEST['Validemail'])) {
} else {
$message.= "\t * ".URLPAGE.'?sup=true&email='.$email.'&alias='.$alias.$passage_ligne;
}
- mail($email,EMAIL_SUJET.$alias,$message,$header);
+ mail($email,EMAIL_SUJET_CONFIRME.$alias,$message,$header);
echo 'Votre email ('.$email.') nous étant inconnu, une confirmation vous a été envoyé par email.
';
}
}
@@ -131,9 +214,9 @@ if (isset($_REQUEST['Validemail'])) {
@= DOMAIN; ?>
-
+
- ou
+ ou
la redirection poubelle
Version = VERSION ?> - Créé par David Mercereau sous licence GNU GPL v3