Dovecot禁用zlib压缩和解压缩现有的消息

在将dovecot升级到2.1.7(wheezy)后,邮箱索引文件似乎被破坏了。 正常情况下dovecot应自动修复它们,但由于zlib压缩,无法确定正确的消息大小。

Error: Corrupted index cache file ... Input/output error (FETCH for mailbox INBOX UID ... Maildir filename has wrong S value ... 

现在我想完全禁用zlib插件并解压缩现有的消息。 dsync的试验不成功,因为dsync根本没有解压缩它们。

任何build议如何处理?

就我而言,消息大小由文件名中的“,S = 12345”属性决定。 他们提供了一个Perl脚本,它可以recursion地扫描一个或多个maildirs选项,以提取zlib压缩文件,确定实际的消息大小,并将其写入文件名。

我指的是在这里find的信息: http : //www.dovecot.org/list/dovecot/2013-January/087953.html

该脚本可在http://dovecot.org/tools/maildir-size-fix.plfind

您可能需要更改脚本中的某些configurationvariables,或者确定哪些参数可用 – 至less我自己没有发现脚本使用情况的相关文档,但脚本开始处的configuration非常容易理解。

对我来说,它像一个魅力,至今没有任何缺陷。

 #!/bin/bash IFS=$'\n' for i in $(find /var/vmail -type f); do if file "$i" |grep gzip >/dev/null; then # echo "Extracting GZIP:" "$i" mv "$i" "$i".gz gunzip "$i".gz elif file "$i" |grep bzip2 >/dev/null; then # echo "Extracting BZIP2:" "$i" bunzip2 -q "$i" mv "$i".out "$(echo $i |sed 's/.out//')" fi done