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 }
Nobody else facing this problem? Thanks!
On Tue, Oct 12, 2021 at 10:36 AM Salatiel Filho <salatiel.filho@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 }
participants (1)
-
Salatiel Filho