Fehler
  • XML Parsing Error at 2:32. Error 76: Mismatched tag

OpenLDAP2Thunderbird

zentrales Addressbuch mit Mozilla Thunderbird und OpenLDAP

 

Gerade für den Einsatz in Unternehmensnetzen stellt Thunderbird eine preiswerte Alternative dar.

Allerdings müssen sich alte Exchange - Admins mit einigen neuen Programmen anfreunden die aber

mit vertretbarem Aufwand auch in kleineren Netzen relativ schnell realisiert werden können.

So gibt es OpenExchange (Kobil) oder einfach ein veröffentlichter Kalender über einen

WebDAV -Server der auf einem Apache-Webserver eingerichtet wird.

In diesem speziellen Fall geht es nun um das Adressbuch. Thunderbird bietet hier eine sehr gute

Anbindung an einen LDAP-Server an.

LDAP-Server lassen sich auf verschiedene Weise bereitstellen - bisher war dafür in der Regel

ein Linux-System notwendig.

Eine Anleitung für Linux-Systeme ist hier erhältlich:

http://www.debianhowto.de/doku.php/de:howtos:sarge:openldap

(gibts mittlerweile nicht mehr)

aber hier:

http://www.webmasterpro.de/server/article/einrichtung-von-openldap.html

 

Mit OpenLDAP gibt es seit einiger Zeit auch eine Windows-basierende LDAP-Server-Lösung die nicht

extra bezahlt werden muss und sogar auf Workstation-Betriebssystemen läuft. Wegen der von Microsoft

eingebauten Beschränkungen in den Workstation-Betriebssystemen sollte man aber ab ca 20 Usern einen

Server verwenden oder ein Linux-System. Theoretisch kann bereits bei 6 Usern das Maximum von

5 gleichzeitigen Verbindungen überschritten werden.

 

Diese Anleitung beschreibt die

- Einrichtung eines OpenLDAP-Servers unter Windows

- Integration des Mozilla-Schemas

- Zugriff auf den LDAP-Server mit entsprechenden Tools

- Export des TB-Adressbuches und Import nach openLDAP

- Zugriff auf den LDAP-Server von Thunderbird

 

1. Herunterladen von OpenLDAP : http://lucas.bergmans.us/hacks/openldap/download

Aktuell gibt es OpenLDAP für Windows unter:

http://www.userbooster.de/download/openldap-for-windows.aspx

Nun ja... Das Setup ist eigentlich selbsterklärend deshalb verzichte ich aus Platzgründen auf diverse Screenshots...

Hier kann man auswählen ob man OpenLDAP gleich als Dienst einrichten will. Da man den Dienst jederzeit

über Verwaltung>Dienste beenden kann man diese Einstellung ruhig verwenden.

Für die bessere Administration sollte man auch das Desktop - Symbol anlegen... falls man es vergisst kann

man manuell eine Verknüpfung zur Eingabeaufforderung mit dem Arbeitsverzeichnis %programfiles%\openldap

erstellen.

erste Konfiguration des LDAP-Servers zum Testen der Funktionalität...

Zuerst laden wir uns die Schema-Erweiterung für Thunderbird herunter

Diese Seite ist diesmal unsere Anlaufstelle.
Diese Schemas herunterladen:

Und
Diese auf den LDAP-Server in das Schema-Verzeichnis kopieren
Danach anpassen der slapd.conf  - diese befindet sich im
Programmverzeichnis von Openldap
ucdata-path ./ucdata
include ./schema/core.schema
include ./schema/cosine.schema
include ./schema/inetorgperson.schema
include ./schema/nis.schema
include ./schema/mozilla_op20.schema
include ./schema/extension.schema
pidfile ./run/slapd.pid
argsfile ./run/slapd.args
database bdb
suffix "dc=privat,dc=org"
rootdn "cn=Manager,dc=privat,dc=org"
rootpw secret
directory ./data
Base DN und Managername sowie PW kann natürlich beliebig angepasst werden

danach muss der Dienst noch neu gestartet werden(falls ihr OpenLDAP als Dienst eingerichtet habt).

als nächstes braucht man einen Eintrag für den Manager - andernfalls gibt es eine Fehlermeldung...

 

so sieht diese erste ldif-datei aus:

dn: dc=privat,dc=org
objectclass: top
objectclass: dcObject
objectclass: organization
o: privat
dc: privat
dn: cn=Manager,dc=privat,cn=org
objectclass: organizationalRole
cn: Manager

Diese Datei speichert Ihr nun unter init.ldif ab und legt die datei in das Programm-Verzeichnis von OpenLDAP.

Dann legen wir gleich noch unseren Mustereintrag an - damit wir auch etwas sehen :-)

dn:cn=Hans Mustermann,dc=privat,dc=org
objectClass: top
objectClass: inetOrgPerson
cn: Hans Mustermann
displayName: Hans Mustermann
givenName: Hans
sn: Mustermann
uid: m1GpoMy1A2
homePhone: 0331 0000001
telephoneNumber: 0331 0000001
facsimileTelephoneNumber: 0331 0000001
mobile: 0163-0000001
pager: pager
description: notes
title: Systemadministrator
o: Super Duper Mega Firma
st: Potsdam
l: Potsdam
postalCode: 14480
mail: This e-mail address is being protected from spambots. You need JavaScript enabled to view it.

diese Datei nun als user.ldif ebenfalls in das Programm-Verzeichnis von OpenLDAP ablegen.

Nun müssen diese ldif-Dateien noch in LDAP integriert werden... Ich habe im folgenden Screen mal

dargestellt, was passiert wenn man die init.ldif nicht einspielt... :-)

Ok oben steht User3.ldif - aber diesen Screenshot mach ich deshalb nicht noch mal neu...

 

Zugriff auf unseren neuen LDAP-Server:

 

Auf der oben angegebenen Seite wo wir uns den LDAP-Server herunter geladen haben, gibt es einen

schönen Link zur Seite von Michael Guessant (im Bereich FAQ zu finden) dort gibt es einen Link zum

LDAP-Brower der auch Edit-Funktionen besitzt. Es gibt andere LDAP-Browser aber einen anderen mit

denen man auch Daten verändern oder löschen kann habe ich bisher nicht gefunden. Auch die

automatische DN-Suche ist eine gute Möglichkeit Fehler in der Konfiguration auf die Spur zu kommen.

Für alle die nicht bei Michael Guessant vorbeischauen möchten, hier der Link zum LDAP-Browser:

http://www.iit.edu/~gawojar/ldap

Der Browser basiert auf Java - eine Runtime sollte vorher schon installiert sein damit der Browser funktioniert.

Die Konfiguration des Browsers ist so eingestellt das dieser in C:\ldapbrowser installiert werden muss.

Wenn nur die Zip-Integration von XP zum entpacken verwendet wird kann man das ganze direkt nach

C:\ entpacken, dann landet der LDAP-Browser im richtigen Verzeichnis.

Der Start des Ldap-Browsers erfolgt über eine kleine Verknüpfung - die sich LdapBrowser nennt.

So sieht es direkt nach dem Start aus. Jetzt klicken wir auf New...

einen schönen Namen ausdenken und eingeben.

Wenn der LDAP-Server auf der gleichen Maschine liegt kann man einfach localhost eingeben.

Wenn nicht kann man sowohl den Namen als auch die IP-Adresse eingeben. Nach Eingabe der

IP-Adresse einfach mal Fetch DNs drücken... nun sollte er die DN automatisch eintragen -

wenn nicht kann sich der LDAP-Browser nicht mit eurem Server verbinden.

Wenn es geklappt hat, gehen wir gleich einen Schritt weiter und melden uns gleich mal als Manager an...

Wenn man "append base DN" auswählt braucht ihr die DN nicht auszuschreiben - dann reicht

cn=Manager -steht übrigens auch so auf der FAQ-Seite von Michael Guessant.

Wenn alles geklappt hat könnt ihr nun euren Eintrag schon mal im LDAP-Browser betrachten.

Auswählen und dann klick auf Connect....

Damit ist der LDAP-Server fertig!

 

Jetzt kommen wir zu Thunderbird:

Extras >Einstellungen > Verfassen... Hier wird unser LDAP-Server eingerichtet.

Diese Angaben müssen angegeben werden.

Nun wollen wir mal unsere erste Mail schreiben...

Das hat geklappt.... wie kriegt man nun die Adressen vom Thunderbird-Adressbuch in den LDAP-Server?

Manuell kann man das auch über den LDAP-Browser machen - in der Praxis kann man sich aber auch

kleine ldif-Dateien basteln - das geht schneller.

Zuerst mal das Adressbuch starten - dann auf Export -

danach muss das ldif-File bearbeitet werden, Die DN fehlt noch und müsste in jede erste Zeile eingetragen werden...

Hier hilft ein kleines Kix-Script... Ladet euch Kixtart herunter http://www.kixtart.org/ und ruft das Script

über wkix32.exe tb.kix auf.. folgende Zeilen also als tb.kix abspeichern...

 

Break on

$orgfile="D:\tb5adr.ldif"

$outfile="D:\tb6adr.ldif"

$adddn=", dc=privat,dc=org"

 

Del $outfile

Open(1,$orgfile,2)

Open(2,$outfile,5)

 

$line=ReadLine(1)

While @ERROR = 0

If Left($line,3)="dn:"

$holdarr= Split(Split($line,",",-1)[0],"=",-1)

$holdarr[0]="dn: cn"

$hold=Join($holdarr,"=")

WriteLine(2, + $hold + $adddn + @CRLF)

$dn=Split($line,",",-1)[0]

$sn=""

Else

If NOT (($line = "modifytimestamp: 0Z") OR ($line = "objectclass: person") OR ($line = "objectclass: organizationalPerson") OR ($line = "objectclass: mozillaAbPersonAlpha"))

If Left($line,3)="sn:"

$sn=$line

EndIf

If ($line="") AND ($sn="")

WriteLine(2,"sn: " + Split($dn,"=",-1)[1] + @CRLF + @CRLF)

Else

WriteLine(2,$line + @CRLF)

EndIf

EndIf

EndIf

$line=ReadLine(1)

Loop

Close(1)

Close(2)

was muss angepasst werden? Eigentlich nur die Zeilen 2-4:

zeile2: pfad und Dateiname der Ausgangsdatei

zeile3: pfad und Dateiname der Zieldatei

Zeile4: BaseDN

danach wieder per Befehl in den LDAP-Server übertragen... damit nicht beim ersten

auftretenden Fehler abgebrochen wird, am besten mit

ldapadd -x -D "cn=Manager,dc=privat,dc=org" -W -c < tb6adr..ldif

verwenden. Um Fehler möglichst gering zu halten nach Script-Durchlauf einfach noch mal draufschauen.

Bei mir gab es einige Einträge die cn:: hatten aber keinen richtigen Namen. Solche offensichtlichen

Fehler sind leider nicht selten und werden auch durch das Script nicht korrigiert. Bei meinem ersten

Durchlauf hatte ich ca 60 % der Einträge auf dem LDAP - es brauchte mehrere (5-10) Durchläufe

bis fast alle Einträge eingepflegt waren.