Dovecot 如何定期清空所有用户邮箱

Dovecot 如何定期清空所有用户邮箱

我在 Ubuntu Server 22.04 上全新安装了 Dovecot(和 Postfix)

该配置仅用于办公桌之间的本地邮件,并且消息实际上仅是即时的

简而言之,驱动器存储空间有限,这不是办公室官方邮件

这些邮件只是用户之间的即时消息,历史记录将保留在相应的 Thunderbird 客户端中。请注意,出于同样的原因,dovecot-imapd 根本没有安装


我需要设置一个脚本来删除所有超过 30 天的用户消息

到目前为止,阅读文档后,我发现这些命令应该是正确的

doveadm expunge -A mailbox Inbox savedbefore 30d
doveadm expunge -A mailbox Sent savedbefore 30d
doveadm expunge -A mailbox Trash savedbefore 30d

PS:由于 Dovecot 提供了-A选择所有用户的开关,您是否知道是否有类似的开关来选择所有邮箱类型(已发送、已接收、垃圾邮件等,以确保在一行中一次性匹配所有邮箱),谢谢

请注意,dovecot-imapd 尚未安装

好吧,当我只运行其中一个时,例如doveadm expunge -A mailbox Inbox savedbefore 30d,我得到了这个输出

doveadm(nobody): Error: mkdir(/nonexistent/mail/.imap) failed: Permission denied (euid=65534(nobody) egid=65534(nogroup))
doveadm(nobody): Error: mkdir(/nonexistent/mail/.imap) failed: Permission denied (euid=65534(nobody) egid=65534(nogroup))
doveadm(nobody): Error: Syncing mailbox 'Trash' failed: Mailbox doesn't exist: Trash
doveadm(robert): Error: Syncing mailbox 'Trash' failed: Mailbox doesn't exist: Trash
doveadm(lxd): Error: mkdir(/var/snap/lxd/common/lxd/mail/.imap) failed: Permission denied (euid=999(lxd) egid=100(users) missing +w perm: /var/snap/lxd/common/lxd, dir owned by 0:0 mode=0711)
doveadm(lxd): Error: mkdir(/var/snap/lxd/common/lxd/mail/.imap) failed: Permission denied (euid=999(lxd) egid=100(users) missing +w perm: /var/snap/lxd/common/lxd, dir owned by 0:0 mode=0711)
doveadm(lxd): Error: Syncing mailbox 'Trash' failed: Mailbox doesn't exist: Trash

允许谁?

doveadm 理论上是由 dovecot 用户运行的命令,理论上它是管理邮箱的命令

真的很困惑

谢谢你的暗示

此外,任何有关命令行的认知也都值得欢迎。谢谢

答案1

虽然“最短有效搜索查询是全部”,doveadm要求您在删除内容时明确列出邮箱,以避免错误。不过,您仍然可以多次执行该命令,或使用 , 组合多个搜索查询OR。如果在 shell 中工作,请不要忘记转义括号,例如:

doveadm [command] \( MAILBOX box1 OR MAILBOX box2 [..] \) [common-search-query]

如果列表不是静态的,您仍然可以循环输出doveadm mailbox list


/nonexistent听起来像是-A标志迭代通过系统不适合使用 dovecot 的用户。

检查您的first_valid_uid设置。

相关内容