Table of Contents

Rubrica LDAP per Mozilla Thunderbird

Il supporto alla rubrica LDAP in Thunderbird è purtroppo in sola lettura, tuttavia ha i suoi vantaggi. Qui configuriamo il database LDAP in sola lettura per l'utente guest e in lettura/scrittura per un utente admin. Il server LDAP è una Debian GNU/Linux Lenny.

Se LDAP viene già usato per altri scopi (ed esempio autenticazione e NSS), si crea un secondo database destinato a contenere l'addressbook. Purtroppo non esiste uno standard ben definito di schema LDAP da utilizzare, il diffuso InetOrgPerson (RFC2798) non si adatta al contenuto di una moderna rubrica, pertanto alla Mozilla hanno pensato bene di creare lo schema mozillaAbPersonAlpha (Mozilla Addressbook Person), ancora in fase di sviluppo, ma ben supportato da Thunderbird.

Configurazione di slapd

Nel file /etc/ldap/slapd.conf si include lo schema mozillaAbPersonAlpha (prelevato dal Mozilla Wiki e salvato in /etc/ldap/schema/, qui una copia salvata in data 2008-12-08):

include /etc/ldap/schema/mozillaabpersonalpha.schema

e si aggiunge una sezione database in fondo al file:

#######################################################################
# Specific Directives for database #2, of type 'other' (can be hdb too):
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database        hdb

# The base of your directory for database #2
suffix          "ou=Addressbook,dc=rigacci,dc=org"
rootdn          "cn=admin,ou=Addressbook,dc=rigacci,dc=org"
rootpw          "MySecret"

# Where the database file are physically stored for database #2
directory       "/var/lib/ldap/abook"

# The dbconfig settings are used to generate a DB_CONFIG file the first
# time slapd starts.  They do NOT override existing an existing DB_CONFIG
# file.  You should therefore change these settings in DB_CONFIG directly
# or remove DB_CONFIG and restart slapd for changes to take effect.

# For the Debian package we use 2MB as default but be sure to update this
# value if you have plenty of RAM
dbconfig set_cachesize 0 2097152 0

# Number of objects that can be locked at the same time.
dbconfig set_lk_max_objects 1500
# Number of locks (both requested and granted)
dbconfig set_lk_max_locks 1500
# Number of lockers
dbconfig set_lk_max_lockers 1500

# Indexing options for database #22
index           objectClass eq
index           cn,givenName,mail,sn eq,sub

# Save the time that the entry gets modified, for database #2
lastmod         on

# Checkpoint the BerkeleyDB database periodically in case of system
# failure and to speed slapd shutdown.
checkpoint      512 30

# Full access to admin, read-only to everyone.
access to *
        by dn="cn=admin,ou=Addressbook,dc=rigacci,dc=org" write
        by anonymous auth
        by * read

La clausola by anonymous auth impedisce che utenti anonimi possano leggere il database, ma consente agli stessi di autenticarsi.

Fare attenzione a non causare conflitti con i database LDAP già esistenti. In particolare l'opzione directory deve puntare ad una directory diversa da quelle già in uso e suffix deve essere un ramo distinto da quelli esistenti (non può essere ugugale né può essere un figlio).

È necessario creare la sottodirectory per contenere i file LDAP e riavviare il demone:

mkdir /var/lib/ldap/abook
chown openldap:openldap /var/lib/ldap/abook
chmod 0700 /var/lib/ldap/abook
/etc/init.d/slapd restart

Come si vede l'utente admin e la relativa password sono memorizzate in chiaro direttamente nel file di configurazione, se si desidera inserire la password in forma criptata aiutarsi con il programma slappasswd. L'utente guest e tutte le voci della rubrica saranno inserite nel database LDAP.

Popolazione del database

Per popolare il database si creano alcuni file .ldif che verranno caricati con ldapadd. Anzitutto la radice del database:

dn: ou=Addressbook,dc=rigacci,dc=org
objectClass: top
objectClass: organizationalUnit
ou: Addressbook

Poi l'utente guest che verrà usato per accedere in sola lettura:

dn: cn=guest,ou=Addressbook,dc=rigacci,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
sn: guest
cn: guest
userPassword: guest

Infine una entry di esempio:

dn: cn=Niccolò Rigacci,ou=Addressbook,dc=rigacci,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
objectclass: mozillaAbPersonAlpha
givenName: Niccolò
sn: Rigacci
cn: Niccolò Rigacci
mail: niccolo@rigacci.org
homePhone: 055-898989
mobile: 338-81818181

Per caricare i file (nell'ordine visto) si usano comandi del tipo:

ldapadd -x -W -D "cn=admin,dc=rigacci,dc=org" -f file.ldif

Nella pagina LDAP in Mozilla Thunderbird viene riporata la corrispondenza tra attributi LDAP e i campi rubrica di Thunderbird:

Address Book Attribute LDAP Property
FirstName givenname
LastName sn
LastName surname
DisplayName cn
DisplayName commonname
DisplayName displayname
NickName xmozillanickname
PrimaryEmail mail
SecondEmail xmozillasecondemail
WorkPhone telephonenumber
HomePhone homephone
FaxNumber fax
FaxNumber facsimiletelephonenumber
PagerNumber pager
PagerNumber pagerphone
CellularNumber mobile
CellularNumber cellphone
CellularNumber carphone
WorkAddress postofficebox
WorkAddress streetaddress
WorkCity l
WorkCity locality
WorkState st
WorkState region
WorkZipCode postalcode
WorkZipCode zip
WorkCountry countryname
JobTitle title
Department ou
Department orgunit
Department department
Department departmentnumber
Company o
Company company
WorkCountry countryname
_AimScreenName nscpaimscreenname
WebPage1 workurl
WebPage2 homeurl
BirthYear birthyear
Custom1 custom1
Custom2 custom2
Custom3 custom3
Custom4 custom4
Notes notes
Notes description
PreferMailFormat xmozillausehtmlmail
LastModifiedDate modifytimestamp

Dump del database

Sul server che ospita il database, l'utente root può usare slapcat. Poiché la rubrica è il secondo database LDAP definito nel file di configurazione, si usa

slapcat -n 2

Configurazione di Thunderbird

Dal menu EditPreferencesCompositionAddressingEdit Directories… si devono inserire i parametri per il database LDAP:

LDAP Directory Server Properties

Abilitare anche l'opzione Address Autocompletion, in modo che funzioni il completamento automatico dell'indirizzo durante la digitazione del destinatario.

La ricerca può essere fatta dalla finestra della rubrica selezionando dall'elenco a sinistra la rubrica LDAP e iniziando a digitare il nome nel riquadro in alto a destra.

Ricerche avanzate si possono fare dal menu EditSearch Addresses…, impostando criteri per ciascun singolo campo (nome, ditta, ecc.).

Gestione rubrica su web

In attesa che Thunderbird abbia il supporto in lettura/scrittura su LDAP, possiamo usare un semplice applicativo web per editare la rubrica.

Su Sourceforge abbiamo ABLdap, un LDAP Address Book editor, in PHP, che supporta lo schema mozillaAbPersonAlpha. Semplicissimo da installare, localizzato in inglese e italiano.