2012/02/12

AndroidでiCloudのメールを使う方法

今朝スタバでカプチーノを飲んでいるうちに突然思い立って、スマフォ(SharpのIS03)でiCloudのメールを読めるようにしてみた。

IS03には「PCメール」というメーラーがあり、これを使うと複数のアカウントのメールを読み書きできる。すでに2つのアカウントを設定していたのでiCloudもすぐできると思ったら意外に難航したので書いておく。

最初にApple公式の「iCloud:メールサーバの情報」を見てアカウント情報を設定し、受信(IMAP4)のほうはすんなり行ったのだが、送信(SMTP)のほうはどうやっても「サーバに接続できません」のようなメッセージが出てきてしまってうまくいかない。ちょっと検索して調べてみると、PCメール側の設定を"SSL"ではなく"TLS"にするとうまくとのこと。さっそくやってみると、確かにつながった。それにしてもApple公式のページには"SSL"と書いてあるのに、PCメール側は"TLS"とはどういうことだろうと思ってちょっと調べたところ、どうやら以下のようなことらしい。

まずSMTPでセキュアな通信をする場合、大きく分けて2つの方法がある。1つは最初からセキュアな通信路を確保してその上でSMTPを使う方法(以下、SMTPsと表記)、もう1つはまず通常通りSMTPセッションを開始し、その後STARTTLSコマンドを送信して同じポート上でセキュアな通信に移行する方法(以下、STARTTLS)だ。SMTPsでは通常、465番のポートを使うのに対し、STARTTLSでは普通どおり25番または587番のポートを使う。

問題なのは、この2種類の方法の呼称がちゃんと決まってないことだ。iCloudのメールサーバはSTARTTLSなのだが、Appleはこれを"SSL"と呼んでいるのに対し、IS03のPCメールは"TLS"と表記している。だからPCメールで"TLS"を設定するとうまくいく。一方、PCメールの設定項目で"SSL"を選ぶとSMTPsになるので、当然ながら接続に失敗する。世の中ではほかにも"SMTP over SSL"とか"SSL/TLS"などの呼び名も使われているが、いずれもどちらの通信方法なのかはっきりしない。結局メール設定時によくわからないときは、"SSL"であれ"TSL"であれ(あるいはそれ以外であれ)、とにかくそれらしい設定項目すべてを試してみるのが良いようだ。

ちなみになんでこんなに呼称が混乱しているかというと、そもそもSSLがTLSに名称変更されたという経緯があるのに加え、STARTTLSにしろSMTPsにしろ結局どちらもTLSを使うことにあるようだ。SSLはversion 3.0までは"SSL"と呼ばれていたが、その後"TLS"に改称された。このためよく"SSL/TLS"と表記されるが、一方で"SSL"という呼称も根強く残っている(もしかしたら実際にversion 3.0以前のSSLを使っているケースもあるのかもしれない)。なお、wikipediaのSTARTTLSの記事によると、メジャーなプロバイダーではGoogle(GMail)とApple(iCloud)がSTARTTLSを使っているとのこと。

参考文献
  1. メールの送受信でSSLを利用して暗号化する(@ITの記事)
  2. SSL versus TLS versus STARTTLS
  3. Bug 350314 - STARTTLS is called TLS in user preferences (remaining IMAP/POP3 case)
  4. STARTTLS (wikipedia)

0 件のコメント: