Replicationsproblem Sieve Scripte

wenger at unifox.at wenger at unifox.at
Mi Sep 19 16:27:35 CEST 2018


Hallo Dovecot-Users!

Ich habe bei mir einen Dovecot Active-Active Mailcluster installiert.
Ich habe mich dabei an das Dovecot-Buch von Peer Heinlein gehalten.
Die Replication der E-Mails funktioniert super, aber die SIEVE-Scripts 
werden nicht repliziert:

Genauer gesagt werden die symlinks .dovecot.sieve -> 
sieve/roundcube.sieve im UserHomeDir angelegt oder synchronisiert und 
das Verzeichnis sieve auch angelegt, aber deren Inhalt bleibt 
unverändert...

root at dovecot2:/srv/vmail/domain.at/user# ls sieve/
roundcube.sieve  tmp

root at dovecot1:/srv/vmail/domain.at/user# ls sieve/
tmp

mit mail_debug = yes sehe ich folgende Zeilen im Log

Sep 19 16:00:46 dovecot2 dovecot: 
managesieve(user at domain.at)<28623><k1pE1Tl2RpkKFAEE>: Debug: sieve: 
Pigeonhole version 0.5.2 (5d6d7c92) initializing
Sep 19 16:00:46 dovecot2 dovecot: 
managesieve(user at domain.at)<28623><k1pE1Tl2RpkKFAEE>: Debug: sieve: 
include: sieve_global is not set; it is currently not possible to 
include `:global' scripts.
Sep 19 16:00:46 dovecot2 dovecot: 
managesieve(user at domain.at)<28623><k1pE1Tl2RpkKFAEE>: Debug: sieve: file 
storage: Using active Sieve script path: 
/srv/vmail/domain.at/user/.dovecot.sieve
Sep 19 16:00:46 dovecot2 dovecot: 
managesieve(user at domain.at)<28623><k1pE1Tl2RpkKFAEE>: Debug: sieve: file 
storage: Using script storage path: /srv/vmail/domain.at/user/sieve
Sep 19 16:00:46 dovecot2 dovecot: 
managesieve(user at domain.at)<28623><k1pE1Tl2RpkKFAEE>: Debug: sieve: file 
storage: Using permissions from /srv/vmail/domain.at/user/sieve: 
mode=0700 gid=-1
Sep 19 16:00:46 dovecot2 dovecot: 
managesieve(user at domain.at)<28623><k1pE1Tl2RpkKFAEE>: Debug: sieve: file 
storage: Relative path to sieve storage in active link: sieve/
Sep 19 16:00:46 dovecot2 dovecot: 
managesieve(user at domain.at)<28623><k1pE1Tl2RpkKFAEE>: Debug: sieve: file 
storage: sync: Synchronization active
Sep 19 16:00:46 dovecot2 dovecot: 
managesieve(user at domain.at)<28623><k1pE1Tl2RpkKFAEE>: Debug: sieve: file 
script: Opened script `roundcube' from 
`/srv/vmail/domain.at/user/sieve/roundcube.sieve'
Sep 19 16:00:46 dovecot2 dovecot: 
managesieve(user at domain.at)<28623><k1pE1Tl2RpkKFAEE>: Debug: sieve: file 
storage: Using Sieve script path: 
/srv/vmail/domain.at/user/sieve/tmp/roundcube_1537365646.M862270P28623.dovecot2.sieve
Sep 19 16:00:46 dovecot2 dovecot: 
managesieve(user at domain.at)<28623><k1pE1Tl2RpkKFAEE>: Debug: sieve: file 
script: Opened script `roundcube' from 
`/srv/vmail/domain.at/user/sieve/tmp/roundcube_1537365646.M862270P28623.dovecot2.sieve'
Sep 19 16:00:46 dovecot2 dovecot: 
managesieve(user at domain.at)<28623><k1pE1Tl2RpkKFAEE>: Debug: 
replication: Replication requested by 
'sieve_storage_sync_transaction_begin', priority=1

Ich kann aber nichts von einem Replications-Problem erkennen...

Ich habe schon gelesen, dass andere Anwender auch Probleme mit der 
Replication der Sieve-Scripte hatten/haben.
Hat jemand dafür eine idee, wie die Sieve - Scripte sauber repliziert 
werden können?
Gibt es dafür eigene replication_dsync_parameters?

Oder ist es am besten, wenn ich mir die Sieve-Scripte via RSYNC 
herumschubse? (das würde ich eigentlich gerne vermeiden)

Vielleicht hat jemand Ideen, wie man das lösen könnte, oder kann seine 
Erfahrungen mir mitteilen.
Leider verstehe ich nicht so viel vom Programmieren, daher kann ich 
nicht wirklich Patches einreichen;
Aber testen könnte ich solche schon.


Noch ein paar Infos zu meinem Setup.
2 Dovecot Mailbox-Server (active-active replicator)
Authentifizierung via LDAP - Bind, aber Userdb via MySQL (dann muss ich 
das AD-LDAP-Schema nicht um ggf. Quota - Felder erweitern)
Davor sitzt ein Dovecotdirector der die Verbindungen an die 2 
Mailbox-Server weiterleitet.


Hier noch meine Dovecot - Konfiguration (

# 2.3.2.1 (0719df592): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.2 (5d6d7c92)
# OS: Linux 4.9.0-8-amd64 x86_64 Debian 9.5
# Hostname: dovecot2.domain.local
auth_master_user_separator = *
dict {
   acl = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
}
disable_plaintext_auth = no
doveadm_password =  # hidden, use -P to show it
doveadm_port = 12345
mail_debug = yes
mail_location = mdbox:~/mdbox
mail_plugins = zlib acl quota notify replication
mail_server_admin = mailto:postmaster at example.com
mail_server_comment = Dovecot-Mailbox-Server2 Company
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
mdbox_rotate_size = 20 M
namespace {
   hidden = no
   ignore_on_failure = no
   inbox = no
   list = children
   location = mdbox:%%h/mdbox:INDEXPVT=%h/mdbox/shared
   prefix = INBOX/_shared/%%u/
   separator = /
   subscriptions = yes
   type = shared
}
namespace inbox {
   hidden = no
   inbox = yes
   list = 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 = INBOX/
   separator = /
   subscriptions = yes
   type = private
}
passdb {
   args = /etc/dovecot/master-users
   driver = passwd-file
   master = yes
   pass = yes
}
passdb {
   args = /etc/dovecot/dovecot-ldap.conf.ext
   driver = ldap
}
plugin {
   acl = vfile
   acl_shared_dict = proxy::acl
   mail_replica = tcp:10.20.1.6:12345
   quota = dict:User quota::file:%h/dovecot-quota
   quota_exceeded_message = Quota exceeded, please go to 
https://example.org/it-infos/imap/over_quota_help
   quota_rule = *:bytes=1G
   quota_rule1 = INBOX/Trash:bytes=+100M
   quota_rule2 = INBOX/Sent:bytes=+100M
   quota_rule3 = INBOX/Archiv:bytes=+10%%
   quota_status_nouser = DUNNO
   quota_status_overquota = 552 5.2.2 Mailbox is full / Mailbox ist voll
   quota_status_success = DUNNO
   quota_warning = storage=95%% quota-warning 95 %u
   quota_warning2 = storage=80%% quota-warning 80 %u
   sieve = file:~/sieve;active=~/.dovecot.sieve
   zlib_save = gz
   zlib_save_level = 6
}
protocols = " imap lmtp sieve"
replication_dsync_parameters = -d -l 30 -U
service aggregator {
   fifo_listener replication-notify-fifo {
     user = vmail
   }
   unix_listener replication-notify {
     user = vmail
   }
}
service auth {
   unix_listener /var/spool/postfix/private/auth {
     mode = 0666
   }
   unix_listener auth-userdb {
     group = vmail
     user = vmail
   }
}
service dict {
   unix_listener dict {
     group = vmail
     mode = 0600
     user = vmail
   }
}
service doveadm {
   inet_listener {
     port = 12345
   }
}
service lmtp {
   inet_listener lmtp {
     port = 24
   }
}
service managesieve-login {
   inet_listener sieve {
     port = 4190
   }
}
service quota-status {
   client_limit = 1
   executable = quota-status -p postfix
   inet_listener {
     port = 12340
   }
}
service quota-warning {
   executable = script /usr/local/bin/quota-warning.sh
   unix_listener quota-warning {
     user = vmail
   }
   user = vmail
}
service replicator {
   process_min_avail = 1
   unix_listener replicator-doveadm {
     mode = 0600
     user = vmail
   }
}
ssl = required
ssl_cert = </etc/certs/dovecot-certs.pem
ssl_client_ca_dir = /etc/ssl/certs
ssl_dh =  # hidden, use -P to show it
ssl_key =  # hidden, use -P to show it
userdb {
   args = /etc/dovecot/dovecot-sql.conf.ext
   driver = sql
}
verbose_proctitle = yes
protocol lmtp {
   mail_plugins = zlib acl quota notify replication sieve
}
protocol imap {
   mail_plugins = zlib acl quota notify replication imap_zlib imap_acl 
imap_quota
}



Die Konfiguration des zweiten Servers Unterscheidet sich nur durch einen 
anderen Replicationspartner
mail_replica = tcp:10.20.1.7:12345


Mehr Informationen über die Mailingliste Dovecot