blog.bartlweb - a technologist's external brain

ActiveSync für Zimbra mit Z-Push

Mit der PHP-Lösung Z-Push (http://z-push.org/) und der Erweiterung Z-Push Zimbra Backend (http://sourceforge.net/projects/zimbrabackend/) können Sie auch der Community Edition von Zimbra das proprietäre Protokoll ActiveSync für die einfache Synchronisiation von Mobilgeräten beibringen. Dabei wird das Synchronisieren von E-Mails, Kontakten und Kalender, nicht aber das von Notizen, unterstützt.

Installation

Als Voraussetzung für die Installation benötigen Sie einen Webserver mit PHP. Laden Sie Z-Push herunter und entpacken Sie den Ordner in Ihrem Root-Verzeichnis (im Idealfall legen Sie dafür einen eigenen virtuellen Host an).

Auf meinem System (OpenSuse) musste ich auch noch das PHP-Paket posix nach installieren.

Danach laden Sie das Zimbra Backend herunter, benennen den darin enthaltenen Ordner z-push-2 in zimbra um und kopieren diesen nach <z-push>/backend/.

Zuletzt benötigt Z-Push noch einen Ordner für Arbeitsdateien und einen Ordner für Log-Dateien mit den entsprechenden Zugriffsrechten für jenen Nutzer unter dem auch der Webserver ausgeführt wird. Erstellen Sie dafür die Ordner /var/lib/z-push/ und /var/log/z-push/.

Konfiguration

Jetzt können wir Z-Push für den Betrieb mit unserem Zimbra-Mailserver konfigurieren. Ändern Sie dazu in der Datei <z-push>/config.php im Abschnitt Backend settings die folgende Zeile

define('BACKEND_PROVIDER', '');

auf

define('BACKEND_PROVIDER', "BackendZimbra");

Nun müssen wir in der Datei <z-push>/backend/zimbra/config.php noch die URL unseres Zimbra-Mailservers eintragen und eine Direktive setzen, dass Zimbra nicht versucht die Domain für die Verbindung vorzugeben (Wichtig, wenn eine interne IP-Adresse für die Verbindung genutzt werden soll).

define('ZIMBRA_URL', 'https://your.mailserver.com');
define('ZIMBRA_DISABLE_URL_OVERRIDE', true);

Werfen Sie auch einen Blick in die vom Zimbra Backend mitgelieferte Installationsanleitung <z-push>/backend/zimbra/INSTALL. In jedem Fall müssen Sie für den Betrieb von Z-Push mit Zimbra die folgende Codeänderung an der Funktion RowCmp() zu finden in der Datei <z-push>/lib/default/diffbackend/diffstate.php vornehmen:

static public function RowCmp($a, $b) {
        // TODO implement different comparing functions
//        return $a["id"] < $b["id"] ? 1 : -1;
// VJS - For ZIMBRA backend - need to use STRING comparisons - and allow strcmp to return 0 for equal
// Zimbra->Logon() function will test compare two equal strings to verify presence of this fix.
        return strcmp( $b["id"], $a["id"] ) ;
}

Troubleshooting

Sollte Z-Push beim Aufruf im Browser anstelle einer Benutzerauthentifizierung nur eine weiße Seite anzeigen liegt dies unter Umständen an einem PHP-Fehler verursacht durch ein fehlendes PHP-Modul. Prüfen Sie dazu die Fehlerlogs Ihres Webservers.

Diese weiße Seite erhalten Sie je nach Versionssprung auch nach einem Update von Z-Push auf eine neue Version. Das Problem können Sie durch Löschen des Inhalts des Arbeitsverzeichnisses /var/lib/z-push lösen - wobei hier alle Synchronisationen zurückgesetzt werden und sich Ihre Geräte darauf hin frisch synchronisieren (was unter Umständen zum Löschen der Daten führen kann). Oder eleganter durch Ausführen des Migrationsscripts unter <z-push>/tools. Nähere Informationen dazu finden Sie unter /var/log/z-push/z-push-error.log.

Dieser Artikel hat Dir deinen Tag gerettet?

... und mühevolles Probieren, Recherchieren und damit Stunden an Zeit gespart? Oder einfach nur Dein Problem gelöst?

Dann würde ich mich freuen, wenn Du meine Zeit für die Erstellung dieses Blogartikels mit einer kleinen Anerkennung honorierst:

Zahlung mit PayPal oder Kreditkarte.

Hinweis zur Verwendung

Die Übermittlung einer Zahlung ist eine persönliche Anerkennung Ihrerseits an den Entwickler (Christian Bartl, Privatperson). Eine Zahlung ist nicht zweckgebunden und es ist keine Gegenleistung zu erwarten. Bitte beachten Sie, dass für eine übermittelte Zahlung keine Quittung ausgestellt werden kann.

Über den Autor

Christian Bartl

Christian Bartl Requirements Engineer
& Solution Architect für Online und Mobile

Als Technologie-Enthusiast und begeisterter Programmierer entwickle ich in meiner Freizeit Websites, Software und IT-Lösungen, die mir selbst und anderen den Alltag vereinfachen.

mehr auf christian.bartl.me

Kommentare

Noch kein Kommentar vorhanden.
Sei der Erste! - Ich freue mich über deine Anmerkung, Kritik oder Frage.

Kommentar schreiben

Der hier angegebene Name wird gemeinsam mit deinem Kommentar auf der Website veröffentlicht.

Deine E-Mail-Adresse wird zur einmaligen Benachrichtigung bei Veröffentlichung des Kommentars genutzt.

Benachrichtigung per E-Mail über Antworten auf meinen Kommentar erhalten.

Bitte tippe die Zahlenkombination "8076" ein, nur dann kann ich deinen Kommentar entgegennehmen.

Bitte fülle dieses Feld nicht aus, nur dann kann ich deinen Kommentar entgegennehmen.