Outils pour utilisateurs

Outils du site


informatique:docs:ldap_addbook

Carnet d'adresses LDAP pour Mozilla Thunderbird

Cette doc vous permet de mettre en oeuvre un carnet d'adresses LDAP utilisable avec le client de messagerie Mozilla Thunderbird. Thunderbird fourni un support pour utiliser un carnet d'adresses LDAP nativement. Cependant le support est assez limité quant aux champs que l'on peut utiliser.

Il existe dans les 'schémas' LDAP standard (inetOrgPerson, person, posixAccount, etc…) un certain nombre de champs utilisables mais malheureusement, si l'on se contente d'utiliser ces schémas, une bonne partie des champs ne seront pas visibles sous Thunderbird.

Je vous propose donc à travers cette documentations de vous fournir un schéma compatible ainsi que la procédure pour mettre en oeuvre votre annuaire LDAP avec tous les champs utilisables. Ces informations sont issues de mes différentes recherches sur le net :-) Le but de cette documentation n'est que de regrouper dans un seul et même document les différentes informations.

Le support LDAP intégré à Thunderbird est un support en lecture seule… La gestion de l'annuaire et son alimentation devront devra être faite séparément.

Environnement

  • Mozilla Thunderbird 1.5 ou supérieur
  • OpenLDAP

Mise en place de l'annuaire LDAP

Je donne ici les éléments permettant de mettre en place un arbre LDAP minimum pour la création du carnet d'adresses. L'optimisation et l'utilisation pour d'autres branches reste possible mais ne sera pas traité ici =) La mise en place de l'arbre se fera dans le répertoire /'opt/ldap' afin d'être indépendant de toute distribution. Le principe de configuration n'étant pas modifié, libre à vous d'utiliser les chemins d'accès prévus par votre distribution (ex: /etc/ldap, etc…).

Dans le répertoire '/opt/ldap' nous allons retrouver l'arborescence suivante :

  • database (répertoire contenant la base)
  • schema (répertoire contenant les schémas LDAP)
  • slapd.conf (fichier de configuration du serveur OpenLDAP)

Pour monter le serveur, vous allez avoir besoin des schémas suivants :

L'ensemble de ces schémas sont standard et sont fournis avec la distribution d'OpenLDAP, seul 'mozilla_op20' n'est pas standard car c'est celui que je vais vous fournir :-)

Fichier de configuration

Une fois que vous aurez copié le schéma dans le répertoire '/opt/ldap/schema' vous pourrez créer un fichier de configuration comme suit :

/opt/ldap/slapd.conf
include                /opt/ldap/schema/core.schema
include                /opt/ldap/schema/cosine.schema
include                /opt/ldap/schema/nis.schema
include                /opt/ldap/schema/inetorgperson.schema
include                /opt/ldap/schema/mozilla_op20.schema
 
# Autoriser les connexion en proto v2
allow bind_v2
 
# Verification de la conformite au schema
schemacheck on
 
pidfile        /var/run/openldap/slapd.pid
argsfile       /var/run/openldap/slapd.args
 
loglevel    0
 
#######################################################################
# BDB database definitions
#######################################################################
 
database       bdb
suffix         "dc=lan"
checkpoint     32      30
 
rootdn         "cn=ldap.admin,dc=lan"
rootpw         mot_de_passe
 
directory      /opt/ldap/database
 
# Definition de indexes :
index  objectClass     eq

Bien penser à affecter les bons droits au répertoire 'database'. Celui-ci doit appartenir à l'utilisateur 'ldap:ldap' et n'être lisible que par cet utilisateur.

Vous pouvez maintenant démarrer le serveur LDAP.

Création de la branche 'addressbook'

Sur la base d'un arbre ayant comme dn 'dc=lan' nous allons créer une branche 'ou=addressbook,dc=lan'.

ldap-skeleton.ldif
dn: dc=lan
objectClass: top
objectClass: dcObject
objectClass: domain
dc: lan
description: Local LDAP directory
 
dn: ou=addressbook,dc=lan
objectClass: top
objectClass: organizationalUnit
ou: addressbook
description: Carnets d'adresses

Vous pouvez intégrer ce fichier ldif à l'aide de la commande 'ldapadd'.

ldapadd -x -h <ip du serveur> -W -D cn=ldap.admin,dc=lan -f ldap-skeleton.ldif

Création des contacts

Voici la structure que doit avoir une entrée de contact afin de remplir tous les champs visibles par le carnet d'adresses de Thunderbird. Je vous propose ici une entrée avec tous les champs remplis avec des valeurs facilement identifiables pour que vous puissiez tester le fonctionnement de votre annuaire.

dummy-contact.ldif
dn: uid=prenom.nom,ou=lestat,ou=addressbook,dc=lan
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: mozillaAbPersonObsolete
cn: prenom nom
uid: prenom.nom
description: Commentaires
facsimileTelephoneNumber: FAX
displayName: Prenom Nom
givenName: Prenom
homePhone: Telephone personel
homePostalAddress: Adresse personnelle
mobile: Telephone GSM
pager: Numero de pager
sn: Nom
telephoneNumber: Telephone professionel
xmozillanickname: Pseudonyme
nsAIMid: Identifiant AIM
mozillaSecondEmail: Autre adresse mail
mozillaHomeLocalityName: Ville
mozillaHomeCountryName: Pays
homeurl: Page web perso
mozillaHomePostalCode: CP
mozillaHomeState: Etat
o: Societe
ou: Travail - Departement
postOfficeBox: Adresse professionnelle
l: Travail - Ville
st: Travail - Etat
c: Travail - Pays
title: Travail - Titre
postalCode: Travail - CP
workurl: Travail - Site web
custom1: Personnalise 1
custom2: Personnalise 2
custom3: Personnalise 3
custom4: Personnalise 4
mozillaHomePostalAddress2: Adresse personnelle suite
mozillaPostalAddress2: Adresse professionnelle suite
mail: prenom.nom@email.com

Attention lors de l'utilisation de champs avec des caractères accentués, veuillez penser à encoder les champs du fichier LDIF (en base64) conformément au spécifications de ce format.

Cette entrée donne le résultat suivant sur Thunderbird :

Afin de pouvoir identifier chaque contact séparément, je vous propose la méthode suivante :

Chaque contact sera identifié par un 'uid' unique. Cet uid ne devra pas comporter de signes diacritiques ni d'espaces. Les espaces seront remplacés par des '-' et l'uid sera composé du prénom et du nom du contact. En absence de prénom ou de nom, l'espace vide sera remplacé par un '@'.

Exemples de cas :

Nom complet UID DN
Jean Dupont jean.dupont uid=jean.dupont,ou=addressbook,dc=lan
Jean de la Tour jean.de-la-tour uid=jean.de-la-tour,ou=addressbook,dc=lan
Jean-Pascal de la Tour jean-pascal.de-la-tour uid=jean-pascal.de-la-tour,ou=addressbook,dc=lan
IKEA @.ikea uid=@.ikea,ou=addressbook,dc=lan
Frédéric frederic.@ uid=frederic.@,ou=addressbook,dc=lan

Ceci n'est qu'une méthode proposée, libre à vous d'en employer une autre. 8-)

Intégration dans Thunderbird

Une fois que cet annuaire est en place, il va falloir, bien évidemment, l'intégrer à Mozilla Thunderbird 8-) Voici les étapes pour déclarer ce nouvel annuaire : (Le carnet d'adresses s'appellera ici 'ContactsLDAP')

  • Veuillez aller dans 'Carnet d'adresses'
  • Ensuite menu 'Fichier' → 'Nouveau' → 'Carnet d'adresses LDAP'
  • Et remplir les champs comme suit :

Carnet d'adresses LDAP

(les autres champs ne sont pas déterminants pour le fonctionnement de l'annuaire)

Filtre de recherche

Lorsque vous tapez une adresses dans la barre d'adresse de la fenêtre de rédaction d'un nouveau message, Thunderbird effectue automatiquement une recherche dans vos carnets d'adresses locaux et LDAP. Cependant dans le cas des carnets d'adresses LDAP, la recherche (interrogation du serveur) s'effectue sur trois critères.

  • cn (Nom courant. Prénom + Nom dans notre cas)
  • mail (Adresse email)
  • sn (Nom de famille)

Ceci peut être gênant dans le cas ou le prénom et/ou nom d'une personne contient des accents. Si on prend l'exemple d'un contact qui s'appelle 'Frédéric', lorsque l'on tapera 'fre' la recherche ne donnera rien car il faudrait taper 'fré'.

Pour résoudre ce problème, nous allons profiter du fait que nous utilisons des 'uid' constitués du prénom et du nom d'un contact sans aucun signe diacritique. Le contact 'Frédéric' aura un uid du type 'frederic.xxxxx,ou=addressbook,dc=lan'. Si l'on ajoute le champs 'uid' dans la recherche LDAP, nous pourront sélectionner également les personnes dont le nom ou prénom contient des accents.

Pour ce faire nous allons modifier le fichier 'prefs.js' de Mozilla Thunderbird pour y ajouter la ligne suivante :

prefs.js
user_pref(”ldap_2.servers.ContactsLDAP.autoComplete.filterTemplate”, “(|(cn=%v*)(uid=%v*)(mail=%v*)(sn=%v*))”);

Attention, vous ne pouvez pas utiliser 'default' pour appliquer ce réglage de manière globale. Vous devez pour chaque annuaire LDAP défini, ajouter une ligne correspondante.

Ici nous avons utilisé 'ContactsLDAP' qui est le nom de notre annuaire déclaré.

Mapping des champs

Afin que le carnet d'adresses de Thunderbird affiche correctement les champs correspondants aux adresses, il faut modifier un 'mapping' par défaut de certains attributs LDAP.

Voici les modifications à apporter dans votre fichier de configuration.

prefs.js
user_pref("ldap_2.servers.default.attrmap.HomeAddress", "homepostaladdress,mozillaHomeStreet");
user_pref("ldap_2.servers.default.attrmap.HomeAddress2", "mozillaHomeStreet2,mozillaHomePostalAddress2");
user_pref("ldap_2.servers.default.attrmap.WorkAddress2", "mozillaWorkStreet2,mozillaPostalAddress2");

Divers

Lorsque vous avez plusieurs contacts avec un même nom ou prénom (ce qui peut arriver dans les grands annuaires d'entreprise), vous pouvez demander à Thunderbird de vous afficher une colonne supplémentaire contenant des commentaires lors de l'affichage des contacts trouvés.

Pour cela vous devez modifier le fichier 'prefs.js' et y ajouter les deux lignes suivantes :

prefs.js
user_pref("mail.autoComplete.commentColumn", 2);
user_pref("ldap_2.servers.DIRECTORYNAME.autoComplete.commentFormat", "Fonction [title]");

Vous remplacerez 'DIRECTORYNAME' par le nom de votre carnet d'adresses LDAP. Pour ce qui est du format, le choix est libre. Cependant les attributs LDAP doivent se trouver entre crochets pour être interprétés.

informatique/docs/ldap_addbook.txt · Dernière modification: 2019/05/06 14:48 (modification externe)

Outils de la page