Howto PostgreSQL avec Postfix


Introduction

Le type de table pgsql de Postfix vous permet d'utiliser une base de données PostgreSQL avec Postfix. Cette implémentation autorise plusieurs bases pgsql : vous pouvez en utiliser une pour une table virtual(5), une pour une table d'accès et une pour une table d'alias si vous le souhaitez. Vous pouvez indiquer de multiple serveurs pour la même base de données, ainsi Postfix peut changer de base si une est défaillante.

Les serveurs de messagerie chargés utilisant des tables pgsql génèreront beaucoup de clients pgsql concurrents, le(s) serveur(s) pgsql devront être lancés en prenant ceci en considération. Vous pouvez réduire le nombre de clients pgsql concurrent en utilisant le service proxymap(8).

Compiler Postfix avec le support PostgreSQL

Note : pour utiliser pgsql avec le Postfix de Debian GNU/Linux's, tout ce que vous avez à faire est d'installer le package postfix-pgsql. Il n'y a pas à recompiler Postfix.

Pour compiler Postfix avec le support pgsql, indiquez -DHAS_PGSQL, le répertoire contenant les fichiers "include" de PostgreSQL et l'emplacement de la librairie libpq.

Par exemple :

% make tidy
% make -f Makefile.init makefiles \
        'CCARGS=-DHAS_PGSQL -I/usr/local/include/pgsql' \
        'AUXLIBS=-L/usr/local/lib -lpq'

Lancez ensuite 'make'.

Configurer les tables de correspondances PostgreSQL

Une fois Postfix compilé avec le support pgsql, vous pouvez indiquer un type de correspondance dans main.cf comme ceci :

/etc/postfix/main.cf :
    alias_maps = pgsql:/etc/postfix/pgsql-aliases.cf

Le fichier /etc/postfix/pgsql-aliases.cf contient de nombreuses informations indiquant à Postfix comment référencer la base de données pgsql. Pour une description complète, reportez-vous à la page de manuel pgsql_table(5).

Exemple: local aliases

#
# fichier de configuration pgsql pour les alias de local(8)
#

#
# les machines auxquelles Postfix doit se connecter
hosts = host1.mon.domaine host2.mon.domaine

# Le nom d'utilisateur et le mot-de-passe pour se connecter
user = quelquun
password = mot-de-passe

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

# Postfix 2.2 et supérieurs utilisent le modèle de requête SQL. Voir pgsql_table(5).
query = SELECT adresse FROM alias_mx WHERE alias='%s' AND status='payé'

# Pour les versions < 2.2. Voir pgsql_table(5) pour plus de détails.
select_field = adresse
table = alias_mx
where_field = alias
# N'oubliez pas l'indispensable "AND" !
additional_conditions = AND status = 'payé'

Utiliser des bases de données mirroir

Les sites qui ont besoin de plusieurs échangeurs de messagerie apprécient la possibilité d'utiliser une base de données en réseau, mais ne veulent pas introduire ainsi un point vulnérable dans leur système.

Pour cette raison, nous avons inclut la possibilité d'indiquer plusieurs machines à Postfix pour accéder à la même base pgsql. Ceci fonctionne si les sites mettent en oeuvre des bases en mirroir sur plusieurs machines.

Si une requête échoue sur une machine, les autres seront essayées dans un ordre aléatoire. Si aucun serveur pgsql n'est joignable, le message est retardé jusqu'à ce que l'un d'entre eux soit joignable.

Credits

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