[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