自前メールサーバで、iPhoneにメール着信のプッシュ通知を受け取る

CentOS6+Postfix+Dovecotな環境で自前メールサーバを運用している。
表題のようなことはできないと思っていたが、やってみたら簡単にできた。
日本語の扱いに問題があると指摘しているサイトもあるが、試した限りでは問題は見つけられない。
バージョンアップで修正されたということだろう。

概要

Z-PushなるPHPソフトを利用する。
デーモンとして起動するようなものを想像していたが、PHPなのは驚いた。
どういう仕組みなのか興味を持ったので、いずれ勉強したい。

設置作業

公式サイトからダウンロードして展開し、サーバの適当な場所に配置し、Apacheが読み書きできるように所有者とパーミッションを設定。
取説には/usr/share/z-pushに設置するように書かれていたが、Apacheの扱うものはまとめておきたいので、ここでは/var/www/z-pushに配置した。今のところ特に問題は起きていない。

次にconfig.phpを設定。
ここでは

 define('TIMEZONE', 'Asia/Tokyo');

 define('BACKEND_PROVIDER', 'BackendIMAP');

の2カ所を変更。
最後にApacheの設定。ここではhttpd.confに以下を追記した。

Alias /Microsoft-Server-ActiveSync /var/www/z-push/index.php
<Directory "/var/www/z-push">
AddType application/x-httpd-php .php
php_flag magic_quotes_gpc off
php_flag register_globals off
php_flag magic_quotes_runtime off
php_flag short_open_tag on
</Directory>

これでApacheを再起動したら、
http://[ドメイン]/Microsoft-Server-ActiveSync
にアクセスし、

GET not supported
 This is the Z-Push location and can only be accessed by Microsoft ActiveSync-capable devices

とか書かれたエラーページが表示されれば、ここまでは成功。

iPhoneの設定

設定アプリからメールアカウントを追加、アカウントの種類はExchangeを選択。
メールアドレスやIMAPのパスワードを求められるままに入力。
認証できませんとのエラーが出るが、とにかくアカウント設定を保存。
追加したアカウントの設定を開き、詳細設定からSSLの使用を外す。
これでエラーが出なくなり、メールアプリでメールの確認が可能に、そしてプッシュ通知を受け取る設定も可能になる。