Postfix LDAP Howto


Support de LDAP dans Postfix

Postfix peut utiliser un annuaire LDAP comme source pour toutes ses correspondances : aliases(5), virtual(5), canonical(5), etc. Ceci vous permet de stocker les informations de votre système de messagerie dans une base de données protégée par un contrôle d'accès fin. En ne les stockant pas localement sur le serveur de messagerie, les administrateurs peuvent les maintenir depuis n'importe où et les utilisateurs peuvent accéder et modifier les informations que vous souhaitez. Vous pouvez également avoir de multiples serveurs utilisant la même information sans les conflits et délais de recopie sur chacun d'eux.

Sujets abordés dans ce document :

Compiler Postfix avec le support LDAP

Note 1 : Postfix ne supporte plus la version 1 du protocole LDAP.

Note 2 : pour utiliser LDAP avec le Postix de Debian GNU/Linux's, tout ce dont vous avez besoin est d'installer le package postfix-ldap. Il n'y a pas lieu de recompiler Postfix.

Vous devez disposer des librairies et fichiers "include" sur votre système et configurer le Makefile de Postfix en fonction.

Par exemple pour compiler les librairies d'OpenLDAP pour les utiliser avec Postfix (c'est à dire les codes client LDAP seulement), vous pouvez utiliser la commande suivante :

% ./configure  --without-kerberos --without-cyrus-sasl --without-tls \
    --without-threads --disable-slapd --disable-slurpd \
    --disable-debug --disable-shared

Si vous utilisez les librairies de la distribution UM (http://www.umich.edu/~dirsvcs/ldap/ldap.html) ou OpenLDAP (http://www.openldap.org), les commandes suivantes à la racine des sources de Postfix devraient suffire :

% make tidy
% make makefiles CCARGS="-I/usr/local/include -DHAS_LDAP" \
    AUXLIBS="-L/usr/local/lib -lldap -L/usr/local/lib -llber"

Sur Solaris 2.x vous devrez spécifier le chemin des librairies sinon, ld.so ne trouvera pas les librairies partagées :

% make tidy
% make makefiles CCARGS="-I/usr/local/include -DHAS_LDAP" \
    AUXLIBS="-L/usr/local/lib -R/usr/local/lib -lldap \
            -L/usr/local/lib -R/usr/local/lib -llber"

La commande 'make tidy' n'est nécessaire que si vous avez précédemment compilé Postfix sans le support LDAP.

Au lieu de '/usr/local' indiquez la position de vos librairies LDAP et fichier include. Assurez-vous de ne pas mélanger des libriaires et fichiers include de différentes versions!!

Si vos librairies LDAP sont compilées avec le support Kerberos, vous devrez également inclure vos librairies Kerberos sur cette ligne. Notez que les librairies KTH Kerberos IV peuvent entrer en conflit avec la librairie lib/libdns.a de Postfix qui définit dns_lookup. Si celà arrive, vous devrez probablement utiliser des librairies LDAP sans support de Kerberos pour compiler Postfix et il ne supportera pas les connexions Kerberos au serveur LDAP. Désolé...

Si vous utilisez un des SDK LDAP Netscape, vous devrez changer la line AUXLIBS pour pointer sur libldap10.so ou libldapssl30.so ou ce dont vous disposez, et vous devrez utiliser l'option de liage appropriée (-R) pour que l'exécutable la trouve au lancement.

Configurer les correspondances par consultation LDAP

Pour utiliser les correspondances LDAP, définissez une source LDAP comme table de correspondance dans le fichier main.cf, par exemple :

alias_maps = hash:/etc/aliases, ldap:/etc/postfix/ldap-aliases.cf

Le fichier /etc/postfix/ldap-aliases.cf peut contenir un grand nombre de paramètres, y compris les paramètres qui activent LDAP SSL et STARTTLS. Pour une description complète de ces possibilités, consultez la page de manuel ldap_table(5).

Exemple: alias locaux

Ci-dessous un exemple d'utilisation de LDAP pour les consultations d'alias locaux (local(8)). Supposons que dans le fichier main.cf, vous avez :

alias_maps = hash:/etc/aliases, ldap:/etc/postfix/ldap-aliases.cf

et dans ldap:/etc/postfix/ldap-aliases.cf :

server_host = ldap.my.com
search_base = dc=my, dc=com

A la reception d'un message à destination de l'adresse locale "ldapuser" qui n'est pas trouvée dans la base de données /etc/aliases, Postfix recherchera le serveur LDAP écoutant sur le port 389 de ldap.my.com. Il se connectera anonymement, cherchera toute entrée dont l'attribut mailacceptinggeneralid est "ldapuser", lira l'attribut "maildrop" des entrées trouvées et construira une liste de leur maildrops qui seront traitées comme des adresses RFC822 à qui le message sera livré.

Exemple: domaines/adresses virtuelles

Si vous voulez stocker vos informations pour les consultations virtuelles dans votre annuaire, c'est seulement un petit peu plus compliqué. D'abord vous devez vous assurer de la configuration du domaine virtuel dans Postfix. Ensuite, vous devrez vous assurer que tous les attributs mailacceptinggeneralid de vos destinataires virtuels ont une forme correcte et dans le domaine virtuel. Finalement, si vous devez désigner une entrée de cet annuaire comme adresse par défaut pour le domaine virtuel, ajoutez simplement un champ mailacceptinggeneralid (ou équivalent dans votre annuaire) contenant "@domaine.virtuel" Si vous ne désirez pas d'adresse de collecte, omettez simplement cette étape et le courrier des utilisateurs inconnus sera retourné.

En résumé, l'enregistrement de l'utilisateur de collecte devrait ressembler à :

     dn: cn=defaultrecipient, dc=fake, dc=dom
     objectclass: top
     objectclass: virtualaccount
     cn: defaultrecipient
     owner: uid=root, dc=someserver, dc=isp, dc=dom
1 -> mailacceptinggeneralid: fake.dom
2 -> mailacceptinggeneralid: @fake.dom
3 -> maildrop: realuser@real.dom         

1: Postfix sait que fake.dom est un domaine virtuel valide lorsqu'il le cherche et obtient quelque chose (maildrop) en réponse.

2: Ceci implémente l'adresse de collecte : le courrier perdu est redirigé sur cette entrée ...

3: ... et va ensuite dans sa boîte-aux-lettres.

Les utilisateurs normaux auront simplement un mailacceptinggeneralid et un maildrop, à savoir "utilisateur.normal@fake.dom" et "utilisateur.normal@real.dom".

Autres utilisations des consultations LDAP

Les consultations LDAP peuvent être utilisées à d'autres fins y compris les réécritures d'adresses d'émission ou de destination avec les correspondances canoniques de Postfix. Par exemple, pour modifier les adresses "login@site.dom" en "prénom.nom@site.dom".

Notes et éléments à prendre en compte

Retours d'expérience

Si vous avez des questions, envoyez-les à postfix-users@postfix.org. N'oubliez pas les informations sur votre configuration : paramètres LDAP issus de postconf, quelles librairies LDAP vous avez utilisé et quel serveur d'annuaire vous utilisez. Si votre question porte sur le contenu des entrées de votre annuaire, incluez s'il vous plait quelques entrées;

Références

Et bien sur Wietse.

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