iPhone は、 SNS/MMS か @i.softbank.jp に届いたメールならすぐに Push 通知で知らせてくれるが、それ以外のメールに関しては一定時間ごとに fetch で取ってるのでどうしてもメールが届いてから気づくまでにラグが生じる。(Microsoft Exchange 対応のアカウントなら Push 取得可)
自鯖の IMAP アカウントがメインな自分は、それが結構不便。
iPhone OS 3.0 から Push Notification API が解放されたので、 @i.softbank.jp みたく、メールが届いたら Push で通知してくれるようなサービスがあれば…とおもって調べてみたら、結構いろんなアプリがリリースされてた。
今回はそのうちの一つ、 MailTones というアプリを使用した。
通知の仕組みとしては、届いたメールをサービス登録時に発行されるユニークなメールアドレスへ転送する。すると、転送されたメールを受信したサーバーがその情報を即座にアプリがインストールされた iPhone へ Push 通知を送信してくれる。という形。
この形態だと、転送先のサーバーに処理が集中してしまう形になるが、 MailTones はフレームワークに Amazon EC2 を使用しているため、処理能力は申し分ない。 「通知の取りこぼしが少なそう」というのが、決め手の一つになった。
.
Push で通知されるのは送信者と件名のみ。自分の管理下にないアドレスへ本文も丸ごと転送するのは嫌なので、ヘッダ部分のみ切り取って転送するように procmail のレシピを書いた。
:0 c | awk 'FNR==1{while(1){print;if($0~/^$/){break}getline}}' | $SENDMAIL ****@mailtones.net
awk で最初の空白行までを読み込み、転送するようにしてみた。
が、 procmail のオプションを使えば事足りると言うことに気がついたw
:0 hc ! ****@mailtones.net
シンプルが一番。これでわざわざ @i.softbank.jp とかにメールを転送しなくても大丈夫になった。