さくらインターネットがやっているさくらのメールボックスというサービスがあって、メールの送受信はここを利用している。IMAP4 に対応していて、複数の端末でメールを利用するのが便利だからだ。基本的に全てのメールを IMAP サーバ上において整理、管理をしている。
だが、過去のメールのすべてが、業者のサーバ上にしかないというのも不安なので、手元にバックアップを取るようにしている。さくらのメールボックス上のデータには IMAP クライアントでしか接続できないので、imapsync というツールを使って、自宅サーバ上に構築した IMAP サーバとの同期をとっている(自宅サーバ上のデータは定期的に差分バックアップをとっている)。
以前の自宅サーバの環境は、dovecot 1.x で運用していたのだが、先日サーバを入れ替える際に、dovecot を 2.0 に置き換えたのだ。dovecot2 については、また別記事に記述することにするが、dovecot2 に入れ替えたことによって、imapsync がエラーを出して停止するようになってしまった。
エラーの内容は IMAP4 サーバの CAPABILITY に NAMESPACE が含まれていないというもの。
IMAP4 サーバに NAMESPACE の機能がない場合には、imapsync の –prefix2 や –sep2 オプションでプレフィックスとセパレータを指示する必要がある。でも dovecot2 にも NAMESPACE の機能はあるはずで、dovecot の設定ファイルで imap_capability = +NAMESPACE を指定して、接続時に CAPABILITY として返す文字列を追加すると imapsync は動作するようになる。ただし、imap_capability で指定する文字列は、実際の機能と関係なしに指定できるようで、回避策としてはちょっと不安だ。
そもそも、Thunderbird なんかだとプレフィックスやセパレータをちゃんと取得しているようだ。dovecot2 に NAMESPACE の機能があることは間違いなさそうだ。
で、調べてみると dovecot のメーリングリストにそれらしい話題を見つけることができた。
どうやら、CAPABILITY の一部はログインしてからでないと表示されないということらしい。NAMESPACE などはログインするまでは不要な機能なので接続時には表示しないということか。
根本的には imapsync (または imapsync が利用している IMAP 用のモジュール) がバージョンアップするのを期待するしかないようだが、それまでは、以下の2つのどちらかで対応するしかなさそう。
- imapsync のオプション –prefix2 および –sep2 で dovecot が使用しているプレフィックスとセパレータを指定する
- dovecot の設定ファイルで imap_capability = +NAMESPACE を指定し、接続時の CAPABILITY に NAMESPACE を追加する
imapsync が修正される頃には忘れてそうな話題だ。