Dovecot:删除未使用的收件箱

Dovecot:删除未使用的收件箱

使用 Dovecot 时,我在清理收件箱时遇到了一个相当令人困扰的问题。这是我的设置:

  • Dovecot 将其用户/邮箱存储在 MySQL 后端。
  • Postfix 处理电子邮件传输,并依靠 Dovecot 进行身份验证。
  • 收件箱存储在 中/var/mail/domain/user

这是非常基本的设置。现在想象一下以下场景:

  1. 我在数据库中创建一个用户(假设[电子邮件保护]),然后开始发送和接收电子邮件。没有问题,一切顺利。
  2. 我不再需要我的用户,我只是将其从数据库中删除,不再有用户。

但问题是……目前,/var/mail/mydomain.tld/johndoe)仍然存在。现在想象一下:

  • 又出现了一个 John Doe,他想要一个收件箱。我补充道[电子邮件保护]到数据库,太好了,它起作用了!

现在有一件有趣的事情:之前的 John Doe 在离开之前没有删除他的电子邮件,而新的 John Doe 已经获得了之前邮箱内容的访问权限(由于地址相同,因此他获得了相同的收件箱位置)。希望 John Doe 1 号没有在他的收件箱中留下凭证、信用卡信息或类似的东西……

所以我的问题是:删除 Dovecot 用户时是否有正确的方法来删除实际的收件箱?在我的示例中,我希望/var/mail/mydomain.tld/johndoe在第一个 John Doe 消失时删除我(步骤 2,也许在服务重启时?)。现在,我可以使用我的前端应用程序(填充 MySQL 后端的 PHP 应用程序)以编程方式执行此操作,但这会造成权限混乱(允许 Web 用户访问邮箱,不,谢谢!)

答案1

在我们的设置中,我们使用postgres后端来存储user信息。我们在 DB 中设置了account_statusto DELETED,并有一个 cron 来备份整个帐户并将其从文件系统中删除。这个问题在 dovecot 中进行了讨论邮件列表并且建议的解决方案是使用rm

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

相关内容