I am experiencing a consistent panic while using doveadm sync on Dovecot v2.4.2. The panic occurs during a synchronization attempt between two servers. It appears that the sync panics when entering in a .Junk.Something folder.
Any idea? I attach the log lines and my configuration Any help would be appreciated
Roberto
doveadm -D sync -u postmaster@domain-tld tcp:10.0.0.24:12345
[...] Feb 06 22:39:46 doveadm(postmaster@domain.tld): Panic: file hash.c: line 252 (hash_table_insert_node): assertion failed: (opcode == HASH_TABLE_OP_UPDATE) Feb 06 22:39:46 doveadm(postmaster@domain.tld): Error: Raw backtrace: libdovecot.so.0(backtrace_append+0x40) [0x7f7bba941860] -> libdovecot.so.0(backtrace_get+0x22) [0x7f7bba9419b2] -> libdovecot.so.0(+0x14fc12) [0x7f7bba94fc12] -> libdovecot.so.0(+0x14fc41) [0x7f7bba94fc41] -> libdovecot.so.0(+0x72375) [0x7f7bba872375] -> libdovecot.so.0(+0x732c3) [0x7f7bba8732c3] -> doveadm(dsync_mailbox_tree_build_name128_hash+0x9a) [0x55e5f58108ba] -> doveadm(dsync_mailbox_tree_fill+0x750) [0x55e5f5811bb0] -> doveadm(dsync_brain_mailbox_trees_init+0x192) [0x55e5f58055b2] -> doveadm(dsync_brain_master_init+0x191) [0x55e5f5801f51] -> doveadm(+0x3544b) [0x55e5f57e644b] -> doveadm(+0x3794e) [0x55e5f57e894e] -> doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x244) [0x55e5f57e9684] -> doveadm(doveadm_cmdline_run+0x593) [0x55e5f57fd473] -> doveadm(doveadm_cmdline_try_run+0xba) [0x55e5f57fc67a] -> doveadm(main+0x2fd) [0x55e5f57dacfd] -> libc.so.6(__libc_start_main+0xcd) [0x7f7bba4fd03d] -> doveadm(_start+0x2a) [0x55e5f57db0ea]
doveconf -n
2.4.2 (): /usr/local/dovecot/etc/dovecot/dovecot.conf
Pigeonhole version 2.4.2 (767418c3)
OS: Linux 6.15.3 x86_64 Slackware 15.0
Hostname: qt
dovecot_config_version = 2.4.2 auth_allow_cleartext = yes auth_allow_weak_schemes = yes auth_default_domain = mydomain.tld auth_mechanisms = plain login auth_socket_path = ../../../var/run/dovecot/auth-userdb debug_log_path = /var/log/dovecot/dovecot.log default_login_user = vpopmail doveadm_password = # hidden, use -P to show it dovecot_storage_version = 2.4.2 first_valid_gid = 89 first_valid_uid = 89 fts_autoindex = yes fts_autoindex_max_recent_msgs = 999 fts_search_add_missing = yes hostname = mydomain.tld last_valid_gid = 89 last_valid_uid = 89 listen {
- = yes :: = no } log_debug = category=mail log_path = /var/log/dovecot/dovecot.log mail_access_groups = 89 mail_driver = maildir mail_gid = 89 mail_path = ~/Maildir mail_plugins { notify = yes fts = no fts_solr = no quota = yes } mail_privileged_group = 89 mail_uid = 89 mailbox_list_validate_fs_names = no passdb_default_password_scheme = SHA512-CRYPT postmaster_address = postmaster@mydomain.tld protocols { imap = yes pop3 = yes sieve = yes } sendmail_path = /var/qmail/bin/sendmail sql_driver = mysql ssl_min_protocol = TLSv1.1 passdb sql { query = SELECT CONCAT(vpopmail.pw_name, '@', vpopmail.pw_domain) AS user, vpopmail.pw_passwd AS password, vpopmail.pw_dir AS userdb_home, 89 AS userdb_uid, 89 AS userdb_gid, CONCAT(REPLACE(SUBSTRING_INDEX(vpopmail.pw_shell, 'S', 1), 'NOQUOTA', '0'), 'B') AS userdb_quota_storage_size FROM vpopmail LEFT JOIN aliasdomains ON aliasdomains.alias='%{user | domain}' LEFT JOIN limits ON limits.domain='%{user | domain}' WHERE vpopmail.pw_name='%{user | username}' AND (vpopmail.pw_domain='%{user | domain}' OR vpopmail.pw_domain=aliasdomains.domain) AND ('%{local_port}'!='995' OR !(vpopmail.pw_gid & 2)) AND ('%{remote_ip}'!='10.0.0.4' OR !(vpopmail.pw_gid & 4)) AND ('%{remote_ip}'='10.0.0.4' OR '%{local_port}'!='993' OR !(vpopmail.pw_gid & 8)) AND ('%{remote_ip}'!='10.0.0.4' OR COALESCE(disable_webmail,0)!=1) AND ('%{remote_ip}'='10.0.0.4' OR COALESCE(disable_imap,0)!=1) } userdb prefetch { driver = prefetch } userdb sql { iterate_query = SELECT CONCAT(pw_name,'@',pw_domain) AS user FROM vpopmail query = SELECT vpopmail.pw_dir AS home, 89 AS uid, 89 AS gid, CONCAT(REPLACE(SUBSTRING_INDEX(vpopmail.pw_shell, 'S', 1), 'NOQUOTA', '0'), 'B') AS quota_storage_size FROM vpopmail WHERE vpopmail.pw_name='%{user | username}' AND vpopmail.pw_domain='%{user | domain}' } namespace inbox { inbox = yes mailbox Drafts { auto = subscribe special_use = "\\Drafts" } mailbox Junk { autoexpunge = 30d special_use = "\\Junk" } mailbox Junk.TeachSpam { auto = subscribe autoexpunge = 30d } mailbox Junk.TeachNotSpam { auto = subscribe autoexpunge = 30d } mailbox Trash { autoexpunge = 60d special_use = "\\Trash" quota_storage_extra = 100M } mailbox Sent { special_use = "\\Sent" } mailbox "Sent Messages" { special_use = "\\Sent" } } protocol !indexer-worker { mail_vsize_bg_after_count = 100 } maildir { broken_filename_sizes = yes } service imap-login { inet_listener imap { } inet_listener imaps { } } service pop3-login { inet_listener pop3 { } inet_listener pop3s { } } service imap { executable = imap postlogin } service pop3 { executable = pop3 postlogin } service postlogin { executable = script-login ../../etc/scripts/dovecot_postlogin.sh user = vpopmail unix_listener postlogin { group = vchkpw mode = 0660 user = vpopmail } } service auth { user = $SET:default_internal_user unix_listener auth-userdb { group = vchkpw mode = 0660 user = vpopmail } } service auth-worker { user = $SET:default_internal_user } service stats { unix_listener stats-reader { group = vchkpw mode = 0660 user = vpopmail } unix_listener stats-writer { group = vchkpw mode = 0660 user = vpopmail } } protocol lda { mail_plugins { sieve = yes mail_log = yes } } protocol imap { mail_plugins { notify = yes mail_log = yes imap_sieve = yes imap_quota = yes } } service managesieve-login { inet_listener sieve { port = 4190 } } service managesieve { } protocol pop3 { mail_plugins { notify = yes mail_log = yes } } language en { default = yes } quota "User quota" { driver = count storage_grace = 10M quota_warning overquota { quota_storage_percentage = 100 execute quota-warning { args = 100 %{user} } } quota_warning warn-95 { quota_storage_percentage = 95 execute quota-warning { args = 95 %{user} } } quota_warning warn-85 { quota_storage_percentage = 85 execute quota-warning { args = 85 %{user} } } } service quota-warning { executable = script ../../etc/scripts/quota-warning.sh user = vpopmail unix_listener quota-warning { group = vchkpw mode = 0660 user = dovenull } } sieve_script personal { active_path = ~/.sieve/dovecot.sieve driver = file path = ~/.sieve } sieve_script move-spam { cause = delivery path = /usr/local/dovecot/etc/sieve/move-spam.sieve type = before } mysql 10.0.0.112 { dbname = vpopmail_test password = # hidden, use -P to show it user = vpopmail_test } ssl_server { cert_file = /etc/ssl/certs/dovecot.pem key_file = /etc/ssl/private/dovecot.pem }