nameservers=$serveurDeNom;
$response = $resolver->query($domaine[1],'MX');
if ($response) {
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();
}
echo '
Email poubelle
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]);
$aliasZici=explode('@', $data[1]);
$alias=$aliasZici[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
';
}
} else if (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
';
} 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('#@'.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.$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
';
}
}
}
?>
Version = VERSION ?> - Créé par David Mercereau sous licence GNU GPL v3
En savoir plus...
Ce script est sous licence GPLv3, vous pouvez donc le télécharger et l'installer sur une autre plateforme
Téléchargement
Télécharger les sources de ce script : emailPoubelle.php & conf.php
Installer
Typiquement c'est un script à inclure dans une page entre les balises body
Le script a besoin de la lib pear Net_DNS
Le script utilise les virtual_alias_maps de postfix. Connectez vous en root
srv:~# vi /etc/postfix/main.cf
[...]
virtual_alias_maps = hash:/www/emailPoubelle/postfix/virtual
srv:~# touch /www/emailPoubelle/postfix/virtual
srv:~# /usr/sbin/postmap /www/emailPoubelle/postfix/virtual
srv:~# chown www-data /www/emailPoubelle/postfix/virtual
srv:~# chown www-data /www/emailPoubelle/postfix/virtual.db
Assurez vous que l'exécutable /usr/sbin/postmap soit accessible par l'utilisateur www-data
Changelog
Version 0.1.1
- Vérification de l'adresse email par DNS (existance d'un MX)
Version 0.1
- Ajout/suppression d'un alias
- Vérification des adresses emails inconnus par confirmation email
- Gestion des URL rewriting
- Gestion des doublons