■CommuniGate ProでAndroid端末をリモートワイプ
Microsoft Exchangeの代替ソリューションのひとつであるCommuniGate ProでAndroid端末のリモートワイプ実験をしたメモ。CommuniGate Proはキャリアグレードのスケーラビリティと安定性を誇るソフトウェアにも関わらず5ユーザまで無償で利用可能で、ExchangeサーバのActiveSyncと近似した機能をAirSyncという名前で提供しており、これも無償ライセンス内で利用できる。このActiveSync互換のAirSyncを利用して、メッセージの同期とリモートワイプの実験を行う。試したのは手持ちのNexusOne (CyanogenMod7 Android 2.3.3)、GalaxyTab (Froyo XXJK5 Android 2.2)、Desire HD 001HT (標準 Android 2.2)の3つ。Android1.x系はそもそもExchange連携未対応なので対象外。CommuniGate Proのバージョンは5.3.11。
設定は簡単。インストール済みのCommuniGate Proを用意してアカウントを作成、Android側ではExchange同期アカウントを利用して、CommuniGate Proのアカウントを設定してやればいい。注意点は以下。
・CommuniGate Pro側でHTTPの待ち受けをTCP80/443に設定すること(※追記参照)
AirSyncはこれらのポート以外では動作しない
・Android側でアカウントを指定する時には@以下も記述すること
■実験結果
1)NexusOne
メッセージとアドレス帳の同期はOK。カレンダー同期はNG。
リモートワイプは信号受信するものの無視。
2)GalaxyTab
メッセージとアドレス帳の同期はOK。カレンダー同期はNG。
リモートワイプは信号受信するものの無視。
3)Desire HD 001HT
メッセージとアドレス帳の同期はOK。カレンダー同期はNG。
リモートワイプは信号受信し即端末全体を初期化。
メッセージとアドレス帳はどれも問題なく同期できたが、カレンダーがエラーとなり同期できなかった。リモートワイプが実行できたのは001HTのみ。Exchangeサーバだと端末側でアカウント作成時にデバイス管理者の追加設定許可を求められるはずのところを、CommuniGate Proではそのダイアログが出てこないことから、ActiveSyncとAirSyncで一部動作が異なっていることが確認できた。また端末側でもHTCのカスタマイズにより001HTでは本来Android2.2以降にあるはずのデバイス管理者設定項目が消失していることから、どうやらデバイス管理者設定の状態によりリモートワイプが実行できるかどうかが判断されているようだ。HTCの端末では2.1の頃から独自にExchange対応をしていたり、HTC Senceサービスで独自のリモートワイプサービスを提供していたりするので、その辺りの影響が出ているものと思われる。
ちなみにCommuniGate ProではiPhone/iPadについては問題なくリモートワイプできている。CommuniGate Proは5.4系でAndroidに正式対応するということなので、今後修正がされる可能性はあるが、現在のところCommuniGate ProでリモートワイプによりAndroid端末のデータ消去を実行しようと思ったら、Android2.2以降を搭載したHTC製端末(HTC Sence 2.x以降)を選択する必要がある。(同端末はHTC SenceのWebサイトに登録することで、Webからデータ消去操作を行うことも可能だが、システム管理者が一括で管理したいというようなケースでは、Communigate Proを利用するメリットがある)
■追記
AirSyncの待ち受けについては80/443のどちらか一方だけでも問題ない。httpは平文でデータ参照できてしまうことから、実運用する場合には443で設定する方が望ましい。またApache等と同居している場合など、CommuniGate Pro自体の80/443を有効にできない時には、proxy設定を利用して80/443への接続をCommuniGate Proの標準待ち受けポートTCP8100へ繋いでやることでAirSyncを行うことが可能。以下Apacheで443接続をproxy設定するサンプル。
[code]
ServerName cgp.exsample.com:443
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/httpd/cert/cgp.crt
SSLCertificateKeyFile /etc/httpd/cert/cgp.key
ProxyRequests Off
ProxyPass / http://localhost:8100/
ProxyPassReverse http://localhost:8100/
ProxyPassReverseCookieDomain localhost cgp.exsample.com
ProxyPassReverseCookiePath / /
Order allow,deny
Allow from all
[/code]