ForumLDIF-Datei für Thunderbird mit Umlauten erstellen
Karsten Tröß – Dienstag, 27. Juni 2006 01:15 Uhr

Hallo zusammen,

da ich bisher nichts brauchbares gefunden habe nun eine Frage an die Allgemeinheit:
Ich habe vor mir aus einer Text-Datei (mit “;” getrennt) einen LDIF-Datei mit Adressen für mein Mailprogramm zu erstellen. Mein Problem: was mache ich mit den Umlauten?? Wie bekomme ich die Umlaute “richtig” in die LDIF – Datei??

Eine LDIF-Datei für Outlook zu erstellen ist relativ einfach. Was aber mache ich mit Thunderbird / Netzscape?

Vielen Dank für jede Hilfe!

Karsten

2 Antworten
Benjamin Quest – Dienstag, 27. Juni 2006 09:49 Uhr

Evtl. über die html oder ascii Tabellen. Also die Umlaute dann umständlich ausschreiben: ä wäre dann ä

Dann sollte aber wohl der Separator in Deinem Fall anders gewählt werden.

Ist allerdings nur ein grober Vorschlag. Auch sollte Thunderbird die Textdatei importieren können (einfach mal probehalber als .ldf umbenennen. Wenn das nicht geht kann man die Datei auch in OpenOffice Calc einlesen (Separator als ; auswählen) um dann das Ganze wieder als LDIF exportieren zu können.

[1] http://www.ramsch.org/martin/uni/fmi-hp/iso8859-1.html
[2] http://www.ascii.cl/htmlcodes.htm

Harald Geiger – Dienstag, 27. Juni 2006 11:17 Uhr

Hallo Karsten!

… einen LDIF-Datei mit Adressen für mein Mailprogramm zu erstellen. Mein Problem: was mache ich mit den Umlauten?? Wie bekomme ich die Umlaute “richtig” in die LDIF – Datei??

Wie eine LDIF Datei korrekt aufgebaut ist steht in RFC 2849 (siehe Link unten).

RFC 2849 ist da recht eindeutig: Alle Distinguished Names (DN) und Attributwerte müssen als UTF-8 Zeichenketten angegeben werden. Sollten eine UTF-8 Zeichenkette Bytes > 127 oder bestimmte Sonderzeichen enthalten, muss die UTF-8 Zeichenkette noch BASE64-kodiert werden.

Wenn eine LDIF Datei für Outlook einfacher zu erstellen ist, liegt das wohl daran, dass Outlook auch nicht standardkonforme LDIF Dateien akzeptiert.

Harald

[1] http://www.rfc-editor.org/rfc/rfc2849.txt

Karsten Tröß – Dienstag, 27. Juni 2006 11:48 Uhr

Hallo Harald,

danke für die Informationen.
Gibt es die RFCs auch so das ich sie (besser und schneller) verstehe -> in Deutsch? :-))

Wie funktioniert das mit der Umsetztung in UTF-8 und der Base64-Kodierung??

Darf ich davon ausgehen das es nicht so einfach ist aus einer Textdatei mittels z.B. Script eine LDIF-Datei zu erstellen??

Ich habe auch vor aus einer (sorry!!) Access – Datenbank eine LDIF-Datei für Thunderbird mit verschiedenen Gruppen… zu generieren. Da müsste das mit der Kodierung dann ja auch vorgenommen werden. Wie kann man das lösen?

Danke für weitere Infos.

Karsten

Harald Geiger – Dienstag, 27. Juni 2006 14:52 Uhr

Hallo Karsten!

Gibt es die RFCs auch so das ich sie (besser und schneller) verstehe -> in Deutsch?

Hab ich noch nicht gesehen.

Wie funktioniert das mit der Umsetztung in UTF-8 und der Base64-Kodierung??

Deine Textdatei kannst Du mit recode zuerst nach UTF-8 umwandeln. Dazu musst Du wissen in welchem Zeichensatz die Datei bisher kodiert ist. Umwandlung von Latin-1 nach UTF-8 geht z.B so: $ recode -v ISO-8859-1..UTF-8 kopie_der_datei.txt

Darf ich davon ausgehen das es nicht so einfach ist aus einer Textdatei mittels z.B. Script eine LDIF-Datei zu erstellen??

Welche Scriptsprache willst Du denn verwenden? In Perl gibt es das Modul MIME::Base64, das die Funktion “encode_base64” bereitstellt, die eine Base64-Kodierung einer Zeichenkette durchführt.

Harald

Karsten Tröß – Mittwoch, 28. Juni 2006 16:41 Uhr

Hallo Harald,

ich denke an etwas “primitiveres”. Ich kann z.B. in QB oder VBA was machen, und etwas mit sed und ein bisschen awk.
Aber was ich auf jeden Fall machen will (für einen Kammeraden) ist mit VBA; da habe ich dann das Problem das es von Hause aus unter Win kein recode gibt und soweit ich weis auch kein “MIME:Base64” für VBA / Access.
Ich gebe mich auch mit ganz “rudimentären” Sachen zufrieden: eine Anleitung wie ich z.B. die Buchstaben entsprechend umsetzte (Buchstabe für Buchstabe).

Wenn Du natürlich noch etwas weisst wie man “einfach” eine Programmiersprache ( Scriptsprache lernen kann, arbeite ich mich auch gerne da ein, wenn ich eine gute DEUTSCHE Doku habe (mit englischen Anleitungen habe ich leichte Problem:-) ).

Danke.

Karsten

Marc Rintsch – Montag, 03. Juli 2006 12:06 Uhr

Ich denke mit einer Skriptsprache und den entsprechenden Bibliotheken kommst Du schneller voran, als wenn Du jetzt selbst Quelltext schreibst um RFC-konforme LDIFs zu erzeugen.

Gehen wir mal von folgender Eingabe aus: Max Mustermann;Mustermann;mm@muster.de;1234 56 Udo Überhacker;Überhacker;hacker@uebel.net;72554 2624 Dann kann man z.B. mit Python [1], dem csv Modul (Standardbibliothek) und dem ldif Modul [2] relativ einfach eine Umwandlung durchführen: import csv from ldif import LDIFWriter # INPUT_CODEC = ‘latin-1’ csv_file = open(‘test.csv’, ‘rb’) ldif_file = open(‘test.ldif’, ‘wb’) reader = csv.reader(csv_file, delimiter=’;’) writer = LDIFWriter(ldif_file) for row in reader: # row = [data.decode(INPUT_CODEC).encode(‘UTF-8’) for data in row] given_name, short_name, e_mail, phone = row writer.unparse(‘cn=%s,mail=%s’ % (given_name, e_mail), {‘given_name’: [given_name], ‘sn’: [short_name], ‘cn’: [given_name], ‘mail’: [e_mail], ‘phone’: [phone], ‘objectclass’: [‘top’, ‘person’, ‘organizationalPerson’]}) csv_file.close() ldif_file.close() Die beiden auskommentierten Zeilen brauchst Du wenn die Eingabedatei noch nicht in UTF-8 vorliegt.

Das Skript auf die oben angegebenen Beispieldaten angewendet ergibt: dn: cn=Max Mustermann,mail=mm@muster.de cn: Max Mustermann given_name: Max Mustermann mail: mm@muster.de objectclass: top objectclass: person objectclass: organizationalPerson phone: 1234 56 sn: Mustermann dn:: Y249VWRvIMOcYmVyaGFja2VyLG1haWw9aGFja2VyQHVlYmVsLm5ldA== cn:: VWRvIMOcYmVyaGFja2Vy given_name:: VWRvIMOcYmVyaGFja2Vy mail: hacker@uebel.net objectclass: top objectclass: person objectclass: organizationalPerson phone: 72554 2624 sn:: w5xiZXJoYWNrZXI= Wie man sieht wird das mit der Base64 Kodierung automatisch erledigt.

Zu Python gibt’s die deutschsprachige Newsgroup de.comp.lang.python [3], ein Forum [4] und ein Wiki [5].

[1] http://www.python.org/
[2] http://python-ldap.sourceforge.net/
[3] http://groups.google.com/group/de.comp.lang.python/
[4] http://www.python-forum.de/
[5] http://wiki.python.de/

Neandr atMettmann – Samstag, 22. Juli 2006 20:33 Uhr

Hallo Marc,
ich schleich mich mal in euere Diskussion ein, da ich ein sehr ähnliche Aufgabe wie Karsten habe:

Ich möchte AdressInformationen parallel in Outlook und Thunderbird nutzen … und die Daten natürlich in abgeglichenem Zustand haben.
Da ich bisher mehr auf der MS/Excel Seite zu Hause bin, habe ich ein “fertiges” Excel WKS mit VBA. Das funktioniert auch [prima] aber erst jetzt — und durch deine Hinweise auf UTF8 etc versteh ich warum ich mit LDIF IM/EXport meine Schwierigkeiten habe ;>

Beim Export sind so komische Infos gekommen wie
dn:: Y249R3Jvc3MgSsO8cmdlbg==
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
objectclass: mozillaAbPersonAlpha
givenName:: SsO8cmdlbg==
sn: Gross
cn:: R3Jvc3MgSsO8cmdlbg==
modifytimestamp: 0Z
… na jetzt versteh ich das … fast : wegen des “Jürgen” im Namen wird’s umgewandelt!

Fragen ??:
– ist das nun ‘UTF-8’ oder Base64
– da ich mich in der WINxp Umgebung bewege “natürlich” die Frage, gibt’s was das auch in der WINxp Umgebung läuft? Sowohl zum codieren als auch zum decodieren??

Vielen Dank im Voraus

Marc Rintsch – Sonntag, 23. Juli 2006 22:51 Uhr

Nicht oder, sondern und. Es ist Base64 kodiertes UTF-8.

Python läuft auch unter Windows.

>>> print ‘Y249R3Jvc3MgSsO8cmdlbg==’.decode(‘base64’).decode(‘utf-8’) cn=Gross Jürgen