Serveur de messagerie · 6 min read · Sep 28, 2025

Utilisateurs et domaines virtuels avec Postfix, Courier et MySQL (CentOS 5.1)

Utilisateurs et domaines virtuels avec Postfix, Courier et MySQL (CentOS 5.1)

Version 1.0
Auteur : Falko Timme

Ce tutoriel est Copyright (c) 2007 par Falko Timme. Il est dérivé d’un tutoriel de Christoph Haas que vous pouvez trouver sur http://workaround.org. Vous êtes libre d’utiliser ce tutoriel sous la licence Creative Commons 2.5 ou toute version ultérieure.

Ce document décrit comment installer un serveur de messagerie Postfix basé sur des utilisateurs et des domaines virtuels, c’est-à-dire des utilisateurs et des domaines qui se trouvent dans une base de données MySQL. Je vais également démontrer l’installation et la configuration de Courier (Courier-POP3, Courier-IMAP), afin que Courier puisse s’authentifier contre la même base de données MySQL utilisée par Postfix.

Le serveur Postfix résultant est capable de SMTP-AUTH et TLS et quota (le quota n’est pas intégré dans Postfix par défaut, je vais montrer comment patcher votre Postfix en conséquence). Les mots de passe sont stockés sous forme chiffrée dans la base de données (la plupart des documents que j’ai trouvés traitaient des mots de passe en texte clair, ce qui représente un risque de sécurité). En plus de cela, ce tutoriel couvre l’installation de Amavisd, SpamAssassin et ClamAV afin que les e-mails soient scannés pour détecter le spam et les virus.

L’avantage d’une telle configuration “virtuelle” (utilisateurs et domaines virtuels dans une base de données MySQL) est qu’elle est beaucoup plus performante qu’une configuration basée sur de “vrais” utilisateurs système. Avec cette configuration virtuelle, votre serveur de messagerie peut gérer des milliers de domaines et d’utilisateurs. De plus, il est plus facile à administrer car vous n’avez qu’à vous occuper de la base de données MySQL lorsque vous ajoutez de nouveaux utilisateurs/domaines ou modifiez des existants. Plus de commandes postmap pour créer des fichiers db, plus de rechargement de Postfix, etc. Pour l’administration de la base de données MySQL, vous pouvez utiliser des outils basés sur le web comme phpMyAdmin qui seront également installés dans ce guide. Le troisième avantage est que les utilisateurs ont une adresse e-mail comme nom d’utilisateur (au lieu d’un nom d’utilisateur + une adresse e-mail), ce qui est plus facile à comprendre et à retenir.

Ce tutoriel est basé sur CentOS 5.1 (i386). Vous devriez déjà avoir configuré un système CentOS de base, comme décrit ici : https://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig et https://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig-p2. De plus, vous devez vous assurer que le pare-feu est désactivé (du moins pour l’instant) et que SELinux est désactivé (c’est important !), comme indiqué dans le chapitre six sur https://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig-p3.

Ce guide est destiné à être un guide pratique ; il ne couvre pas les bases théoriques. Elles sont traitées dans de nombreux autres documents sur le web.

Ce document est fourni sans garantie d’aucune sorte ! Je tiens à dire que ce n’est pas la seule façon de configurer un tel système. Il existe de nombreuses façons d’atteindre cet objectif, mais c’est la méthode que je choisis. Je ne donne aucune garantie que cela fonctionnera pour vous !

1 Modifier /etc/hosts

Notre nom d’hôte dans cet exemple est server1.example.com, et il a l’adresse IP 192.168.0.100, donc nous modifions /etc/hosts comme suit :

vi /etc/hosts

| # Ne pas supprimer la ligne suivante, sinon divers programmes # qui nécessitent des fonctionnalités réseau échoueront. 127.0.0.1 localhost.localdomain localhost 192.168.0.100 server1.example.com server1 ::1 localhost6.localdomain6 localhost6 |

2 Installer quelques logiciels

Tout d’abord, nous importons les clés GPG pour les paquets logiciels :

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Ensuite, nous mettons à jour nos paquets existants sur le système :

yum update

Maintenant, nous installons quelques logiciels dont nous aurons besoin plus tard :

yum groupinstall 'Development Tools'
yum groupinstall 'Development Libraries'

3 Installer Apache, MySQL, phpMyAdmin

Tout d’abord, nous activons le dépôt RPMforge sur notre système CentOS car beaucoup des paquets que nous allons installer au cours de ce tutoriel ne sont pas disponibles dans les dépôts officiels de CentOS 5.1 :

rpm -Uhv http://apt.sw.be/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

(Si le lien ci-dessus ne fonctionne plus, vous pouvez trouver la version actuelle de rpmforge-release ici : http://apt.sw.be/packages/rpmforge-release/)

Ensuite, nous pouvons installer les paquets nécessaires avec une seule commande (y compris les paquets dont nous avons besoin pour construire Courier-IMAP) :

yum install ntp httpd mysql-server php php-mysql php-mbstring php-mcrypt phpmyadmin rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel

4 Installer Courier-IMAP, Courier-Authlib et Maildrop

Malheureusement, il n’existe pas de paquets rpm pour Courier-IMAP, Courier-Authlib et Maildrop, nous devons donc les installer comme décrit dans ce tutoriel : Comment installer courier-imap, courier-authlib et maildrop sur Fedora, RedHat, CentOS

Si vous avez des problèmes pour créer les paquets rpm, vous pouvez télécharger les miens :

  • courier-authlib-0.60.2-1.i386.rpm
  • courier-authlib-devel-0.60.2-1.i386.rpm
  • courier-authlib-mysql-0.60.2-1.i386.rpm
  • courier-imap-4.2.1-1.i386.rpm
  • maildrop-2.0.4-1.i386.rpm

5 Appliquer le patch de quota à Postfix

Nous devons obtenir le rpm source de Postfix, le patcher avec le patch de quota, construire un nouveau paquet rpm Postfix et l’installer.

cd /usr/src  
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/5.1/os/SRPMS/postfix-2.3.3-2.src.rpm  
rpm -ivh postfix-2.3.3-2.src.rpm

La dernière commande affichera quelques avertissements que vous pouvez ignorer :

warning: user mockbuild does not exist - using root  
warning: group mockbuild does not exist - using root
cd /usr/src/redhat/SOURCES  
wget http://vda.sourceforge.net/VDA/postfix-2.3.3-vda.patch.gz  
gunzip postfix-2.3.3-vda.patch.gz  
cd /usr/src/redhat/SPECS/

Maintenant, nous devons modifier le fichier postfix.spec :

vi postfix.spec

Changez %define MYSQL 0 en %define MYSQL 1, ajoutez Patch0: postfix-2.3.3-vda.patch à la strophe # Patches, et enfin ajoutez %patch0 -p1 -b .vda à la strophe %setup -q :

| [...] %define MYSQL 1 [...] # Patches Patch0: postfix-2.3.3-vda.patch Patch1: postfix-2.1.1-config.patch Patch3: postfix-alternatives.patch Patch6: postfix-2.1.1-obsolete.patch Patch7: postfix-2.1.5-aliases.patch Patch8: postfix-large-fs.patch Patch9: postfix-2.2.5-cyrus.patch [...] %setup -q # Appliquer les patches obligatoires %patch0 -p1 -b .vda %patch1 -p1 -b .config %patch3 -p1 -b .alternatives %patch6 -p1 -b .obsolete %patch7 -p1 -b .aliases %patch8 -p1 -b .large-fs %patch9 -p1 -b .cyrus [...] |

Ensuite, nous construisons notre nouveau paquet rpm Postfix avec support de quota et MySQL :

rpmbuild -ba postfix.spec

Vous verrez de nombreux avertissements comme ceux-ci que vous pouvez ignorer :

msg.h:12:1: warning: "/*" within comment  
msg.h:14:1: warning: "/*" within comment  
msg.h:33:1: warning: "/*" within comment  
msg.h:34:1: warning: "/*" within comment  
msg.h:35:1: warning: "/*" within comment  
msg.h:36:1: warning: "/*" within comment

Notre paquet rpm Postfix est créé dans /usr/src/redhat/RPMS/i386, donc nous y allons :

cd /usr/src/redhat/RPMS/i386

La commande

ls -l

vous montre les paquets disponibles :

[root@server1 i386]# ls -l  
total 11280  
-rw-r--r-- 1 root root 3819299 Dec  5 15:25 postfix-2.3.3-2.i386.rpm  
-rw-r--r-- 1 root root 7655069 Dec  5 15:25 postfix-debuginfo-2.3.3-2.i386.rpm  
-rw-r--r-- 1 root root   50346 Dec  5 15:25 postfix-pflogsumm-2.3.3-2.i386.rpm  
[root@server1 i386]#

Prenez le paquet Postfix et installez-le comme ceci :

rpm -ivh postfix-2.3.3-2.i386.rpm

(Si vous avez des problèmes pour créer le paquet rpm Postfix, vous pouvez télécharger le mien ici : postfix-2.3.3-2.i386.rpm.)

6 Définir les mots de passe MySQL et configurer phpMyAdmin

Démarrez MySQL :

chkconfig --levels 235 mysqld on  
/etc/init.d/mysqld start

Ensuite, définissez les mots de passe pour le compte root MySQL :

mysqladmin -u root password yourrootsqlpassword  
mysqladmin -h server1.example.com -u root password yourrootsqlpassword

Maintenant, nous configurons phpMyAdmin. Nous modifions la configuration d’Apache afin que phpMyAdmin autorise les connexions non seulement depuis localhost (en commentant la strophe ) :

vi /etc/httpd/conf.d/phpmyadmin.conf

| # # Application web pour gérer MySQL # # # Order Deny,Allow # Deny from all # Allow from 127.0.0.1 # Alias /phpmyadmin /usr/share/phpmyadmin Alias /phpMyAdmin /usr/share/phpmyadmin Alias /mysqladmin /usr/share/phpmyadmin |

Ensuite, nous changeons l’authentification dans phpMyAdmin de cookie à http :

vi /usr/share/phpmyadmin/config.inc.php

| [...] /* Type d'authentification */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...] |

Ensuite, nous créons les liens de démarrage système pour Apache et le démarrons :

chkconfig --levels 235 httpd on  
/etc/init.d/httpd start

Maintenant, vous pouvez diriger votre navigateur vers http://server1.example.com/phpmyadmin/ ou http://192.168.0.100/phpmyadmin/ et vous connecter avec le nom d’utilisateur root et votre nouveau mot de passe root MySQL.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.