Juni 11

Z-Push mit IMAP Anbindung

Für meine privaten Mails habe ich Postfix+Dovecot und den
üblichen Zusätzen (Amavis, Spamassassin) am laufen.
Das läuft auch einwandfrei, allerdings wollte ich immer gern
meine Mails per Push auf’s Handy bekommen und nicht
an den Abruf im mehrmütigen Intervall gebunden sein.

Eine Möglichkeit dafür ist der Abruf per IMAP-Idle. Das können
die iPhones allerdings derzeit nicht. Stattdessen kann man dafür
Z-Push hernehmen. Die Installation läuft recht schmerzfrei:

Man benötigt dafür (neben einem funktionstüchtigen Webserver+php)
u.a. noch das Paket php-soap
apt-get install php-soap
und natürlich Z-Push selbst: http://z-push.org/download/
nachdem man sich die aktuelle Version (bei mir war das 2.2.9) geladen hat,
extrahiert man diese per tar -xzvf und verschiebt sie in seinen Webspace.

An dieser Stelle gehe ich von /var/www/z-push als Zielverzeichnis aus und
www-data als User&Group des Webservers.

Der Webserver benötigt Rechte im Verzeichnis, also:
chown -R www-data:www-data /var/www/z-push

Darüber hinaus wird noch je ein Verzeichnis für die States und Logs benötigt,
in denen ebenfalls die Rechten stimmen müssen:
mkdir /var/lib/z-push
mkdir /var/log/z-push
chown -R www-data:www-data /var/lib/z-push
chown -R www-data:www-data /var/log/z-push
chmod 750 /var/lib/z-push
chmod 750 /var/log/z-push

Weiter geht es mit der Config des Z-Push selbst (/var/www/z-push/config.php).
Hier gibt es nicht allzu viel anzupassen, die originalen Zeilen
habe ich dabei zum Vergleich jeweils auskommentiert:

Die Zeitzone ist noch leer, hier gehen wir mal von Deutschland aus:
// define('TIMEZONE', '');
define('TIMEZONE', 'Europe/Berlin');

Als Backend-Provider wählen wir den Zugriff per IMAP:
// define('BACKEND_PROVIDER', '');
define('BACKEND_PROVIDER', 'BackendIMAP');

Neben diesen beiden Einstellungen, musste ich bei mir noch festlegen,
dass der Login mit voller Mail-Adresse geschieht, da ich mehrere Domains
auf dem Mailserver betreibe. Standardmäßig will sich Z-Push nur mit
dem Teil vorm @-Zeichen einloggen:
// define('USE_FULLEMAIL_FOR_LOGIN', false);
define('USE_FULLEMAIL_FOR_LOGIN', true);

Und noch eine Besonderheit:
Falls pro Handy mehrere Mailaccounts per Z-Push bedient werden sollen,
wird derzeit noch ein Workaround benötigt. Hierzu muss folgendes an das Ende
der config.php (vor dem schließenden ?>):
if (isset($_GET['DeviceId']) && isset($_GET['User']) && $_GET['DeviceId'] != "")
$_GET['DeviceId'] = sha1($_GET['DeviceId'].":".$_GET['User']);

Quelle dazu: https://github.com/fmbiete/Z-Push-contrib/issues/97

Soviel zur Z-Push Config. Nun muss noch eine Anpassung im Webserver
vorgenommen werden, in meinem Fall ein Apache.
In die Konfiguration der VHosts, bei mir
/etc/apache2/sites-available/000-default.conf , habe ich dafür einen Alias gesetzt:
Alias /Microsoft-Server-ActiveSync /var/www/z-push/index.php
<Directory /var/www/z-push>
php_flag magic_quotes_gpc off
php_flag register_globals off
php_flag magic_quotes_runtime off
php_flag short_open_tag on
</Directory>

Diesen Eintrag habe ich sowohl im VirtalHost für Port 80, als auch für Port 443
gesetzt, da ich auch einen SSL-Zugriff ermöglichen möchte.
Der Hintergrund des Alias ist, dass z.B. iPhones für einen Exchange/Push Abruf
eben das Verzeichnis /Microsoft-Server-ActiveSync erwarten.

Das wars. Nun kann auf dem Handy ein Exchange-Mailkonto mit den Zugangsdaten
eingerichtet werden, die auch bisher für den Mailabruf genutzt wurden und die Mails
werden fortan komfortabel und zeitnah per Push zugestellt.


Schlagwörter: , ,

Veröffentlicht11. Juni 2016 von gerger in Kategorie "Allgemein

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.