Can't unsubscribe from public mailbox when dsync multi-master is enabled

Salatiel Filho salatiel.filho at gmail.com
Tue Oct 12 16:36:07 EEST 2021


Hello,

I am trying to build a dovecot environment with 2 servers with dsync
master<->master replication. Everything works just fine, one can login
in any of the servers and see and manage their mails. The problem I
see is that one can not unsubscribe from public mailboxes.
Let's call the servers server1 and server2, both of them have an imap
webui pointing to localhost, just to make the test easier.
One  subscribes to a public mailbox connected through the webui on
server1. A few seconds later the same user can see the subscribed
mailbox on the webui on server2 just as expected, but if he tries to
unsubscribe it will not work. The public mailbox folder will still be
subscribed to and visible. There is absolutely nothing on the logs,
but I know it is related to the dsync replication because if I
shutdown any of the servers, I will be able to unsubscribe just fine,
UNTIL the shutdown server is powered back on and replication starts
again, and, in this case, the previously unsubscribed public mailbox
will just reappear.

Is this a bug or am I missing something in my configuration?
Thanks!


# dovecot -n
# 2.3.16 (7e2e900c1a): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.16 (09c29328)
# OS: Linux 4.18.0-305.19.1.el8_4.x86_64 x86_64
auth_username_format = %Ln
doveadm_password = # hidden, use -P to show it
first_valid_uid = 1000
mail_debug = yes
mail_home = /var/spool/imap/%n
mail_location = maildir:/var/spool/imap/%n/mail:VOLATILEDIR=/var/spool/imap/%n
mail_plugins = " notify replication"
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
namespace {
  list = children
  location = maildir:/var/spool/imap/salas/mail/:INDEXPVT=/var/spool/imap/%n/pub-seen-idx/
  mailbox * {
    autoexpunge = 60 days
  }
  prefix = salas/
  separator = /
  subscriptions = no
  type = public
}
namespace inbox {
  inbox = yes
  location =
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }
  prefix =
  separator = /
}
passdb {
  args = scheme=CRYPT username_format=%n /etc/dovecot/users
  driver = passwd-file
}
passdb {
  args = failure_show_msg=yes dovecot
  driver = pam
}
plugin {
  mail_replica = tcps:10.10.10.10:26
  sieve = file:/var/spool/imap/%n/sieve;active=/var/spool/imap/%n/.dovecot.sieve
  sieve_before = /var/lib/dovecot/sieve.d/
  sieve_global = /var/lib/dovecot/sieve.d/
}
protocols = imap lmtp sieve
replication_dsync_parameters = -d -N -l 10 -U
service aggregator {
  fifo_listener replication-notify-fifo {
    mode = 0666
    user = dovecot
  }
  unix_listener replication-notify {
    mode = 0666
    user = dovecot
  }
}
service doveadm {
  inet_listener {
    port = 26
    ssl = yes
  }
}
service replicator {
  process_min_avail = 1
  unix_listener replicator-doveadm {
    mode = 0666
    user = dovecot
  }
}
ssl = required
ssl_ca = </etc/ssl/certs/mail-cluster-communication_ca.pem
ssl_cert = </etc/ssl/certs/mail-cluster-communication.crt
ssl_key = # hidden, use -P to show it
userdb {
  args = username_format=%n /etc/dovecot/users
  default_fields = uid=vmail gid=mail home=/var/spool/imap
  driver = passwd-file
}
userdb {
  driver = passwd
  override_fields = uid=vmail gid=mail home=/var/spool/imap/%n
}
protocol lmtp {
  mail_plugins = " notify replication sieve"
}
protocol imap {
  ssl_cert = </etc/ssl/certs/salas.com.crt
  ssl_key = # hidden, use -P to show it
}


More information about the dovecot mailing list