Dovecot:删除未使用的收件箱

使用Dovecot,当涉及到收件箱清除时,我遇到了相当令人不安的问题。 这是我的设置:

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

相当基本的设置。 现在想象下面的情况:

  1. 我在我的数据库中创build一个用户(比如[email protected] ),并开始发送和接收电子邮件。 没问题,一切顺利。
  2. 我不再需要我的用户,我只是从数据库中删除它,没有更多的用户。

但是,这里的问题…在这一刻,/ /var/mail/mydomain.tld/johndoe )仍然存在。 现在想象:

  • 另一个John Doe出现了,他想要一个收件箱。 我将[email protected]添加到数据库,太棒了,它的工作原理!

现在有趣的是:以前的John Doe在离开前并没有删除他的电子邮件,新的John Doe已经访问了以前的邮箱内容(因为地址相同,他被给了相同的收件箱位置)。 我们希望John Doe号码1在他的收件箱中没有任何凭据,信用卡信息或类似的东西。

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

在我们的设置中,我们使用postgres作为后端来存储user信息。 我们将account_status设置为DB中的DELETED ,并且拥有一个cron,它将整个帐户的备份从文件系统中删除。 这个问题也在dovecot 邮件列表中讨论过,解决schemebuild议使用rm

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