從 mbox 到 maildir

傍晚的時候,心血來潮,把自己的 mbox 通通轉成 maildir,沒有遇到什麼太大的問題。

首先,我將 MTA (postfix/sendmail/…) 關掉,以免轉換過程中有信進來會出意外,當然,我是有 root permission 才可以這樣子玩,如果你信量不多,應該是沒問題的。

本來就在用 Muttprocmail 來處理信件,而兩者本來就都有 maildir 的支援,而且不需要 MTA 的支援。

在 .muttrc 裡面加入這幾行:

# mailbox 的型態
set mbox_type=Maildir
# 在 spool 讀過的信要丟到哪
set mbox=~/Maildir
# 預設 folder 的位置
set folder=~/Maildir
# INBOX 的位置
set spoolfile=~/Maildir
# 定義 multiple mailboxes
mailboxes `find -E ~/Maildir/ -type d ! -regex “.*(cur|new|tmp)$” | perl -pe ’s/\n/ /g; s!/home/rafan/Maildir/!=!g;’`

procmail 的部分,要改幾個地方:

  • 加入 MAILDIR=${HOME}/Maildir 跟 DEFAULT=${HOME}/Maildir/
  • maildir 不用 lock,要把像是 :0: 改成 :0
  • folder 的部分,最後面要有 / 代表這是 maildir

設定好之後,接著就是要轉換格式,我自己是用 Mutt 來轉,轉的方法是先用 mutt -f YOUR_MBOX 把信件打開,然後把全部信件 tag,全部存到另外的 folder 去,而因為 mutt 剛才被我設定過預設是 maildir,因此剛才存進去的 folder,就是純正的 maildir 啦,剩下就依樣畫葫蘆。

當然,上面這樣子轉很苦,通通都要手動,當然也有各式各樣的轉換工具。有另外一種轉法是把信通通倒出來,叫 procmail respool 一次,指令是 cat YOUR_MBOX | formail -ds procmail,不過這不太符合我的狀況,因為我有部分的 mailbox 是手動分類的,這樣子做的話,我會天下大亂。另外,要這樣子做,可以先把 SpamAssassin 拿掉,省得一堆 perl 跑來跑去。

通通都弄完後,用 mutt 來看看一切正不正常,正常的話,把 MTA 開回來,然後從外面寄封信給自己,確定一切都正常。

1 Responses to “從 mbox 到 maildir”


  1. No Comments
  1. 1 今日連結 (2005-11-24) [JeffHung.Blog]

Leave a Reply