mailbox_list_index and maildir_very_dirty_syncs are in conflicts?

Alessio Cecchi alessio at skye.it
Sat Dec 5 18:40:14 UTC 2015


Hi,

I’m running Dovecot 2.2.19 with Maildir as storage and LDA for delivery.

I noticed that if I set mailbox_list_index=yes and 
maildir_very_dirty_syncs=yes when I login via IMAP the STATUS command 
don’t “see” new messages in sub-folders (like Spam).

Example, a new message as arrived in Spam folder (I can see in 
Maildir/new/) but IMAP STATUS don’t see it:

. STATUS Spam (MESSAGES UNSEEN)
* STATUS Spam (MESSAGES 139 UNSEEN 0)

(in this case the date of “dovecot.list.index” files is not updated)

If I comment out mailbox_list_index=yes or maildir_very_dirty_syncs=yes 
I can see the new message:

. STATUS Spam (MESSAGES UNSEEN)
* STATUS Spam (MESSAGES 140 UNSEEN 1)

(in this case the date of “dovecot.list.index” files is updated after 
the STATUS command)

Instead the SELECT command works fine always.

An importante note, my dovecot LDA configuration (on MX servers) don’t 
update index files:

protocol lda {
   mail_location = maildir:~/Maildir:INDEX=MEMORY
   mail_plugins = quota acl expire fts fts_solr zlib sieve
}

These because I need to filter incoming email via Sieve but since I 
cannot use LMTP (and Director) on MX (but I have Director for POP/IMAP 
access) the only way for not corrupting dovecot.index files is not 
update their on delivery emails.

But reading http://wiki2.dovecot.org/MailLocation/Maildir this shouldn’t 
be a problem (Optimizations “maildir_very_dirty_syncs=yes” … It's still 
safe to deliver new mails to new/ …) since MX deliver new emails in 
new/.

Is a Dovecot limit or is a problem of my configuration?
Thanks

my configuration:

# 2.2.19
# Pigeonhole version 0.4.9
auth_cache_negative_ttl = 5 mins
auth_cache_size = 10 M
auth_cache_ttl = 20 mins
auth_master_user_separator = *
auth_worker_max_count = 50
deliver_log_format = msgid=%m, from=%f, subject="%s": %$
dict {
   acl = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
   expire = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
   sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
}
disable_plaintext_auth = no
first_valid_gid = 89
first_valid_uid = 89
imap_client_workarounds = delay-newmail tb-extra-mailbox-sep 
tb-lsub-flags
imap_idle_notify_interval = 29 mins
imap_logout_format = in=%i out=%o session=<%{session}>
last_valid_gid = 89
last_valid_uid = 89
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
listen = 10.96.3.156
login_trusted_networks = 10.0.0.0/24
mail_fsync = always
mail_location = maildir:~/Maildir
mail_plugins = quota acl expire fts fts_solr zlib
mailbox_list_index = yes
maildir_very_dirty_syncs = yes
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope 
encoded-character subaddress comparator-i;ascii-numeric relational regex 
imap4flags copy include variables body enotify environment mailbox date 
index ihave duplicate vnd.dovecot.duplicate
mmap_disable = yes
namespace {
   list = children
   location = maildir:%%h/Maildir:INDEX=~/Maildir/shared/%%u
   prefix = shared/%%n/
   separator = /
   subscriptions = no
   type = shared
}
namespace inbox {
   inbox = yes
   location =
   mailbox Drafts {
     auto = subscribe
     special_use = \Drafts
   }
   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
   }
   prefix =
   separator = /
}
passdb {
   args = /etc/dovecot/dovecot-deny-sql.conf.ext
   deny = yes
   driver = sql
}
passdb {
   args = /etc/dovecot/extra/master-users
   driver = passwd-file
   master = yes
   pass = yes
}
passdb {
   args = /etc/dovecot/dovecot-sql.conf.ext
   driver = sql
}
plugin {
   acl = vfile
   acl_shared_dict = proxy::acl
   antispam_backend = mailtrain
   antispam_mail_notspam = --ham
   antispam_mail_sendmail = /usr/bin/sa-learn
   antispam_mail_spam = --spam
   antispam_spam = Spam
   antispam_trash = Trash
   expire = Trash
   expire2 = Spam
   expire_dict = proxy::expire
   fts = solr
   fts_solr = url=http://10.0.0.1:8983/solr/
   quota = maildir:UserQuota
   quota2 = dict:Quota Usage::noenforcing:proxy::sqlquota
   quota_grace = 10M
   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_before = /etc/dovecot/sieve/before.sieve
   sieve_dir = ~/sieve
   sieve_extensions = +vnd.dovecot.duplicate -vacation
   zlib_save = gz
   zlib_save_level = 6
}
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
pop3_fast_size_lookups = yes
pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s, 
bytes=%i/%o, session=<%{session}>
protocols = imap pop3 sieve
sendmail_path = /var/qmail/bin/sendmail
service auth {
   client_limit = 6524
   unix_listener auth-userdb {
     group = vchkpw
     mode = 0660
     user = vpopmail
   }
}
service dict {
   process_limit = 500
   unix_listener dict {
     group = vchkpw
     mode = 0660
     user = vpopmail
   }
}
service imap-login {
   process_min_avail = 4
   service_count = 0
}
service imap-postlogin {
   executable = script-login /etc/dovecot/scripts/imap-postlogin.sh
   unix_listener imap-postlogin {
     group = vchkpw
     mode = 0660
     user = vpopmail
   }
   user = vpopmail
}
service imap {
   executable = imap imap-postlogin
   process_limit = 5000
   service_count = 100
   vsz_limit = 384 M
}
service managesieve-login {
   inet_listener sieve {
     port = 4190
   }
}
service pop3-login {
   process_min_avail = 4
   service_count = 0
}
service pop3-postlogin {
   executable = script-login /etc/dovecot/scripts/pop3-postlogin.sh
   unix_listener pop3-postlogin {
     group = vchkpw
     mode = 0660
     user = vpopmail
   }
   user = vpopmail
}
service pop3 {
   executable = pop3 pop3-postlogin
   process_limit = 1024
   service_count = 100
}
service quota-warning {
   executable = script /etc/dovecot/scripts/quota-warning.sh
   unix_listener quota-warning {
     user = vpopmail
   }
   user = vpopmail
}
ssl_cert = </etc/dovecot/ssl/wildcard.pem
ssl_key = </etc/dovecot/ssl/wildcard.key
ssl_protocols = !SSLv2 !SSLv3
submission_host = 127.0.0.1
userdb {
   driver = prefetch
}
userdb {
   args = /etc/dovecot/dovecot-sql.conf.ext
   driver = sql
}
verbose_proctitle = yes
protocol lda {
   mail_location = maildir:~/Maildir:INDEX=MEMORY
   mail_plugins = quota acl expire fts fts_solr zlib sieve
}
protocol imap {
   mail_max_userip_connections = 25
   mail_plugins = quota acl expire fts fts_solr zlib imap_quota imap_acl 
imap_zlib
}
protocol sieve {
   mail_max_userip_connections = 2
}
protocol pop3 {
   mail_max_userip_connections = 5
}


-- 
Alessio Cecchi
Postmaster AT http://www.qboxmail.it
http://www.linkedin.com/in/alessice


More information about the dovecot mailing list