Dovecot

Dovecot : 刪除未使用的收件箱

  • May 9, 2016

在使用 Dovecot 時,我在收件箱清除方面遇到了一個非常令人不安的問題。這是我的設置:

  • Dovecot 將其使用者/郵箱儲存在 MySQL 後端。
  • Postfix 處理電子郵件傳輸,並依賴 Dovecot 進行身份驗證。
  • 收件箱儲存在/var/mail/domain/user.

很基本的設置。現在想像以下場景:

  1. 我在我的數據庫中創建了一個使用者(比如說johndoe@mydomain.tld),然後開始發送和接收電子郵件。沒有問題,一切順利。
  2. 我不再需要我的使用者,我只是從數據庫中刪除它,不再需要使用者。

但問題是……此時,/var/mail/mydomain.tld/johndoe) 仍然存在。現在想像:

  • 另一個 John Doe 出現了,他想要一個收件箱。我將johndoe@mydomain.tld添加到數據庫中,太好了,它有效!

現在有趣的是:以前的 John Doe 在離開前沒有刪除他的電子郵件,而新的 John Doe 可以訪問以前的郵箱內容(因為地址相同,所以他獲得了相同的收件箱位置)。讓我們希望 John Doe 1 號沒有讓憑據、信用卡資訊或類似的東西進入他的收件箱……

所以這是我的問題:**在刪除 Dovecot 使用者時是否有適當的方法來刪除實際收件箱?**在我的範例中,我希望/var/mail/mydomain.tld/johndoe在第一個 John Doe 消失時被刪除(步驟 2,可能在服務重啟時?)。現在,我可以使用我的前端應用程序(一個填充 MySQL 後端的 PHP 應用程序)以程式方式執行此操作,但這會造成權限混亂(允許 Web 使用者訪問郵箱,不,謝謝!)

在我們的設置中,我們使用postgres後端來儲存user資訊。我們在 DB 中設置account_statusDELETED,並有一個 cron 來備份整個帳戶並將它們從文件系統中刪除。dovecot郵件列表中也討論了這個問題,建議的解決方案是使用rm

rm -rf `doveadm user -f home $username`

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