Hello,

 

We have recently implemented dovecot directors to resolve an ongoing NFS lock/corruption issue. Everything was working great! So we updated our servers from centos 7.3 to 7.7 and dovecot 2.2.10 to 2.3.8

This was a bit of a failure and we were getting spammed with corrupt index files and logs. After we clear the index files with rm rf/mail/d/e/username/Maildir/dovecot*, they just come back in.

From:

dovecot-mysql-2.3.8-4.x86_64

dovecot-2.3.8-4.x86_64

dovecot-pigeonhole-2.3.8-4.x86_64

To:

dovecot-2.2.10-8.el7.x86_64

dovecot-mysql-2.2.10-8.el7.x86_64

dovecot-pigeonhole-2.2.10-8.el7.x86_64

 

We rolled back nfs-utils and libs due to a case on redhats bug report “https://bugzilla.redhat.com/show_bug.cgi?id=1521071

libnfsidmap-0.25-19.el7.x86_64

nfs-utils-1.3.0-0.65.el7.x86_64

to

libnfsidmap-0.25-15.el7.x86_64

nfs-utils-1.3.0-0.33.el7.x86_64

 

We rolled back our dovecot version to 2.2.10 and are still getting the following logs.

 

Any advice would help

 

Network view:

 

|Dovecot Directors x 3|

                     |

|Dovecot servers x4| Storage is shared between all 4 servers

                     |

|Netapp NFSv3 Storage| Nothing changed here

 

 

Oct 25 01:33:25 <IP> dovecot: imap(<username>): Error: Log synchronization error at seq=89,offset=32340 for /mail/j/k/<username>/Maildir/dovecot.index: Extension record update for invalid uid=6798

Oct 25 01:33:25 <IP> dovecot: imap(<username>): Error: Log synchronization error at seq=89,offset=32384 for /mail/j/k/<username>/Maildir/dovecot.index: Extension record update for invalid uid=6798

Oct 25 01:33:25 <IP> dovecot: imap(<username>): Error: Synchronization corrupted index header /mail/j/k/<username>/Maildir/dovecot.index: first_recent_uid 6799 > next_uid 6798

Oct 25 01:33:25 <IP> dovecot: imap(<username>): Warning: fscking index file /mail/j/k/<username>/Maildir/dovecot.index

Oct 25 01:33:25 <IP> dovecot: imap(<username>): Error: Fixed index file /mail/j/k/<username>/Maildir/dovecot.index: first_recent_uid 6799 -> 6798

Oct 25 01:33:26 <IP> dovecot: imap(<username>): Error: Broken file /mail/j/k/<username>/Maildir/dovecot-uidlist line 6461: Invalid data:

Oct 25 01:33:26 <IP> dovecot: imap(<username>): Error: Log synchronization error at seq=89,offset=32488 for /mail/j/k/<username>/Maildir/dovecot.index: Append with UID 6798, but next_uid = 6799

Oct 25 01:33:26 <IP> dovecot: imap(<username>): Warning: fscking index file /mail/j/k/<username>/Maildir/dovecot.index

Oct 25 01:47:14 <IP> dovecot: imap(<username>): Warning: fscking index file /mail/d/e/<username>/Maildir/dovecot.index

Oct 25 01:47:14 <IP> dovecot: imap(<username>): Error: Failed to map transaction log /mail/d/e/<username>/Maildir/dovecot.index.log at sync_offset=9900 after locking: pread() failed: Stale file handle

Oct 25 01:47:14 <IP> dovecot: imap(<username>): Error: Index /mail/d/e/<username>/Maildir/dovecot.index: Lost log for seq=16 offset=192: Missing middle file seq=16 (between 16..4294967295, we have seqs 14): Requested newer log than exists: Log inode is unchanged (initial_mapped=1, reason=Index mapped)

Oct 25 01:51:14 <IP> dovecot: imap(<username>): Error: Broken file /mail/d/e/<username>/Maildir/dovecot-uidlist line 65: Invalid data:

 

Dovecot -n

 

# 2.2.10: /etc/dovecot/dovecot.conf

# OS: Linux 3.10.0-1062.1.2.el7.x86_64 x86_64 CentOS Linux release 7.7.1908 (Core)

auth_mechanisms = plain login

auth_username_format = %Ln

auth_verbose = yes

auth_verbose_passwords = plain

disable_plaintext_auth = no

first_valid_uid = 300

lda_mailbox_autocreate = yes

lda_mailbox_autosubscribe = yes

mail_fsync = always

mail_location = maildir:~/Maildir

mail_nfs_index = yes

mail_nfs_storage = yes

maildir_very_dirty_syncs = yes

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

namespace inbox {

  inbox = yes

  location =

  mailbox Drafts {

    special_use = \Drafts

  }

  mailbox Junk {

    special_use = \Junk

  }

  mailbox Sent {

    special_use = \Sent

  }

  mailbox "Sent Messages" {

    special_use = \Sent

  }

  mailbox Trash {

    special_use = \Trash

  }

  prefix =

}

passdb {

  args = /etc/dovecot/sql.conf.ext

  driver = sql

}

plugin {

  sieve = ~/.dovecot.sieve

  sieve_dir = ~/sieve

  sieve_global_dir = /mail/sieve/global/

  sieve_global_path = /mail/sieve/default.sieve

}

postmaster_address = postmaster@%d

protocols = imap pop3 lmtp sieve

service auth {

  client_limit = 0

  inet_listener {

    port = 11010

  }

  process_limit = 1

  process_min_avail = 0

  service_count = 0

}

service dict {

  unix_listener dict {

    group = vmail

    mode = 0600

    user = vmail

  }

}

service imap-login {

  inet_listener imap {

    port = 143

  }

  inet_listener imaps {

    port = 993

    ssl = yes

  }

  process_limit = 2

  process_min_avail = 2

  service_count = 0

}

service imap {

  client_limit = 1

  executable = imap

  process_limit = 2048

  process_min_avail = 50

  service_count = 1

}

service lmtp {

  client_limit = 1

  process_limit = 0

  process_min_avail = 0

  service_count = 0

  unix_listener /var/spool/postfix/private/dovecot-lmtp {

    group = postfix

    mode = 0660

    user = postfix

  }

}

service managesieve-login {

  inet_listener sieve {

    port = 4190

  }

}

service pop3-login {

  inet_listener pop3 {

    port = 110

  }

  inet_listener pop3s {

    port = 995

    ssl = yes

  }

  process_limit = 2

  process_min_avail = 2

  service_count = 0

}

service pop3 {

  client_limit = 1

  executable = pop3

  process_limit = 256

  process_min_avail = 25

  service_count = 1

}

ssl_ca = </etc/ssl/mdc/mdc.ca

ssl_cert = </etc/ssl/mdc/mdc.crt

ssl_cipher_list = !RC4:HIGH:MEDIUM:+TLSv1:!MD5:!SSLv2:+SSLv3:!ADH:!aNULL:!eNULL:!NULL:!DH:!ADH:!EDH:!AESGCM

ssl_key = </etc/ssl/mdc/mdc.key

ssl_protocols = !SSLv2 !SSLv3

userdb {

  args = /etc/dovecot/sql.conf.ext

  driver = sql

  override_fields = plain_pass=%w

}

protocol lmtp {

  mail_plugins = " quota sieve"

}

protocol imap {

  mail_max_userip_connections = 40

}

protocol sieve {

  info_log_path = /var/log/dovecot-sieve.log

  log_path = /var/log/dovecot-sieve-errors.log

  managesieve_implementation_string = dovecot

  managesieve_max_line_length = 65536

}

 

 

Billy Luedtke, Microsoft MCP

System Administrator II, WIN