Dovecot 從 mbox 遷移到 mdbox
我正在新磁碟上從 mbox 遷移到 mdbox。從 /mnt/mail/ $ user to /mnt/mail2/ $ 使用者
目前mail_location = mbox:~/mail:INBOX=/mnt/mail/%u/mail/Inbox
新的 mail_location = mdbox:/mnt/mail2/$user/mdbox
我的主要 userdb 是 passwd,我用另一個 userdb 覆蓋了所有使用者:
userdb { driver = passwd result_success = continue-ok } userdb { driver = passwd-file args = username_format=%u /etc/dovecot/passwd.override skip = notfound }
第一步,覆蓋該使用者的 mail_location:
$user:::::::userdb_mail_location=/mnt/mail2/%u/mdbox
開始遷移:
doveadm sync -f -u $user mbox:/mnt/mail/$user/mail:INBOX=/mnt/mail/$user/mail/Inbox
同步順利,所有文件夾和郵件都在 /mnt/mail2/$user/mdbox 上的 mdbox 位置。
然後該使用者的主目錄從 /mnt/mail/ 更改 $ user to /mnt/mail2/ $ 使用者,權限已設置。
/etc/passwd 顯示使用者的主目錄是 /mnt/mail2/$user。
/etc/dovecot/passwd.override 具有該使用者的新 mdbox mail_location。
不幸的是,當新郵件到達時,它仍然會轉到舊的 mbox。
Postfix 使用 dovecot-lda 作為傳遞代理:
郵箱命令 = /usr/lib/dovecot/dovecot-lda -f " $ SENDER" -a " $ 接受者”
dovecot-lda 是否可能不理解覆蓋?以及為什麼它仍然為該使用者提供舊的 $HOME ,無論它是否已更改?
問題是它
dovecot-lda
不進行 userdb 查找,並且我的覆蓋mail_location
沒有生效。在文件中提到,答案是添加-d "$USER"
到參數中。在 postfix 中,配置
mailbox_command
應該是:
mailbox_command = /usr/lib/dovecot/dovecot-lda -d "$USER" -f "$SENDER" -a "$RECIPIENT"
您是否查看過https://wiki2.dovecot.org/Migration/MailFormat?這通常很容易使用 dsync 使用那裡的說明來完成。