Depuis quelques temps, je cherchais à mettre en place un annuaire de mes contacts accessible facilement par le web, mon client de messagerie claws-mail et le webmail Roundcube.
Quand on pense annuaire, le terme « LDAP » vient vite à l'esprit, j'ai donc installé un serveur openldap sur mon serveur. Cette solution me convient parfaitement. Je peux créer et visualiser mes contacts directement dans claws-mail quelque soit la machine sur lequel je l'utilise. Le webmail Roundcube permet également d'accéder au même annuaire.
Un serveur LDAP de référence ? openldap bien-sûr.
Pour l'installation, rien de plus facile sur une DEBIAN Lenny : aptitude install slapd
. Le paramètrage demande peu de modification au fichier fournit par DEBIAN. Les quelques lignes modifées du fichier /etc/ldap/slpad.conf
:
# The base of your directory in database #1 suffix "dc=collilieux,dc=info" # Indexing options for database #1 index cn,sn,givenname,mail eq # les ACL access to dn.subtree="dc=collilieux,dc=info" by users write by * read # accès à tout l'annuaire pour admin et sylvain, l'accès anonyme ne donne accès à rien access to * by dn="cn=admin,dc=collilieux,dc=info" write by dn="cn=sylvain,dc=collilieux,dc=info" write # by * read TLSCertificateFile /etc/ssl/certs/slapd.pem TLSCertificateKeyFile /etc/ssl/private/slapd.key
Le serveur LDAP est accessible en local en clair et depuis le monde entier via SSL. Pour cela, il faut activer les services dans le fichier /etc/default/slapd
.
# SLAPD_SERVICES="ldap://127.0.0.1:389/ ldaps:/// ldapi:///" SLAPD_SERVICES="ldap://127.0.0.1:389/ ldaps:///"
Une dernière commande pour relancer le serveur invoke-rc.d slapd restart
.
phpldapadmin permet d'accéder facilement à l'annuaire via une interface web. C'est avec cet outil que j'ai créé une « organizational unit » appelée « personnes ». Ci-dessus, l'exportation de cette partie de l'annuaire (l'exemple pourra être adapter et importer dans une autre structure) :
dn: ou=personnes,dc=collilieux,dc=info objectClass: organizationalUnit objectClass: top ou: personnes
Tous les contacts seront créés dans cette organisation.
Pour claws-mail, il faut ajouter un carnet d'adresses : clic droit sur « Serveurs LDAP » et « Nouveau carnet ». Les quelques paramètres à renseigner :
Port : 636 en SSL Base de recherche : ou=personnes,dc=collilieux,dc=info DN de connexion : cn=sylvain,dc=collilieux,dc=info
La base de recherche correspond au suffixe de base LDAP + l'organisation.
claws-mail permet ensuite de consulter le carnet d'adresses et de le modifier. L'auto-complétion fonctionne également lors la composition d'un courriel.
Il y a quelques paramètres à modifier dans le fichier main.inc.php
.
$rcmail_config['address_book_type'] = 'ldap'; $rcmail_config['ldap_public']['collilieux.info'] = array( 'name' => 'collilieux.info', 'hosts' => array('localhost'), 'port' => 389, 'use_tls' => false, 'user_specific' => true, 'base_dn' => 'ou=personnes,dc=collilieux,dc=info', 'bind_dn' => 'cn=%u,dc=collilieux,dc=info', 'bind_pass' => '', 'writable' => true, 'required_fields' => array("cn", "sn", "mail"), 'LDAP_rdn' => 'mail', 'ldap_version' => 3, 'search_fields' => array('mail', 'cn'), 'name_field' => 'cn', 'email_field' => 'mail', 'surname_field' => 'sn', 'firstname_field' => 'givenName', 'sort' => 'cn', 'scope' => 'sub', 'filter' => '', 'global_search' => true, 'fuzzy_search' => true);
base_dn
et bind_dn
sont évidemment à adapter au cas par cas.bind_pass
, quand on lit le reste de la configuration on est tenté de mettre la valeur %p
, j'ai dû lij'ai dûre le code pour trouver.rdn
par rapport à claws-mail et phpldapadmin, il faudrait creuser.Comme pour claws-mail, l'annuaire est accessible dans le carnet d'adresses en lecture et modification et il est possible d'utiliser l'auto-complétion lors de la composition d'un message.
Cette page regroupe des infos piochées ici et là sur internet, en espérant qu'elles puissent être utiles. Il serait possible d'utiliser d'autres clients compatibles avec LDAP, notamment Mozilla Thunderbird.
Prochaine étape : la même chose pour l'agenda. À suivre …
Discussion