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