Dear Dovecot Users/Admins/Mailing-List
First of all I would give a big thanks for your great work !
I may need your help to find out what’s going on with my replication and shared mailbox problem.
I setup a full active/active servers with :
##################################################################################################
<dovecot –version>
##################################################################################################
2.2.27 (c0f36b0) ==> DEBIAN 9 Stretch (no back ports)
##################################################################################################
Everythink works fine until I activate a share on a mailbox.
I run the following command to share the full mailbox « websentinel » to « lbrault » (because of « acl_defaults_from_inbox = yes » set in conf) :
==> doveadm acl set -u websentinel@example.fr INBOX user=lbrault@example.fr admin create delete expunge insert lookup post read write write-deleted write-seen
Just after activation of share and connect through webmail client (Horde in this case but tried Roundcube also) I get this kind of error messages on logs :
##################################################################################################
Feb 25 15:59:50 mx01 dovecot: imap(lbrault@example.fr): Error: /mnt/mail/vmail/example.fr/lbrault/shared/websentinel@example.fr/.INBOX/dovecot.index.pvt reset, view is now inconsistent
Feb 25 15:59:50 mx01 dovecot: imap(lbrault@example.fr): Error: /mnt/mail/vmail/example.fr/lbrault/shared/websentinel@example.fr/.INBOX/dovecot.index.pvt view is inconsistent
Feb 25 15:59:50 mx01 dovecot: imap(lbrault@example.fr): Error: /mnt/mail/vmail/example.fr/lbrault/shared/websentinel@example.fr/.INBOX/dovecot.index.pvt view is inconsistent
Feb 25 15:59:50 mx01 dovecot: imap(lbrault@example.fr): BUG: Unknown internal error in=293 out=119712
##################################################################################################
In parallele to this error some new folders are created on the mailboxes root with name containing « nonexistent mailbox… » :
##################################################################################################
16:00:37 root@mx01 /mnt/mail/vmail # lla
total 48
drwxr-xr-x 12 vmail vmail 4096 févr. 25 16:00 .
drwxr-xr-x 3 root root 4096 févr. 11 12:13 ..
drwx------ 2 vmail vmail 4096 févr. 25 16:00 (nonexistent mailbox with GUID=47376e22c8876e5cff5b000036d82855)
drwx------ 2 vmail vmail 4096 févr. 25 16:00 (nonexistent mailbox with GUID=48376e22c8876e5cff5b000036d82855)
drwx------ 2 vmail vmail 4096 févr. 25 16:00 (nonexistent mailbox with GUID=49376e22c8876e5cff5b000036d82855)
drwx------ 2 vmail vmail 4096 févr. 25 16:00 (nonexistent mailbox with GUID=5c72c71b3f896e5c615c000036d82855)
drwx------ 2 vmail vmail 4096 févr. 25 16:00 (nonexistent mailbox with GUID=809fff0046896e5c665c000036d82855)
drwx------ 2 vmail vmail 4096 févr. 25 16:00 (nonexistent mailbox with GUID=a1895d0c36866e5c865b000036d82855)
drwx------ 2 vmail vmail 4096 févr. 25 16:00 (nonexistent mailbox with GUID=c14aaa38d1846e5c285b000036d82855)
drwx------ 2 vmail vmail 4096 févr. 25 16:00 (nonexistent mailbox with GUID=ed909808b1846e5c523b01006b8a5dcb)
drwx------ 2 vmail vmail 4096 févr. 25 16:00 (nonexistent mailbox with GUID=fa9d41114b896e5c6b5c000036d82855)
drwx------ 4 vmail vmail 4096 févr. 21 11:57 example.fr
##################################################################################################
When I look at the GUID it seems this GUID are linked to the folder into the shared mailbox (websentinel)
I tried to change dsync params with the following command into 10-master.conf to exclude the shared folder from replication but it seems having no effect with the TCP replication :
==> replication_dsync_parameters = -d -N -l 30 -U -x shared
Here is my dovecot -n report :
##################################################################################################
<dovecot -n> :
##################################################################################################
# 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.7 ext4
auth_debug = yes
auth_debug_passwords = yes
auth_mechanisms = plain login
auth_verbose = yes
auth_verbose_passwords = yes
doveadm_password = # hidden, use -P to show it
doveadm_port = 12345
mail_attribute_dict = file:/mnt/mail/vmail/%d/%n/dovecot-attributes
mail_debug = yes
mail_location = maildir:/mnt/mail/vmail/%d/%n
mail_plugins = " quota notify replication acl"
mail_privileged_group = 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 index ihave duplicate mime foreverypart extracttext editheader vnd.dovecot.pipe vnd.dovecot.filter vnd.dovecot.execute
namespace {
list = children
location = maildir:/mnt/mail/vmail/%%d/%%n:INDEXPVT=/mnt/mail/vmail/%d/%n/shared/%%u
prefix = shared/%%u/
separator = /
subscriptions = no
type = shared
}
namespace inbox {
inbox = yes
location =
mailbox Archive {
auto = subscribe
special_use = \Archive
}
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
auto = subscribe
special_use = \Junk
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox Trash {
auto = subscribe
special_use = \Trash
}
prefix =
separator = /
type = private
}
passdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
plugin {
acl = vfile
acl_defaults_from_inbox = yes
acl_shared_dict = file:/var/lib/dovecot/db/shared-mailboxes.db
mail_replica = tcp:mx02.example.fr
quota = maildir:User quota
quota_grace = 10%%
quota_rule = *:storage=1G
quota_rule2 = Trash:storage=+100M
quota_rule3 = Junk:ignore
quota_status_overquota = 552 5.2.2 Mailbox is full
sieve = /mnt/mail/vmail/%d/%n/.dovecot.sieve
sieve_after = /etc/dovecot/sieve/spamfilter.sieve
sieve_dir = /mnt/mail/vmail/%d/%n/sieve
sieve_execute_bin_dir = /usr/lib/dovecot/sieve-execute
sieve_extensions = +editheader +vnd.dovecot.pipe +vnd.dovecot.filter +vnd.dovecot.execute
sieve_filter_bin_dir = /usr/lib/dovecot/sieve-filter
sieve_pipe_bin_dir = /usr/lib/dovecot/sieve-pipe
sieve_plugins = sieve_extprograms
}
protocols = " imap lmtp sieve"
replication_dsync_parameters = -d -N -l 30 -U -x shared
replication_max_conns = 50
service aggregator {
fifo_listener replication-notify-fifo {
mode = 0666
user = vmail
}
unix_listener replication-notify {
mode = 0666
user = vmail
}
}
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0666
user = postfix
}
unix_listener auth-userdb {
group = vmail
mode = 0666
user = vmail
}
}
service doveadm {
inet_listener {
port = 12345
}
user = vmail
}
service imap-login {
inet_listener imaps {
port = 993
ssl = yes
}
}
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
}
service replicator {
process_min_avail = 1
unix_listener replicator-doveadm {
mode = 0666
}
}
ssl = required
ssl_cert = </etc/letsencrypt/live/mx01.example.fr/fullchain.pem
ssl_key = # hidden, use -P to show it
userdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
verbose_ssl = yes
protocol lmtp {
mail_plugins = " quota notify replication acl sieve"
postmaster_address = lbrault@example.fr
}
protocol lda {
mail_plugins = " quota notify replication acl sieve"
}
protocol imap {
imap_metadata = yes
mail_plugins = " quota notify replication acl imap_quota imap_acl"
}
##################################################################################################
##################################################################################################
<dovecot-sql.conf.ext> :
##################################################################################################
driver = mysql
connect = host=192.168.1.512 dbname=postfix user=mailman password=MySuperPassword
default_pass_scheme = SHA512-CRYPT
password_query = \
SELECT email as username, pwd AS password, \
concat('*:bytes=', quota_limit_bytes) AS userdb_quota_rule \
FROM addresses WHERE email = '%u' AND active = 1
user_query = \
SELECT 5000 AS uid, 5000 as gid, email, \
'/mnt/mail/vmail/%d/%n' AS home, \
concat('*:bytes=', quota_limit_bytes) AS quota_rule \
FROM addresses WHERE email = '%u' AND active = 1
iterate_query = SELECT email AS user FROM addresses WHERE active = 1
##################################################################################################
I would share a special thanks for Community help 😊
If more conf files needed (ie postfix main.cf) please ask me for them.
Best regards
Laurent