Are you connecting to the same mailbox over NFS from multiple IMAP servers? If not and, at any given time, any mailbox will be accessed from a single NFS client, try to "dupe" Dovecot into thinking it's not using NFS. We're running quite successfully such setup with NFSv3 over TCP, which turned out to be the fastest and most reliable throughout the years. Here are the mount options: rw,noatime,nodiratime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nordirplus,proto=tcp,timeo=600,retrans=2,sec=sys,mountvers=3,mountport=1892,mountproto=tcp,local_lock=none On the Dovecot side we're running with: lock_method = dotlock mail_fsync = never mail_nfs_index = no mail_nfs_storage = no maildir_very_dirty_syncs = yes mmap_disable = yes protocol lda { mail_fsync = optimized } protocol lmtp { mail_fsync = optimized }
Note: we're using Maildir and the usual "works for me(c), may not work for everyone" applies.
-- Adi Pircalabu
On 2018-11-14 21:47, Adrian M wrote:
Thanks, they are as in example, except for "mailbox_list_index = yes" witch is from https://wiki.dovecot.org/PerformanceTuning
On Wed, Nov 14, 2018 at 12:18 PM Aki Tuomi aki.tuomi@open-xchange.com wrote:
You should review https://wiki2.dovecot.org/NFS to see that the settings make sense.
Aki On 14.11.2018 12.00, Adrian M wrote:
Thank you ! I was little concerned that the following settings are not in line with the new version:
mail_nfs_index = yes mail_nfs_storage = yes mail_fsync = always mailbox_list_index = yes maildir_stat_dirs = yes mmap_disable = yes
On Wed, Nov 14, 2018 at 10:19 AM Aki Tuomi aki.tuomi@open-xchange.com wrote:
It should eventually wind down once all the problems are fixed. Of course if it does not happen, you can always run force-resync for the problem users.
Aki On 14.11.2018 10.08, Adrian M wrote:
Hi, we upgraded our servers from version 2.2.13 to 2.2.27. After the upgrade we notice a 10x increase in traffic with the nfs storage an errors like this in the logfile:
Nov 12 09:48:16 mail dovecot: imap(...): Error: Corrupted index cache file /.../dovecot.index.cache: invalid record size Nov 12 09:48:16 mail dovecot: imap(...): Error: unlink(/.../dovecot.index.cache) failed: No such file or directory (in mail-cache.c:29) Nov 12 09:48:16 mail dovecot: imap(...): Error: Corrupted index cache file /.../dovecot.index.cache: invalid record size Nov 12 09:48:16 mail dovecot: imap(...): Error: Broken file /.../dovecot-uidlist line 8: Invalid data:
Is this normal ?
Will the activity wind down ? Can we do something, like deleting the old dovecot.index* or dovecot-uidlist files from maildirs, or doing an doveadm force-refresh for all inboxes ?
Thank you !
Here's my configuration:
# 2.2.27 (c0f36b0): /etc/dovecot/dovecot.conf # Pigeonhole version 0.4.16 (fed8554) # OS: Linux 4.9.0-8-amd64 x86_64 Debian 9.6 nfs auth_failure_delay = 15 secs auth_mechanisms = plain login auth_verbose = yes auth_worker_max_count = 256 default_client_limit = 40000 default_process_limit = 512 dict { lastlogin = mysql:/etc/dovecot/mysql/dovecot-dict-lastlogin.conf quotadict = mysql:/etc/dovecot/mysql/dovecot-dict-quota.conf } disable_plaintext_auth = no first_valid_uid = 100 log_timestamp = "%Y-%m-%d %H:%M:%S " login_log_format_elements = user=<%u> method=%m rip=%r lip=%l pid=%p %c mail_fsync = always mail_location = maildir:_/home/virtual/_%d/%u mail_max_userip_connections = 16 mail_nfs_index = yes mail_nfs_storage = yes mail_plugins = zlib quota mail_log notify mail_privileged_group = mail mailbox_list_index = yes maildir_stat_dirs = 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 { auto = subscribe special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Spam { auto = subscribe special_use = \Junk } mailbox Trash { auto = subscribe special_use = \Trash } mailbox virtual/All { special_use = \All } prefix = } passdb { args = /etc/dovecot/mysql/dovecot-sql.conf driver = sql } plugin { last_login_dict = proxy::lastlogin last_login_key = last-login/%u mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename mail_log_fields = uid box msgid size quota = dict:user::proxy::quotadict quota_rule2 = Trash:ignore quota_rule3 = Spam:ignore quota_status_nouser = DUNNO quota_status_overquota = 552 5.2.2 The email account that you tried to reach is over quota quota_status_success = DUNNO quota_warning = storage=95%% quota-warning 95 %u quota_warning2 = storage=80%% quota-warning 80 %u sieve = ~/.dovecot.sieve sieve_before = /etc/dovecot/sieve/default.sieve sieve_dir = ~/sieve stats_refresh = 30 secs stats_track_cmds = yes trash = /etc/dovecot/dovecot-trash.conf zlib_save = gz zlib_save_level = 6 } protocols = imap sieve pop3 lmtp service anvil { client_limit = 20000 unix_listener anvil-auth-penalty { mode = 00 } } service auth { client_limit = 20000 unix_listener /var/spool/postfix/private/auth { group = postfix mode = 0660 user = postfix } unix_listener auth-master { group = mail mode = 0660 user = vmail } user = root vsz_limit = 1 G } service dict { unix_listener dict { mode = 0660 user = vmail } } service imap-login { client_limit = 4096 executable = /usr/lib/dovecot/imap-login inet_listener imap { address = * port = 143 } inet_listener imaps { address = * port = 993 } process_limit = 4096 process_min_avail = 24 service_count = 100 } service imap { executable = /usr/lib/dovecot/imap process_limit = 4096 process_min_avail = 24 vsz_limit = 1 G } service lmtp { process_min_avail = 24 unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0600 user = postfix } vsz_limit = 1 G } service managesieve-login { client_limit = 4096 inet_listener sieve { port = 4190 } process_limit = 4096 process_min_avail = 24 service_count = 1 } service managesieve { process_limit = 4096 vsz_limit = 1 G } service pop3-login { client_limit = 4096 executable = /usr/lib/dovecot/pop3-login inet_listener pop3 { address = * port = 0 } inet_listener pop3s { address = * port = 995 } process_limit = 4096 process_min_avail = 24 service_count = 100 } service pop3 { executable = /usr/lib/dovecot/pop3 process_limit = 4096 process_min_avail = 24 vsz_limit = 1 G } service quota-status { client_limit = 4096 executable = /usr/lib/dovecot/quota-status -p postfix process_min_avail = 24 unix_listener /var/spool/postfix/private/quota-status { group = postfix mode = 0660 user = postfix } } service quota-warning { executable = script /usr/local/bin/quota-warning.sh unix_listener quota-warning { mode = 0660 user = vmail } user = vmail }
userdb { args = /etc/dovecot/mysql/dovecot-sql.conf driver = sql } protocol imap { imap_idle_notify_interval = 4 mins imap_max_line_length = 64 k mail_max_userip_connections = 16 mail_plugins = zlib quota mail_log notify trash imap_quota } protocol pop3 { mail_max_userip_connections = 16 mail_plugins = zlib quota mail_log notify pop3_client_workarounds = outlook-no-nuls oe-ns-eoh pop3_fast_size_lookups = yes pop3_no_flag_updates = yes pop3_uidl_format = %08Xu%08Xv } protocol lda { auth_socket_path = /var/run/dovecot/auth-master mail_plugins = zlib quota mail_log notify sieve sendmail_path = /usr/lib/sendmail syslog_facility = mail } protocol sieve { mail_max_userip_connections = 16 managesieve_max_compile_errors = 5 } protocol lmtp { mail_plugins = zlib quota mail_log notify sieve syslog_facility = mail }