Cannot get sieve script replication to work

Marcel Menzel mail at mcl.gg
Sun Mar 24 16:43:23 EET 2019


Hello,


I've set up dsync replication on 2 nodes and mail replication is working
flawlessly, however it seems that replicating the sieve scripts won't work.
Managesieve and sieve filter in gerneral seems to work on both nodes,
however in order to have a synchronized state, I have to log onto both
nodes with managesieve and save & activate the script.

What's funny about this is that only deactivating the active sieve
script (which removes the symlink) replicates from one node to the other
(it's gone on both nodes then), but saving a new sieve script and
activating it does not work. I cannot find anything on the internet
about this problem (only old threads where an old commit should've fixed
it), so I am asking here.

Enabling mail_debug = yes and sieve_trace_debug = yes does not print
anything useful here, the only thing I spotted was after creating and
deleting the script afterwards, the other node complained about not
being able to find the script:

dovecot[15942]: doveadm: Debug: sieve: file script: File
`/var/vmail/mcl.gg/mail/sieve/unnamed.sieve' not found
dovecot[15942]: doveadm: Debug: doveadm-sieve: Value missing for key
`vendor/vendor.dovecot/pvt/server/sieve/files/unnamed' (last change:
2019-03-24 15:24:27)

All the messages about "Debug: sieve: file storage:" are correct.

I am using Dovecot 2.3.5 (513208660) with Pigeonhole version 0.5.4
(60b0f48d) on Arch Linux 4.20.16.a-1-hardened.
I've attached both node's doveconf -n.


Kind regards,

Marcel Menzel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://dovecot.org/pipermail/dovecot/attachments/20190324/601d9e7f/attachment-0001.html>
-------------- next part --------------
# 2.3.5 (513208660): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.4 (60b0f48d)
# OS: Linux 4.20.16.a-1-hardened x86_64 Arch Linux
# Hostname: node1
auth_verbose = yes
dict {
  quota = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext
}
doveadm_password = # hidden, use -P to show it
first_valid_uid = 8
imap_idle_notify_interval = 29 mins
last_valid_uid = 8
lmtp_rcpt_check_quota = yes
login_greeting = Pedo mellon a minno
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c %k
mail_attribute_dict = file:/var/vmail/%d/%n/dovecot-attributes
mail_debug = yes
mail_gid = mail
mail_home = /var/vmail/%d/%n
mail_location = maildir:~
mail_plugins = quota old_stats notify replication listescape
mail_privileged_group = mail
mail_uid = mail
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_lock_timeout = 1 mins
mbox_write_locks = fcntl
namespace inbox {
  inbox = yes
  location =
  mailbox Archief {
    special_use = \Archive
  }
  mailbox Archiv {
    special_use = \Archive
  }
  mailbox Archive {
    auto = subscribe
    special_use = \Archive
  }
  mailbox Archives {
    special_use = \Archive
  }
  mailbox Arquivo {
    special_use = \Archive
  }
  mailbox Arquivos {
    special_use = \Archive
  }
  mailbox Concepten {
    special_use = \Drafts
  }
  mailbox "Deleted Items" {
    special_use = \Trash
  }
  mailbox "Deleted Messages" {
    special_use = \Trash
  }
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Entwürfe {
    special_use = \Drafts
  }
  mailbox Enviados {
    special_use = \Sent
  }
  mailbox "Gelöschte Objekte" {
    special_use = \Trash
  }
  mailbox Gesendet {
    special_use = \Sent
  }
  mailbox "Gesendete Objekte" {
    special_use = \Sent
  }
  mailbox "Itens Enviados" {
    special_use = \Sent
  }
  mailbox "Itens Excluídos" {
    special_use = \Trash
  }
  mailbox "Itens Excluidos" {
    special_use = \Trash
  }
  mailbox Junk-E-Mail {
    special_use = \Junk
  }
  mailbox Junk {
    auto = subscribe
    autoexpunge = 30 days
    special_use = \Junk
  }
  mailbox "Junk E-Mail" {
    special_use = \Junk
  }
  mailbox Lixeira {
    special_use = \Trash
  }
  mailbox "Lixo Eletrônico" {
    special_use = \Junk
  }
  mailbox "Ongewenste e-mail" {
    special_use = \Junk
  }
  mailbox Papierkorb {
    special_use = \Trash
  }
  mailbox Prullenbak {
    special_use = \Trash
  }
  mailbox Rascunhos {
    special_use = \Drafts
  }
  mailbox Rubbish {
    special_use = \Trash
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox "Sent Items" {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Spam {
    special_use = \Junk
  }
  mailbox Trash {
    auto = subscribe
    autoexpunge = 120 days
    special_use = \Trash
  }
  mailbox "Verwijderde items" {
    special_use = \Trash
  }
  mailbox Verzonden {
    special_use = \Sent
  }
  mailbox "Verzonden items" {
    special_use = \Sent
  }
  prefix =
  separator = /
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  listescape_char = %%
  mail_replica = tcp:10.5.0.2:12345
  old_stats_refresh = 30 secs
  old_stats_track_cmds = yes
  quota = dict:User quota::proxy::quota
  quota_grace = 10%%
  quota_rule2 = Trash:storage=+100M
  quota_status_nouser = DUNNO
  quota_status_success = DUNNO
  sieve = file:~/sieve;active=~/dovecot.sieve
  sieve_after = /var/vmail/global.sieve
  sieve_trace_debug = yes
}
protocols = imap lmtp sieve
service aggregator {
  fifo_listener replication-notify-fifo {
    mode = 0666
    user = mail
  }
  unix_listener replication-notify {
    mode = 0666
    user = mail
  }
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-userdb {
    group = dovecot
    mode = 0660
    user = mail
  }
}
service dict {
  unix_listener dict {
    group = mail
    mode = 0660
  }
}
service doveadm {
  inet_listener {
    port = 12345
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0666
    user = postfix
  }
  user = mail
}
service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
}
service old-stats {
  fifo_listener old-stats-mail {
    mode = 0600
    user = mail
  }
  inet_listener {
    address = 127.0.0.1
    port = 24242
  }
}
service quota-status {
  client_limit = 1
  executable = quota-status -p postfix
  unix_listener /var/spool/postfix/private/quota-status {
    group = postfix
    mode = 0660
    user = postfix
  }
}
service replicator {
  process_min_avail = 1
  unix_listener replicator-doveadm {
    mode = 0666
    user = mail
  }
}
ssl = required
ssl_cert = </etc/dehydrated/certs/mcl.gg/fullchain.pem
ssl_cipher_list = ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA
ssl_client_ca_dir = /etc/ssl/certs
ssl_curve_list = X25519:P-256
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
ssl_min_protocol = TLSv1.2
ssl_options = no_compression, no_ticket
ssl_prefer_server_ciphers = yes
userdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
protocol lmtp {
  mail_plugins = quota old_stats notify replication listescape sieve
}
protocol imap {
  imap_metadata = yes
  mail_max_userip_connections = 25
  mail_plugins = quota old_stats notify replication listescape imap_quota imap_sieve imap_old_stats
}
protocol sieve {
  mail_plugins = quota old_stats notify replication listescape replication
}
-------------- next part --------------
# 2.3.5 (513208660): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.4 (60b0f48d)
# OS: Linux 4.20.16.a-1-hardened x86_64
# Hostname: node2
auth_verbose = yes
dict {
  quota = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext
}
doveadm_password = # hidden, use -P to show it
first_valid_uid = 8
imap_idle_notify_interval = 29 mins
last_valid_uid = 8
lmtp_rcpt_check_quota = yes
login_greeting = Pedo mellon a minno
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c %k
mail_attribute_dict = file:/var/vmail/%d/%n/dovecot-attributes
mail_debug = yes
mail_gid = mail
mail_home = /var/vmail/%d/%n
mail_location = maildir:~
mail_plugins = quota old_stats notify replication listescape
mail_privileged_group = mail
mail_uid = mail
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_lock_timeout = 1 mins
mbox_write_locks = fcntl
namespace inbox {
  inbox = yes
  location =
  mailbox Archief {
    special_use = \Archive
  }
  mailbox Archiv {
    special_use = \Archive
  }
  mailbox Archive {
    auto = subscribe
    special_use = \Archive
  }
  mailbox Archives {
    special_use = \Archive
  }
  mailbox Arquivo {
    special_use = \Archive
  }
  mailbox Arquivos {
    special_use = \Archive
  }
  mailbox Concepten {
    special_use = \Drafts
  }
  mailbox "Deleted Items" {
    special_use = \Trash
  }
  mailbox "Deleted Messages" {
    special_use = \Trash
  }
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Entwürfe {
    special_use = \Drafts
  }
  mailbox Enviados {
    special_use = \Sent
  }
  mailbox "Gelöschte Objekte" {
    special_use = \Trash
  }
  mailbox Gesendet {
    special_use = \Sent
  }
  mailbox "Gesendete Objekte" {
    special_use = \Sent
  }
  mailbox "Itens Enviados" {
    special_use = \Sent
  }
  mailbox "Itens Excluídos" {
    special_use = \Trash
  }
  mailbox "Itens Excluidos" {
    special_use = \Trash
  }
  mailbox Junk-E-Mail {
    special_use = \Junk
  }
  mailbox Junk {
    auto = subscribe
    autoexpunge = 30 days
    special_use = \Junk
  }
  mailbox "Junk E-Mail" {
    special_use = \Junk
  }
  mailbox Lixeira {
    special_use = \Trash
  }
  mailbox "Lixo Eletrônico" {
    special_use = \Junk
  }
  mailbox "Ongewenste e-mail" {
    special_use = \Junk
  }
  mailbox Papierkorb {
    special_use = \Trash
  }
  mailbox Prullenbak {
    special_use = \Trash
  }
  mailbox Rascunhos {
    special_use = \Drafts
  }
  mailbox Rubbish {
    special_use = \Trash
  }
  mailbox Sent {
    auto = subscribe
    special_use = \Sent
  }
  mailbox "Sent Items" {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Spam {
    special_use = \Junk
  }
  mailbox Trash {
    auto = subscribe
    autoexpunge = 120 days
    special_use = \Trash
  }
  mailbox "Verwijderde items" {
    special_use = \Trash
  }
  mailbox Verzonden {
    special_use = \Sent
  }
  mailbox "Verzonden items" {
    special_use = \Sent
  }
  prefix =
  separator = /
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
plugin {
  listescape_char = %%
  mail_replica = tcp:10.5.0.1:12345
  old_stats_refresh = 30 secs
  old_stats_track_cmds = yes
  quota = dict:User quota::proxy::quota
  quota_grace = 10%%
  quota_rule2 = Trash:storage=+100M
  quota_status_nouser = DUNNO
  quota_status_success = DUNNO
  sieve = file:~/sieve;active=~/dovecot.sieve
  sieve_after = /var/vmail/global.sieve
  sieve_trace_debug = yes
}
protocols = imap lmtp sieve
service aggregator {
  fifo_listener replication-notify-fifo {
    mode = 0666
    user = mail
  }
  unix_listener replication-notify {
    mode = 0666
    user = mail
  }
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
  unix_listener auth-userdb {
    group = dovecot
    mode = 0660
    user = mail
  }
}
service dict {
  unix_listener dict {
    group = mail
    mode = 0660
  }
}
service doveadm {
  inet_listener {
    port = 12345
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0666
    user = postfix
  }
  user = mail
}
service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
}
service old-stats {
  fifo_listener old-stats-mail {
    mode = 0600
    user = mail
  }
  inet_listener {
    address = 127.0.0.1
    port = 24242
  }
}
service quota-status {
  client_limit = 1
  executable = quota-status -p postfix
  unix_listener /var/spool/postfix/private/quota-status {
    group = postfix
    mode = 0660
    user = postfix
  }
}
service replicator {
  process_min_avail = 1
  unix_listener replicator-doveadm {
    mode = 0666
    user = mail
  }
}
ssl = required
ssl_cert = </etc/dehydrated/certs/mcl.gg/fullchain.pem
ssl_cipher_list = ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-SHA256:ECDHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA
ssl_client_ca_dir = /etc/ssl/certs
ssl_curve_list = X25519:P-256
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
ssl_min_protocol = TLSv1.2
ssl_options = no_compression, no_ticket
ssl_prefer_server_ciphers = yes
userdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
protocol lmtp {
  mail_plugins = quota old_stats notify replication listescape sieve
}
protocol imap {
  imap_metadata = yes
  mail_max_userip_connections = 25
  mail_plugins = quota old_stats notify replication listescape imap_quota imap_sieve imap_old_stats
}
protocol sieve {
  mail_plugins = quota old_stats notify replication listescape replication
}


More information about the dovecot mailing list