戻る

原文:http://wiki.dovecot.org/Migration(35版)
翻訳:龍義(Toyota Tatsuyoshi) & Prompt Works Inc.

Dovecot への移行

Dovecot は、そのとても使い勝手が良い設定オプションがあるため、 最も簡単に移行しやすい IMAP サーバの1つです。 Dovecot は、ほとんどのメール保存フォーマットと互換性がある MBOX もしくは MAILDIR フォーマットでメールを保存することができます。 それはメールを保存するすることについて、非常に柔軟性があります。 Dovecot はユーザデータとパスワード認証に関しての多くの手段を サポートしています。 複数のデータベースでの認証をすること設定もできます。

以降はいくつかの別れた作業が必要です。 ユーザのデータを変換するか、 Dovecot がこれまでのデータを読みにいくように 作成する必要があります。 Dovecot は、既存のメールフォルダやユーザやパスワード設定を 読み込むことについて、互換性と設定性がとてもよいです。 変換する作業は以下を含みます:

1台の IMAP サーバから別のサーバに移行するときは、 以下のものが保存されているか確認しなければなりません:

これより、多くのサーバーの特性に合わせた記述です:

UW-IMAP

デフォルトでは、 UW-IMAP は全てのホームディレクトリへのアクセスを 許可し、そして多くの人々は mail/ ディレクトリにメールを保存することを 選択したでしょう。 これは通常、Dovecot がデフォルトで直接 mail ディレクトリを使うように、 IMAP クライアントが Dovecot ではうまく動かない "mail/" ディレクトリに "IMAP ネームスペース" をセットしたことになります。 そこで、もし IMAP ネームスペースが "mail/" ディレクトリにあるならば、 Dovecot は "~/mail/mail/" ディレクトリをアクセスすることを試みます。

そこで、IMAP クライアントから最初の単語を削除することが最初のステップに なります。次の問題は、購読メールボックスが購読ファイルの "mail/box" か "~/mail/box" か "~user/mail/box" にリストされているか、 ということです。これらの全てから mail/ ディレクトリを削除しなければ なりません。 購読ファイル名は異なっていることがあります。 Dovecot が .subscriptions ファイルを使いますが、 UW-IMAP は .mailboxlist ファイルを使います。

Dovecot は UW-IMAP と互換の、 mbox にある UID とメッセージフラグのヘッダを 使用しますので、これは問題にはなりません。

セッティング:

default_mail_env = mbox:~/mail:INBOX=/var/mail/%u
# make sure mbox_locks are the same with all software that accesses your mboxes
# mbox_locks が mboxes にアクセスする全てのソフトウェアと同じであることを確認してください
mbox_locks = dotlock fcntl

もし大規模なクライアントシステムで設定を変更することなく そのまま Dovecot への移行を行いたい場合は、 少々異なる設定が必要となります。

--- DON'T DELETE THIS MESSAGE -- FOLDER INTERNAL DATA ---

Dovecot バージョン 0.99.x のみに関係します、 バージョン 1.0-releases はこれを使います。

UW-IMAP を使っているシステムの全てのフォルダは 最初の行に "DON'T DELETE THIS MESSAGE -- FOLDER INTERNAL DATA" と書かれたシステムメッセージがあります。 このシステムメッセージにはフォルダと、その状態に関する情報が 格納されています。 IMAP と POP3 のクライアントとして、 Pine を使っているユーザが居なければ、 Dovecot 0.99.x はこのシステムメッセージを使いませんので、 メッセージを問題なく削除することができます。

UW-POP3

Dovecot はデフォルトで、UW-IMAP とは異なる POP3 の UIDを作ります。 もしそれを保護したい場合、バージョン 0.99.x の場合は Dovecot の Patch を、 バージョン 1.0-tests の場合は以下の設定を使うことができます。

pop3_uidl_format = %08Xv%08Xu

注意:新しい UIDL と古い UIDL が一致しているか確かめてください。 バージョン 0.99.x は UW-IMAP と同じ uidl を持っていないかもしれません。 バージョン 1.0 は UW-IMAP と同じはずです。 以下のようにチェックしてみてください:

telnet localhost 110
user test
pass test
uidl

VIMAP

VIMAP もしくは Virtual Imap は、WU-IMAP に、 Linuxconf の 仮想メール構成で動くように修正された patch を当てたものです。 このプロジェクトは継続されているように見えませんし、 Dovecot が、現在完全に互換性を持って構成できることに patch の作者の Patrick Hall が 驚くようには見えません。 この部分の詳細は、 Virtual Users の項目で記述します。

Courier

Courier はデフォルトで "INBOX" を個人の IMAP ネームスペースとして 使っていますので、まさに上述した UW-IMAP と同じ問題があります。 また、もし IMAP クライアントのためのわかりやすい移行を望むならば、 Courier 互換のネームスペースを得る方法 が書かれている ネームスペースを 参照してください。

Arto Bendiken が書いた courier2dovecot スクリプトも参考に してください。

セッティング:

# normal home directories
# 一般のホームディレクトリがあるユーザのための設定
default_mail_env = maildir:~/Maildir
# for virtual users
# 仮想ユーザのための設定
default_mail_env = maildir:~/

POP3 UIDL に互換性を持たせるならば、 Courier のバージョンに 合わせたどれかを使ってください。

# Courier version 0 (using maildir filenames)
pop3_uidl_format = %f
# Courier version 1 (UID)
pop3_uidl_format = %u
# Courier version 2  (UIDVALIDITY and UID)
pop3_uidl_format = %v-%u

Cyrus

cyrus2courier を 参考にしてください。これは Dovecot 互換です。

POP3 の UIDL 互換にするには、 Cyrus のバージョンに合わせた どれかを使ってください。

#  Cyrus (old format - up to v2.1.3)
pop3_uidl_format = %u
#  Cyrus (new format - v2.1.4 and above)
pop3_uidl_format = %v.%u

その他の POP3 サーバ

いくつかの POP3 サーバは X-UIDL ヘッダを生成します。 このヘッダを使用するときは、以下の設定を使えば 簡単に移行できて役立ちます:

# Use X-UIDL header if available
pop3_reuse_xuidl = yes

異なる POP3 サーバでは、違った UID を生成します。 もしユーザが2回メールをダウンロードすることから避けたい場合は、 サーバがどのように UID を生成しているかと、 同じように動作するための Dovecot のパッチを作成することについて 解決する必要があります。

以下に POP3 サーバの種類と、その UID の作成方法を並べます。 もし、他にもっと知っていることがあるならば、更新してください:

メールボックスのフォーマット変更

MBX から MBOX への変換

WU-IMAP を使っていて MBX 形式のメールボックスを 使用しているならば、MBX 形式から MBOX 形式に変換する必要があります。 変換するプロセスは可愛いもんじゃないですが、このスクリプトは動作します。 WU-IMAP の web サイトから mailutil プログラムを取得して、 コンパイルする必要があります。

#! /bin/bash

# Written by Marc Perkel - public domain
# Usage mbx-convert <filename>
# This code assumes a user named "marc". Change to any real user on your system.
# Yes - it look bizzare - but it gets the job done

# First copy to users home dir and make the user the owner
cp "$*" /home/marc/in
chown marc:marc /home/marc/in

# Run mailutil to convert as the user other than root 
# mailutil requires this
su - marc -c "/usr/bin/mailutil copy in \#driver.mbx/out"

# cat instead of copy preserves the original owner and permissions
cat /home/marc/out > "$*"

# cleanup
rm /home/marc/in
rm /home/marc/out

いくつかのフォルダのコピーを作成して、最初にそれをテストします。 そして、スクリプトが動作したことを納得します:

MBOX から Maildir の変換

mb2md は、 ファイルを変換することができるスクリプトです。

ユーザから提供された Maildir サポートの項も参照してください。 ここにさらなる 選択肢があります。

例(ユーザのメールが ~ユーザ/mail と /var/mail/ユーザ にある場合):

cd ~someuser
mb2md-3.20.pl -s mail -R
mb2md-3.20.pl -m -d /var/mail/incoming/someuser
mv mail mail.old

現在 mail は ~ユーザ/Maildir にあります。

もし、 UW-IMAP からの移行の場合は、以下のコマンドも必要になります。

cp -p .mailboxlist Maildir/subscriptions

maildir が異なるサブディレクトリを扱うことに注意してください。 subscriptions ファイルの "/" を "." に置き換える必要があります。

sed "s/\//\./" subscriptions > subscriptions.new
mv subscriptions.new subscriptions

dovecot.con ファイルの "default_mail_env" を変更するのを 忘れないでください(必要です)。

Maildir から MBOX の変換

もし CD や PC などに保管するため1つにメールをまとめたい場合は、 これは非常に役に立ちます。 しかし、 dovecot で MBOX を使いたい場合も役立つことができます。

procmail に付属する formail プログラムを使用してください。 以下はこれがどのように動くかの簡単なスクリプトです。 ユーザのホームディレクトリ(Maildir の上のディレクトリ)を変更して、 mailbox の名前と出力先の mbox ファイル名の2つのオプションを 指定して、スクリプトを実行してください。

#!/usr/local/bin/perl

$dir=$ARGV[0];
$outputfile=$ARGV[1];
if (($outputfile eq '') || ($dir eq '') || (!stat("Maildir/$dir")))
{ die "./archivemail.pl mailbox outputfile\n"; }

opendir(MAILDIR,"Maildir/$dir/cur");
while($name=readdir(MAILDIR))
{
 if (($name ne '.') && ($name ne '..'))
 {
  system("cat Maildir/$dir/cur/$name | formail >> $outputfile");
 }
}
closedir(MAILDIR);