Probleme bei Shared Folder & Replikation

Karsten Heiken heiken at luis.uni-hannover.de
Mo Jan 9 17:57:34 CET 2017


Hallo zusammen,

ich habe zwei Dovecot-Systeme laufen, die sich über dsync replizieren.
Solange es keine Benutzer gibt, die ihre Ordner freigeben, läuft alles super.

Sobald ich Benutzer replizieren möchte, die shared folder nutzen, gibt es mehrere Probleme.

Meine Frage an Euch ist: Nutzt jemand Dovecot mit Replikation und IMAP-ACL/Shared Folder?
Wenn ja, wäre ein Blick in die relevante Konfiguration super - ich bin mir sicher, dass ich einfach nur irgend etwas übersehe.


Hier die Probleme, vor denen ich stehe:


- Subscriptions für den shared Namespace lassen sich nicht mehr entfernen

Sobald ich ein Abonnement für ein Verzeichnis unterhalb von shared/ entferne, taucht dieses sofort wieder auf.
Nach einem MUA-Neustartet ist der Ordner wieder abonniert.

Ich denke, dass hier die Synchronisation der Abonnements zwischen den Server falsch läuft:
Auf Server 1 wird das Abo gekündigt, die Synchronisation startet, und Server 2 sagt: "Hey, dir fehlt da ein Abo. Hier, bitteschön".
So stellt sich das zumindest dar: Die subscriptions-Datei wird angefasst und geändert (der gekündigte Ordner wird unten wieder angehängt).

Ein Abo hinzufügen funktioniert jedoch!

Hat noch jemand dieses Phänomen?


- E-Mails werden doppelt/dreifach/hunderttausendfach zugestellt

Erhält ein Benutzer, dessen Verzeichnisse auch von anderen Usern eingebunden wurden, eine Mail, wird diese manchmal doppelt zugestellt. Es ist exakt die selbe Mail; gleiche Message-ID, etc..
doveadm deduplicate entfernt diese auch auf Wunsch.

Selten (seit Umstellung auf mdbox sehr selten, vorher bei Maildir _ständig_) werden E-Mails auch tausendfach abgelegt.
Erst heute hatte ich eine E-Mail rund 37.000 mal in einer Funktionsmailbox liegen, auf die mehrere Nutzer per ACL zugreifen.

Als ich noch Maildir fuhr, stand die Meldung "Expunged message reappeared, giving new uid" in den Logs.
Seit mdbox ist die Log ruhig. Keine Fehler; nichts.


Ich bin über jeden Hinweis dankbar, ganz besonders für funktionierende Config-Beispiele mit Replikation und Shared Folders.


- Karsten


root at imap1:~# doveconf -n
# 2.2.26.0 (23d1de6): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.16 (fed8554)
# OS: Linux 3.16.0-4-amd64 x86_64 Debian 8.6
default_vsz_limit = 1 G
dict {
   acl = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
}
imap_max_line_length = 2 M
lmtp_rcpt_check_quota = yes
login_trusted_networks = xxx yyy zzz
mail_attribute_dict = file:%h/dovecot-attributes
mail_gid = 7777
mail_location = mdbox:%h/mdbox
mail_plugins = " zlib quota acl notify replication"
mail_server_admin = xxx
mail_server_comment = xxx
mail_shared_explicit_inbox = yes
mail_uid = 7777
mailbox_list_index = yes
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 imapflags notify
mdbox_rotate_size = 10 M
namespace {
   hidden = no
   ignore_on_failure = no
   inbox = no
   list = children
   location = mdbox:%%h/mdbox:INDEXPVT=%h/shared/%%u
   prefix = shared/%%u/
   separator = /
   subscriptions = no
   type = shared
}
namespace inbox {
   hidden = no
   inbox = yes
   list = yes
   location =
   mailbox 30dTrash {
     auto = subscribe
     autoexpunge = 30 days
     special_use = \Junk
   }
   mailbox Drafts {
     auto = subscribe
     special_use = \Drafts
   }
   mailbox Sent {
     auto = subscribe
     special_use = \Sent
   }
   mailbox Trash {
     auto = subscribe
     special_use = \Trash
   }
   prefix =
   separator = /
   subscriptions = yes
   type = private
}
passdb {
   args = /etc/dovecot/dovecot-ldap.conf.ext
   driver = ldap
}
plugin {
   acl = vfile
   acl_shared_dict = proxy::acl
   mail_replica = tcp:xxx:24245
   quota = dict:User quota::noenforcing:file:%h/dovecot-quota
   quota_grace = 2%%
   quota_rule = *:storage=8G
   quota_status_nouser = DUNNO
   quota_status_overquota = DUNNO
   quota_status_success = DUNNO
   sieve = ~/.dovecot.sieve
   sieve_dir = ~/sieve
   sieve_extensions = +notify +imapflags
   sieve_max_actions = 250
   sieve_max_redirects = 200
   zlib_save = gz
   zlib_save_level = 6
}
postmaster_address = xxx
protocols = " imap lmtp sieve pop3 sieve"
replication_dsync_parameters = -d -l 30 -U -N
replication_max_conns = 5
service aggregator {
   fifo_listener replication-notify-fifo {
     user = vmail
   }
   unix_listener replication-notify {
     user = vmail
   }
}
service auth {
   unix_listener auth-userdb {
     group = vmail
     user = vmail
   }
}
service dict {
   unix_listener dict {
     group = vmail
     mode = 0660
     user = vmail
   }
}
service doveadm {
   inet_listener {
     port = 24245
   }
}
service imap-login {
   process_min_avail = 16
   service_count = 0
}
service imap {
   executable = imap postlogin
   process_limit = 30000
}
service lmtp {
   inet_listener lmtp {
     port = 24
   }
   vsz_limit = 1 G
}
service managesieve-login {
   inet_listener sieve {
     port = 4190
   }
}
service managesieve {
   process_limit = 1024
}
service pop3-login {
   process_min_avail = 4
   service_count = 0
}
service pop3 {
   process_limit = 2500
}
service postlogin {
   executable = script-login -d rawlog /usr/local/bin/dovecot-postlogin.sh
}
service quota-status {
   client_limit = 1
   executable = quota-status -p postfix
   inet_listener {
     port = 12340
   }
}
service replicator {
   process_min_avail = 1
   unix_listener replicator-doveadm {
     mode = 0600
     user = vmail
   }
}
shutdown_clients = no
ssl_cert = </etc/dovecot/private/fullchain.pem
ssl_key =  # hidden, use -P to show it
syslog_facility = local6
userdb {
   args = /etc/dovecot/dovecot-ldap.conf.ext
   default_fields = home=/var/vmail/%Ld/%Ln quota_rule=*:bytes=8589934592
   driver = ldap
}
verbose_proctitle = yes
protocol lmtp {
   mail_plugins = " zlib quota acl notify replication sieve quota"
}
protocol lda {
   mail_plugins = " zlib quota acl notify replication sieve"
}
protocol imap {
   imap_metadata = yes
   mail_max_userip_connections = 100
   mail_plugins = " zlib quota acl notify replication imap_quota imap_acl"
}
protocol pop3 {
   mail_max_userip_connections = 10
   mail_plugins = " zlib quota acl notify replication"
}
local xxx {
   doveadm_password =  # hidden, use -P to show it
}

-- 
Karsten Heiken                Leibniz Universität IT Services
Kommunikationssysteme         E-Mail, XMPP, Kalender
                               Schloßwender Str. 5
                               D-30159 Hannover

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : smime.p7s
Dateityp    : application/pkcs7-signature
Dateigröße  : 4968 bytes
Beschreibung: S/MIME Cryptographic Signature
URL         : <https://listen.jpberlin.de/pipermail/dovecot/attachments/20170109/4337715e/attachment.p7s>


Mehr Informationen über die Mailingliste Dovecot