Howto bases de données Berkeley


Introduction

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 :

  1. Comment compiler Postfix sur des systèmes sans librairie Berkeley DB.

  2. Comment compiler Postfix sur les systèmes BSD ou Linux avec de multiples versions de Berkeley DB.

  3. Comment optimiser les performances.

  4. Problèmes en cas d'absence de la librairie pthread.

Comment compiler Postfix sur des systèmes sans librairie Berkeley DB

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.

Compiler Postfix sur les systèmes BSD avec de multiples versions de Berkeley DB

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.

Compiler Postfix sur les systèmes Linux avec de multiples versions de Berkeley DB

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.

Optimiser les performances

Postfix fournit deux paramètres de configuration qui contrôlent la quantité de mémoire utilisée par Berkeley DB.

Problèmes en cas d'absence de la librairie pthread

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

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