我将 maildir 用户从旧的 courier imap 安装迁移到 docker alpine:latest 上的 dovecot。最初一切似乎都很好,但是,似乎出现了一个问题。由于缓存大小差异,某些消息将无法获取,日志最终看起来像这样:
- 错误读取(/mailmessage1)缓存邮件大小小于预期
- 错误 邮箱物理尺寸损坏
- 删除损坏的缓存记录时出错
- 错误读取(/mailmessage1)缓存邮件大小小于预期
没什么帮助。根据此处的条目: https://xpufx.com/posts/dovecot_doveadm_failed_cache_message_size_error/
我认为两个服务配置不匹配,但我没有看到任何明显的问题,我应该将 zlib 设为全局配置吗?
maildir 中的所有邮件均未压缩。除了一些有关 mbox 的投诉外,Google 上没有太多关于此内容的信息。
答案1
一直在断断续续地深入研究这个问题。
Maildir 文件名的大小是文件名的一部分。根据此评论:
v1.1,作者:Timo Sirainen,公共领域
一些由 .. courier? maildrop? 创建的 maildir 文件名具有文件大小
与文件的实际大小不匹配。此脚本会找到此类文件,并
重命名它们。如果从 dovecot-uidlist 中找到它们,它们也会被重命名
因此它们的 IMAP UID 也不会改变。POP3 UIDL
也可以选择保留。
从这个脚本: https://github.com/dovecot/tools/blob/main/maildir-size-fix.pl
文件名中的大小可能不正确。我确认有几个不正确,目前正在考虑使用 maildir_broken_filename_sizes=yes 来修复此问题。如果我在使用此解决方案时遇到任何进一步的困难,我会编辑此答案。