わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

Ubuntu 8.04 + CyrusからUbuntu 10.04 + dovecotへ

あるLinux PCのHDDを取り替え,ディストリビューションを最新にしたのは先月末でしたが,メール受信がうまくいかず,エラーメールを連発させて関係各位にご迷惑をおかけしました.
昨日,ふとしたことから進展したので,記録に残しておきます.

dovecotで受信

uayeb » メールサーバの設定(postfix, dovecot, sasl2=saslauthd)に書かれている手順をすべて行いました.
Postfixは順調ですが,dovecotがうまく動いてなさそうでした.
それで今朝,/var/log/mail.err.1を覗くと,

(日時) (ホスト名) dovecot: deliver(takehikom): Fatal: Plugin cmusieve not found from directory /usr/lib/dovecot/modules/lda

というエラーメッセージが大量に出ているのに気づきました.
検索をかけたところ,Bug #516040 “dovecot sieve plugin renamed from cmusieve to sieve... : Bugs : Release Notes for Ubuntuを見つけました.その中の

The "cmusieve" plugin used in dovecot has been renamed to "sieve". Users who have the following set in their dovecot configuration:
mail_plugins = cmusieve
should change this to:
mail_plugins = sieve

https://bugs.launchpad.net/ubuntu-release-notes/+bug/516040/comments/3

を参考にして,/etc/dovecot/dovecot.confを見てみると,「protocol lda {」を含む行(というか設定全体)がコメントになっていたので,

protocol lda {
  mail_plugins = sieve
}

と書いて保存し,/etc/init.d/dovecot restartを実行したところ,メールが受信できるようになりました.

メール移行

アップグレード前のHDDを,USB接続で本体につなぐと,/mediaの下にいくつかのパーティションがマウントされました./media/略/cyrus/mail/t/user/takehikomの下に,自分宛てのメールが格納されています.
なんとか今の環境に移行したいのですが,ここでまた少し探したところ,Cyrus2Dovecotというツールをみつけました.

$ wget 'http://cyrus2dovecot.sw.fu-berlin.de/download/cyrus2dovecot'
$ chmod +x cyrus2dovecot

としたあと,./cyrus2dovecot…というのは,/media/略/cyrus/mail/t/user/takehikomのパーミッションが都合悪く,rootで実行しました.

# ~takehikom/cyrus2dovecot --cyrus-inbox /media/略/cyrus/mail/t/user/%u --dovecot-inbox /tmp/Mailbox/%u/Maildir takehikom

かなり時間がかかった*1ものの,/tmp/Mailbox/takehikom/Maildir にメールができました.(あとの作業のため,chown -Rで,このディレクトリの所有者とグループをtakehikomのに変更しておきます.)
ところで,アップグレード前は,このIMAPサーバにはWindows + Thunderbirdでアクセスし,年月単位でフォルダ分けしていました.例えば今年なら,2010というフォルダを作り,さらにその中に201001,201002,201003としていました.コマンドで,移動させます.

# /etc/init.d/dovecot stop ; /etc/init.d/postfix stop

$ cd ~/Maildir
$ for m in 01 02 03; do echo mv /tmp/Mailbox/takehikom/Maildir/.2010.2010$m .INBOX.2010.2010$m; echo INBOX.2010.2010$m '>>' subscriptions; done
$ for m in 01 02 03; do mv /tmp/Mailbox/takehikom/Maildir/.2010.2010$m .INBOX.2010.2010$m; echo INBOX.2010.2010$m >> subscriptions; done

# /etc/init.d/dovecot start ; /etc/init.d/postfix start

mvコマンドでの移動先ディレクトリ名は,先頭が「.INBOX.」ですが,~/Maildir/subscriptionsに書くときの先頭は「INBOX.」と,先頭のドットをなくす必要があります.
Thunderbirdは再起動.これで,2010年1〜3月のメールが読めるようになりました.2009年以前のは,ぼちぼちやります.

*1:1.3GB.たしか20分くらい.