Email-Server

Dovecot 從 mbox 遷移到 mdbox

  • February 11, 2020

我正在新磁碟上從 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 使用那裡的說明來完成。

引用自:https://serverfault.com/questions/1002491