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.