Imprimer cette page

Gérer des réponses automatiques sous postfix avec des domaines virtuels

Remarque préalable: l'usage d'une réponse automatique vous expose aux risques suivants:
  • confirmer votre adresse mail aux spammeurs du monde entier,
  • subir des attaques diverses notamment contre le logiciel de réponse automatique (débordements de buffer etc...)
  • donner des informations sur vos activités à des personnes étrangères à votre entreprise.
  • participer à votre insu à une attaque en déni de service.
  • vous faire invectiver si votre réponse parvient sur une liste de diffusion...

Si vous avez l'inconscience de perséverer, vous pouvez poursuivre la lecture de cet article...

Pour contacter l'auteur de cet article vous pouvez envoyer un mail à autoreply sur le domaine de ce serveur.
To contact author please send mail to autoreply on the domain of this server.

Lorsqu'on installe postfix en s'appuyant sur des comptes unix, mêmes gérés sous ldap, il est facile de mettre en place un utilitaire tel que 'vacation'.
On trouve aussi facilement des documentations (et même en français) concernant la mise en place d'un 'autoreply' sous postfix lorsqu'on utilise des domaines virtuels.
Mais on trouve plus difficilement un utilitaire simple permettant de réaliser cette opération en remplacement de 'vacation'.
Il y a une solution qui s'appuie sur Postfixadmin, mais cela implique de s'appuyer sur Mysql pour configurer le serveur postfix, ce qui ne convient pas à tout le monde.
Il y a yaa mais il s'agit d'un serveur écrit en perl et sur lequel il est nécessaire d'envoyer une copie de toute la messagerie (si j'ai bien compris).
Il ya un article de Joshua E. Warchol, mais qui ne donne pas l'utilitaire de réponse automatique.
Enfin il y a gnarwl qui utilise Ldap, mais qui peu demander quelques aménagements dans votre schéma et notamment l'ajout de classes adaptées, ce qui peut faire reculer dans le cadre d'une exploitation un tant soi peu opérationnelle.

Pour un besoin ponctuel et léger, j'ai donc écrit un petit programme sous licence gpl, qui remplacera vacation dans une architecture postfix distribuant du mail sur des domaines virtuels.
Comme vacation il ne renvoi qu'une fois le message automatique, et note la liste des correspondants dans un simple fichier texte. Les fichiers de correspondants (adresse.mail.correspondants) et les fichiers contenant la réponse automatique (adresse.mail.message) sont enregistrés dans un répertoire dédié qui est par défaut /etc/postfix/autoreply.d
Dans la version actuelle du programme, il est nécessaire d'enregistrer dans le fichier de correspondants les adresses de listes pour lesquelles on ne veut pas répondre. Un version ultérieure pourra proposer une gestion d'exclusions par expressions régulières.
Le programme utilise le sendmail de postfix pour émettre les messages.

Pour télécharger le programme:
le fichier source: autoreply.c
la licence gpl : COPYING
Pour compiler le programme:
gcc autoreply.c -o autoreply
Pour changer le répertoire de stockage par défaut, on peut utiliser une directive de compilation (remplacer '/un/repertoire/de/stockage' par le répertoire qui vous intéresse):
gcc -D_AUTORESPOND_DIR="/un/repertoire/de/stockage" autoreply.c -o autoreply
L'installation consiste à recopier le binaire autoreply sur un répertoire adapté, on prendra comme exemple /usr/sbin dans cette présentation.
Ensuite il reste à effectuer une configuration identique à celle des articles précédemment cités:

modification du ficher /etc/postfix/transport, ajout de la ligne suivante:
autoreply.enm.meteo.fr autoreply:
modification du fichier /etc/postfix/main.cf, ajout de la ligne suivante (on ne traite qu'un message à la fois)
autoreply_destination_recipient_limit = 1
création du fichier /etc/postfix/autoreply, c'est un fichier d'alias dupliquant le mail des personnes absentes vers le domaine autoreply
prenom.nom: prenom.nom@autoreply.nom.de.domaine,prenom.nom@nom.de.domaine
modification du fichier /etc/postfix/master.cf. On passe notamment par le user 'autoreply' pour executer le programme. Il faudra donc donner les droits d'accès adéquats sur le répertoire de stockage /un/repertoire/de/stockage''.
ajout des lignes suivantes:
autoreply unix  -       n       n       -       -      pipe         flags= user=autoreply argv=/usr/sbin/autoreply $sender $mailbox  
lancement des commandes suivantes:  
adduser autoreply postalias hash:autoreply postfix stoppostfix start

L'activité du programme est journalisée dans le /var/log/maillog avec le préfixe 'autoreply:'

Bonnes vacances!