Z-Push auf einem ISPConfig3 Server (Debian Lenny) installieren


Autor: Alexander Fox <howtoforge [at] planetfox.de [dot] de>

Create: 29/04/10

Version 1.0

Folge mir auf Twitter | Diese Seite     zu Mister Wong hinzufügen Folge mir auf Mr Wong
Diese Anleitung beschreibt wie man auf einem ISPConfig 3 Server Z-Push installiert.

Z-Push ist eine Implementierung des Active Sync Protokolls, die unter anderem die Kommunikation mit Windows Mobile sowie mit Mobiltelefonen von Nokia oder Apple ermöglicht. Das wichtigste ist jedoch daß wenn die Endgeräte über die Push-Mail Funktion verfügen, auch Push-Mail über ActiveSync-Protokoll empfangen können.

Z-Push ist eine Eigenentwicklung der Zarafa Groupware. Zarafa ist eine Groupware-Server-Software für Linux ähnlich dem Microsoft Exchange Server.

Diese Anleitung gewährt keine Garantie! Da dies nicht die einzige Möglichkeit ist solche ein System aufzusetzen, habe ich mir diesen Weg ausgesucht. Leider kann ich nicht garantieren, dass es bei Dir genauso funktioniert.

Du musst alle schritte als root ausführen. Benutze die letzte Version von z-push. Mehr Informationen findest du unter http://z-push.sourceforge.net/soswp/index.php?pages_id=39&t=Download

1.Installation

Ihr benötigt ein Web. In meinem Fall habe ich ein Web in Ispconfig3 erstellt und nenne es push.example.com

Eventuell müsst Ihr noch ein paar PHP Module installieren, die benötigt werden.

aptitude install php5-imap php-mail php-mail-mime

Nun können wir Z-Push herunterladen und entpacken.

cd /tmp

wget http://download.berlios.de/z-push/z-push-1.3RC3.tar.gz

tar zxf z-push-1.3RC3.tar.gz

mv z-push /var/clients/client1/web1/web/#


2.Einstellungen

Editiere die z-push/config.php:

cd /var/clients/client1/web1/web/z-push

nano config.php
- setze deine Zeitzone unter date_default_timezone-set (zeile 14) auf Deine Ortszeit.


In meinem Fall sieht dies so aus:

// Defines the default time zone

if (function_exists("date_default_timezone_set")){

date_default_timezone_set("Europe/Berlin");

}

Nun ändere den $BACKEND_PROVIDER auf BackendIMAP (Zeile 49)

// The data providers that we are using (see configuration below)

$BACKEND_PROVIDER = "BackendIMAP";

...beende den Editor und speichere die Einstellungen.

Lösche die Datei backend/ics.php

rm /var/clients/client1/web1/web/z-push/backend/ics.php

Gebe dem Ordner z-push/state Schreibrechte für den Webserver:

chmod 777 /var/clients/client1/web1/web/z-push/state

Erstelle eine .htaccess Datei:

nano .htaccess

...und füge folgende Zeilen hinzu:
php_flag magic_quotes_gpc off
php_flag register_globals off
php_flag magic_quotes_runtime off
php_flag short_open_tag on
Du kannst diese Einstellung auch über die Apache Directive im ISPCOnfig3 System eingeben:


Füge einen Alias /Microsoft-Server-ActiveSync /var/clients/client1/web1/web/z-push/index.php
in Eure httpd.conf hinzu:

cd /etc/apache2/

nano httpd.conf

...am Ende der Konfiguration am besten:

Alias /Microsoft-Server-ActiveSync /var/clients/client1/web1/web/z-push/index.php

Nun starte Deinen Webserver neu:

/etc/init.d/apache2 restart

Setze die Webseite, die Du am Anfang in ISPConfig3 erstellt hast, in den PHP modus: Mod-PHP_


Nun gehe auf das Web - bei mir ist dies push.example.com/Microsoft-Server-ActiveSync ,

es erscheint mit ein bißchen Glück ein Login Popup-Screen. Nutze die Email Adresse und das Passwort eines IMAP Benutzerkontos. Danach kommt ein Fehler:
GET not supported
This is the z-push location and can only be accessed by Microsoft ActiveSync-capable devices.
Dieser Fehler ist normal, denn Du versuchst Zugriff zu Z-Push über einen Browser zu bekommen. Alles was Du benötigst, ist dein Mobiltelefon.Die Serveradresse des Servers, die Du für dein Mobiltelefon benötigst,  ist push.example.com/index.php. Du benötigst nicht Z-push oder Microsoft-Server-ActiveSync. Hast Du Probleme, kannst Du eine debug.txt erstellen im root Verzeichnis von z-push. Die debug.txt wird alle Aktivitäten logen und gibt einige extra Informationen aus,  um Probleme schneller zu finden:

touch /var/clients/client1/web1/web/z-push/debug.txt

chmod 777 /var/clients/client1/web1/web/z-push/debug.txt


3. SSL

Es lässt sich natürlich auch einstellen, wenn Ihr einen SSL fähigen IMAP Server in der config.php habt.


Die Einstellung ändern, damit über SSL zugegriffen werden kann. Dazu folgendes hinzufügen:
$BACKEND_PROVIDER ="BackendIMAP";
define('IMAP_SERVER', 'imap.server.com'); define('IMAP_PORT', 143); define('IMAP_OPTIONS', '/notls/norsh/novalidate-cert'); define('IMAP_SENTFOLDER', '');

4. iPhone

Bei iPhone Telefonen sollte man folgende Einstellungen vornehmen, damit Z-Push sauber funktioniert.

a) Mails dürfen nicht als gelesen markiert werden, da sonst keine Benachrichtigung kommt.

b) Passen wir Z-Push so an, dass ihr die Mails verschieben könnt! Löschen ist derzeit noch nicht möglich mit dem iPhone.

Mails nicht als gelesen markieren
Sucht in der  backend/imap.php nach folgender Zeile:
$mail = @imap_fetchheader($this->_mbox, $id, FT_PREFETCHTEXT | FT_UID) . @imap_body($this->_mbox, $id, FT_PEEK | FT_UID);
und ersetzt diese mit:
$mail = @imap_fetchheader($this->_mbox, $id, FT_UID) . @imap_body($this->_mbox, $id, FT_PEEK | FT_UID);
Mails verschieben können
Sucht in der  backend/diffbackend.php nach folgender Stelle:
function ImportMessageMove($id, $newfolder) {
und setzt nun vor return true;
$this->_backend->MoveMessage($this->_folderid, $id, $newfolder);
Mit diesen beiden Anpassungen könnt Ihr die Push-Funktionalität mit jedem beliebigen IMAP Account und dem iPhone (fast) komplett ausnutzen.

Links

HowTo Forge com: Beitrag edge How To Install Z-Push On An ISPConfig 3 Server (Debian Lenny)
http://www.kilrathy.net
http://www.kilrathy.net/sites/z-push-und-das-iphone.html
BerliOS Developer
Z-Push
Autor: Alexander-fox.com