PostfixAdmin permet à chaque utilisateur du serveur mail de gérer les réponses automatiques via l’interface utilisateur de postfixadmin. Ce tutoriel explique comment installer cette fonctionnalité (Ubuntu server, 10.04 LTS).


Tout d’abord, un certain nombre de packages supplémentaires doivent être installés :

sudo apt-get install libmail-sender-perl libdbd-mysql-perl libemail-valid-perl libmime-perl
  liblog-log4perl-perl liblog-dispatch-perl libgetopt-argvfile-perl libmime-charset-perl
  libmime-encwords-perl

Attention ! Un utilisateur de Ubuntu server 14.04 (merci Thomas !) me rapporte qu’il a dû aussi installer les packages libmime-encwords-perl, liblog-log4perl-perl, liblog-dispatch-perl pour que l’installation fonctionne correctement.

Ensuite, on crée un utilisateur et un groupe pour gérer le système de vacances ; on affecte un répertoire utilisateur /var/spool/vacation à cet utilisateur :

sudo mkdir /var/spool/vacation
sudo groupadd vacation
sudo useradd -g vacation -d /var/spool/vacation -s /sbin/nologin vacation

Le module de vacation est inclus dans un des répertoire de postfix, éventuellement compressé : il faut le décompresser, le copier dans le répertoire précédemment créé et donner les droits à l’utilisateur vacation sur ce répertoire.

cd /usr/share/doc/postfixadmin/examples/VIRTUAL_VACATION
gunzip vacation.pl.gz
cp vacation.pl vacation.pl.save
cd ..
cp -a VIRTUAL_VACATION /usr/share/postfixadmin/.
cp vacation.pl /var/spool/vacation/.
cd /var/spool/
chown -R vacation:vacation vacation
chmod -R 700 vacation

On édite alors le fichier /var/spool/vacation/vacation.pl pour configurer les paramètres :

our $db_type = 'mysql';
# leave empty for connection via UNIX socket
our $db_host = '';
# connection details
our $db_username = 'postfixadmindb';
our $db_password = 'passwd';
our $db_name     = 'postfixadminuser';
our $vacation_domain = 'autoreply.nathalievilla.org';
# smtp server used to send vacation e-mails
our $smtp_server = 'localhost';
our $smtp_server_port = 25;
# SMTP authentication protocol used for sending.
# Can be 'PLAIN', 'LOGIN', 'CRAM-MD5' or 'NTLM'
# Leave it blank if you don't use authentification
our $smtp_auth = '';
# username used to login to the server
our $smtp_authid = '';
# password used to login to the server
our $smtp_authpwd = '';

où les paramètres doivent être adaptés à votre serveur, et on le rend exécutable :

chmod +x vacation.pl

On met alors à jour le fichier de configuration de postfixadmin : /var/www/postfixadmin/config.inc.php

$CONF['vacation'] = ‘YES’;
$CONF['vacation_domain'] = ‘autoreply.nathalievilla.org’;

Puis on reconfigure postfix : /etc/postfix/master.cf en y ajoutant la ligne suivante vers la fin du fichier :

vacation unix – n n – - pipe flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f
  ${sender} ${recipient}

et /etc/postfix/main.cf

transport_maps = hash:/etc/postfix/transport

puis, finalement, en créant un fichier /etc/postfix/transport contenant

autoreply.nathalievilla.org vacation

Les changements sont pris en compte dans postfix avec :

sudo postmap /etc/postfix/transport
sudo /etc/init.d/postfix reload

… et c’est parti pour les vacances !!!