Z-Push
Nastały ciekawe czasy. Co trzeci, sprzedany w 2011 roku, telefon to smartphone. Ludzie chcą sprawdzać maile na telefonie, surfować po internecie i w ogóle robić dziwne rzeczy, których wcześniej nie mogli robić będąc poza domem. Google Mail oraz inne duże portale mailowe wspierają ActiveSync, ale co jeśli w swoim prywatnym grajdole też chcemy mieć fancy push maila zamiast co jakiś czas sprawdzać czy dostaliśmy maila (czy to automatycznie czy ręcznie). Można kupić ActiveSync i postawić serwer na Windowsie. Można też skorzystać z Z-Push, darmowej implementacji ActiveSync w PHP.
Konfiguracja
Jeśli mamy PHP odpalone jako moduł Apache, to skonfigurowanie stabilnej wersji Z-Push 1.5.7 sprowadza się do edycji pliku config.php. Jeśli natomiast, tak jak ja, mamy PHP jako CGI, to rzeźby jest troszkę więcej.
Na początek trzeba w .htaccess przesłać do PHP zmienną HTTP_AUTHORIZATION:
RewriteEngine on RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
Następnie musimy nauczyć PHP funkcji apache_request_headers() (ta funkcja jest dostępna w PHP jako moduł), ja dopisałem do index.php:
if (!function_exists('apache_request_headers')) { function apache_request_headers() { $header = array(); $header['Ms-Asprotocolversion'] = $_SERVER['HTTP_MS_ASPROTOCOLVERSION']; $header['X-Ms-Policykey'] = $_SERVER['HTTP_X_MS_POLICYKEY']; $header['User-Agent'] = $_SERVER['HTTP_USER_AGENT']; return $header; } list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6))); }
Następnie edytujemy config.php i ustawiamy backend na BackendIMAP i odpowiedni port. Jeśli chcemy możemy tam ustawić jeszcze parę opcji.
Kolejna bardzo ważna rzecz, to ustawienie aliasów w konfiguracji Apache:
Alias /Microsoft-Server-ActiveSync /path/to/z-push/index.php
Aby sprawdzić czy wszystko działa wchodzimy na adres http://mojadomena/Microsoft-Server-ActiveSync. Powinno spytać nas o login i hasło. Podajemy nasze dane do poczty. Jeśli wszystko jest ok, powinno nas wpuścić i napisać gdzieś na grubo: GET not supported. Znaczy, że działa.
Teraz można już skonfigurować smartphone’a by korzystał z Microsoft Exchange i wpisać dane swojego serwera mailowego. Testowałem na iPhone 4s i Samsung Galaxy S – na obu urządzeniach nie było problemów.
Możliwe jest włączenie autodetekcji ustawień serwera. Nie różni się to w przypadku PHP jako CGI niczym jak w przypadku modułu, dlatego nie będę o tym pisał. Zaciekawionych zachęcam do poszperania w Google. Ułatwia to mniej obeznanym użytkownikom konfigurację, ponieważ wypełnia pole serwera automatycznie.
Bijcie!
Przepraszam, że zabrzmię, jak stary dziad, ale proszę nie pomijać wcięć przy kodzie – okropnie się to czyta.
Tak w ogóle, to masz zaburzone formatowanie w dalszej części tekstu.
Dzięki, tag się nie domknął ;)