[Dovecot] Maildir filename has wrong S value

Wouter de Geus benv-dovecot.org at junerules.com
Tue May 15 13:23:53 EEST 2012


Hello folks,

This morning I tried to open an old archive mail folder using Mutt.
However, while fetching headers it aborted.
Checking the dovecot log gave me this:

@400000004fb21996267d37d4 imap(benv): Error: Cached message size smaller than expected (9115 < 9420)
@400000004fb21996267e8bac imap(benv): Error: Maildir filename has wrong S value, renamed the file from /home/vpopmail/domains/benv.junerules.com/benv/Maildir/.Old.2009/cur/1260395566.28175.black,S=9115:2,S to /home/vpopmail/domains/benv.junerules.com/benv/Maildir/.Old.2009/cur/1260395566.28175.black,S=9420:2,S
@400000004fb21996267e937c imap(benv): Error: Corrupted index cache file /home/vpopmail/domains/benv.junerules.com/benv/Maildir/.Old.2009/dovecot.index.cache: Broken physical size for mail UID 294
@400000004fb21996267eaaec imap(benv): Error: read(/home/vpopmail/domains/benv.junerules.com/benv/Maildir/.Old.2009/cur/1260395566.28175.black,S=9115:2,S) failed: Input/output error (uid=294)
@400000004fb219962680683c imap(benv): Info: Disconnected: Internal error occurred. Refer to server log for more information. [2012-05-15 10:53:32] in=6503 out=192718

I've retried opening this folder several times, but each time Dovecot only fixes 1 file and then aborts.
(the folder apparently has a lot more files with incorrect sizes).
My question here is: Why does dovecot abort? Isn't the issue fixed after the rename?

Also: The files are not corrupted or unreadable, reading them through the commandline works fine.
I've looked through my backups and saw that at least half a year ago this mismatch in size was already present.

I've been running dovecot for quite a while, so the cause of this size mismatch might very well be a issue in an older version of dovecot / my configuration.
Right now I'm running dovecot 2.1.6, but I've been running the v1.2 version for quite a while before that.

Is this something that can be improved in dovecot so it doesn't abort after 1 rename?
(of course I could script a rename operation, but that seems like a workaround to me)

Thanks for reading.

Wouter.




My current configuration:
=========================
# 2.1.6: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32.32-g3d14ce7 x86_64 Slackware 11.0.0
base_dir = /var/run/dovecot2/
disable_plaintext_auth = no
first_valid_uid = 89
info_log_path = /dev/stderr
last_valid_uid = 89
log_path = /dev/stderr
log_timestamp =
mail_debug = yes
mail_location = maildir:~/Maildir
mail_max_userip_connections = 50
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify e
nvironment mailbox date
namespace {
  inbox = yes
  location =
  prefix = INBOX.
  separator = .
  type = private
}
passdb {
  driver = vpopmail
}
plugin {
  autocreate = INBOX.Spam
  quota = maildir
  sieve = ~/.sieve/dovecot.sieve
  sieve_dir = ~/.sieve
  sieve_global_dir = /etc/dovecot/sieve/
  sieve_subaddress_sep = -+
}
protocols = imap pop3 sieve
service auth {
  unix_listener auth-master {
    group = vchkpw
    mode = 0660
  }
  unix_listener auth-userdb {
    group = vchkpw
    mode = 0660
  }
}
service imap-login {
  inet_listener imap {
    address = [::] *
    port = 143
  }
  inet_listener imaps {
    address = [::] *
    port = 993
  }
  process_limit = 256
  process_min_avail = 3
  service_count = 1
  user = dovecot
}
service managesieve-login {
  process_limit = 256
  process_min_avail = 3
  service_count = 1
  user = dovecot
}
service pop3-login {
  inet_listener pop3 {
    address = [::] *
    port = 110
  }
  inet_listener pop3s {
    address = [::] *
    port = 995
  }
  process_limit = 256
  process_min_avail = 3
  service_count = 1
  user = dovecot
}
ssl_cert = </var/qmail/control/servercert.pem
ssl_cipher_list = ALL:!LOW
ssl_key = </var/qmail/control/servercert.pem
userdb {
  driver = vpopmail
}
verbose_proctitle = yes
protocol lda {
  hostname = mail.benv.junerules.com
  info_log_path = /var/log/dovecot/dovecot2-deliver.log
  log_path = /var/log/dovecot/dovecot2-deliver-errors.log
  mail_plugins = sieve
  postmaster_address = postmaster at benv.junerules.com
  sendmail_path = /var/qmail/bin/sendmail
}
protocol imap {
  imap_max_line_length = 64 k
  mail_plugins = quota imap_quota autocreate
}
protocol pop3 {
  mail_plugins = quota autocreate
  pop3_no_flag_updates = no
  pop3_uidl_format = %v-%u
}
=================================


More information about the dovecot mailing list