[Dovecot] Possible mbox corruption if mail is saved with wrong Content-Length header (2.1.6)

Jost Krieger Jost.Krieger+dovecot at rub.de
Fri Aug 31 11:42:34 EEST 2012


One of our users likes to delete attachments from his mails. He is using
roundcube and we installed a plugin for that.

He reports that from time to time one of his mails gets corrupted (cut
off in the middle).

I could verify there is something wrong in the logs:

imap(x1234567): Error: Cached message size larger than expected (6796 > 2844)
imap(x1234567): Error: Corrupted index cache file /net/mbx3/disc2/home/85/x1234567/Index/.imap/Sent/dovecot.index.cache: Broken physical size for mail UID 5001
imap(x1234567): Error: read(/net/mbx3/disc2/home/85/x1234567/Mail/Sent) failed: Input/output error (FETCH for mailbox Sent UID 5001)
imap(x1234567): Info: Disconnected: Internal error occurred. Refer to server log for more information. [2012-08-23 00:00:49] in=1124145 out=1324791

I had a look at the plugin and it works by duplicating the message and
leaving out the attachment(s). The headers are also duplicated,
including Content-Length. I've fixed that in the plugin, (don't know yet
if it helps), but I think it shouldn't cause such breakage in dovecot.

# doveconf -n
# 2.1.6: /usr/local/dovecot/etc/dovecot/dovecot.conf
# OS: Linux 2.6.9-103.ELsmp i686 Red Hat Enterprise Linux AS release 4 (Nahant Update 9)
doveconf: Warning: Dovecot was last started using /usr/local/dovecot/etc/dovecot.conf, but this config is /usr/local/dovecot/etc/dovecot/dovecot.conf
auth_master_user_separator = *
disable_plaintext_auth = no
doveadm_password = (hidden)
lda_mailbox_autocreate = yes
log_path = /dev/stderr
log_timestamp =
mail_location = mbox:~/Mail:INBOX=~/Mailbox:INDEX=~/Index
mail_plugins = " quota zlib mail_log notify virtual"
mdbox_rotate_size = 5 M
namespace {
  hidden = no
  inbox = yes
  location =
  prefix =
  separator = /
  type = private
} 
namespace {
  hidden = yes
  inbox = no
  list = children
  location = maildir:~/Maildir
  prefix = "#MD/"
  separator = /
  type = private
}
passdb {
  driver = pam
}
passdb {
  args = /usr/local/dovecot/etc/passwd.dovcot.master
  driver = passwd-file
  master = yes
}
plugin {
  acl = vfile
  mail_log_events = undelete mailbox_delete mailbox_rename mailbox_create
  mail_log_fields = uid box msgid size
  quota = fs:Disk quota
}
protocols = pop3 imap
service auth {
  client_limit = 4300
  user = root
}
service doveadm {
  inet_listener {
    port = 542
  }
}
service imap-login {
  inet_listener imap {
    address = 134.147.64.42
    port = 143
  }
  service_count = 0
}
service imap {
  drop_priv_before_exec = yes
  process_limit = 4096
  vsz_limit = 1 G
}
service pop3-login {
  inet_listener pop3 {
    address = 134.147.64.42
    port = 110
  }
  service_count = 0
}
service pop3 {
  drop_priv_before_exec = yes
  process_limit = 2048
  vsz_limit = 512 M
}
ssl = no
userdb {
  driver = passwd
}
protocol imap {
  mail_max_userip_connections = 50
  mail_plugins = " quota zlib mail_log notify virtual imap_quota imap_zlib"
}

Thanks
Jost Krieger
-- 
| Helft Spam ausrotten!                HTML in Mail ist unhöflich. |
| Postmaster, JAPH, manchmal Wahrsager               am RZ der RUB |
| Wahre Worte sind nicht gefällig, gefällige Worte sind nicht wahr.|
|                                          Lao Tse, Tao Te King 81 |



More information about the dovecot mailing list