Syncevolution und EGroupware

Nachdem die Synchronisierung mit dem Android-Smartphone hinreichend gut funktionierte, kam der Wunsch auf, auch auf dem Desktop-Rechner die Kontakte und Termine im Offline-Fall zur Verfügung zu haben.

Die Termine waren zwar schon als CalDAV-Server in Evolution eingebunden und damit im GNOME-Applet bequem verfügbar, aber das benötigte eine funktionierende Internet-Verbindung.

Zeit sich mit syncevolution zu beschäftigen…

Die große Hürde bei syncevolution ist es, eine initiale Konfiguration zu erzeugen. Ich habe dazu zunächst sync-ui aufgerufen, dann aber die Konfiguration vor dem ersten Syncen abgebrochen, um die erzeugten Dateien unter .config/syncevolution manuell anzupassen.

SSL

Die Verbindung mit dem EGroupware-Server im Internet soll selbstverständlich verschlüsselt erfolgen. Da der Server mit einer eigenen CA betrieben wird, galt es zunächst dieses CA-Zertifikat syncevolution bekannt zu machen. Glücklicherweise gibt es dazu in der Datei .config/syncevolution/default/peers/egw/config.ini die Option SSLServerCertificates. Die durch Doppelpunkt getrennte Liste suggeriert zwar, daß man mehrere ctr-Dateien gelesen werden, trotzdem führte der folgende Eintrag zu der Fehlermeldung "The SSL certificate is not trusted.":

SSLServerCertificates = /etc/ssl/certs/ca-certificates.crt:/path/to/own/ca.crt

Obwohl die erste Datei lesbar war wurde die Überprüfung offenbar nach der ersten CA-Datei abgebrochen. Enthält der Eintrag dagegen nur die eine benötige CA, dann kommt eine SSL-Verbindung zustande.

Die verwendete libsoup versteht übrigens auch Wildcard-SSL-Zertifikate, sodaß man SSLVerifyHost auf "1" setzen kann.

Beim ersten Mal syncen muß man syncevolution mit --sync refresh-from-server profilname explizit anweisen, die Daten vom Server zu kopieren. Auf den ersten Blick sind danach alle Daten zu evolution synchronisiert. Nach den Erfahrungen mit EGroupware <-> Android lohnt es sich aber nachzusehen, wie genau synchronisiert wird. Der Einfachheit halber habe ich mich an die gleichen Testfälle angelehnt. L steht im Folgenden für "lokal/Evolution" und S für "Server/EGroupware". Eingesetzte Programmversionen: Evolution 2.28.3, syncevolution 0.9 (unter Ubuntu 10.04) und EGroupware 1.8.001 .

Kurze Zusammenfassung: Durchaus brauchbare Synchroniserung.

Test Adressbuch

L: Neuer Kontakt, nur Nachname, Vorname und Telefonnummer mit Umlauten. Syncen.
-> OK, Umlaute sind vorhanden.

L: Ändern von Telefonnummer Typ privat auf Typ mobil. Syncen.
-> NOK, in S sind zwei Telefonnummern enthalten: Alte private und neue mobile

S: Hinzufügen einer geschäftlichen Faxnummer. Syncen.
-> OK, Faxnummer erscheint auch auf L unter geschäftlich.

S: Hinzufügen einer privaten Faxnummer. Syncen.
-> OK, Faxnummer erscheint auch auf L unter privat.

L: Löschen der geschäftlichen Faxnummer. Syncen.
-> NOK, in S ist geschäftliche Faxnummer weiterhin verfügbar.

L: Private Faxnummer ändern. Syncen.
-> OK, wird korrekt gesynct.

S: gesch. Email hinzufügen. Syncen.
-> OK, auch bei L erscheint geschäftliche Emailadresse.

L: Hinzufügen zweite private Emailadresse. Syncen.
-> OK, zweite Emailadresse überschreibt erste auf S. Zweite Emailadresse in EGroupware-Datenmodell nicht vorgesehen.

L: Zweite private Emailadresse löschen. Syncen.
-> OK, vormals erste Emailadresse wird wieder genommen auf S.

L: Private Adresse (Straße, Ort, PLZ) hinzugefügt. Syncen.
-> OK, tauchen auch in privat-Reiter in eGW auf.

S: Geschäftliche Adresse hinzugefügt. Syncen.
-> OK, auch berufliche Adresse bei L.

L: Firma/Organisation hinzugefügt. Syncen.
-> OK, taucht auch bei S auf.

S: Geburtstag hinzugefügt: 01.01.1975 . Syncen.
-> OK, taucht auch bei L auf.

L: Notiz hinzugefügt. Syncen.
-> OK, Notiz taucht bei S auf. Geburtstag weiterhin 01.01.1975.

S: Mehrzeiligen Text mit Umlauten in Notizfeld schreiben. Syncen.
-> OK, Umbrüche und Umlaute erscheinen auf L.

S: Text ergänzen auf insgesamt 2634 Byte und Zeilenlänge von über 277 Zeichen. Syncen.
-> OK, taucht auch bei L auf.

L: Ändern der Notiz, verlängern der 277 Zeichen – Zeile um ein paar Umlaute. Syncen.
-> OK, Änderung auch bei S vorhanden.

L: Einfügen von Meta-Zeichen #$%6“’:;?&<> \n . Syncen.
-> NOK, „\n“ wird zu „\“. Alles andere aber vorhanden.

S: Leerzeichen in Notizfeld hinzugefügt und wieder entfernt. Syncen.
-> OK, „n“ von „\n“ fehlt nur auch in L.

S: Geburtstag auf 31.12.1969 ändern. Syncen.
-> OK, auch auf L.

S: Geburtstag auf 29.02.1920 ändern (Schaltjahr). Syncen.
-> OK, auch auf L.

L: Hinzufügen einer Jabber-Adresse. Syncen.
-> NOK, EGroupware kennt Konzept von Chatadressen nicht.

L: Hinzufügen einer „Website“. Syncen.
-> OK, erscheint in S.

S: Ändern des Nachnamens. Syncen.
-> OK, erscheint in L.

L: Anlegen eines zweiten Datensatzes mit gleichem Namen und Vornamen. Syncen.
-> Meldung von Evolution über potentielle Dublette, aber OK, wird synchronisiert auf S.

S: Ändern eines Telefonnummer-Felder des zweiten Eintrags. Syncen.
-> OK. Auch auf L verfügbar.

S: Zweiten Kontakt löschen. Syncen.
-> OK, auch auf L gelöscht.

L: Neuen Kontakt anlegen. Syncen. Kontakt auf L löschen. Kontakt auf S löschen. Syncen.
-> OK, Kontakt bleibt auf beiden Seiten gelöscht

L: Bild hinzufügen. Syncen.
-> OK, Bild erscheint auch auf E.

S: Bild löschen. Syncen.
-> OK, Bild verschwindet auch auf L.

S: Zweiter Vorname und Zusatz hinzufügen. Syncen.
-> OK, verfügbar auf L. „Zusatz“ heisst hier „Suffix“.

S: Änderung in Firmen-Feld. L: Änderung in Firmen-Feld. Sync.
-> OK, Nur Server-Änderung wird übernommen auf beiden Seiten.

S: Änderung im Vornamens-Feld. L: Änderung im Nachnamens-Feld. Sync.
-> OK, nur Server-Änderung auf beiden Seiten verfügbar nach Sync.

L: Neue Adresse hinzufügen. syncevolution aufrufen mit –sync refresh-from-server profilName
-> OK, Daten lokale Daten werden gelöscht, neue Adresse nicht mehr verfügbar. Daten aus S werden übernommen.

Test Kalender

S: Neuer Termin mit Umlauten in Titel und Ort. Sync.
-> OK, Sync auch mit Umlauten. OK

L: Verschieben Termin um eine Stunde. Sync
-> OK, Termin auch um eine Stunde bei S verschoben.

S: Markierung als ganztägig. Sync.
-> OK, Ebenfalls ganztägig.

L: Ändern des Titels und des Datums. Sync.
-> OK, bei S auch verschoben.

S: Ändern von ganztägig auf tagesübergreifend: 22 – 2 Uhr. Sync.
-> OK, tagesübergreifend auch bei L. Allerdings wird zunächst als Zeitzone UTC angezeigt und als Zeitraum 21 – 1 Uhr. Nach Refresh (Kalender ausschalten und wieder einschalten) jedoch korrekte Anzeige und Info über Zeitzone verschwindet bzw. steht auf "Europe/Berlin".

L: Ändern des Beschreibungsfeldes. Sync.
-> OK, auch auf S.

S: Wiederholung täglich. Endedatum 3 Tage später. Sync.
-> NOK, Wiederholungstyp stimmt. Aber Zeitzonen-Problem diesmal persistent. Evolution-Absturz.

L: Ändern des Titels. Sync.
-> OK, Titel geändert. Wiederholungstyp unverändert. Zeitzone "UTC" von L wird ignoriert (wurde aber auch nicht per syncML explizit gesetzt).

L: Ändern auf Wiederholungstyp "täglich", ohne Enddatum
-> NOK, auf S ist zwar kein Ende-Datum mehr Erkennbar, allerdings ist der Termin an späteren Daten im Kalender nicht sichtbar.

S: Zurückändern auf einmaligen Termin, ohne Wiederholung. Syncen.
-> NOK. Umwandlung auf einmaligen Termin in S nicht möglich! -> Fehler in S!

L: Umstellung auf "wöchentlich (jeden Freitag). Sync.
-> OK, "wöchentlich" auch hier. Diesmal Anzeige korrekt.

L: Erinnerung "10 Minuten vorher" hinzugefügt. Sync.
-> OK, Alarm auch in S verfügbar.

S: Alarm "2 Tage vor dem Termin" für alle Teilnehmer hinzugefügt. Sync.
-> NOK, in S alle beiden Alarme sichtbar, auf L nur "2 Tage"

L: Erinnerung "7 Tage vorher" dazugefügt. Sync.
-> NOK, 10 Minuten Alarm gelöscht und mit 7 Tage ersetzt, aber auf beiden Seiten.

S: Löschen aller Alarme. Sync.
-> OK, keine Alarme mehr auf beiden Seiten.

L: Anlegen "1h vorher". Sync
-> OK, auch auf S.

S: Löschen Alarm. Sync.
-> OK, auch auf L gelöscht.