我有一个在 Cyrus (2.5.10)、Postfix (2.7.1) 和 Perdition (1.19) 上运行的邮件基础设施。
最近很多用户抱怨他们的配额使用情况显示错误。
当尝试使用配额 -f,由于某些无效邮箱不存在且这些邮箱甚至未在ctl_mboxlist -d,如:''(空字符串)和'DELETED.user.teste3cyrus.5A902111EFJulho 2017.5B2E7DCF4DE7725F3314'。
以下是该命令的完整输出:
无法打开邮箱“domain.com!DELETED.user.teste3cyrus.5A902111EFJulho 2017.5B2E7DCF4DE7725F3314”的标头:系统 I/O 错误:没有此文件或目录正在处理“”的 mbox 列表:系统 I/O 错误:没有此文件或目录
有谁遇到过这样的事情可以帮助我吗?
PS:我尝试过修复单个邮箱配额的方法,但是没有成功。文档的配额命令仅指出可以使用邮箱前缀,但没有显示任何模式。我试过用户/[电子邮件保护],[电子邮件保护],信箱名,但这些都不起作用。
答案1
请提供版本,因为 Cyrus 已经改变了很多。
话虽如此,我建议先进行重建,这应该可以找到这些损坏的已删除邮箱并使它们正确存在。我还会使用 cyr_expire 进行清理。
至于你是如何陷入这种状态的......我不知道。这听起来像是你做了一些事情,比如移动文件系统或转储和恢复 mailboxes.db,而没有保持系统其余部分同步。
答案2
终于取得了一些进展。实际问题是由于文件系统级别缺少一个文件夹。该文件夹被标记为稍后删除,但在 Cyrus 将其删除之前,它可能会被手动删除。
从那时起,每次 Cyrus 尝试删除所有用户的邮箱和消息时,都会遇到因文件夹丢失而导致的系统 I/O 错误,因此一些用户无法摆脱他们不想要的消息。
通过重新创建并赋予任务文件夹正确的所有权解决了该问题:
# mkdir /partition/domain/d/domain.com/t/user/teste3cyrus
# chwon -R cyrus:mail /partition/domain/d/domain.com/t/user/teste3cyrus
重建其元数据文件:
# su cyrus -c "/usr/lib/cyrus/bin/reconstruct -rfx DELETED/user/[email protected]"
然后彻底删除它:
# su cyrus -c "/usr/sbin/cyrus expire -E 0 -D 0 -X 0 -p DELETED.user.teste3cyrus -v"
其他邮箱也出现了同样的问题。我重复了上述相同的步骤,并可以使用以下方法修复所有用户的配额使用情况:
# su cyrus -c "/usr/lib/cyrus/bin/quota -f"