Postfix 之MailBox 轉換 MailDir --以Fedora為例
-
執行rpm -qa|egrep -i 'perl-5|perl-TimeDate',確認已經安裝Perl與TimeDate兩個元件。(http://search.cpan.org/~gbarr/TimeDate-1.16/)
-
下載http://batleth.sapienti-sat.org/projects/mb2md/mb2md-3.20.pl.gz
解開mb2md-3.20.pl.gz
chmod +x mb2md-3.20.pl
mv mb2md-3.20.pl /usr/local/bin/mb2md
-
執行下面的Shell Scrip
#!/bin/sh
MBOXDIR="/var/spool/mail"
MAILDIR="/var/spool/maildir"
cd $MBOXDIR
for user in *; do
mkdir -p $MAILDIR/$user
mb2md -s $MBOXDIR/$user -d $MAILDIR/$user/
chmod -R 700 $MAILDIR/$user/
chown -R $user.$user $MAILDIR/$user/
done
-
結束後,就會將/var/spool/mail轉換到/var/spool/maildir。
-
修改Postfix的main.cf設定(/etc/postfix/main.cf),加入下面這行:
mail_spool_directory=/var/spool/maildir/
-
修改Dovecot IMAP設定檔:(/etc/dovecot.conf)
default_mail_env=maildir:/var/spool/maildir/%u
-
接下來,全部發信會有問題:
said: 451 4.5.0 Error in processing, id=16056-04, mime_decode-1 FAILED: MIME::
Parser: can't open tmpfile: Invalid argument (in reply to end of DATA command))
解法很簡單,跟著下面步驟。
-
修改/var/spool/maildir ownner 要跟舊的 /var/spool/mail 一樣。
-
執行下面兩個目錄權限異動:
chmod 1777 /var/spool/maildir/
chmod 1777 /tmp
-
如果還有queue,在下postsuper -r ALL。