dsync and sieve again

Edgaras Lukoševičius edgaras.lukosevicius at gmail.com
Thu Feb 25 20:56:40 EET 2021


Then what is a correct configuration? Because I was not able to get it 
to work.

It is a simple setup using VirtualUsers, Maildir format, Home and Mail 
directories are separate as per documentation here 
https://wiki2.dovecot.org/VirtualUsers/Home, and here: 
https://doc.dovecot.org/configuration_manual/mail_location/

Both of the hosts have exactly same versions, and exactly same 
configurations (except for hostnames of course)

ManageSieve, and Sieve itself is working (tested), and while I was going 
through all the steps and configuration variations I have also enabled 
imap_sieve plugin.

Directory layout on source.host.tld:

/home/vmail/d/o/domin.tld/local
├── Maildir
│   ├── cur
│   ├── new
│   ├── tmp
│   ├── dovecot.index.log
│   ├── dovecot.list.index.log
│   ├── dovecot-uidlist
│   ├── dovecot-uidvalidity
│   ├── dovecot-uidvalidity.602d8428
│   └── subscriptions
└── sieve
│   ├── script.sieve
│   └── tmp
└── .dovecot.sieve -> sieve/script.sieve

I have tried to pull data from source: /usr/bin/dsync -Dv -o 
imapc_host=source.host.tld -o  imapc_port=143 -o 
imapc_user=local at domain.tld -o imapc_password=123456789 sync -1 -R -f -u 
local at domain.tld imapc:

I have also tried to push data to destination: /usr/bin/dsync -Dv -o 
imapc_host=destination.host.tld -o  imapc_port=143 -o 
imapc_user=local at domain.tld -o imapc_password=123456789 sync -1 -f -u 
local at domain.tld imapc:

Output of dsync is as follows:


Debug: Loading modules from directory: /usr/lib64/dovecot
Debug: Module loaded: /usr/lib64/dovecot/lib10_quota_plugin.so
Debug: Module loaded: /usr/lib64/dovecot/lib20_quota_clone_plugin.so
Debug: Module loaded: /usr/lib64/dovecot/lib20_zlib_plugin.so
Debug: Loading modules from directory: /usr/lib64/dovecot/doveadm
Debug: Module loaded: 
/usr/lib64/dovecot/doveadm/lib10_doveadm_quota_plugin.so
Debug: Module loaded: 
/usr/lib64/dovecot/doveadm/lib10_doveadm_sieve_plugin.so
...
dsync(edgaras at hoslinger.com): Debug: imapc(source.host.tld:143): Server 
capabilities: IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ 
STARTTLS AUTH=PLAIN AUTH=LOGIN
dsync(edgaras at hoslinger.com): Debug: imapc(source.host.tld:143): 
Authenticating as local at domain.tld
dsync(edgaras at hoslinger.com): Debug: imapc(source.host.tld:143): Server 
capabilities: IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT 
SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT 
MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS 
LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES 
WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY 
PREVIEW=FUZZY STATUS=SIZE SAVEDATE LITERAL+ NOTIFY SPECIAL-USE 
IMAPSIEVE=sieve://source.host.tld:4190 QUOTA
...
dsync(local at domain.tld): Debug: doveadm-sieve: Iterating Sieve mailbox 
attributes
dsync(local at domain.tld): Debug: sieve: Pigeonhole version 0.5.13 
(cdd19fe3) initializing
dsync(local at domain.tld): Debug: sieve: include: sieve_global is not set; 
it is currently not possible to include `:global' scripts.
dsync(local at domain.tld): Debug: sieve: Sieve imapsieve plugin for 
Pigeonhole version 0.5.13 (cdd19fe3) loaded
dsync(local at domain.tld): Debug: sieve: Sieve Extprograms plugin for 
Pigeonhole version 0.5.13 (cdd19fe3) loaded
dsync(local at domain.tld): Debug: sieve: file storage: Using active Sieve 
script path: /home/vmail/d/o/domin.tld/local/.dovecot.sieve
dsync(local at domain.tld): Debug: sieve: file storage: Using script 
storage path: /home/vmail/d/o/domin.tld/local/sieve
dsync(local at domain.tld): Debug: sieve: file storage: Using permissions 
from /home/vmail/d/o/domin.tld/local/sieve: mode=0700 gid=-1
dsync(local at domain.tld): Debug: sieve: file storage: Relative path to 
sieve storage in active link: sieve/
dsync(local at domain.tld): Debug: sieve: file storage: sync: 
Synchronization active
<end of sieve related logs>
...
dsync(local at domain.tld): Debug: brain M: Import INBOX: Last common 
UID=0. Delayed expunges=
dsync(local at domain.tld): Debug: brain M: Import INBOX: Saved UIDs:
dsync(local at domain.tld): Debug: brain M: Import INBOX: Finish update: 
min_next_uid=1 min_first_recent_uid=1 min_highest_modseq=1 
min_highest_pvt_modseq=0
...
dsync(local at domain.tld): Debug: imapc(source.host.tld:143): Disconnected
dsync(local at domain.tld): Debug: auth-master: conn 
unix:/var/run/dovecot/auth-userdb (pid=3284,uid=0): Disconnected: 
Connection closed (fd=10)
...



Configuration on both hosts is as follows

# 2.3.13 (89f716dc2): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.13 (cdd19fe3)
# OS: Linux 3.10.0-1062.18.1.el7.x86_64 x86_64 CentOS Linux release 
7.7.1908 (Core)
# Hostname: destination.domain.tld
# NOTE: Send doveconf -n output instead when asking for help.
auth_anonymous_username = anonymous
auth_cache_negative_ttl = 1 hours
auth_cache_size = 0
auth_cache_ttl = 1 hours
auth_cache_verify_password_with_worker = no
auth_debug = no
auth_debug_passwords = no
auth_default_realm =
auth_failure_delay = 2 secs
auth_gssapi_hostname =
auth_krb5_keytab =
auth_master_user_separator = *
auth_mechanisms = plain login
auth_policy_check_after_auth = yes
auth_policy_check_before_auth = yes
auth_policy_hash_mech = sha256
auth_policy_hash_nonce =
auth_policy_hash_truncate = 12
auth_policy_log_only = no
auth_policy_reject_on_fail = no
auth_policy_report_after_auth = yes
auth_policy_request_attributes = login=%{requested_username} 
pwhash=%{hashed_password} remote=%{rip} device_id=%{client_id} 
protocol=%s session_id=%{session}
auth_policy_server_api_header =
auth_policy_server_timeout_msecs = 2000
auth_policy_server_url =
auth_proxy_self =
auth_realms =
auth_socket_path = auth-userdb
auth_ssl_require_client_cert = no
auth_ssl_username_from_cert = no
auth_stats = no
auth_use_winbind = no
auth_username_chars = 
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
auth_username_format = %Lu
auth_username_translation =
auth_verbose = no
auth_verbose_passwords = no
auth_winbind_helper_path = /usr/bin/ntlm_auth
auth_worker_max_count = 500
base_dir = /var/run/dovecot/
config_cache_size = 1 M
debug_log_path =
default_client_limit = 1000
default_idle_kill = 1 mins
default_internal_group = dovecot
default_internal_user = dovecot
default_login_user = dovenull
default_process_limit = 100
default_vsz_limit = 256 M
deliver_log_format = msgid=%m: %$
dict_db_config =
director_flush_socket =
director_mail_servers =
director_max_parallel_kicks = 100
director_max_parallel_moves = 100
director_output_buffer_size = 10 M
director_ping_idle_timeout = 30 secs
director_ping_max_timeout = 1 mins
director_servers =
director_user_expire = 15 mins
director_user_kick_delay = 2 secs
director_username_hash = %u
disable_plaintext_auth = no
dotlock_use_excl = yes
doveadm_allowed_commands =
doveadm_api_key =
doveadm_http_rawlog_dir =
doveadm_password =
doveadm_port = 0
doveadm_socket_path = doveadm-server
doveadm_ssl = no
doveadm_username = doveadm
doveadm_worker_count = 0
dsync_alt_char = _
dsync_commit_msgs_interval = 100
dsync_features =
dsync_hashed_headers = Date Message-ID
dsync_remote_cmd = ssh -l%{login} %{host} doveadm dsync-server -u%u -U
first_valid_gid = 500
first_valid_uid = 500
haproxy_timeout = 3 secs
haproxy_trusted_networks =
hostname =
imap_capability =
imap_client_workarounds =
imap_fetch_failure = disconnect-immediately
imap_hibernate_timeout = 0
imap_id_log =
imap_id_retain = no
imap_id_send = name *
imap_idle_notify_interval = 2 mins
imap_literal_minus = no
imap_logout_format = in=%i out=%o deleted=%{deleted} 
expunged=%{expunged} trashed=%{trashed} hdr_count=%{fetch_hdr_count} 
hdr_bytes=%{fetch_hdr_bytes} body_count=%{fetch_body_count} 
body_bytes=%{fetch_body_bytes}
imap_max_line_length = 64 k
imap_metadata = no
imap_urlauth_host =
imap_urlauth_logout_format = in=%i out=%o
imap_urlauth_port = 143
imapc_cmd_timeout = 5 mins
imapc_connection_retry_count = 1
imapc_connection_retry_interval = 1 secs
imapc_features =
imapc_host =
imapc_list_prefix =
imapc_master_user =
imapc_max_idle_time = 29 mins
imapc_max_line_length = 0
imapc_password =
imapc_port = 143
imapc_rawlog_dir =
imapc_sasl_mechanisms =
imapc_ssl = no
imapc_ssl_verify = yes
imapc_user =
import_environment = TZ CORE_OUTOFMEM CORE_ERROR LISTEN_PID LISTEN_FDS
info_log_path =
instance_name = dovecot
last_valid_gid = 0
last_valid_uid = 0
lda_mailbox_autocreate = no
lda_mailbox_autosubscribe = no
lda_original_recipient_header =
libexec_dir = /usr/libexec/dovecot
listen = *, ::
lmtp_add_received_header = yes
lmtp_client_workarounds =
lmtp_hdr_delivery_address = final
lmtp_proxy = no
lmtp_proxy_rawlog_dir =
lmtp_rawlog_dir =
lmtp_rcpt_check_quota = no
lmtp_save_to_detail_mailbox = no
lmtp_user_concurrency_limit = 0
lock_method = fcntl
log_core_filter =
log_debug =
log_path = syslog
log_timestamp = "%b %d %H:%M:%S "
login_access_sockets =
login_greeting = Server ready.
login_log_format = %$: %s
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c 
session=<%{session}>
login_plugin_dir = /usr/lib64/dovecot/login
login_plugins =
login_proxy_max_disconnect_delay = 0
login_proxy_max_reconnects = 3
login_proxy_notify_path = proxy-notify
login_proxy_timeout = 30 secs
login_source_ips =
login_trusted_networks =
mail_access_groups = vmail
mail_always_cache_fields =
mail_attachment_detection_options =
mail_attachment_dir =
mail_attachment_fs = sis posix
mail_attachment_hash = %{sha1}
mail_attachment_min_size = 128 k
mail_attribute_dict = file:~/dovecot-attributes
mail_cache_fields = flags
mail_cache_max_size = 1 G
mail_cache_min_mail_count = 0
mail_cache_purge_continued_percentage = 200
mail_cache_purge_delete_percentage = 20
mail_cache_purge_header_continue_count = 4
mail_cache_purge_min_size = 32 k
mail_cache_record_max_size = 64 k
mail_cache_unaccessed_field_drop = 30 days
mail_chroot =
mail_debug = no
mail_fsync = optimized
mail_full_filesystem_access = no
mail_gid =
mail_home =
mail_index_log2_max_age = 2 days
mail_index_log_rotate_max_size = 1 M
mail_index_log_rotate_min_age = 5 mins
mail_index_log_rotate_min_size = 32 k
mail_index_rewrite_max_log_bytes = 128 k
mail_index_rewrite_min_log_bytes = 8 k
mail_location = maildir:%h/Maildir
mail_log_prefix = "%s(%u)<%{pid}><%{session}>: "
mail_max_keyword_length = 50
mail_max_lock_timeout = 0
mail_max_userip_connections = 10
mail_never_cache_fields = imap.envelope
mail_nfs_index = no
mail_nfs_storage = no
mail_plugin_dir = /usr/lib64/dovecot
mail_plugins = quota quota_clone zlib
mail_prefetch_count = 0
mail_privileged_group =
mail_save_crlf = no
mail_server_admin =
mail_server_comment =
mail_shared_explicit_inbox = no
mail_sort_max_read_count = 0
mail_temp_dir = /tmp
mail_temp_scan_interval = 1 weeks
mail_uid =
mail_vsize_bg_after_count = 0
mailbox_idle_check_interval = 30 secs
mailbox_list_index = yes
mailbox_list_index_include_inbox = no
mailbox_list_index_very_dirty_syncs = no
maildir_broken_filename_sizes = no
maildir_copy_with_hardlinks = yes
maildir_empty_new = no
maildir_stat_dirs = no
maildir_very_dirty_syncs = no
managesieve_client_workarounds =
managesieve_implementation_string = Dovecot Pigeonhole
managesieve_logout_format = bytes=%i/%o
managesieve_max_compile_errors = 5
managesieve_max_line_length = 64 k
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 imapsieve vnd.dovecot.imapsieve
master_user_separator =
mbox_dirty_syncs = yes
mbox_dotlock_change_timeout = 2 mins
mbox_lazy_writes = yes
mbox_lock_timeout = 5 mins
mbox_md5 = apop3d
mbox_min_index_size = 0
mbox_read_locks = fcntl
mbox_very_dirty_syncs = no
mbox_write_locks = dotlock fcntl
mdbox_preallocate_space = no
mdbox_rotate_interval = 0
mdbox_rotate_size = 10 M
metric auth_request_finished {
  description =
  exporter =
  exporter_include = name hostname timestamps categories fields
  fields =
  filter = event = auth_request_finished
  group_by = policy_result
}
metric imap_command_finished {
  description =
  exporter =
  exporter_include = name hostname timestamps categories fields
  fields =
  filter = event = imap_command_finished
  group_by = cmd_name tagged_reply_state
}
metric mail_index_recreated {
  description =
  exporter =
  exporter_include = name hostname timestamps categories fields
  fields =
  filter = event = mail_index_recreated
  group_by =
}
metric server_connection_connected {
  description =
  exporter =
  exporter_include = name hostname timestamps categories fields
  fields =
  filter = event = server_connection_connected
  group_by =
}
metric sieve_action_finished {
  description =
  exporter =
  exporter_include = name hostname timestamps categories fields
  fields =
  filter = event = sieve_action_finished
  group_by = action_name
}
metric sieve_runtime_script_finished {
  description =
  exporter =
  exporter_include = name hostname timestamps categories fields
  fields =
  filter = event = sieve_runtime_script_finished
  group_by =
}
mmap_disable = no
namespace inbox {
  disabled = no
  hidden = no
  ignore_on_failure = no
  inbox = yes
  list = yes
  location =
  mailbox Drafts {
    auto = subscribe
    autoexpunge = 0
    autoexpunge_max_mails = 0
    comment =
    driver =
    special_use = \Drafts
  }
  mailbox Junk {
    auto = subscribe
    autoexpunge = 0
    autoexpunge_max_mails = 0
    comment =
    driver =
    special_use = \Junk
  }
  mailbox Sent {
    auto = subscribe
    autoexpunge = 0
    autoexpunge_max_mails = 0
    comment =
    driver =
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    auto = no
    autoexpunge = 0
    autoexpunge_max_mails = 0
    comment =
    driver =
    special_use = \Sent
  }
  mailbox Trash {
    auto = subscribe
    autoexpunge = 0
    autoexpunge_max_mails = 0
    comment =
    driver =
    special_use = \Trash
  }
  order = 0
  prefix =
  separator = /
  subscriptions = yes
  type = private
}
old_stats_carbon_interval = 30 secs
old_stats_carbon_name =
old_stats_carbon_server =
old_stats_command_min_time = 1 mins
old_stats_domain_min_time = 12 hours
old_stats_ip_min_time = 12 hours
old_stats_memory_limit = 16 M
old_stats_session_min_time = 15 mins
old_stats_user_min_time = 1 hours
passdb {
  args = /etc/dovecot/master-users
  auth_verbose = default
  default_fields =
  deny = no
  driver = passwd-file
  master = yes
  mechanisms =
  name =
  override_fields =
  pass = yes
  result_failure = continue
  result_internalfail = continue
  result_success = return-ok
  skip = never
  username_filter =
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  auth_verbose = default
  default_fields =
  deny = no
  driver = sql
  master = no
  mechanisms =
  name =
  override_fields =
  pass = no
  result_failure = continue
  result_internalfail = continue
  result_success = return-ok
  skip = never
  username_filter =
}
plugin {
  imapsieve_url = sieve://destination.domain.tld:4190
  quota = count:Mailbox quota
  quota_clone_dict = redis:host=127.0.0.1:port=6379
  quota_grace = 5%%
  quota_max_mail_size = 50M
  quota_rule3 = INBOX.Trash:storage=+100%%
  quota_status_nouser = DUNNO
  quota_status_overquota = 552 5.2.2 Mailbox is full
  quota_status_success = DUNNO
  quota_vsizes = yes
  quota_warning = storage=80%% quota-warning 80 %u
  quota_warning2 = storage=95%% quota-warning 95 %u
  sieve = file:~/sieve;active=~/.dovecot.sieve
  sieve_plugins = sieve_imapsieve sieve_extprograms
}
pop3_client_workarounds =
pop3_delete_type = default
pop3_deleted_flag =
pop3_enable_last = no
pop3_fast_size_lookups = no
pop3_lock_session = no
pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s
pop3_no_flag_updates = no
pop3_reuse_xuidl = no
pop3_save_uidl = no
pop3_uidl_duplicates = allow
pop3_uidl_format = %08Xu%08Xv
pop3c_features =
pop3c_host =
pop3c_master_user =
pop3c_password =
pop3c_port = 110
pop3c_quick_received_date = no
pop3c_rawlog_dir =
pop3c_ssl = no
pop3c_ssl_verify = yes
pop3c_user = %u
postmaster_address = postmaster at domain.tld
protocols = imap lmtp pop3 sieve
quota_full_tempfail = no
rawlog_dir =
recipient_delimiter = +
rejection_reason = Your message to <%t> was automatically rejected:%n%r
rejection_subject = Rejected: %s
replication_dsync_parameters = -d -N -l 30 -U
replication_full_sync_interval = 1 days
replication_max_conns = 10
replicator_host = replicator
replicator_port = 0
sendmail_path = /usr/sbin/sendmail
service aggregator {
  chroot = .
  client_limit = 0
  drop_priv_before_exec = no
  executable = aggregator
  extra_groups =
  fifo_listener replication-notify-fifo {
    group =
    mode = 0600
    user =
  }
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 0
  process_min_avail = 0
  protocol =
  service_count = 0
  type =
  unix_listener replication-notify {
    group =
    mode = 0600
    user =
  }
  user = $default_internal_user
  vsz_limit = 18446744073709551615 B
}
service anvil {
  chroot = empty
  client_limit = 10000
  drop_priv_before_exec = no
  executable = anvil
  extra_groups =
  group =
  idle_kill = 4294967295 secs
  privileged_group =
  process_limit = 1
  process_min_avail = 1
  protocol =
  service_count = 0
  type = anvil
  unix_listener anvil-auth-penalty {
    group =
    mode = 0600
    user =
  }
  unix_listener anvil {
    group =
    mode = 0600
    user =
  }
  user = $default_internal_user
  vsz_limit = 18446744073709551615 B
}
service auth-worker {
  chroot =
  client_limit = 1
  drop_priv_before_exec = no
  executable = auth -w
  extra_groups =
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 0
  process_min_avail = 0
  protocol =
  service_count = 1
  type =
  unix_listener auth-worker {
    group =
    mode = 0600
    user = $default_internal_user
  }
  user =
  vsz_limit = 18446744073709551615 B
}
service auth {
  chroot =
  client_limit = 5000
  drop_priv_before_exec = no
  executable = auth
  extra_groups =
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 1
  process_min_avail = 0
  protocol =
  service_count = 0
  type =
  unix_listener auth-client {
    group =
    mode = 0600
    user = $default_internal_user
  }
  unix_listener auth-login {
    group =
    mode = 0600
    user = $default_internal_user
  }
  unix_listener auth-master {
    group =
    mode = 0600
    user =
  }
  unix_listener auth-userdb {
    group =
    mode = 0666
    user = $default_internal_user
  }
  unix_listener login/login {
    group =
    mode = 0666
    user =
  }
  unix_listener token-login/tokenlogin {
    group =
    mode = 0666
    user =
  }
  user = $default_internal_user
  vsz_limit = 18446744073709551615 B
}
service config {
  chroot =
  client_limit = 0
  drop_priv_before_exec = no
  executable = config
  extra_groups =
  group =
  idle_kill = 4294967295 secs
  privileged_group =
  process_limit = 0
  process_min_avail = 0
  protocol =
  service_count = 0
  type = config
  unix_listener config {
    group =
    mode = 0600
    user =
  }
  user =
  vsz_limit = 18446744073709551615 B
}
service dict-async {
  chroot =
  client_limit = 0
  drop_priv_before_exec = no
  executable = dict
  extra_groups =
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 0
  process_min_avail = 0
  protocol =
  service_count = 0
  type =
  unix_listener dict-async {
    group = $default_internal_group
    mode = 0660
    user =
  }
  user = $default_internal_user
  vsz_limit = 18446744073709551615 B
}
service dict {
  chroot =
  client_limit = 1
  drop_priv_before_exec = no
  executable = dict
  extra_groups =
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 0
  process_min_avail = 0
  protocol =
  service_count = 0
  type =
  unix_listener dict {
    group = vmail
    mode = 0600
    user = vmail
  }
  user = $default_internal_user
  vsz_limit = 18446744073709551615 B
}
service director {
  chroot = .
  client_limit = 0
  drop_priv_before_exec = no
  executable = director
  extra_groups =
  fifo_listener login/proxy-notify {
    group =
    mode = 00
    user =
  }
  group =
  idle_kill = 4294967295 secs
  inet_listener {
    address =
    haproxy = no
    port = 0
    reuse_port = no
    ssl = no
  }
  privileged_group =
  process_limit = 1
  process_min_avail = 0
  protocol =
  service_count = 0
  type =
  unix_listener director-admin {
    group =
    mode = 0600
    user =
  }
  unix_listener director-userdb {
    group =
    mode = 0600
    user =
  }
  unix_listener login/director {
    group =
    mode = 00
    user =
  }
  user = $default_internal_user
  vsz_limit = 18446744073709551615 B
}
service dns-client {
  chroot =
  client_limit = 1
  drop_priv_before_exec = no
  executable = dns-client
  extra_groups =
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 0
  process_min_avail = 0
  protocol =
  service_count = 0
  type =
  unix_listener dns-client {
    group =
    mode = 0666
    user =
  }
  unix_listener login/dns-client {
    group =
    mode = 0666
    user =
  }
  user = $default_internal_user
  vsz_limit = 18446744073709551615 B
}
service doveadm {
  chroot =
  client_limit = 1
  drop_priv_before_exec = no
  executable = doveadm-server
  extra_groups = $default_internal_group
  group =
  idle_kill = 0
  inet_listener doveadm-server {
    address =
    haproxy = no
    port = 12345
    reuse_port = no
    ssl = no
  }
  privileged_group =
  process_limit = 0
  process_min_avail = 0
  protocol =
  service_count = 1
  type =
  unix_listener doveadm-server {
    group =
    mode = 0600
    user =
  }
  user =
  vsz_limit = 18446744073709551615 B
}
service health-check {
  chroot =
  client_limit = 1
  drop_priv_before_exec = yes
  executable = script -p health-check.sh
  extra_groups =
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 0
  process_min_avail = 0
  protocol =
  service_count = 0
  type =
  user = $default_internal_user
  vsz_limit = 18446744073709551615 B
}
service imap-hibernate {
  chroot =
  client_limit = 0
  drop_priv_before_exec = no
  executable = imap-hibernate
  extra_groups =
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 0
  process_min_avail = 0
  protocol = imap
  service_count = 0
  type =
  unix_listener imap-hibernate {
    group = $default_internal_group
    mode = 0660
    user =
  }
  user = $default_internal_user
  vsz_limit = 18446744073709551615 B
}
service imap-login {
  chroot = login
  client_limit = 0
  drop_priv_before_exec = no
  executable = imap-login
  extra_groups =
  group =
  idle_kill = 0
  inet_listener imap-dsync {
    address =
    haproxy = no
    port = 1143
    reuse_port = no
    ssl = no
  }
  inet_listener imap {
    address =
    haproxy = no
    port = 143
    reuse_port = no
    ssl = no
  }
  inet_listener imaps {
    address =
    haproxy = no
    port = 993
    reuse_port = no
    ssl = yes
  }
  privileged_group =
  process_limit = 300
  process_min_avail = 1
  protocol = imap
  service_count = 1
  type = login
  user = $default_login_user
  vsz_limit = 18446744073709551615 B
}
service imap-urlauth-login {
  chroot = token-login
  client_limit = 0
  drop_priv_before_exec = no
  executable = imap-urlauth-login
  extra_groups =
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 0
  process_min_avail = 0
  protocol = imap
  service_count = 1
  type = login
  unix_listener imap-urlauth {
    group =
    mode = 0666
    user =
  }
  user = $default_login_user
  vsz_limit = 18446744073709551615 B
}
service imap-urlauth-worker {
  chroot =
  client_limit = 1
  drop_priv_before_exec = no
  executable = imap-urlauth-worker
  extra_groups = $default_internal_group
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 1024
  process_min_avail = 0
  protocol = imap
  service_count = 1
  type =
  unix_listener imap-urlauth-worker {
    group =
    mode = 0600
    user = $default_internal_user
  }
  user =
  vsz_limit = 18446744073709551615 B
}
service imap-urlauth {
  chroot =
  client_limit = 1
  drop_priv_before_exec = no
  executable = imap-urlauth
  extra_groups =
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 1024
  process_min_avail = 0
  protocol = imap
  service_count = 1
  type =
  unix_listener token-login/imap-urlauth {
    group =
    mode = 0666
    user =
  }
  user = $default_internal_user
  vsz_limit = 18446744073709551615 B
}
service imap {
  chroot =
  client_limit = 1
  drop_priv_before_exec = no
  executable = imap
  extra_groups = $default_internal_group
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 1024
  process_min_avail = 0
  protocol = imap
  service_count = 1
  type =
  unix_listener imap-master {
    group =
    mode = 0600
    user =
  }
  unix_listener login/imap {
    group =
    mode = 0666
    user =
  }
  user =
  vsz_limit = 18446744073709551615 B
}
service indexer-worker {
  chroot =
  client_limit = 1
  drop_priv_before_exec = no
  executable = indexer-worker
  extra_groups = $default_internal_group
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 10
  process_min_avail = 0
  protocol =
  service_count = 0
  type =
  unix_listener indexer-worker {
    group =
    mode = 0600
    user = $default_internal_user
  }
  user =
  vsz_limit = 18446744073709551615 B
}
service indexer {
  chroot =
  client_limit = 0
  drop_priv_before_exec = no
  executable = indexer
  extra_groups =
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 1
  process_min_avail = 0
  protocol =
  service_count = 0
  type =
  unix_listener indexer {
    group =
    mode = 0666
    user =
  }
  user = $default_internal_user
  vsz_limit = 18446744073709551615 B
}
service ipc {
  chroot = empty
  client_limit = 0
  drop_priv_before_exec = no
  executable = ipc
  extra_groups =
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 1
  process_min_avail = 0
  protocol =
  service_count = 0
  type =
  unix_listener ipc {
    group =
    mode = 0600
    user = $default_internal_user
  }
  unix_listener login/ipc-proxy {
    group =
    mode = 0600
    user = $default_login_user
  }
  user = $default_internal_user
  vsz_limit = 18446744073709551615 B
}
service lmtp {
  chroot =
  client_limit = 1
  drop_priv_before_exec = no
  executable = lmtp
  extra_groups = $default_internal_group
  group =
  idle_kill = 0
  inet_listener lmtp {
    address =
    haproxy = no
    port = 24
    reuse_port = no
    ssl = no
  }
  privileged_group =
  process_limit = 0
  process_min_avail = 5
  protocol = lmtp
  service_count = 0
  type =
  unix_listener lmtp {
    group =
    mode = 0666
    user =
  }
  user =
  vsz_limit = 18446744073709551615 B
}
service log {
  chroot =
  client_limit = 0
  drop_priv_before_exec = no
  executable = log
  extra_groups =
  group =
  idle_kill = 4294967295 secs
  privileged_group =
  process_limit = 1
  process_min_avail = 0
  protocol =
  service_count = 0
  type = log
  unix_listener log-errors {
    group =
    mode = 0600
    user =
  }
  user =
  vsz_limit = 18446744073709551615 B
}
service managesieve-login {
  chroot = login
  client_limit = 0
  drop_priv_before_exec = no
  executable = managesieve-login
  extra_groups =
  group =
  idle_kill = 0
  inet_listener sieve {
    address =
    haproxy = no
    port = 4190
    reuse_port = no
    ssl = yes
  }
  privileged_group =
  process_limit = 0
  process_min_avail = 5
  protocol = sieve
  service_count = 1
  type = login
  user = $default_login_user
  vsz_limit = 18446744073709551615 B
}
service managesieve {
  chroot =
  client_limit = 1
  drop_priv_before_exec = no
  executable = managesieve
  extra_groups =
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 0
  process_min_avail = 0
  protocol = sieve
  service_count = 1
  type =
  unix_listener login/sieve {
    group =
    mode = 0666
    user =
  }
  user =
  vsz_limit = 18446744073709551615 B
}
service old-stats {
  chroot = empty
  client_limit = 0
  drop_priv_before_exec = no
  executable = old-stats
  extra_groups =
  fifo_listener old-stats-mail {
    group =
    mode = 0600
    user =
  }
  fifo_listener old-stats-user {
    group =
    mode = 0600
    user =
  }
  group =
  idle_kill = 4294967295 secs
  privileged_group =
  process_limit = 1
  process_min_avail = 0
  protocol =
  service_count = 0
  type =
  unix_listener old-stats {
    group =
    mode = 0600
    user =
  }
  user = $default_internal_user
  vsz_limit = 18446744073709551615 B
}
service pop3-login {
  chroot = login
  client_limit = 0
  drop_priv_before_exec = no
  executable = pop3-login
  extra_groups =
  group =
  idle_kill = 0
  inet_listener pop3-dsync {
    address =
    haproxy = no
    port = 1110
    reuse_port = no
    ssl = no
  }
  inet_listener pop3 {
    address =
    haproxy = no
    port = 110
    reuse_port = no
    ssl = no
  }
  inet_listener pop3s {
    address =
    haproxy = no
    port = 995
    reuse_port = no
    ssl = yes
  }
  privileged_group =
  process_limit = 300
  process_min_avail = 1
  protocol = pop3
  service_count = 1
  type = login
  user = $default_login_user
  vsz_limit = 18446744073709551615 B
}
service pop3 {
  chroot =
  client_limit = 1
  drop_priv_before_exec = no
  executable = pop3
  extra_groups = $default_internal_group
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 1024
  process_min_avail = 0
  protocol = pop3
  service_count = 1
  type =
  unix_listener login/pop3 {
    group =
    mode = 0666
    user =
  }
  user =
  vsz_limit = 18446744073709551615 B
}
service quota-warning {
  chroot =
  client_limit = 0
  drop_priv_before_exec = no
  executable = script /usr/local/bin/quota-warning.sh
  extra_groups =
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 0
  process_min_avail = 0
  protocol =
  service_count = 0
  type =
  unix_listener quota-warning {
    group =
    mode = 0600
    user =
  }
  user =
  vsz_limit = 18446744073709551615 B
}
service replicator {
  chroot =
  client_limit = 0
  drop_priv_before_exec = no
  executable = replicator
  extra_groups =
  group =
  idle_kill = 4294967295 secs
  privileged_group =
  process_limit = 1
  process_min_avail = 0
  protocol =
  service_count = 0
  type =
  unix_listener replicator-doveadm {
    group =
    mode = 00
    user = $default_internal_user
  }
  unix_listener replicator {
    group =
    mode = 0600
    user = $default_internal_user
  }
  user =
  vsz_limit = 18446744073709551615 B
}
service stats {
  chroot =
  client_limit = 3000
  drop_priv_before_exec = no
  executable = stats
  extra_groups =
  group =
  idle_kill = 4294967295 secs
  inet_listener http {
    address =
    haproxy = no
    port = 9166
    reuse_port = no
    ssl = no
  }
  privileged_group =
  process_limit = 1
  process_min_avail = 0
  protocol =
  service_count = 0
  type =
  unix_listener stats-reader {
    group =
    mode = 0600
    user =
  }
  unix_listener stats-writer {
    group = $default_internal_group
    mode = 0660
    user =
  }
  user = $default_internal_user
  vsz_limit = 18446744073709551615 B
}
service submission-login {
  chroot = login
  client_limit = 0
  drop_priv_before_exec = no
  executable = submission-login
  extra_groups =
  group =
  idle_kill = 0
  inet_listener submission {
    address =
    haproxy = no
    port = 587
    reuse_port = no
    ssl = no
  }
  privileged_group =
  process_limit = 0
  process_min_avail = 0
  protocol = submission
  service_count = 1
  type = login
  user = $default_login_user
  vsz_limit = 18446744073709551615 B
}
service submission {
  chroot =
  client_limit = 1
  drop_priv_before_exec = no
  executable = submission
  extra_groups = $default_internal_group
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 1024
  process_min_avail = 0
  protocol = submission
  service_count = 1
  type =
  unix_listener login/submission {
    group =
    mode = 0666
    user =
  }
  user =
  vsz_limit = 18446744073709551615 B
}
service tcpwrap {
  chroot =
  client_limit = 1
  drop_priv_before_exec = no
  executable = tcpwrap
  extra_groups =
  group =
  idle_kill = 0
  privileged_group =
  process_limit = 0
  process_min_avail = 0
  protocol =
  service_count = 0
  type =
  user = $default_internal_user
  vsz_limit = 18446744073709551615 B
}
shutdown_clients = yes
ssl = yes
ssl_alt_cert =
ssl_alt_key =
ssl_ca =
ssl_cert = </etc/pki/tls/certs/domain.tld.crt
ssl_cert_username_field = commonName
ssl_cipher_list = 
ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW at STRENGTH
ssl_client_ca_dir =
ssl_client_ca_file =
ssl_client_cert =
ssl_client_key =
ssl_client_require_valid_cert = yes
ssl_crypto_device =
ssl_curve_list =
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
ssl_key_password =
ssl_min_protocol = TLSv1
ssl_options =
ssl_prefer_server_ciphers = no
ssl_require_crl = yes
ssl_verify_client_cert = no
state_dir = /var/lib/dovecot
stats_http_rawlog_dir =
stats_writer_socket_path = stats-writer
submission_client_workarounds =
submission_host =
submission_logout_format = in=%i out=%o
submission_max_mail_size = 0
submission_max_recipients = 0
submission_relay_command_timeout = 5 mins
submission_relay_connect_timeout = 30 secs
submission_relay_host =
submission_relay_master_user =
submission_relay_max_idle_time = 29 mins
submission_relay_password =
submission_relay_port = 25
submission_relay_rawlog_dir =
submission_relay_ssl = no
submission_relay_ssl_verify = yes
submission_relay_trusted = no
submission_relay_user =
submission_ssl = no
submission_timeout = 30 secs
syslog_facility = mail
userdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  auth_verbose = default
  default_fields =
  driver = sql
  name =
  override_fields =
  result_failure = continue
  result_internalfail = continue
  result_success = return-ok
  skip = never
}
valid_chroot_dirs =
verbose_proctitle = no
verbose_ssl = no
version_ignore = no
protocol lmtp {
  mail_plugins = quota quota_clone zlib sieve notify
}
protocol lda {
  mail_plugins = quota quota_clone zlib sieve
  postmaster_address = postmaster at domain.tld
}
protocol imap {
  imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
  mail_max_userip_connections = 50
  mail_plugins = quota quota_clone zlib imap_quota notify
}
protocol sieve {
  mail_max_userip_connections = 10
}
protocol pop3 {
  mail_plugins = quota quota_clone zlib
  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
  pop3_enable_last = yes
}
protocol doveadm {
  mail_plugins = quota quota_clone zlib
}


On 2021-02-22 16:33, Sami Ketola wrote:
>
>> On 17. Feb 2021, at 23.53, Edgaras Lukoševičius <edgaras.lukosevicius at gmail.com> wrote:
>>
>> Hi,
>>
>> I'm starting to wonder if dsync is supposed to sync sieve scripts at all? Or should it work only as a part of replicator? Because I was not able to get it working on multiple Dovecot and Pigeon versions, and I see lots of replication/dsync and sieve related questions in the mailing list.
>>
>> I'm trying to get it to work using latest versions on http://repo.dovecot.org/ce-2.3-latest repo.
>>
>> The versions I am testing at the moment are:
>> - Dovecot 2.3.13 (89f716dc2)
>> - Pigeonhole 0.5.13 (cdd19fe3)
>>
>> It's a straightforward setup, nothing fancy. So the question is - is it supposed to work at all without replicator?
>>
> It does sync sieve scripts as long as you have the plugin installed in both ends and have correct configuration
> regarding sieve script location.
>
> Sami
>


More information about the dovecot mailing list