Postfix utilise des bases de données de différentes sortes pour stocker et consulter des informations. Les bases de données de Postfix sont indiquées comme "type:nom". Les bases Berkeley implémentent les bases Postfix de type "hash" et "btree". Le nom d'une base Berkeley de Postfix est le nom de la base de données sans le suffixe ".db". Ces bases Berkeley sont maintenues avec la commande postmap(1).
Note : La version 4 des bases Berkeley n'est pas supportée sur les versions antérieures à la version 2.0 de Postfix.
Ce document décrit :
Comment compiler Postfix sur des systèmes sans librairie Berkeley DB.
Comment compiler Postfix sur les systèmes BSD ou Linux avec de multiples versions de Berkeley DB.
Comment optimiser les performances.
Problèmes en cas d'absence de la librairie pthread.
Beaucoup d'UNIX commerciaux sont vendus sans support Berkeley DB, comme Solaris, HP-UX, IRIX, UNIXWARE. Pour compiler Postfix avec le support Berkeley DB, vous devez télécharger et installer le code source depuis le site http://www.sleepycat.com/.
Attention : certains systèmes Linux utilisent Berkeley DB, ainsi que des bibliothèques tierces telles SASL. Si vous compilez Postfix avec différentes implémentation Berkeley DB, alors chaque programme de Postfix plantera à cause d'une librairie système, SASL ou Postfix lui même s'arrêtera en utilisant une mauvaise version.
Les versions les plus récentes de Berkeley DB disposent d'une option "--with-uniquename", permettant ainsi à plusieurs versions de Berkeley DB peuvent co-exister dans la même application. Bien qu'inutile, ce peut être le seul moyen d'éviter des incidents.
Pour compiler Postfix après avoir installé Berkeley DB depuis http://www.sleepycat.com/, utilisez :
% make tidy % make makefiles CCARGS="-DHAS_DB -I/usr/local/BerkeleyDB/include" \ AUXLIBS="-L/usr/local/BerkeleyDB/lib -ldb" % make
Pour les systèmes Solaris :
% make tidy % make makefiles CCARGS="-DHAS_DB -I/usr/local/BerkeleyDB/include" \ AUXLIBS="-R/usr/local/BerkeleyDB/lib -L/usr/local/BerkeleyDB/lib -ldb" % make
Le chemin exact dépend de la version que vous avez installé. Par exemple, la version 2 de Berkeley DB s'installe dans /usr/local/BerkeleyDB.
Attention : le format de fichier produit par la version 1 de Berkeley DB n'est pas compatible avec les versions 2 et 3 (ces dernières ont le même format). Si vous changez de version de base de données vous devrez recompiler tous vos fichiers de base de données de Postfix.
Attention : si vous utilisez les versions 2 et supérieures de Berkeley DB, n'activez pas le mode de compatibilité avec les bases 1.85, celà empêcherait le verouillage du fichier fcntl.
Attention : si vous utilisez Perl pour manipuler les fichiers Berkeley DB de Postfix, vous devez utiliser la même version dans Perl et Postfix.
Certains systèmes BSD fonctionnent avec de multiples implémentations de Berkeley DB. Normalement, Postfix est compilé avec la version de base par défaut de votre système.
Pour compiler Postfix sur des systèmes BSD avec une version particulière de base de données, utilisez des commandes dérivant de :
% make tidy % make makefiles CCARGS=-I/usr/include/db3 AUXLIBS=-ldb3 % make
Attention : le format de fichier produit par la version 1 de Berkeley DB n'est pas compatible avec les versions 2 et 3 (ces versions utilisent le même format). Si vous changez de version, vous devrez reconstruire toutes vos bases Postfix.
Attention : si vous utilisez les versions 2 ou supérieures de Berkeley DB, n'activez pas le mode de compatibilité DB 1.85, celà empêcherait le verouillage du fichier fcntl.
Attention : si vous utilisez Perl pour manipuler les fichiers Berkeley DB de Postfix, vous devez utiliser la même version dans Perl et Postfix.
Certains systèmes Linux fonctionnent avec de multiples implémentations de Berkeley DB. Normalement, Postfix est compilé avec la version de base par défaut de votre système.
Attention : certaines librairies du système Linux utilisent Berkeley DB. Si vous compilez Postfix avec une autre librairie Berkeley DB que la librairie par défaut, chaque programme de Postfix risque de planter à cause d'une librairie système ou Postfix risque de s'arrêter lui même en utilisant la mauvaise version.
Sur Linux, vous devez éditer le script makedefs pour spécifier la librairie autre que par défaut car l'emplacement du fichier include "db.h" change en fonction des vendeurs et des versions.
Attention : le format de fichier produit par la version 1 de Berkeley DB n'est pas compatible avec les versions 2 et 3 (ces versions utilisent le même format). Si vous changez de version, vous devrez reconstruire toutes vos bases Postfix.
Attention : si vous utilisez les versions 2 ou supérieures de Berkeley DB, n'activez pas le mode de compatibilité DB 1.85, celà empêcherait le verouillage du fichier fcntl.
Attention : si vous utilisez Perl pour manipuler les fichiers Berkeley DB de Postfix, vous devez utiliser la même version dans Perl et Postfix.
Postfix fournit deux paramètres de configuration qui contrôlent la quantité de mémoire utilisée par Berkeley DB.
berkeley_db_create_buffer_size (défaut : 16 Mo par table). Ce paramètre est utilisé par les commandes qui maintiennent les fichiers Berkeley DB : postalias(1) et postmap(1). Pour les fichiers "hash", les performances de création se dégradent rapidement à moins que la réserve de mémoire soit 0(taille de fichier). Pour les fichiers "btree", ces performances sont bonnes avec des entrées triées même pour de petites réserves de mémoire, mais se dégradent vite avec des entrées non triées à moins que la réserve de mémoire soit 0(taille de fichier). (Note du traducteur : je ne suis vraiment pas sûr de la traduction de ce paragraphe. Une petite aide serait la bienvenue...)
berkeley_db_read_buffer_size (défaut : 128 ko par table). Ce paramètre est utilisé par tous les programmes de Postfix. La taille du buffer est adaptée à la lecture. Si le cache est plus petit que la table, la lecture aléatoire est très dépendante de la taille du cache, sauf avec les tables btree où la taille du cache doit être assez grande pour contenir le chemin entier du nœud principal. Une évidence empirique montre que 64ko sont suffisant. Nous doublons cette taille pour fonctionner en toute sécurité et anticiper les changements dans l'implémentation.
Lorsque la compilation de Postfix échoue avec un message du type :
undefined reference to `pthread_condattr_setpshared' undefined reference to `pthread_mutexattr_destroy' undefined reference to `pthread_mutexattr_init' undefined reference to `pthread_mutex_trylock'
Ajoutez la librairie "-lpthread" à la commande "make makefiles".
% make makefiles .... AUXLIBS="... -lpthread"
Pour plus d'information, reportez-vous à la page http://www.sleepycat.com/.
traduction par Xavier Guimard - Retour au menu