月別アーカイブ: 2012年1月

OpenSSL での証明書更新

先日のエントリとは異なり、OpenSSL で運用している認証局で証明書を更新する手順のまとめ。

NetBSD 上で Dovecot によるメールサーバを運用していて、SSL を使うのに証明書が必要となっている。以前の証明書は何らかの理由(期限切れなど)で使えなくなっているため、新たに証明書を発行してもらう必要がある、という状況を想定している。

まず最初に、メールサーバ上で証明書要求と新しい秘密鍵を作成する。

$ sh /etc/openssl/CA.sh -newreq
Generating a 1024 bit RSA private key
...........................++++++
..........++++++
writing new private key to 'newkey.pem'
Enter PEM pass phrase: (秘密鍵の暗号化に使うパスフレーズを入力)
Verifying - Enter PEM pass phrase: (もう一度)

Dovecot で使う SSL 証明書に Windows Server 2003 の証明書サービスを使ってみた

Windows Server 2003 の証明書サービスを使ってみた。認証局 (CA) は Windows Server 2003、証明書の発行対象は NetBSD 上のメールサーバ (Dovecot2)。

まずは、秘密鍵と証明書要求を作成する。OpenSSL の必要最小限の設定は済んでおり、CA.sh などは /usr/share/example/openssl に置いてあるものを /etc/openssl にコピーしていている。

$ sh /etc/openssl/CA.sh -newreq
Generating a 1024 bit RSA private key
...............++++++
............................++++++
writing new private key to 'newkey.pem'
Enter PEM pass phrase: (パスフレーズを入力)
Verifying - Enter PEM pass phrase: (もう一度同じパスフレーズを入力)

dovecot2 と imapsync

さくらインターネットがやっているさくらのメールボックスというサービスがあって、メールの送受信はここを利用している。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つのどちらかで対応するしかなさそう。

  1. imapsync のオプション –prefix2 および –sep2 で dovecot が使用しているプレフィックスとセパレータを指定する
  2. dovecot の設定ファイルで imap_capability = +NAMESPACE を指定し、接続時の CAPABILITY に NAMESPACE を追加する

imapsync が修正される頃には忘れてそうな話題だ。