Dovecot
Dovecot : 刪除未使用的收件箱
在使用 Dovecot 時,我在收件箱清除方面遇到了一個非常令人不安的問題。這是我的設置:
- Dovecot 將其使用者/郵箱儲存在 MySQL 後端。
- Postfix 處理電子郵件傳輸,並依賴 Dovecot 進行身份驗證。
- 收件箱儲存在
/var/mail/domain/user
.很基本的設置。現在想像以下場景:
- 我在我的數據庫中創建了一個使用者(比如說johndoe@mydomain.tld),然後開始發送和接收電子郵件。沒有問題,一切順利。
- 我不再需要我的使用者,我只是從數據庫中刪除它,不再需要使用者。
但問題是……此時,
/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_status
為DELETED
,並有一個 cron 來備份整個帳戶並將它們從文件系統中刪除。dovecot郵件列表中也討論了這個問題,建議的解決方案是使用rm
rm -rf `doveadm user -f home $username`