Howto MySQL Postfix


Introduction

Le type de tables de correspondances "mysql" vous permettent connecter Postfix à une base de données MySQL. Cette implémentation autorise l'emploi de plusieurs bases de données : vous pouvez en utiliser une pour une table virtual(5), un pour une table d'accès(5) une pour les alias(5), etc. Vous pouvez spécifier plusieurs serveurs pour la même base de données, ainsi Postfix peut en changer en cas d'incident sur la première.

Les serveurs chargés utilisant les correspondances mysql généreront beaucoup de clients mysql concurrents, le serveur devra être conçu en conséquence. Vous pouvez réduire ce nombre de clients mysql en utilisant le service proxymap(8) de Postfix.

Compiler Postfix avec le support de MySQL

Note : pour utiliser mysql avec le serveur Postfix de Debian GNU/Linux, tout ce que vous avez à faire est d'installer le package postfix-mysql et c'est tout. Il n'est pas nécessaire de recompiler Postfix.

Le client MySQL de Postfix utilise la librairie cliente mysql qui peut être obtenue à l'adresse suivante :

http://www.mysql.com/downloads/
http://sourceforge.net/projects/mysql/

Pour compiler Postfix avec le support des correspondances mysql, vous devrez ajouter -DHAS_MYSQL et -I pointant sur le répertoire contenant les headers de mysql et la librairie mysqlclient (et libm) à AUXLIBS, par exemple :

% make -f Makefile.init makefiles \
    'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include' \
    'AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm'

Lancez simplement 'make'. Ceci nécessite la librairie de compression libz. Les implementations plus anciennes de MySQL se compilent sans libz.

Utiliser des tables MySQL

Une fois que Postfix est compilé avec le support MySQL, vous pouvez l'utiliser dans main.cf comme suit :

alias_maps = mysql:/etc/postfix/mysql-aliases.cf

Le fichier /etc/postfix/mysql-aliases.cf peut contenir beaucoup d'informations indiquant à Postfix comment référencer la base de données MySQL. Pour une description complête, reportez-vous à la page de manuel mysql_table(5).

Exemple: alias locaux

#
# fichier de configuration MySQL pour les consultations des aliases(5)
# par le démon local(8)
#

# Le nom d'utilisateur et le mot de passe de connexion au serveur mysql
user = someone
password = some_password

# Le nom de la base de données
dbname = customer_database

# Pour Postfix 2.2 et supérieurs, le modèle de requête SQL.
# Voir mysql_table(5) pour les détails
query = SELECT forw_addr FROM mxaliases WHERE alias='%s' AND status='paid'

# Pour les versions de Postfix antérieures à la 2.2.
# Voir mysql_table(5) pour les détails
select_field = forw_addr
table = mxaliases
where_field = alias
# N'oubliez pas le "AND" !
additional_conditions = AND status = 'paid'

Notes complémentaires

L'installation de l'interface de configuration de MySQL permet l'emploi de plusieurs bases de données : vous pouvez en utiliser une pour la table virtual, une pour la table d'accès et une pour les alias si vous le souhaitez.

Puisque les sites qui ont besoin de multiples serveurs de messagerie apprécient la possibilité d'utiliser une base de données en réseau mais ne veulent pas avoir un point de fragilité en ayant qu'une base, nous avons inclus le possibilité de référencer plusieurs machines pour accéder à la même table. Ceci fonctionnera si les sites mettent en place au moins une base mirroir. Chaque fois qu'une requête échouera, les autres serveurs seront utilisés dans un ordre aléatoire. Si aucun serveur MySQL n'est disponible, le courrier sera retardé jusqu'à ce qu'un serveur soit joignable.

Références

Valid HTML 4.01! traduction par Xavier Guimard - Retour au menu