Installation de PostfixAdminInstalling PostfixAdmin
PostfixAdmin est une interface web en PHP qui permet de gérer facilement le serveur de mail postfix. L’installation décrite ici est postérieure à l’installation et la configuration de postfix avec dovecot (voir ce post). Elle est donc expliquée pour ce cas précis bien que la procédure puisse être adaptée à une installation « classique » dans laquelle PostfixAdmin est installé avant postfix.
PostfixAdmin is a web based administration interface for postfix. This post describes how to install PostfixAdmin after postfix has been installed and configured to work with dovecot (as in this post ce post). Nevertheless, the post is general enough to be usable in a standard installation where PostfixAdmin should be installed before postfix is configured.
I should have written: this post will be general enough… (it is already « general enough » but in French!)
Avant propos : ce tutoriel a été écrit pour un serveur sous Ubuntu server, version 10.04 (LTS).
Installation et configuration de base
Récupérer le fichier .deb de postfixadmin sur le site de sourceforge et l’installer : au préalable, le package php5-imap
doit être installé :
sudo apt-get install php5-imap
sudo dpkg -i postfixadmin_2.3.5-1_all.deb
Lors de l’installation de postfixadmin, la base de données associées peut être créée : il faut renseigner son type (ici, mysql), son nom (ici, postfixadmindb), un nom d’utilisateur (ici, postfixadminuser) et un mot de passe utilisateur (que l’on notera mypasswd
dans la suite). L’application est rendue accessible sur le serveur web par la création d’un lien symbolique puis on restreint l’accès à l’application :
ln -s /usr/share/postfixadmin /var/www/postfixadmin
chmod -R o-r /usr/share/postfixadmin
chown root:www-data -R /usr/share/postfixadmin
L’application est alors accessible à http://www.domain-name.org/postfixadmin
où www.domain-name.org
est l’adresse habituelle du serveur web. Lancer le script d’installation : http://www.domain-name.org/postfixadmin/setup.php
: entrez un mot de passe dans l’espace « setup password » ; en validant, postfixadmin vous indique d’éditer le fichier /etc/postfixadmin/config.inc.php
pour y modifier la ligne
$CONF['setup_password'] = 'xxxx';
où xxxx
est une longue chaîne de caractères correspondant au mot de passe que vous venez de préciser. Entrer alors un administrateur (une adresse email, par exemple postmaster@domain-name.org
) et un mot de passe pour cet administrateur. Enfin, les dernières modifications du fichier de configuration /etc/postfixadmin/config.inc.php
peuvent être effectuées :
# Email de l'administrateur
$CONF['admin_email'] = 'postmaster@domain-name.org';
# Configuration de la base de données
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadminuser';
$CONF['database_password'] = 'mypasswd';
$CONF['database_name'] = 'postfixadmindb';
# Alias par défaut
$CONF['default_aliases'] = array ( 'abuse' =>; 'postmaster@nathalievialaneix.eu',
'hostmaster' =>; 'postmaster@nathalievialaneix.eu',
'postmaster' =>; 'postmaster@nathalievialaneix.eu',
'webmaster' =>; 'postmaster@nathalievialaneix.eu' );
# Configuration du service de vacances (ici non)
$CONF['vacation'] = 'NO';
# Configuration des liens
$CONF['user_footer_link'] = "https://www.domain-name.org/postfixadmin/users";
$CONF['footer_text'] = 'Return to nathalievialaneix.eu';
$CONF['footer_link'] = 'https://www.nathalievialaneix.eu';
# Création des chemins pour les boîtes mail, en adéquation avec dovecot
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['create_mailbox_subdirs_prefix']='';
# Configuration de la récupération d'emails avec fetchmail (ici non)
$CONF['fetchmail'] = 'NO';
(re)-Configurer postfix
La première chose à faire, avant de lancer la reconfiguration de postfix, est de redéfinir dans postfixadmin les domaines, utilisateurs et alias qui avaient été définis dans postfix (et ceci afin d’éviter une coupure du serveur mail). Pour cela, dans un navigateur, se connecter à postfixadmin avec l’adresse http://www.domain-name.org/postfixadmin
, se loguer avec l’adresse email administrateur définie plus haut postmaster@domain-name.org
et entrer le mot de passe correspondant. L’interface est intuitive : on crée noms de domaine, puis alias de noms de domaines puis utilisateurs et alias d’utilisateurs. Dans la suite, on supposera que les données suivantes ont été rentrées :
-
deux domaines (comme dans ce post) :
server.domain-name.org
etdomain-name.org
; -
un alias de domaine de
server.domain-name.org
versdomain-name.org
; -
un utilisateur
tuxette@domain-name.org
; -
un alias utilisateur de
postmaster@domain-name.org
verstuxette@domain-name.org
.
Des références utiles pour configurer/re-configurer postfix peuvent être trouvées ici (en français) et là (en anglais). Dans la suite, on part d’un serveur postfix déjà configuré ; si ce n’est pas le cas, les manipulations sont les mêmes : la seule différence réside dans le fait que les fichiers peuvent être créés directement, sans recours à des versions provisoires (.new
) destinées uniquement à ne pas couper le serveur. Dans le répertoire /etc/postfix
, créez les fichiers :
-
main.cf.new
:cp main.cf main.cf.new
puis éditer le fichier
main.cf.new
et modifier les lignesvirtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf, mysql:/etc/postfix/mysql-virtual-mailbox-alias-maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf, mysql:/etc/postfix/mysql-virtual-alias-alias-maps.cf
-
mysql-virtual-mailbox-domains.cf.new
: éditer ce nouveau fichier pour y insérer :user = postfixadminuser password = mypasswd hosts = 127.0.0.1 dbname = postfixadmindb query = SELECT domain FROM domain WHERE domain='%s'
On peut tester le bon fonctionnement du fichier par la commande
postmap -q domain-name.org mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf.new
qui doit répondre
domain-name.org
;</li> -
mysql-virtual-mailbox-maps.cf.new
: éditer ce nouveau fichier pour y insérer :user = postfixadminuser password = mypasswd hosts = 127.0.0.1 dbname = postfixadmindb query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
On peut tester le bon fonctionnement du fichier par la commande
postmap -q tuxette@domain-name.org mysql:/etc/postfix/mysql-virtual-mailbox-maps.new
qui doit répondre
domain-name.org/tuxette
;</li> -
mysql-virtual-mailbox-alias-maps.cf
: éditer ce nouveau fichier pour y insérer :user = postfixadminuser password = mypasswd hosts = 127.0.0.1 dbname = postfixadmindb query = SELECT maildir FROM mailbox, alias_domain WHERE alias_domain.alias_domain = '%d' AND mailbox.username= concat('%u', '@', alias_domain.target_domain ) AND mailbox.active = 1
On peut tester le bon fonctionnement du fichier par la commande
postmap -q tuxette@server.domain-name.org mysql:/etc/postfix/mysql-virtual-mailbox-alias-maps.cf
qui doit répondre
domain-name.org/tuxette
;</li> -
mysql-virtual-alias-maps.cf.new
: éditer ce nouveau fichier pour y insérer :user = postfixadminuser password = mypasswd hosts = 127.0.0.1 dbname = postfixadmindb query = SELECT goto FROM alias WHERE address='%s' AND active = 1
On peut tester le bon fonctionnement du fichier par la commande
postmap -q postmap -q contact@domain-name.org mysql:/etc/postfix/mysql-virtual-alias-maps.cf.new
qui doit répondre
domain-name.org/tuxette
;</li> -
mysql-virtual-alias-alias-maps.cf
: éditer ce nouveau fichier pour y insérer :user = postfixadminuser password = mypasswd hosts = 127.0.0.1 dbname = postfixadmindb query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' AND alias.address=concat('%u', '@', alias_domain.target_domain) AND alias.active = 1
On peut tester le bon fonctionnement du fichier par la commande
postmap -q contact@server.domain-name.org mysql:/etc/postfix/mysql-virtual-alias-alias-maps.cf
qui doit répondre
domain-name.org/tuxette
.</li> </ol>On finalise l’installation en écrasant tous les anciens fichiers avec le nouveaux ainsi créés et en redémarrant postfix :
cp mysql-virtual-mailbox-domains.cf.new mysql-virtual-mailbox-domains.cf cp mysql-virtual-mailbox-maps.cf.new mysql-virtual-mailbox-maps.cf cp mysql-virtual-alias-maps.cf.new mysql-virtual-alias-maps.cf cp main.cf.new main.cf /etc/init.d/postfix restart
(re)-Configurer dovecot
Dans le répertoire
/etc/dovecot
, se trouve le fichierdovecot-sql.conf
. On va le sauver puis le modifier pour qu’il interroge la base de données de postfixadmin et non plus la base de données de postfix.sudo cp dovecot-sql.conf dovecot-sql.save sudo nano dovecot-sql.conf
On modifie les lignes suivantes :
connect = host=127.0.0.1 dbname=postfixadmindb user=postfixadminuser password=mypasswd default_pass_scheme = MD5-CRYPT password_query = SELECT username as user, password FROM mailbox WHERE username='%u';
puis on redémarre dovecot pour prendre en compte la modification
sudo service dovecot restart