Salatiel Filho
2021-Oct-12  13:36 UTC
Can't unsubscribe from public mailbox when dsync multi-master is enabled
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
}
Salatiel Filho
2021-Nov-25  21:41 UTC
Can't unsubscribe from public mailbox when dsync multi-master is enabled
Nobody else facing this problem? Thanks! On Tue, Oct 12, 2021 at 10:36 AM Salatiel Filho <salatiel.filho at gmail.com> wrote:> > 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 > }