Dovecot は、そのとても使い勝手が良い設定オプションがあるため、 最も簡単に移行しやすい IMAP サーバの1つです。 Dovecot は、ほとんどのメール保存フォーマットと互換性がある MBOX もしくは MAILDIR フォーマットでメールを保存することができます。 それはメールを保存するすることについて、非常に柔軟性があります。 Dovecot はユーザデータとパスワード認証に関しての多くの手段を サポートしています。 複数のデータベースでの認証をすること設定もできます。
以降はいくつかの別れた作業が必要です。 ユーザのデータを変換するか、 Dovecot がこれまでのデータを読みにいくように 作成する必要があります。 Dovecot は、既存のメールフォルダやユーザやパスワード設定を 読み込むことについて、互換性と設定性がとてもよいです。 変換する作業は以下を含みます:
どこにどようにしてメールを保存するか
ユーザ構成 - ホームディレクトリ構成 - UID/GID - パスワードの保存
ユーザの認証
1台の IMAP サーバから別のサーバに移行するときは、 以下のものが保存されているか確認しなければなりません:
メールボックスの購読リスト
もしそれに干渉したくなければ、ユーザは手動で再生成 することができます
メッセージUID
もし UID が失われた場合、最低限のクライアントメッセージの キャッシュは綺麗になくなります。
いくつかの IMAP クライアントはそれを特定の UID に割り振る ことによってメタデータを保存します。 もし UID が変わると、これらは失われてしまいます。
メッセージフラグ
フラグを失うことはとてもむかつきます。多分それを
これより、多くのサーバーの特性に合わせた記述です:
デフォルトでは、 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 への移行を行いたい場合は、 少々異なる設定が必要となります。
もしクライアントがサーバの最初の単語を "~/mail" のようなものに している場合は、 Dovecot の設定の mail_full_filesystem_access を 有効にしていない限り、動きません。 Dovecot は "~" から始まるメールボックス名や最初の単語を受け付けません。 バージョン 1.0-tests では、これに代わり、 複数の隠れたネームスペースを設定することになっています。
uw2dovecot.sh を 使って、全てのユーザの ".mailboxlix" ファイルを ".subscriptions" へ変更、もしくは src/lib-storage/subscription-file/subscription-file.c. にある SUBSCRIPTION_FILE_NAME の定義を変更することができます。 バージョン 1.0-test で、この SUBSCRIPTION_FILE_NAME 値は src/lib-storage/subscription-fileindex/maildir/maildir-storage.h と src/lib-storage/subscription-fileindex/mbox/maildir-storage.h で 定義されています。 .subscriptions ファイルはメールのディレクトリにあるのに、 .mailboxlist ファイルはその外(のユーザのホームディレクトリの中)にある 可能性があります。
もし ~/mbox ファイルがあるばらば、 UW-IMAP は /var/mail/user から ~/mbox にメールを移動します。 Dovecot はこの機能をサポートしないので、全ての人のメールを ~/mbox に移動して、 そこにメールを保存するように MTA/LDA を再設定しなければならないか もしくは、代わりに /var/mail/user にメールを戻すために ~/mbox ユーザを見つけなければなりません。 この機能はいつかは実装されますが、近い将来には予定されていません。
http://people.redhat.com/rkeech/maildir-migration.txt を読むべきです。 この文書は、mbox 形式を使用した UW-IMAP から maildir 形式の Dovecot (このほうがパフォーマンスを伸ばします)を 使用する場合の、スクリプトを使った移行のプロセスが書かれています。 また、後に書かれている "Mailbox フォーマットの変換" の項目を見てください。
--- 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 はこのシステムメッセージを使いませんので、 メッセージを問題なく削除することができます。
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 もしくは Virtual Imap は、WU-IMAP に、 Linuxconf の 仮想メール構成で動くように修正された patch を当てたものです。 このプロジェクトは継続されているように見えませんし、 Dovecot が、現在完全に互換性を持って構成できることに patch の作者の Patrick Hall が 驚くようには見えません。 この部分の詳細は、 Virtual Users の項目で記述します。
Courier はデフォルトで "INBOX" を個人の IMAP ネームスペースとして 使っていますので、まさに上述した UW-IMAP と同じ問題があります。 また、もし IMAP クライアントのためのわかりやすい移行を望むならば、 Courier 互換のネームスペースを得る方法 が書かれている ネームスペースを 参照してください。
Courier の courierimapsubscribed ファイルは Dovecot の subscriptions ファイルと互換性がありますので、ファイル名を変更して 最初の単語 "INBOX" を削除してください(注意:バージョン 0.99.x では .subscriptions で、バージョン 1.0 では subscriptions と ファイル名の最初のドットがなくなりました)。
Courier の courierimapuiddb ファイルは Dovecot の dovecot-uidlist ファイルと互換性がありますので、その名前を変更してください。
Courier のメッセージフラグは Dovecot と互換性があります (Maildir 機能で指定されるように)。
Courier のメッセージキーワード実装は、 Dovecot では互換性がなく、 また、それを移行する簡単な方法がありません。
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 |
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 サーバは X-UIDL ヘッダを生成します。 このヘッダを使用するときは、以下の設定を使えば 簡単に移行できて役立ちます:
# Use X-UIDL header if available pop3_reuse_xuidl = yes |
異なる POP3 サーバでは、違った UID を生成します。 もしユーザが2回メールをダウンロードすることから避けたい場合は、 サーバがどのように UID を生成しているかと、 同じように動作するための Dovecot のパッチを作成することについて 解決する必要があります。
以下に POP3 サーバの種類と、その UID の作成方法を並べます。 もし、他にもっと知っていることがあるならば、更新してください:
popa3d は 2つのヘッダから MD5 サムを生成します。 Dovecot は内部的に互換性のある MD5 サムを使用しますが、 異なる方法でそれらを文字にします。
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 |
いくつかのフォルダのコピーを作成して、最初にそれをテストします。 そして、スクリプトが動作したことを納得します:
全てのファイルを変換するためにスクリプトを書きます
ファイルが更新されないように、メールシステムを終了させます
元の状態に戻す必要があることに備えて、全てのメールを バックアップの場所にコピーします
スクリプトを実行します
Dovecot を起動して、それが動作していることをテストします
重要 - SMTP の設定を MBX ではなく MBOX に書き換えたことを 確認します
SMTP を起動して、全てが動作していることを確認します
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" を変更するのを 忘れないでください(必要です)。
もし 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); |