Update von Horde (Plesk 8.6+Suse 10.3)

Thorti

New Member
Hy,

ich habe ein vServer mit Plesk 8.6 unter OpenSuSE 10.3 am Laufen. Plesk bringt auch ein eingerichtetes Horde mit IMP, Kronolith, etc. mit. Das läuft auch soweit.

Nun suche ich schon länger eine Syncronisationslösung für Termine zwischen Apple iCal und nem WM 6-Handy, die serverbasiert ist (Mit lokaler Syncronisation gibts keine Probleme, ist nur nervig). Dabei bin ich auf SyncML gestoßen, was von Horde auch unterstützt wird, allerdings setzt das mind. Horde 3.2 oder höher vorraus. Das Plesk-Paket von Horde ist aber Version 3.1.7 und daran habe ich einige Basteleien an Ingo vorgenommen und das läuft.

Bevor ich nun anfange da auf Horde 3.2, bzw. 3.3 umzustellen, wollte ich fragen, ob man das Plesk-Horde mit dem offiziellen Horde einfach migrieren kann, oder ob Plesk das Framework so "verbogen" hat, daß ich mir die Mühe spare und Horde gleich komplett neu aufsetze ?
Da wäre dann die Frage, ob ich das parallel zum vorhanden Horde machen kann oder ob die sich irgendwie in die Quere kommen (hab kein Bock überall den Datenbanknamen zu tauschen usw./kann man global ne Datenbank festlegen) ?

Thorti
 
Das Plesk-Horde ist soweit ich weiß nicht verbogen; einzig die Configdateien sind auf das Setting des Server usw. angepasst.
 
Serverbasierte Sync-Lösung

@Thorti:Hast du inzwischen eine Lösung?

Ich war auch auf der Suche nach einer serverbasierten Synchronisations-Lösung für mein Nokia E71 (Symbian, SyncML) und Mozilla Sunbird/Lightning.

Da ich im Web keine vernünftige Anleitung gefunden habe, hab ich mir von meinem Server einfach ein Backup gezogen und angefangen auszuprobieren. Ein Update von Horde und dessen Applikationen gestaltet sich nicht ganz einfach, ist aber möglich. Inzwischen habe ich mein gesamtes Horde-Paket geupdatet und hab auch eine funktionsfähige Sync-Lösung.

Mein Handy greift per SyncML via UMTS oder WLAN auf den Server zu und synchronisiert Kalender, Kontakte und Notizen mit Horde. Kontakte und Notizen sind für mich nur eine Art Online-Backup meines Handys, den Kalender bearbeite ich auch. Öffnen kann ich den Kalender auch in Mozilla Thunderbird mit der Lightning-Erweiterung. Das läuft über WebDAV.

Wenn Interesse besteht stelle ich am WE mal eine Anleitung zusammen.
 
Serverbasierte Sync-Lösung

>Wenn Interesse besteht stelle ich am WE mal eine Anleitung zusammen.

Hallo!

Ja ich hätte Interesse. Habe genau das selbe Problem (Plesk mit Horde 3.1.7) und möchte mit einem NOKIA E90 synchronisieren!

Gruß Thomas
 
Erstmal meine Konfiguration vorweg:

Debian etch
Plesk 8.6

alte Horde-Version: 3.1.7

So bin ich vorgegangen:

BACKUP!!!
Da ich viel herumexperimentiert habe habe ich mir ein kleines Script geschrieben um Horde zu backupen:
Code:
#!/bin/bash
cd /usr/share/
tar cvzf $1/psa-horde.tar.gz psa-horde/
cd /etc/
tar cvzf $1/psa-horde-etc.tar.gz psa-horde/
mysqldump horde -u admin --password=[I]xxx [/I]> $1/horde.sql

xxx muss natürlich durch das MySQL-Passwort ersetzt werden. Das Skript wird mit einer Pfad-Angabe als Parameter aufgerufen und sichert die komplette Horde-Installation dahin.
Ich habe dieses Skript auch nach jedem Update der einzelnen Horde-Applications ausgeführt - man weiß ja nie...

Horde-Administrator definieren
Zuerst einmal ist es sinnvoll zumindest einen User als Admin zu definieren, um mehr Infos zu sehen:
dafür in der /usr/share/psa-horde/config/conf.php folgende Zeile unten anfügen (oder die bestehende suchen und ändern):
Code:
$conf['auth']['admins'] = array("meine@adresse.com");

Neue Versionen besorgen
Jetzt sollte dieser User im Horde-Menü einen neuen Punkt "Administration" sehen. Darunter mal den Punkt "Konfiguration" aufrufen und auf den Button "Auf aktuellere Versionen überprüfen" klicken. Dann werden nämlich gleich die benötigten Links zum Download der neueren Versionen eingeblendet.

Für SyncML sind folgende Pakete notwendig:
  • Horde
  • IMP
  • Kronolith (Kalender)
  • Mnemo (Notizen - wer will)
  • Turba (Adressbuch)

Jetzt erstmal alle benötigten Pakete in ein temporäres Verzeichnis auf dem Server laden und auspacken. Ich geh jetzt mal davon aus, dass dieses Verzeichnis /root/horde-update ist. Dann sollte danach folgende Verzeichnisstruktur bestehen:

Code:
horde-3.3.2
imp-h3-4.3.2
kronolith-h3-2.3
mnemo-h3-2.2.1
turba-h3-2.3.1

Dann kanns mit dem eigentlichen Update losgehen:

Horde-Framework updaten

Da alle Konfigurationsdateien standardmäßig ein .dist angehängt haben wird beim direkten kopieren nichts überschrieben:

Code:
cp -r /root/horde-update/horde-3.3.2/* /usr/share/psa-horde

Dann das MySQL-Update ausführen:

Code:
mysql horde -u admin --password=xxx < /usr/share/psa-horde/scripts/upgrades/3.1_to_3.2.mysql.sql

Und dann die /usr/share/psa-horde/config/conf.php editieren:

Folgendes anfügen:
Code:
$conf['urls']['token_lifetime'] = 120;

Dann mit der Zeile 2 aus der conf.xml

Code:
<!-- $Horde: horde/config/conf.xml,v 1.74.2.81 2008/11/27 05:29:45 chuck Exp $ -->

ohne die XML-Kommentarzeichen, dafür als PHP-Kommentar in der conf.php, Zeile 3 ersetzen:

Code:
// $Horde: horde/config/conf.xml,v 1.74.2.81 2007/02/02 11:03:05 jan Exp $

Anhand dessen überprüft Horde die Aktualität der conf.php. Diese sollte aber tunlichst nicht überschrieben werden, da Plesk-spezifische Änderunen drin sind.

Damit sollte das Update des Horde-Frameworks vollbracht sein. Ein Aufruf von http://webmail.meine.domain/test.php sollte die neue Versionsnummer anzeigen. Dann mal testweise als Admin in Horde einloggen und unter Administration/Konfigruation nochmal auf neuere Versionen prüfen, da sollte Horde dann aktuell sein.

Wenn das alles geklappt hat kanns mit IMP weitergehen:

IMP Update
Erstmal die Dateien kopieren:
Code:
cp -r /root/horde-update/imp-h3-4.3.2/* /usr/share/psa-horde/imp

Dann muss wieder die conf.php aktualisiert werden. Das geht jetzt am einfachsten in dem man Horde selber verwendet. Dazu wieder als Admin einloggen und dort unter Administration/Konfiguration sollte neben Webmail(imp) stehen, dass die Konfiguration aktualisiert werden muss. Da einfach auf imp klicken und man erhält eine komfortable Maske. Es können alle Einstellungen erstmal so beibehalten werden und dann ganz unten auf "Webmail-Konfiguration erzeugen" klicken. Dann wir Horde mosern, dass er keinen Schreibrechte auf die /usr/share/psa-horde/imp/config/conf.php hat. Das ist auch gut so, einfach die ausgegebene conf.php kopieren und über SSH in die Datei schreiben.

Dieses Prozedere muss später auch für die anderen Horde-Applications wiederholte werden.

Leider enthält die Version H3-4.3.2 von IMP noch einen Bug im Session-Handling. Ich habe das gelöst indem in in der /usr/share/psa-horde/imp/lib/IMP.php die Zeile 337

Code:
if ($_SESSION['horde_form_secrets'][$token] + $GLOBALS['conf']['server']['token_lifetime'] < time()) {

so verändert habe:

Code:
if (($_SESSION['horde_form_secrets'][$token] + $GLOBALS['conf']['urls']['token_lifetime'] * 60) < time()) {

Dabei ist unbedingt auf die Klammersetzung zu achten, sonst gibts nur Murks...

Jetzt sollte IMP geupdatet sein. Einfach mal über die test.php testen und nochmal in Administration/Konfiguration nachschauen. Sicherheitshalber auch mal probeweise eine Mail verschicken und vor allem Mails zwischen verschiedenen Ordnern kopieren/verschieben.

Wenn alles geht kann dann mit Kronolith weitergehen:

Kronolith Update
Wieder erstmal die Dateien kopieren:

Code:
cp -r /root/horde-update/kronolith-h3-2.3/* /usr/share/psa-horde/kronolith

Dann müssen diesmal zwei SQL-Update-Scripts ausgeführt werden:

Code:
mysql horde -u admin --password=xxx < /usr/share/psa-horde/kronolith/scripts/upgrades/2.1_to_2.2.sql
mysql horde -u admin --password=xxx < /usr/share/psa-horde/kronolith/scripts/upgrades/2.2_to_2.3.sql

Und dann wieder die conf.php neu erstellen wie bei IMP auch schon. Dann wieder testen und weiter geht's mit Mnemo, wer die Notizen verwendet.

PS: Jetzt sollte SyncML für den Kalender schon gehen.

Mnemo Update
Zuerst wieder die Dateien kopieren:

Code:
cp -r /root/horde-update/mnemo-h3-2.2.1/* /usr/share/psa-horde/mnemo

Dann SQL-Update-Script ausführen:
Code:
mysql horde -u admin --password=xxx < /usr/share/psa-horde/mnemo/scripts/upgrades/2.1_to_2.2.sql
mysql horde -u admin --password=xxx < /usr/share/psa-horde/mnemo/scripts/upgrades/2.2_to_2.2.1.sql

Und wieder die conf.php wie oben erstellen. Alles testen und mit Turba weitermachen:

Turba
Turba ist zum Glück sehr einfach: Dateien kopieren und conf.php erstellen:

Code:
cp -r /root/horde-update/turba-h3-2.3.1/* /usr/share/psa-horde/turba

So, es sollte geschafft sein!

SyncML ausprobieren/einrichten (am Beispiel von Nokia S60 3rd)
Ich habe ein Nokia E71 und erläutere die Einrichtung von SyncML nur für dieses Gerät. Dürfte allerdings bei anderen Symbiangeräten ähnlich sein.

Unter System das Programm "Synchron." starten. Dann Optionen->Neues Synchron.-profil

Name: einfach vergeben
Verbindungseintell.L
Serverversion: 1.2
Server-ID: Kein
Datenträger: Internet
Zugangspunkt: Immer fragen/fest voreinstellen
Serveradresse: http://webmail.meine.domain/rpc.php
Port: 80
Benutzername: meine@adresse.com
Passwort: IMAP-PW
Sync-Anfr. erlauben: Nein
Alle Sync-Anfr. ann.: Nein
Netzauthentifizier.: Nein

Programme:
Kontakte:
Externe Datenbank: contacts
Kalender:
Externe Datenbank: calendar
Notizen:
Externe Datenbank: notes

Alle anderen Programme unterstützt Horde so wie wirs jetzt konfiguriert haben nicht.

So, ich hoffe diese jetzt doch recht lange Anleitung hilft soweit dem einem oder anderem. Ich werde mich jetzt mal zum Festmahl begeben, heute ist schließlich Sylvester und morgen Neujahr...
 
Danke für das How-To ... mich interessiert zwar nicht die Sync Lösung aber das es eine test.php gibt mit der quasi alle relevanten Daten ausgelesen werden können find ich ja schon hart. Ich hab Sie mal direkt gelöscht ... also in diesem Sinne: Danke ;)
 
Naja, Horde ist ja durchaus bekannt dafür immer wieder mal sicherheitslücken aufzureißen. Ist halt einfach ein ziemlich umfangreiches Framework, das auch noch OpenSource ist. Wer auf die Groupware/PIM Funktionalitäten verzichten kann, dem empfehle ich auch die Installation von SquirrelMail statt Horde. Siehe dazu diesen Thread.
 
Serverbasierte Sync-Lösung

Dann bedanke ich mich für die tolle Beschreibung!

Ich bin wirklich kein Linux-Profi aber es hat alles funktioniert.
Zwei Bemerkungen für Nachahmer:

1. 'Auf aktuellere Versionen Prüfen' erscheint erst in Version 3.3.2
2. das Kopieren hat so nicht auf Anhieb geklappt, da die config und docs Verzeichnisse in /usr/share/psa-horde/... auf /etc/psa-horde/... verweisen!
Ich habe das dann einzeln kopiert (vielleicht speziell bei 1und1 Server).

Auch die Syncronisation klappt vorerst bestens. Werde aber noch etwas testen.
 
1. 'Auf aktuellere Versionen Prüfen' erscheint erst in Version 3.3.2
Tatsache, das hatte ich nicht mehr ganz genau im Kopf. Sobald aber das Horde-Framework geupdatet ist, lässt sich der Button zum herunterladen der anderen Applications verwenden.

2. das Kopieren hat so nicht auf Anhieb geklappt, da die config und docs Verzeichnisse in /usr/share/psa-horde/... auf /etc/psa-horde/... verweisen!
Ich habe das dann einzeln kopiert (vielleicht speziell bei 1und1 Server).
Plesk scheint standardmäßig die Horde-Configfiles nach /etc/psa-horde zu legen und Symlinks draufzulegen. Allerdings solle cp im Normalfall diesen folgen und die Zieldatei überschreiben. Wahrscheinlich ist beim 1und1-Teplate/bei deiner Distro ein cp-alias gesetzt, der das Verhalten bei Symlinks beeinflusst (dürfte -d sein, das sollte bei meinem HowTo oben nicht gesetzt sein)

Auch die Syncronisation klappt vorerst bestens. Werde aber noch etwas testen.
Man sollte vielleicht dazu sagen, dass SyncML (noch) kein sehr zuverlässiges Protokoll ist. So bietet mir z.B. das Telefonbuch meines Smartphone eigene Felder bei Kontakten, die aber nicht übernommen werden. Und ich musste auch feststellen, dass ganztägige Termine dort als ein Ereignis von 0:00-23:59 angezeigt werden.
Das ist sicherlich alles nicht so ganz optimal, aber für meine Bedürfnisse reicht es.
 
Man sollte vielleicht dazu sagen, dass SyncML (noch) kein sehr zuverlässiges Protokoll ist. So bietet mir z.B. das Telefonbuch meines Smartphone eigene Felder bei Kontakten, die aber nicht übernommen werden. Und ich musste auch feststellen, dass ganztägige Termine dort als ein Ereignis von 0:00-23:59 angezeigt werden.
Das ist sicherlich alles nicht so ganz optimal, aber für meine Bedürfnisse reicht es.

Das zuordnen einzelner Felder beim Synchronisierern ist ja wohl nicht möglich!

Allgemeine Adressen im E90 werden nicht auf den Server überträgt. Nur mit dem Zusatz (privat) oder (dienstlich) baut er einen entsprechenden Adresseintrag auf dem Server zusammen.
Vom Server zurück packt er den kompletten Adresseintrag(ist ja nur ein Feld) in die Strasse(privat) oder Strasse(dienstlich).
Aber auch bei mir lässt sich damit auskommen!
 
Vielen Dank für die Beschreibung! Hat alles soweit geklappt, eine Kleinigkeit aber noch:

Nach dem Update werden im "Nachricht verfassen"-Fenster keine Felder "CC" und "BK" mehr angezeigt. Dieser Fehler soll durch den Ersatz der prefs.php durch die prefs.php.dist (in /usr/share/psa-horde/imp/config) behoben werden.

Leider geht das nicht ganz so einfach! Die Lösung:

Vorm Austausch folgende Änderung in Zeile 9 der prefs.php.dist vornehmen:

PHP:
require_once dirname(__FILE__) . '/../lib/IMP.php';
ändern in
PHP:
require_once dirname(__FILE__) . '/IMP.php';

Anschliessend einen Link anlegen
Code:
ln -s /usr/share/psa-horde/imp/lib/IMP.php /etc/psa-horde/imp/IMP.php

Nun kann die prefs.php mit der modifizierten Version überschrieben werden und die fehlenden Felder im Mail-Formular sind wieder da!
 
Back
Top