web-dev-qa-db-ja.com

Dovecotの移行と古いメール

古いサーバーから新しいサーバーにメールを移行しています。構成は良好です(mysql仮想アカウント&imapのみ)。dovecotとpostfixを使用しています。他のユーザーのためにすでに実行されています。古いサーバーの古いアカウントを新しいサーバーにマージしたいだけです。

移行はうまくいきました、私はUAクライアントのすべての古いメールを "show"する方法を知りたかっただけです。つまり、すべての古いメールに「フラグ」が付けられるように、再作成、破棄できるdovecot indexファイルなどはありますかnew

6
lovethebomb

Maildirは実際にはこれを非常に簡単にする独自のフォーマットを使用しています。単にnew/を新規として表示する場合は、メールユーザーmailroot内のディレクトリ。それ以外の場合はcur/ディレクトリ。

1
Garrett

私は受け入れられた答えを試してみましたが失敗しました-プレイ中のDovecotバージョンはおそらく離れすぎているため、基になるMTAも切り替えました。したがって、より堅牢なソリューションを次に示します。doveadm import

ドメインhosted.tldのメールをホストしていて、ログイン用のアカウントが存在する場合[email protected](または単にruth)そして以前のサーバーからのバックアップはMailDir形式であり、/ tmp/TRANSFER /domain/account/ Maildir次に、それらを新しいdovecotホスティングにインポートして、

$ doveadm import -u [email protected] maildir:/tmp/TRANSFER/hosted.tld/local.account/Maildir "" all

より一般的に言えば:

$ doveadm import -u LOCAL_USER FORMAT:PATH "" all

これらはすべて fine manual から取得できます。 ""(空の宛先メールボックス)を使用することを見つけるのに2回の試行が必要でした本当に欲しかったものです;-)

事前にファイルを転送する必要がなくても、私たちより幸運になるかもしれません-古いサーバーと新しいサーバーが同時に実行されており、アカウントが doveadm sync を使用して適切に設定されている場合=。

5
flowtron

Maildir形式は一連のディレクトリで構成され、IMAPフォルダ構造と一致します。この中には電子メールがあり、電子メールごとに1つのファイルがあります。

ある電子メールシステムから別の電子メールシステムに電子メールをコピーするには、ディレクトリとファイルをコピーし、それらのディレクトリとファイルの権限が宛先で正しいことを確認します。

Maildir構造は次のようになります。

mail/cur/
mail/new/
mail/tmp/
mail/.personal/cur/
mail/.personal/new/
mail/.personal/tmp/

これは、INBOXフォルダー(cur、new、tmp)と、「personal」と呼ばれる別のフォルダーを示しています。このフォルダが非表示になっていることを示すドットプレフィックスに注意してください。これは、転送で考慮する必要があります。

newフォルダーには、クライアントが表示していない電子メールが含まれ、curフォルダーには現在の電子メールが含まれます。メールサーバーが動作していない場合、tmpフォルダーは空である必要があります。

4
Paul

Maildirメッセージの場合、そのようなフラグはファイル名に格納されます。例えば:

1328040798.M558634P29803.equal,S=17876,W=18294:2,FS

コンマの後のFSは、FlaggedおよびSeenを意味します。メッセージを「未確認」としてマークするには、Sフラグを削除します...

for msg in maildir/cur/*; do
    msgbase=${msg%,*}
    flags=${msg##*,}
    flags=${flags//S/}
    mv -v "$msg" "$msgbase,$flags"
done

...または単にnewフォルダにメッセージを投げます:

mv maildir/cur/* maildir/new/
4
user1686