我们运行 dovecot 作为 IMAP 服务器和 postfix 来传递邮件。我们的一位用户抱怨电子邮件开始延迟(不,我们没有使用灰色列表或类似的东西)。/var/log/mail.info 在用户应该收到这封电子邮件时显示这些日志消息。邮件目录(例如 /mail)安装在 NFS 上(如果有帮助的话)
Jul 26 18:31:08 mail1 deliver([email protected]): Corrupted transaction log file /mail/example.com/user/dovecot.index.log: start_offset (5160) > file size (5140)
Jul 26 18:31:08 mail1 deliver([email protected]): fscking index file /mail/example.com/user/dovecot.index
Jul 26 18:31:08 mail1 deliver([email protected]): msgid=<[email protected]>: save failed to INBOX: Internal error occurred. Refer to server log for more information. [2009-07-26 18:31:08]
哦!延迟的原因是 dovecot 正在尝试处理损坏的索引。
只需让用户退出邮件,删除索引文件,当他们登录时它会自动重新创建。因此,只需执行以下操作:
Dovecot 为每条消息创建临时索引文件;当用户第一次登录时,如果索引不存在,则从头开始创建,因此这是一个简单有效的修复方法,并且每次都有效。我在早期版本的 Dovecot 中遇到过这种情况,删除索引在所有情况下都是 100% 有效的。
您以maildir 格式将邮件存储在 NFS 挂载上,对吗?
顺便说一句,Dovecot 的 pre-1.0 或 beta 版本经常出现这个问题。较新的版本已修复此问题。