OX5 – verlorener Ordner “Kontakte” nach Upgrade

Das letzte Update des OX5-Servers auf das SP4 U1 führte in unserer Umgebung leider zu folgendem Fehler:

Bei allen vorher existierenden User-Accounts waren plötzlich die privaten Adresseinträge nicht mehr zugänglich. So etwas ist trotz Sicherung mehr als ärgerlich. Nur die OX-Entwickler wissen vermutlich, wie es zu diesem Missstand kommen konnte. In einer Produktivumgebung ist sowas ein kleines Desaster.

Andererseits lieferte es in unserem Fall auch ein Beispiel dafür, dass man in einer Open Source-Umgebung solche Fehler mit ein wenig Geschick selbst beheben kann. Als nützlichen Nebeneffekt lernten wir dabei auch noch etwas über die Datenstrukturen von OX5, die auf unserem Server in einer Postgres-Datenbank mit der Bezeichnung “openexchange” abgelegt sind.

Der Fehler wurde auf unserem System dadurch sichtbar, dass ein Klick auf das Kontakt-Icon in der Bedienungsleiste des OX-Portals zur Meldung führte, dass man keine Berechtigung für den Zugriff besäße:

Kontakte
“Keine Berechtigung. Für den gewünschten Bereich fehlt Ihnen die Berechtigung.. “.

Daran änderte auch eine explizite neue Rechtevergabe für die betroffenen Accounts über die OX-Administrationsoberfläche leider gar nichts. Dann fiel uns auf, dass der bisher existente Default-Ordner “Kontakte” auch nicht mehr im persönlichen Ordnerbereich angezeigt wurde. Waren die privaten Adressdaten der verschiedenen User-Accounts also überhaupt noch vorhanden?

Kontakte Ordner, Datenbank und LDAP

Adressdaten werden im OX-System in sog. “Kontakte-Ordnern” abgelegt:

  • einem speziellen privaten Kontaktordner, der beim Anlegen eines Accounts automatisch erstellt wird (zusammen mit einem Kalender- und Aufgaben-Ordner)
  • selbst erstellten weiteren privaten Kontaktordnern,
  • einem “globalen Adressbuch”, das firmenweit gültige Adressen bereitstellt,
  • und in einem LDAP-Verzeichnisdienst.

Alle angelegten Kontakte tauchen dabei sowohl in der Openexchange Datenbank als auch im LDAP-Verzeichnis auf. Auf beide Quellen kann man unter KDE übrigens mit dem Informationsmanager “KDE Kontact” zugreifen.

In einem ersten Schritt bemühten wir den LDAP-Browser “gq”, um uns ein Bild davon zu verschaffen, welche Adresseinträge eigentlich auf dem LDAP-Server noch vorhanden waren. Mit Erleichterung konnte ich die Vollständigkeit privater Adresseinträge im Zweig

ou=addr,uid=MYSELF,ou=people,dc=MYDOMAIN,dc=de

des LDAP-Baumes feststellen. Meine eingepflegten Adressen war also zumindest dort noch vorhanden. Als nächsten Schritt legte ich dann einen neuen OX-Useraccount an, um herauszufinden, ob durch das Upgrade irgendwelche persönlichen Einstellungen verpfuscht worden waren. Zunächst konnte ich feststellen, dass der Vergleichsaccount
a) bis auf den Namen zu genau den gleichen Basiseinträge im LDAP führte, die auch mein Originalaccount aufwies,
b) und dass der Fehler mit dem Kontakte-Ordner für den neuen Account gar nicht auftauchte !

Die Ursachen für den Fehler waren also wirklich im Upgrade und irgendwelchen irregulären Datenbanktransaktionen für die vorhandenen Accounts zu verdanken.

Tabellen für Kontakte, Defaultordner und Zugriffsrechte in der Datenbank “openexchange”

Also: SSH-Zugriff auf den OX-Server. “su postgres” absetzen und danach mit “psql openexchange” auf die Postgres-Datenbank zugreifen. Ein “\dt” verschafft einem dann einen Überblick über die vorhandenen Tabellen. Nach etlichen Selects und ein wenig Kombinationsvermögen erkennt man schließlich Folgendes:

  1. Die “Standardordner” eines Benutzeraccounts sind u.a. in der Tabelle “oxfolder_standardfolders” über Referenzschlüssel eingetragen.
  2. Die eigentlichen Ordnereinträge findet man in der Tabelle oxfolder_tree. Der dortige Primary Key entspricht dann für die Defaultordner (u.a. ”
    Kontakte”) eines Users den Referenzschlüsseln in der Tabelle “oxfolder_standardfolders”.
  3. Adressdatensätze sind in der Tabelle “prg_contacts” eingetragen. Dort tauchen in entsprechenden Spalten dann natürlich auch Referenzschlüssel zum jeweiligen Ordner und zum User auf. (In dieser Tabelle fand ich dann in schöner Übereinstimmung zum LDAP auch meine privaten Adresseinträge wieder).
  4. Die Rechte zu den Ordnern sind in der Tabelle “oxfolder_permissions” eingetragen. (Details der numerischen Rechtekammstruktur lassen sich durch Beispieleinträge mit unterschiedlich vergebenen Rechten analysieren und ermitteln).

Durch Vergleich der Einträge zu meinem Originalaccount in den verschiedenen Tabellen mit entsprechenden Einträgen zu einem frisch angelegten Useraccount konnte ich dann folgende, durch das Upgrade entstandene Defizite ermitteln:

  • In der Tabelle “oxfolder_tree” fehlte in der Spalte “owner” der Eintrag des User-Kürzels. Dies war durchgängig für alle Accounts der Fall, die bereits vor dem Upgrade existierten.
  • In der Tabelle “oxfolder_permissions” fehlten die Einträge für die Default-Kontakteordner der User völlig.

Nach einem Vergleich mit den Daten eines neuen Accounts konnte wir mit Hilfe von Update- und Insert-Statements die erforderlichen Sätze letztlich recht einfach rekonstruieren. Und siehe da: Danach führte dann auch der Klick auf das “Kontakte”-Ordner-Icon wieder zum gewünschten Ergebnis!

Fazit:

Auch bei einem rel. umfassenden System wie “Open-Xchange” hat man im Fehlerfall (manchmal) eine Chance, diesen selbst zu beheben. Ein echter Vorteil von Open Source-Produkten! Das Auftreten des beschriebenen Problems im Zuge eines Upgrades ist aber dennoch in höchstem Maße ärgerlich!

Openoffice 3.0 unter MS Win mit Samba-Zugriff

Am 21.10.2008 habe ich in diesem Blog einen Fehler von OO 2.4 für MS Win beschrieben. Dabei ging es um erhebliche Verzögerungen beim Speichern von Dateien, welche auf Samba-Servern lagen und auf die direkt mit Openoffice zugegriffen wurde (also über die Windows-Netzwerkumgebung).

Inzwischen habe ich auf dem Windows Client OpenOffice in der Version 3.0 installiert. Der früher beschriebene Fehler tritt in dieser Version nicht mehr auf! Gut so!

Openoffice 2.4 unter MS Win mit Samba-Zugriff

Beim zunehmenden Einsatz von Openoffice im Unternehmen werden auch die Windows-Mitarbeiter gezwungen, sich immer mehr Dokumenten zu widmen, die unter Linux mit Openoffice erstellt wurden. Bei uns z.B. werden etliche Openoffice-Dokumente über zwei Samba-Server unter Linux (SLES 9 und Opensuse 10.3) bereitgestellt. Leider funktioniert der direkte Zugriff auf die entsprechenden Samba-Freigaben im Netzwerk von einem MS Win Client aus mit OO 2.4 nicht immer reibungslos. Die meisten Probleme – auch das nachfolgende – lassen sich aber durch einen einfachen Trick umgehen:

Fehler: Lange Verzögerungen beim Speichern von OO-Dokumenten auf Samba-Shares
Wie von anderen Dateien und Programmen her gewohnt, öffnet z.B. meine Frau und Mitarbeiterin oftmals Dateien direkt über den Windows-Datei-Explorer, indem sie die entsprechende Datei unter der Netzwerkumgebung sucht und dann anklickt. Ihr fiel nun auf, dass beim Speichern von Office-Dokumenten, die sie direkt über einen solchen Zugriff auf eine Freigabe in der Windows “Netzwerkumgebung” geöffnet hatte, manchmal mit einer deutlichen Verzögerung von bis zu 10 Sekunden zwischengespeichert wurde. Dies geschah ausschließlich bei Openoffice-Dokumenten.

Fehlerursache:
Misstrauisch geworden, habe ich mir dann die Fehlerlogs des Samba-Servers angesehen und ein paar Experimente angestellt. Ergebnis:

Beim Initiieren des Datentransfers durch Openoffice muss der richtige Samba-Service (sprich die Freigabe) angesprochen werden. Hierbei wird leider regelmäßig genau das letzte alphanumerische Zeichen des Service, der über den Dateiexplorer bzw. den “Öffnen”-Dialog von Openoffice unter MS Win gewählt wurde, nicht an den Server übermittelt. Dies ist im Samba-Fehlerprotokoll und auch über Ethereal nachweisbar.
Ich halte das für einen Bug der bei mir installierten Openoffice-Version.

Mir ist dabei übrigens nicht klar, aufgrund welcher Mechanismen das Speichern schließlich doch gelingt. Das erscheint mir sehr dubios und wäre auch unter Sicherheitsaspekten sicher eine weitergehende Analyse wert, für die mir aber gerade die Zeit fehlt. Festzuhalten ist nach ein paar Recherchen im Internet wohl Folgendes:

1) Openoffice unterstützt Samba bzw. CIFS nativ nicht wirklich korrekt.
2) Es gab und gibt sowohl unter Samba als auch bei NFS Probleme mit dem jeweiligen File-Locking-Mechanismus.
3) Das oben beschriebene Problem, bei dem nach meinem Verständnis eigentlich Windows den Zugriff auf den Samba-Share vorwegnimmt, ist ggf. ein zusätzliches.

Umgehung des Problems:
Der Fehler lässt sich unter MS Win XP (SP3) komplett umgehen, indem man Openoffice einfach jede Arbeit für den Remote-Zugriff abnimmt. Man benutze dazu vorab die Möglichkeit des Dateiexplorers zum Verbinden eines Netzlaufwerks unter dem Menüpunkt “Extras -> Netzwerklaufwerk verbinden …”. Dann gibt es keinerlei Probleme und auch das Fehlerprotokoll des jeweiligen Samba-Servers bleibt frei von Fehlermeldungen.

Hinweis zum Zugriff auf Samba-Ressourcen unter Linux:
Auch unter Linux (speziell für Debian und Ubuntu) sind in Foren des öfteren Fehler und Probleme beim Zugriff auf Dateien in Samba-Freigaben geschildert worden. Darunter auch der oben beschriebene Verzögerungseffekt beim Speichern. Inwieweit diese Probleme eine ähnliche Ursache haben, haben wir nicht untersucht.
Unter Opensuse ist mir persönlich hier nie etwas aufgefallen. Dies liegt aber evtl. daran, dass ich hier eine native Unterstützung des CIFS-Protokolls sowieso nicht voraussetze und die erforderlichen Samba-Freigaben immer vorab im Linux-Dateibaum mounte (oft per Smb4K). Dies entspricht dem oben beschriebenen Verfahren; auch hier nehmen wir Openoffice die Samba-Interaktion ab.

Hinweis zum Zugriff auf Openoffice-Dokumente auf einem OX5-Server
Ein Umfeld, in dem der Remote-Zugriff auf Openoffice-Dateien von “Konqueror”
aus immer scheitert, ist übrigens der der OX5-Groupware-Server. Dieser bietet Dateien über eine Weboberfläche und entsprechende Java-Scriptlets an. Konqueror setzt nun voraus, dass Openoffice den Zugriff auf die Resource des Webservers selbst handhaben kann Dies kann Openoffice nachweislich aber leider nicht. Firefox hingegen geht hier so vor, dass es die betreffende Datei herunterlädt und in einer temporären Datei des Linux-Systems zwischenspeichert. Mit dieser temporären Datei kann Openoffice dann wieder anstandslos arbeiten. Ich habe den Fehler gemeldet, aber bisher weder von den KDE noch den OO- oder OX5-Leuten eine hinreichende Resonanz erhalten. Es hilf der Einsatz von Firefox oder unter Konqueror auch ein Zugriff über die WEBDAV-Schnittstelle des OX5 . Dies führt hier aber zu weit.