Problem mit subscriptons/shared folder/dsync

Mike Fröhner mikefroehner at gmx.de
Mo Jan 9 10:53:57 CET 2017


Hallo,

Ich habe ohne Erfolg das Topic auf der dovecot at dovecot.org mailing list 
gepostet und versuche nun hier mein Glück.

Es geht um ein Problem mit der Replikation der subscriptions-Datei, wenn 
ich shared folder abonieren möchte.

Wir haben einen Namespace definiert.

namespace public-test {
   location = maildir:/opt/mail/_public/test
   prefix = public/test/
   separator = /
   subscriptions = no
   type = public
}

Es gibt 2 Ordner (Test1 und Test2) innerhalb dieses Namespaces, welche 
mein Benutzer "ldaptestuser" mit der Gruppe "ldaptestgroup" abonieren soll.

Die dovecot-acl Datei in /opt/mail/_public/test und 
/opt/mail/_public/test/.Test{1,2} sind alle gleich und enthalten die Zeile:

group=ldaptestgroup lrwstipekxa

Wenn ich mich nun über meinen User über einen Client (Thunderbird oder 
Roundcubemail) einlogge sehe ich folgenden debug log:

dovecot: imap(ldaptestuser): Debug: acl: acl username = ldaptestuser
dovecot: imap(ldaptestuser): Debug: acl: owner = 0
dovecot: imap(ldaptestuser): Debug: acl: group added: domain users
dovecot: imap(ldaptestuser): Debug: acl: group added: ldaptestgroup
dovecot: imap(ldaptestuser): Debug: acl: group added: all_mailuser

Das Erstellen und Abonieren von privaten Ordnern funktioniert und wird 
auf beide imap-Instanzen repliziert.

Nun versuche ich den shared folder zu abonieren. Ich kann den Ordner in 
meinem Client abonieren und er wird mir auch danach angezeigt, nur 
leider wird die subscriptions-Datei nicht (korrekt) repliziert auf die 
jeweils zweite imap-Instanz:

imap-1 # cat subscriptions
Private1
public/test/Test1

imap-2 # cat subscriptions
Private1

Der debug log auf beiden Instanzen zeigt folgendes an:
dovecot: doveadm(<ip>,ldaptestuser): Debug: Effective uid=834603987, 
gid=991, home=/opt/mail/ldaptestuser
dovecot: doveadm(<ip>,ldaptestuser): Debug: acl: No acl_shared_dict 
setting - shared mailbox listing is disabled
dovecot: doveadm(<ip>,ldaptestuser): Debug: maildir++: 
root=/opt/mail/_public/test, index=, indexpvt=, control=, inbox=, alt=
dovecot: doveadm(<ip>,ldaptestuser): Debug: acl: initializing backend 
with data: vfile
dovecot: doveadm(<ip>,ldaptestuser): Debug: acl: acl username = ldaptestuser
dovecot: doveadm(<ip>,ldaptestuser): Debug: acl: owner = 0
dovecot: doveadm(<ip>,ldaptestuser): Debug: acl vfile: Global ACLs disabled

Für mich sieht es so aus, als würde doveadm() die Gruppen nicht prüfen 
und/oder initialiserien.

Wie nur unschwer zu erkennen ist, benutzen wir ldap Benutzer und 
Gruppen. Es funktioniert soweit alles, Mails usw. werden repliziert, 
ausser diese eine kleine Replikation.

Ich frage mich, ob noch jemand anderes dieses oder ein ähnliches Setup 
fährt und diese Erfahrungen gemacht hat.


Grüße,
Mike;
dovecot -n:

# 2.2.27 (c0f36b0): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.16 (fed8554)
# OS: Linux 3.10.0-327.10.1.el7.x86_64 x86_64 CentOS Linux release 
7.2.1511 (Core)
auth_cache_size = 10 M
auth_cache_ttl = 6 hours
auth_debug = yes
auth_gssapi_hostname = $ALL
auth_username_format = %Ln
doveadm_password =  # hidden, use -P to show it
doveadm_port = 12345
first_valid_uid = 1000000
haproxy_timeout = 5 secs
haproxy_trusted_networks = 10.0.0.0/8
lmtp_save_to_detail_mailbox = yes
mail_access_groups = all_mailuser
mail_debug = yes
mail_plugins = " mail_log notify replication acl"
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
mbox_write_locks = fcntl
namespace inbox {
   inbox = yes
   location =
   mailbox Drafts {
     special_use = \Drafts
   }
   mailbox Junk {
     special_use = \Junk
   }
   mailbox Sent {
     special_use = \Sent
   }
   mailbox "Sent Messages" {
     special_use = \Sent
   }
   mailbox Trash {
     special_use = \Trash
   }
   prefix =
   separator = /
}
namespace public-test {
   location = maildir:/opt/mail/_public/test
   prefix = public/test/
   separator = /
   subscriptions = no
   type = public
}
passdb {
   args = /etc/dovecot/dovecot-ldap.conf
   default_fields = userdb_home=/opt/mail/%u 
userdb_mail=maildir:/opt/mail/%u/Mails userdb_gid=vmail
   driver = ldap
}
plugin {
   acl = vfile
   acl_shared_dict = file:/var/lib/dovecot/shared-mailboxes.db
   mail_debug = yes
   mail_plugins = " mail_log notify replication acl imap_acl"
   mail_replica = tcps:imap-1.office.test.domain
   sieve = file:~/sieve;active=~/.dovecot.sieve
   sieve_default = /etc/dovecot/sieve/default.sieve
   sieve_global = /etc/dovecot/sieve/global/
}
protocols = imap lmtp sieve
recipient_delimiter = -
replication_dsync_parameters = -d -l 30 -U
service aggregator {
   fifo_listener replication-notify-fifo {
     mode = 0666
     user = vmail
   }
   unix_listener replication-notify {
     mode = 0666
     user = vmail
   }
}
service auth-worker {
   process_min_avail = 1
}
service auth {
   inet_listener {
     port = 12245
   }
   process_min_avail = 1
   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
     ssl = yes
   }
}
service imap-login {
   inet_listener imaps {
     port = 0
     ssl = yes
   }
   inet_listener imaps_haproxy {
     haproxy = yes
     port = 10993
     ssl = yes
   }
}
service imap-postlogin {
   executable = script-login /adm/scripts/dovecot_acl_groups.sh
   user = $default_internal_user
}
service imap {
   executable = imap imap-postlogin
}
service lmtp {
   inet_listener lmtp {
     port = 24
     ssl = yes
   }
}
service managesieve-login {
   inet_listener sieve {
     port = 4190
   }
   service_count = 1
}
service replicator {
   process_min_avail = 1
   unix_listener replicator-doveadm {
     mode = 0666
   }
}
ssl = required
ssl_cert = </etc/pki/tls/certs/imap.office.test.domain.crt.pem
ssl_client_ca_file = /etc/pki/tls/cert.pem
ssl_key =  # hidden, use -P to show it
ssl_protocols = !SSLv2 !SSLv3
userdb {
   default_fields = home=/opt/mail/%u mail=maildir:/opt/mail/%u/Mails 
gid=vmail
   driver = prefetch
}
userdb {
   args = /etc/dovecot/dovecot-ldap.conf
   default_fields = home=/opt/mail/%u mail=maildir:/opt/mail/%u/Mails 
gid=vmail
   driver = ldap
}
protocol lmtp {
   mail_plugins = " mail_log notify replication acl sieve"
}
protocol lda {
   mail_plugins = " mail_log notify replication acl sieve"
}
protocol imap {
   mail_max_userip_connections = 50
   mail_plugins = " mail_log notify replication acl imap_acl"
}
protocol sieve {
   managesieve_implementation_string = Dovecot Pigeonhole
   managesieve_logout_format = bytes=%i/%o
   managesieve_max_line_length = 65536
}
local_name imap.test.domain {
   ssl_cert = </etc/pki/tls/certs/star.test.domain.bundle.crt
   ssl_key =  # hidden, use -P to show it
}



Mehr Informationen über die Mailingliste Dovecot