doveadm sync panic
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 }
Hi,
I’m having some issues getting the quota plugin to work properly. Based on the error message, it looks like the plugin doesn’t fully cooperate with Proxmox mount points for LXC containers. It appears to be referencing the secondary disk directly as /dev/nvme1n1p1, rather than the actual mount point inside the container.
Here’s the full error message:
mlgate:/usr/lib/systemd/system# doveadm quota get -usome@example.com doveadm(some@example.com): Error: Failed to get quota resource STORAGE: quota-fs: quotactl(Q_GETQUOTA, /dev/nvme1n1p1) failed: No such file or directory
Are there any parameters that need to be adjusted to make this work, or is there an alternative plugin that would handle this setup better?
//Kim
Hi,
I'm having some issues getting the quota plugin to work properly. Based on the error message, it looks like the plugin doesn't fully cooperate with Proxmox mount points for LXC containers. It appears to be referencing the secondary disk directly as /dev/nvme1n1p1, rather than the actual mount point inside the container.
Here's the full error message:
mlgate:/usr/lib/systemd/system# doveadm quota get -u [1]some@example.com doveadm([2]some@example.com): Error: Failed to get quota resource STORAGE: quota-fs: quotactl(Q_GETQUOTA, /dev/nvme1n1p1) failed: No such file or directory
Are there any parameters that need to be adjusted to make this work, or is there an alternative plugin that would handle this setup better?
//Kim
References
Visible links
- mailto:some@example.com
- mailto:some@example.com
participants (2)
-
Kim Haverblad
-
Roberto Puzzanghera