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.
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 :
- core.schema
- cosine.schema
- nis.schema
- inetorgperson.schema
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
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
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
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.
Intégration dans Thunderbird
Une fois que cet annuaire est en place, il va falloir, bien évidemment, l'intégrer à Mozilla Thunderbird
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 :
(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*))”);
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.



