1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/emailpoubelle_ynh.git synced 2024-09-03 18:26:29 +02:00

Passage en version 0.2 - Net_DNS2, correction BUG (4), Ajout des mots interdits dans les alias (19)

This commit is contained in:
David 2012-08-05 16:32:46 +02:00
parent e7d1293808
commit f72989ba67
2 changed files with 70 additions and 39 deletions

View file

@ -7,19 +7,39 @@
// Home : http://zici.fr/emailPoubelle.html // Home : http://zici.fr/emailPoubelle.html
//----------------------------------------------------------- //-----------------------------------------------------------
#error_reporting(0); define('VERSION', '0.2');
error_reporting(E_ALL);
define('VERSION', '0.1.1');
define('DOMAIN', 'zici.fr'); define('DOMAIN', 'zici.fr');
// Serveur DNS pour la résolution/vérification du nom de domaine // Serveur DNS pour la résolution/vérification du nom de domaine
define('NS1', 'ns1.fdn.org'); define('NS1', 'ns1.fdn.org');
define('NS2', '8.8.8.8');
define('BIN_POSTMAP', '/usr/sbin/postmap'); if (basename($_SERVER['SCRIPT_FILENAME']) == 'emailPoubelle_dev.php') {
# Dev
define('DEBUG', true);
error_reporting(E_ALL);
define('URLPAGE', 'http://zici.fr/emailPoubelle.html'); define('FICHIERALIAS', './postfix/virtual_debug');
define('URLPAGE', 'http://www.zici.fr/emailPoubelle/emailPoubelle_dev.php');
// A indiquer si vous utiliser les URL's rewriting
// Exemple avec un htaccess
// RewriteRule ^EmailPoubell-([0-9]+)\.html$ index.php?page=emailPoubelle&Validemail=$1 [L]
#define('URLREWRITE_DEBUT', 'http://www.zici.fr/EmailPoubell-');
#define('URLREWRITE_FIN', '.html');
// Désactiver
define('URLREWRITE_DEBUT', false);
define('URLREWRITE_FIN', false);
} else {
# Prod
error_reporting(0);
define('DEBUG', false);
define('FICHIERALIAS', './emailPoubelle/postfix/virtual');
define('URLPAGE', 'http://www.zici.fr/emailPoubelle.html');
// A indiquer si vous utiliser les URL's rewriting // A indiquer si vous utiliser les URL's rewriting
// Exemple avec un htaccess // Exemple avec un htaccess
@ -29,11 +49,15 @@ define('URLREWRITE_FIN', '.html');
// Désactiver // Désactiver
# define('URLREWRITE_DEBUT', false); # define('URLREWRITE_DEBUT', false);
# define('URLREWRITE_FIN', false); # define('URLREWRITE_FIN', false);
}
define('FICHIERALIAS', './emailPoubelle/postfix/virtual'); define('BIN_POSTMAP', '/usr/sbin/postmap');
// Email de confirmation // Email de confirmation
define('EMAIL_SUJET', '[zici] [EmailPoubelle] Confirmation alias '); define('EMAIL_SUJET', '[zici] [EmailPoubelle] Confirmation alias ');
define('EMAIL_FROM', '"NO REPLAY emailPoubelle" <emailpoubelle@zici.fr>'); define('EMAIL_FROM', '"NO REPLAY emailPoubelle" <emailpoubelle@zici.fr>');
# 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');
?> ?>

View file

@ -1,53 +1,58 @@
<?php <?php
//----------------------------------------------------------- //-----------------------------------------------------------
// Emeail Poubelle // Email Poubelle
// Licence : GNU GPL v3 : http://www.gnu.org/licenses/gpl.html // Licence : GNU GPL v3 : http://www.gnu.org/licenses/gpl.html
// Créateur : David Mercereau - david [.] mercereau [aro] zici [.] fr // Créateur : David Mercereau - david [.] mercereau [aro] zici [.] fr
// Home : http://poubelle.zici.fr // Home : http://poubelle.zici.fr
// Date : 02/2012 // Date : 08/2012
// Version : 0.1 // Version : 0.2
// Dépendance : Postifx // Dépendance : Postifx
//----------------------------------------------------------- //-----------------------------------------------------------
include_once('./conf.php'); include_once('./conf.php');
function VerifMXemail($email) # Init
{ if (!is_writable(FICHIERALIAS)) {
require_once 'Net/DNS.php'; exit('<div class="highlight-1">Erreur : le fichier d\'alias ('.FICHIERALIAS.') ne peut pas être écrit. Merci de contacter l\'administrateur</div>');
}
function VerifMXemail($email) {
require_once 'Net/DNS2.php';
$domaine=explode('@', $email); $domaine=explode('@', $email);
$serveurDeNom=array( $r = new Net_DNS2_Resolver(array('nameservers' => array(NS1, NS2)));
NS1 try {
); $result = $r->query($domaine[1], 'MX');
$resolver = new Net_DNS_Resolver(); } catch(Net_DNS2_Exception $e) {
$resolver->nameservers=$serveurDeNom; return false;
$response = $resolver->query($domaine[1],'MX'); }
if ($response) { if ($result->answer) {
return true; return true;
} else { } else {
return false; return false;
} }
} }
function UpdateVirtualDB()
{ function UpdateVirtualDB() {
echo exec(BIN_POSTMAP.' '.FICHIERALIAS,$output,$return); echo exec(BIN_POSTMAP.' '.FICHIERALIAS,$output,$return);
} }
function AjouterAlias($alias,$email) function AjouterAlias($alias,$email) {
{
$fichier=fopen(FICHIERALIAS,'a+'); $fichier=fopen(FICHIERALIAS,'a+');
fputs($fichier, $alias.'@'.DOMAIN.' '.$email."\n"); fputs($fichier, $alias.'@'.DOMAIN.' '.$email."\n");
fclose($fichier); fclose($fichier);
UpdateVirtualDB(); UpdateVirtualDB();
} }
function SupprimerAlias($alias,$email) {
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\#[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*/)); 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 # http://www.siteduzero.com/forum-83-542138-p1-supprimer-une-ligne-d-un-fichier-texte-avec-regex.html
UpdateVirtualDB(); UpdateVirtualDB();
} }
if (DEBUG) {
echo '<div class="highlight-2">Debug activé</div>';
}
echo '<h1>Emails poubelle libre</h1> echo '<h1>Emails poubelle libre</h1>
<p>Générer des emails poubelle sans contrainte de durée de vie. </p>'; <p>Générer des emails poubelle sans contrainte de durée de vie. </p>';
@ -72,11 +77,13 @@ if (isset($_REQUEST['Validemail'])) {
echo '<div class="highlight-1">Erreur : Adresse email incorrect (2)</div>'; echo '<div class="highlight-1">Erreur : Adresse email incorrect (2)</div>';
} else if (! preg_match('#^[\w.-]+$#',$alias)) { } else if (! preg_match('#^[\w.-]+$#',$alias)) {
echo '<div class="highlight-1">Erreur : email poubelle incorrect</div>'; echo '<div class="highlight-1">Erreur : email poubelle incorrect</div>';
} else if (in_array($alias, $aliasInterditListe)) {
echo '<div class="highlight-1">Erreur : email poubelle interdit</div>';
} elseif (isset($_REQUEST['ajo'])) { } 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 '<div class="highlight-1">Erreur : cet email poubelle est déjà utilisé</div>'; echo '<div class="highlight-1">Erreur : cet email poubelle est déjà utilisé</div>';
} else { } else {
if (preg_match('#@'.DOMAIN.' '.$email.'$#', file_get_contents(FICHIERALIAS))) { if (preg_match('#\n[a-z0-9]+@'.DOMAIN.' '.$email.'#', file_get_contents(FICHIERALIAS))) {
AjouterAlias($alias,$email); AjouterAlias($alias,$email);
echo '<div class="highlight-3">Votre email poubelle <b>'.$alias.'@'.DOMAIN.' > '.$email.'</b> est maintenant actif</div>'; echo '<div class="highlight-3">Votre email poubelle <b>'.$alias.'@'.DOMAIN.' > '.$email.'</b> est maintenant actif</div>';
} else { } else {
@ -130,4 +137,4 @@ if (isset($_REQUEST['Validemail'])) {
<input class="button" type="submit" name="sup" value="Supprimer" /> la redirection poubelle <input class="button" type="submit" name="sup" value="Supprimer" /> la redirection poubelle
</form> </form>
<p>Version <?= VERSION ?> - Créé par David Mercereau sous licence GNU GPL v3</p> <p>Version <?= VERSION ?> - Créé par David Mercereau sous licence GNU GPL v3</p>
<p>Télécharger et utiliser ce script sur le site du projet <a target="_blank" href="http://forge.zici.fr/projects/emailpoubelle">emailPoubelle.php</a></p> <p>Télécharger et utiliser ce script sur le site du projet <a target="_blank" href="http://forge.zici.fr/p/emailpoubelle-php/">emailPoubelle.php</a></p>