Magazine Internet

Postfix, dovecot et vacation

Publié le 29 septembre 2008 par Mikebrant

J'ai fais un petit mod vacation à utiliser avec postfix et dovecot ( ou autre..)

J'ai codé en python évidemment, un "mode" vacation /autoreply , appelez ça comme vous voulez  pour postfix + dovecot, mais ca devrait marcher avec autre chose...

Pour vous expliquer comment fonctionne ce  "plug-in",je vais commencer par la base : les tables :

 

aliases emails autoreplies

alias varchar email varchar is_active bool

destination varchar   subject varchar

  body varchar

  email_id int

Alors, la table emails contient un id et  l'email ( adresse mail ) .
La table aliases contient 2 champs : alias ( adresse mail ) et destination qui correspond à un champs email de la table emails
La table autoreplies contient :
l'email_id correspondant à l'id dun email,
si le répondeur est actif ou pas : is_active,
le corps( body ) et le titre( subject ) du mail  de notre répondeur . 


Ensuite voici la ligne du /etc/postfix/master.cf qui nous intéresse :

dovecot unix - n n - - pipe
     flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -d ${recipient}


Il faut la remplacer par :

dovecot unix - n n - - pipe
     flags=DRhu user=vvmail:vmail argv=/home/vmail/monRepondeur/duplication.py ${sender} ${recipient}


Dès que l'on va recevoir un mail , duplication.py va s'éxécuter en prenant 2 arguments :
sender
: l'expéditeur (celui à qui l'éventuel répondeur devra répondre)  
recipient ( le mail qui aura le répondeur d'activer ou pas ) .
N'oubliez pas de changer le groupe et le propriétaire du dossier monRepondeur en tant que vmail:vmail .

 duplication.py va lancer deliver  ainsi que envoieMail.py .

 envoieMail.py va chercher la configuration du serveur SMTP et BDD depuis le fichier configuration.conf .
Ensuite il va instancier la classe MaVerification .
MaVerification  va tenter de se connecter à la BDD, si elle y arrive ( ce qui serait plutôt normal ) , elle va lancer sa méthode check() .

check()  va tout d'abord vérifier si rrecipient est un alias .
Si c'en est un, alors on va devoir faire une requête afin de prendre l'email_id ( à partir duquel on va pouvoir récupérer le sujet et corps de notre répondeur) que seul possède le véritable mail (champs destination de la table aliases).
Ensuite, on va vérifier la valeur de is_active du répondeur de notre mail.

Si le répondeur est actif, alors on lance le mail du répondeur via MonMail .

Voilà, voilà,
pensez à adapter les requêtes et changer les chemins.
Pour télécharger le code, c'est ici.


Retour à La Une de Logo Paperblog

A propos de l’auteur


Mikebrant 9 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte