メールファイルの保存形式変換:
ディレクトリ作成者向け


※注意(重要): 以下に当てはまる方はこの作業は必要ありません.

目次

  1. メール配送の一時停止
  2. Maildir のバックアップ
  3. maildir2mbox
  4. .qmail の追加
  5. Maildir のバックアップを元に戻す
  6. メール配送の再開
  7. 確認
  8. 参考文献

専攻メールサーバの IMAP サーバ入れ換えに伴い, IMAP ユーザーのメール保存形式が maildir 形式から mailbox 形式に変更となる. IMAP ユーザーで,なおかつ, ~/.qmail ファイルに ./Mailbox の 記述のない方は以下で述べる作業を行い, メールの保存形式を変換する必要がある.

以下では qmail 付属の "maildir2mbox" コマンドを用いてメール保存形式を変換する方法について述べる.

1. メール配送の一時停止

メールはいつ届くかわからない.作業を始める前に自分宛のメールの 配送を一時停止しておく.

ホームディレクトリのsticky bitをセットする.

$ chmod +t $HOME

自分宛にメールを出してメールが届かないことを確認.

2. Maildirのバックアップ

まず不測の事態に備え, 自分が作成したMaildir ディレクトリを含め, 全てのMaildirディレクトリ のバックアップを必ずとっておく.

$ cp -rp /home/username/自分のMaildirディレクトリ名 /home/username/自分のMaildirディレクトリ名.bk

バックアップをとったら ls コマンドで確認する.

$ ls ~/ -l
drwx--S--- 5 username username 4096 Jul 25 14:54 Maildir/ drwx--S--- 5 username username 4096 Sep 26 12:35 Maildir.bk/

3. maildir2mbox

"maildir2mbox" コマンドは maildir 形式で保存されたメールを mbox 形式に変換するための qmail 付属のツールである.

- 方法
まず以下の3つの環境変数を設定する.

デフォルトではそれぞれ の様に設定してある.($HOME は各自のホームディレクトリ).
$ /var/qmail/bin/maildir2mbox

と実行すると, カレントディレクトリにある Maildir ディレクトリの中にあるメールが 全て Mailbox という 1 つのファイルの中に移動される.

注意すべきことはこの作業では ということである (バックアップをとり忘れていないか要確認!).

その他のディレクトリに対して変換をかける場合は, 逐次環境変数を変更して 1 つずつ変換を行う.

------- maildir2mbox 使用例 ---------------------------

hogehoge さんがディレクトリ gfc を作成してメール整理を行っている場合

ログインシェルが /bin/bash の場合
$ export MAILDIR=/home/hogehoge/gfc/
$ export MAIL=/home/hogehoge/gfcmbox
$ env
(以下2行の記述があることを確認)
MAILDIR=/home/hogehoge/gfc/ MAIL=/home/hogehoge/gfcmbox
$ /var/qmail/bin/maildir2mbox
ログインシェルが /bin/csh の場合
% setenv MAILDIR /home/hogehoge/gfc/
% setenv MAIL /home/hogehoge/gfcmbox
% env
(以下2行の記述があることを確認)
MAILDIR=/home/hogehoge/gfc/ MAIL=/home/hogehoge/gfcmbox
% /var/qmail/bin/maildir2mbox

これで Maildir 形式のディレクトリ "gfc" の中のメールが, Mailbox 形式のファイル "gfcmbox" の中に格納される.

---------------------------

ここでの作業を実行すると, サーバー入れ換え後, メーラーにおける 振り分け先のメールボックスが, 例えば "gfcmbox" となり, メール ボックスの名前が今までと違ってしまう. これをいやがる方もいる だろうが, unix ではファイル名とディレクトリ名が同じ名前のものは 同じ階層での共存ができない. これはシステム上の問題と理解してほしい.

最後に,変更していた環境変数を元に戻す.

---------------------------
ログインシェルが /bin/bash の場合

$ export MAILDIR=/home/hogehoge/Maildir/
$ export MAIL=/home/hogehoge/Mailbox
$ env
(以下2行の記述があることを確認)
MAILDIR=/home/hogehoge/Maildir/ MAIL=/home/hogehoge/Mailbox
ログインシェルが /bin/csh の場合
% setenv MAILDIR /home/hogehoge/Maildir/
% setenv MAIL /home/hogehoge/Mailbox
% env
(以下2行の記述があることを確認)
MAILDIR=/home/hogehoge/Maildir/ MAIL=/home/hogehoge/Mailbox
---------------------------

4. ~/.qmail の追加

メールが /home/username/Mailbox にも配送されるように, .qmail ファ イルに追加書き込みする.

$ echo ./Mailbox >> ~/.qmail

追加した後に

$ cat ~/.qmail
./Maildir/
./Mailbox 

となっていることを確認する.

5. Maildirのバックアップを元に戻す

Mailbox形式とMaildir形式は,同時に使用することはできない. よってサーバー入れ換えまではMaildir形式を使う必要がある. ここでバックアップを元の名前でコピーし,サーバー入れ換え時 まではMaildir形式を使えるようにしておく必要がある.

まず,空になっているMaildir ディレクトリを削除, それから バックアップしておいたMaildirディレクトリをコピーする, という順番で行います.
※ファイルの誤削除は復旧できません!タイプミスに細心の注意を払って 行って下さい.

$ rm -r /home/username/自分のMaildirディレクトリ名/
$ cp -rp /home/username/自分のMaildirディレクトリ名.bk /home/username/自分のMaildirディレクトリ名/

その他の,Maildir形式のディレクトリにおいてもこの作業を行っておくこと.

元に戻したら ls コマンドで確認する.

$ ls ~/ -l
drwx--S--- 5 username username 4096 Jul 25 14:54 自分のMaildirディレクトリ名/ drwx--S--- 5 username username 4096 Sep 26 12:35 自分のMaildirディレクトリ名.bk/

6. メール配送の再開

メールの配送を再開するため,ホームディレクトリに セットしたsticky bitを解除する.

$ chmod -t $HOME

自分宛にメールを出してメールが届くことを確認.

さらにある程度の時間が立つと,「1. メール配送の一時停止」の 際に,自分宛に送信したメールも配送されてくる.

7. 確認

日頃使っているメールソフトでメールが読めるか確認.

8. 参考文献


最終更新日: 2002/10/22 島沢竜平 (sryu@ep.sci.hokudai.ac.jp) Copyright © 2002- EPnetFan. All rights reserved.