Tout ceci n'est plus très frais dans ma mémoire vu que je m'y prends vraiment tard pour blogguer ceci. La configuration d'un annuaire LDAP n'a pas été une sinecure...

Le tuto qui m'a le plus aidé est celui-ci. Celui-ci ayant aussi été une inspiration.

Mais il faut bien avouer que tels quels, aucun de ces deux tutos ne fonctionnent... Il faut chipoter, et parfois faire des concessions. Mon fichier de config LDAP n'est donc pas aussi clean que ceux que l'on peut trouver dans ces deux tutos, les permissions des différentes "tables" (qui sont en fait des 'ou') ne sont pas si claires et il est parfois nécessaire de donner aux utilisateurs plus de permissions qu'on aurait voulu pour que ça fonctionne. Pour ma part, j'y ai vraiment été à la bourrin, et une fois que j'ai vu que certains trucs dégueus marchaient, je m'en suis plus ou moins satifait.

Voici donc mon fichier de config /etc/ldap/slapd.conf, débarassé de ses commentaires pour le rendre plus lisible.

allow bind_v2

include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/evolutionperson.schema

schemacheck     on

pidfile         /var/run/slapd/slapd.pid

argsfile        /var/run/slapd.args

loglevel        0

modulepath      /usr/lib/ldap
moduleload      back_bdb

backend         bdb
checkpoint 512 30

database        bdb

suffix          "dc=frozen-pizza,dc=be"

directory       "/var/lib/ldap"

index           objectClass eq

lastmod         on

access to attrs=userPassword
        by dn="cn=admin,dc=frozen-pizza,dc=be" write
        by dn="uid=iceman,ou=people,dc=frozen-pizza,dc=be" write
        by dn="uid=beto,ou=people,dc=frozen-pizza,dc=be" read
        by dn="uid=thom,ou=people,dc=frozen-pizza,dc=be" read
        by anonymous auth
        by self write
        by * none

access to dn.base="dc=frozen-pizza,dc=be" by * read

access to *
        by dn="cn=admin,dc=frozen-pizza,dc=be" write
        by dn="uid=iceman,ou=people,dc=frozen-pizza,dc=be" write
        by dn="uid=beto,ou=people,dc=frozen-pizza,dc=be" write
        by dn="uid=thom,ou=people,dc=frozen-pizza,dc=be" write
        by * read

access to dn="ou=AddressBook,dc=frozen-pizza,dc=be"
        by dn="uid=iceman,ou=people,dc=frozen-pizza,dc=be" write

access to dn="ou=people,dc=frozen-pizza,dc=be"
        by dn="uid=iceman,ou=people,dc=frozen-pizza,dc=be" write

# Acces a l'annuaire
access to dn.regex="ou=([^,]+),ou=AddressBook,dc=frozen-pizza,dc=be"
        by dn.regex="uid=$1,ou=people,dc=frozen-pizza,dc=be" write
        by dn="cn=admin,dc=frozen-pizza,dc=be" write
        by self write
        by anonymous none
        by users none

J'ai aussi utilisé l'interface web phpldapadmin. Il est vrai que le tuto fonctionne plutôt en changeant les fichiers de conf, mais phpldapadmin m'a permis de faire quelques tests quand je n'étais pas sûr des permissions à accorder aux utilisateurs. (Se logguer en tant qu'untel, essayer de créer une entrée dans son carnet d'adresses, etc.)

Le paramétrage d'evolution ne se fait pas non plus sans peine, et j'ai dû plusieurs fois fermer evolution et tuer evolution-data-server pour que ça fonctionne bien...

Quand au paramétrage d'outlook (chez mon frère), il faut dire que je n'y ai pas vraiment mis du coeur: j'ai abandonné après 5 minutes, dégouté par toutes les difficultés que j'avais déjà rencontrées jusque là.

J'ai aussi configuré squirrelmail pour qu'il utilise le LDAP, pour arriver à ce qui est quand même un peu le but d'avoir un annuaire LDAP pour les contacts: pouvoir accéder à ses contacts de partout dans le monde!

Malheureusement, j'étais tellement las du LDAP à ce moment, que je n'ai pas vraiment cherché à faire dans la finesse. J'ai cependant l'impression que squirrelmail ne peut accepter qu'une seule 'ou' comme carnet d'adresses, ce qui m'a conduit à mettre la racine de tous mes carnets d'adresses comme carnet d'adresses. Cela a pour effet qu'on ne peut rajouter des contacts via squirrelmail, et que squirrelmail, (donc tous les utilisateurs) peut accéder en lecture aux contacts de tous les utilisateurs.

Pour clarifier le paragraphe précédent, il semble que squirrelmail ne gère pas plusieurs utilisateurs d'un annuaire LDAP, mais se contente de se connecter sur l'annuaire en utilisant le meme utilisateur pour tout le monde, ce qui est assez gênant dans certains cas. Il faut donc aussi donner les permissions en lecture sur toutes les tables à tout le monde. (Pour moi, ça va.)