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).
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'.
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).
# # 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é'
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.
traduction par Xavier Guimard - Retour au menu