Serveur de messagerie · 5 min read · Nov 09, 2025

Utilisateurs et domaines virtuels avec Postfix, Courier et MySQL (Fedora Core 5)

Utilisateurs et domaines virtuels avec Postfix, Courier et MySQL (Fedora Core 5)

Version 1.0
Auteur : Falko Timme

Ce tutoriel est Copyright (c) 2006 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 basé sur Postfix qui repose 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é par défaut dans Postfix, 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 constitue 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 les spams 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 Fedora Core 5 (i386). Vous devriez déjà avoir configuré un système Fedora de base, comme décrit ici (pour un système x86_64, mais la procédure pour les systèmes i386 est la même) : https://www.howtoforge.com/perfect_setup_fedora_core_5 et https://www.howtoforge.com/perfect_setup_fedora_core_5_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é sur https://www.howtoforge.com/perfect_setup_fedora_core_5_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 aucune garantie ! 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 |

2 Configurer un dépôt supplémentaire pour les paquets Fedora

Certains des paquets que nous devons installer (comme courier-imap) ne sont pas inclus dans les dépôts officiels de Fedora, donc nous devons ajouter un autre dépôt à yum :

rpm -ivh http://www.enlartenment.com/packages/fedora/5/i386/enlartenment-release-1.1-2.fc5.mf.noarch.rpm

Ensuite, nous devons définir enabled à 1 dans /etc/yum.repos.d/enlartenment.repo :

vi /etc/yum.repos.d/enlartenment.repo

| [enlartenment] name=Enlartenment Repository for $releasever - $basearch baseurl=http://www.enlartenment.com/packages/fedora/$releasever/$basearch/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-enlartenment enabled=1 gpgcheck=1 [enlartenment-sources] name=Enlartenment Repository for $releasever - Sources baseurl=http://www.enlartenment.com/packages/fedora/$releasever/SRPMS/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-enlartenment enabled=1 gpgcheck=1 |

Ensuite, nous importons la clé GPG de ce dépôt :

rpm --import http://www.enlartenment.com/RPM-GPG-KEY.mf

3 Installer Postfix, Courier, Saslauthd, MySQL, phpMyAdmin

Tout cela peut être installé avec une seule commande :

yum install ntp httpd mysql-server php php-mysql php-mbstring rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel maildrop courier-imap courier-authlib-mysql phpmyadmin pcre-devel openldap-devel

Lorsque vous voyez ceci :

warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2  
Public key for ntp-4.2.0.a.20050816-11.FC5.i386.rpm is not installed  
Retrieving GPG key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora  
Importing GPG key 0x4F2A6FD2 "Fedora Project <[email protected]>"  
Is this ok [y/N]:

veuillez répondre par y.

4 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/fedora/linux/core/5/source/SRPMS/postfix-2.2.8-1.2.src.rpm  
rpm -ivh postfix-2.2.8-1.2.src.rpm  
cd /usr/src/redhat/SOURCES  
wget http://web.onda.com.br/nadal/postfix/VDA/postfix-2.2.8-vda.patch.gz  
gunzip postfix-2.2.8-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.2.8-vda.patch à la strophe # Patches, et enfin ajoutez %patch0 -p1 -b .vda à la strophe %setup -q :

| [...] %define MYSQL 1 [...] # Patches Patch0: postfix-2.2.8-vda.patch Patch1: postfix-2.1.1-config.patch Patch3: postfix-alternatives.patch Patch4: postfix-hostname-fqdn.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 %patch4 -p1 -b .postfix-hostname-fqdn %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 beaucoup d’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 et l’installons :

cd /usr/src/redhat/RPMS/i386  
rpm -ivh postfix-2.2.8-1.2.i386.rpm

(Dans le cas où vous avez des problèmes pour créer le paquet rpm Postfix, vous pouvez télécharger le mien ici.)

5 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 de MySQL :

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

Maintenant, nous configurons phpMyAdmin. Créez /usr/share/phpmyadmin/config.inc.php :

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

| |

Ensuite, nous modifions la configuration d’Apache afin que phpMyAdmin autorise les connexions non seulement depuis localhost :

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

| Alias /phpmyadmin/ "/usr/share/phpmyadmin/" # # Order allow,deny # Allow from 127.0.0.1 # |

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/ 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.