[Dovecot] Corrupted dbox file - purging found mismatched offsets

Daniel Parthey daniel.parthey at informatik.tu-chemnitz.de
Sun Jul 22 22:06:41 EEST 2012


Hi,

we are running a cluster using mdbox on NFS with director+mailbox on each node.

After running our daily doveadm purge loop over all users,
we got dbox corruption...

doveadm user "*" |\
while read username
do
  doveadm -c /etc/dovecot-director/dovecot-director.conf -D purge -u "$username"
done

For one user (which deleted a lot of messages from his mailboxes today),
we got the following error in the dovecot.log:

Jul 22 20:10:36 10.129.3.213 dovecot: doveadm(user at example.org): Error: Corrupted dbox file /mail/dovecot/example.org/user/mail/storage/m.24 (around offset=1380859): purging found mismatched offsets (1380829 vs 920527, 3/61)
Jul 22 20:10:36 10.129.3.213 dovecot: doveadm(user at example.org): Warning: mdbox /mail/dovecot/example.org/user/mail/storage: rebuilding indexes

What does this message exactly tell me and
how to prevent this in the future?

Now the indexes are broken and flags are lost.

The "storage" directory content of the affected user looks as follows:

drwx------ 2 vmail vmail     4096 2012-07-22 20:10 .
drwx------ 4 vmail vmail     4096 2012-05-06 12:16 ..
-rw------- 1 vmail vmail    99008 2012-07-22 20:10 dovecot.map.index
-rw------- 1 vmail vmail    33016 2012-07-22 20:10 dovecot.map.index.log
-rw------- 1 vmail vmail    34664 2012-07-22 20:10 dovecot.map.index.log.2
-rw------- 1 vmail vmail     8134 2012-05-16 11:36 m.22
-rw------- 1 vmail vmail 10572466 2012-06-02 23:09 m.24
-rw------- 1 vmail vmail  1380205 2012-05-27 10:59 m.24.broken
-rw------- 1 vmail vmail  6506837 2012-06-09 15:42 m.25
-rw------- 1 vmail vmail 18201641 2012-06-17 22:50 m.26
-rw------- 1 vmail vmail 11345293 2012-07-01 14:37 m.28
-rw------- 1 vmail vmail 36707787 2012-07-08 23:05 m.29
-rw------- 1 vmail vmail  6062419 2012-07-15 23:34 m.30
-rw------- 1 vmail vmail 52396198 2012-07-22 20:10 m.31
-rw------- 1 vmail vmail  3067862 2012-07-20 14:31 m.32
-rw------- 1 vmail vmail 44520965 2012-07-20 14:31 m.33
-rw------- 1 vmail vmail 52426605 2012-07-22 20:10 m.34
-rw------- 1 vmail vmail 28984844 2012-07-22 20:10 m.35
-rw------- 1 vmail vmail 14465248 2012-07-22 20:10 m.36
-rw------- 1 vmail vmail 37451127 2012-07-22 20:10 m.37
-rw------- 1 vmail vmail 41494033 2012-07-22 20:10 m.38
-rw------- 1 vmail vmail 52066924 2012-07-22 20:10 m.39
-rw------- 1 vmail vmail 49785529 2012-07-22 20:10 m.40
-rw------- 1 vmail vmail 23509886 2012-07-22 20:10 m.41
-rw------- 1 vmail vmail 29339462 2012-07-22 20:10 m.42
-rw------- 1 vmail vmail 29510420 2012-07-22 20:10 m.43
-rw------- 1 vmail vmail 50896380 2012-07-22 20:10 m.44
-rw------- 1 vmail vmail  8331046 2012-07-22 20:10 m.45
-rw------- 1 vmail vmail  5903744 2012-07-22 20:10 m.46
-rw------- 1 vmail vmail    70281 2012-07-22 20:10 m.47
-rw------- 1 vmail vmail 27397909 2012-07-22 20:10 m.48
-rw------- 1 vmail vmail  3893509 2012-07-22 20:10 m.49
-rw------- 1 vmail vmail  1410097 2012-07-22 20:10 m.50
-rw------- 1 vmail vmail  1905759 2012-07-22 20:10 m.51
-rw------- 1 vmail vmail 51783968 2012-05-06 12:12 m.9

Any hints on how to prevent dbox corruption in this case?
And what should I do with the "m.24.broken" file now?

Regards
Daniel
-- 
https://plus.google.com/103021802792276734820
-------------- next part --------------
# 2.1.8: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-40-server x86_64 Ubuntu 10.04.4 LTS 
auth_cache_negative_ttl = 0
auth_cache_size = 10 M
auth_cache_ttl = 1 mins
auth_verbose = yes
auth_verbose_passwords = sha1
deliver_log_format = mailbox: deliver: msgid=%m from=%f: %$
dict {
  quota = mysql:/etc/dovecot/conf.d/dovecot-dict-sql.conf.ext
}
disable_plaintext_auth = no
doveadm_password = xxx
imapc_features = rfc822.size
imapc_host = local-mailbox
imapc_port = 18143
instance_name = dovecot-mailbox
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
login_greeting = Mailbox
login_log_format = mailbox: login: %$: %s
login_trusted_networks = 10.129.3.0/24
mail_debug = yes
mail_fsync = always
mail_gid = vmail
mail_home = /mail/dovecot/%d/%n
mail_location = mdbox:~/mail
mail_log_prefix = "mailbox: mail: %s(%u): "
mail_plugins = quota stats
mail_privileged_group = vmail
mail_uid = vmail
managesieve_implementation_string = Sieve
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 environment mailbox date ihave
mdbox_rotate_interval = 1 weeks
mdbox_rotate_size = 50 M
mmap_disable = yes
passdb {
  args = /etc/dovecot/conf.d/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  quota = dict:User quota::proxy::quota
  quota_rule = *:storage=10G
  quota_rule2 = Trash:storage=+100M
  quota_warning = storage=95%% quota-warning 95 %u
  quota_warning2 = storage=80%% quota-warning 80 %u
  sieve = ~/.dovecot.sieve
  sieve_dir = ~/sieve
  stats_refresh = 30 secs
  stats_track_cmds = yes
}
protocols = imap pop3 lmtp sieve
service auth {
  unix_listener auth-userdb {
    group = dovecot
    mode = 0660
    user = dovecot
  }
}
service dict {
  unix_listener dict {
    group = vmail
    mode = 0660
  }
}
service doveadm {
  inet_listener doveadm-server {
    port = 19000
  }
}
service imap-login {
  inet_listener imap {
    port = 19143
  }
}
service imap-postlogin {
  executable = script-login /usr/local/bin/dovecot-postlogin
  user = $default_internal_user
}
service imap {
  executable = imap imap-postlogin
}
service lmtp {
  inet_listener lmtp {
    address = *
    port = 19024
  }
}
service managesieve-login {
  inet_listener sieve {
    port = 19200
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 19110
  }
}
service pop3-postlogin {
  executable = script-login /usr/local/bin/dovecot-postlogin
  user = $default_internal_user
}
service pop3 {
  executable = pop3 pop3-postlogin
}
service quota-warning {
  executable = script /usr/local/bin/quota-warning
  extra_groups = dovecot
  unix_listener quota-warning {
    user = vmail
  }
  user = vmail
}
service stats {
  fifo_listener stats-mail {
    mode = 0600
    user = vmail
  }
}
ssl = no
userdb {
  driver = prefetch
}
userdb {
  args = /etc/dovecot/conf.d/dovecot-sql.conf.ext
  driver = sql
}
verbose_proctitle = yes
protocol imap {
  imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
  mail_plugins = quota stats imap_quota imap_stats
}
protocol lmtp {
  mail_plugins = quota stats sieve
}
-------------- next part --------------
# 2.1.8: /etc/dovecot-director/dovecot-director.conf
# OS: Linux 2.6.32-40-server x86_64 Ubuntu 10.04.4 LTS 
auth_verbose = yes
auth_verbose_passwords = sha1
base_dir = /var/run/dovecot-director
deliver_log_format = director: deliver: msgid=%m from=%f: %$
director_doveadm_port = 20000
director_mail_servers = 10.129.3.193 10.129.3.192 10.129.3.191 10.129.3.190
director_servers = 10.129.3.193 10.129.3.192 10.129.3.191 10.129.3.190
director_user_expire = 2 days
disable_plaintext_auth = no
doveadm_password = xxx
doveadm_proxy_port = 19000
instance_name = dovecot-director
lmtp_proxy = yes
login_greeting = Mail Balancer
login_log_format = director: login: %$: %s
login_trusted_networks = 10.129.3.0/24
mail_debug = yes
mail_fsync = always
mail_gid = vmail
mail_home = /mail/dovecot/%d/%n
mail_location = mdbox:~/mail
mail_log_prefix = "director: mail: %s(%u): "
mail_privileged_group = vmail
mail_uid = vmail
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 environment mailbox date ihave
mmap_disable = yes
passdb {
  args = /etc/dovecot-director/conf.d/dovecot-sql.conf.ext
  driver = sql
}
protocols = imap pop3 lmtp sieve
service auth {
  unix_listener auth-userdb {
    user = dovecot
  }
}
service director {
  fifo_listener login/proxy-notify {
    mode = 0666
  }
  inet_listener {
    port = 9090
  }
  unix_listener director-userdb {
    mode = 0600
  }
  unix_listener login/director {
    mode = 0666
  }
}
service doveadm {
  executable = doveadm-server director
  inet_listener doveadm-server {
    port = 20000
  }
}
service imap-login {
  executable = imap-login director
  inet_listener imap {
    port = 20143
  }
  inet_listener imaps {
    port = 20993
    ssl = yes
  }
}
service lmtp {
  inet_listener lmtp {
    address = *
    port = 20024
  }
}
service managesieve-login {
  executable = managesieve-login director
  inet_listener sieve {
    port = 20200
  }
}
service pop3-login {
  executable = pop3-login director
  inet_listener pop3 {
    port = 20110
  }
  inet_listener pop3s {
    port = 20995
    ssl = yes
  }
}
ssl_cert = </etc/certs/wildcard.net.crt
ssl_key = </etc/certs/wildcard.net.key
userdb {
  driver = prefetch
}
userdb {
  args = /etc/dovecot-director/conf.d/dovecot-sql.conf.ext
  driver = sql
}
verbose_proctitle = yes
protocol lmtp {
  auth_socket_path = director-userdb
}
protocol sieve {
  auth_socket_path = director-userdb
}
protocol doveadm {
  auth_socket_path = director-userdb
}
protocol imap {
  imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
}


More information about the dovecot mailing list