Hello.
I have tried to restore a test user mailbox and I get a segmentation fault
doveadm -D import -u ox101@us.es mdbox:/backup/bacula-restores/buzones/mysite/15/b1/ox101/ "" all
/doveadm(entrega): Debug: Loading modules from directory: /usr/lib64/dovecot doveadm(entrega): Debug: Module loaded: /usr/lib64/dovecot/lib01_acl_plugin.so doveadm(entrega): Debug: Module loaded: /usr/lib64/dovecot/lib10_quota_plugin.so doveadm(entrega): Debug: Module loaded: /usr/lib64/dovecot/lib20_zlib_plugin.so doveadm(entrega): Debug: Loading modules from directory: /usr/lib64/dovecot/doveadm doveadm(entrega): Debug: Skipping module doveadm_expire_plugin, because dlopen() failed: /usr/lib64/dovecot/doveadm/lib10_doveadm_expire_plugin.so: undefined symbol: expire_set_lookup (this is usually intentional, so just ignore this message) doveadm(entrega): Debug: Module loaded: /usr/lib64/dovecot/doveadm/lib10_doveadm_quota_plugin.so doveadm(entrega): Debug: Module loaded: /usr/lib64/dovecot/doveadm/lib10_doveadm_zlib_plugin.so doveadm(ox101@us.es): Debug: import: box=Sent uid=9 doveadm(ox101@us.es): Debug: import: box=Sent uid=10 doveadm(ox101@us.es): Debug: import: box=INBOX uid=1 doveadm(ox101@us.es): Debug: import: box=INBOX uid=5 doveadm(ox101@us.es): Debug: import: box=INBOX uid=11 doveadm(ox101@us.es): Debug: import: box=INBOX uid=12 doveadm(ox101@us.es): Debug: import: box=INBOX uid=14
Segmentation fault/
I can fully reproduce this segmentation fault. Doveconf -n attached at the bottom of this mail. The strange this is that all mail for this user is restored, but the process segfaults.
If I strace the process the last lines are:
[...] fstat(25, {st_mode=S_IFREG0644, st_size=47, ...}) = 0 stat("/backup/bacula-restores/buzones/mysite/15/b1/ox101/mailboxes/INBOX/dbox-Mails/dovecot.index.log", {st_mode=S_IFREG0600, st_size=6868, ...}) = 0 fstat(17, {st_mode=S_IFREG0600, st_size=6868, ...}) = 0 fstat(17, {st_mode=S_IFREG0600, st_size=6868, ...}) = 0 getdents(9, /* 3 entries */, 32768) = 80 getdents(9, /* 0 entries */, 32768) = 0 close(9) = 0 stat("/backup/bacula-restores/buzones/mysite/15/b1/ox101/mailboxes/Trash", {st_mode=S_IFDIR0700, st_size=4096, ...}) = 0 stat("/backup/bacula-restores/buzones/mysite/15/b1/ox101/mailboxes/Trash/dbox-Mails", {st_mode=S_IFDIR0700, st_size=4096, ...}) = 0 open("/backup/bacula-restores/buzones/mysite/15/b1/ox101/mailboxes/Trash", O_RDONLYO_NONBLOCKO_DIRECTORY) = 9 fcntl(9, F_SETFD, FD_CLOEXEC) = 0 stat("/backup/bacula-restores/buzones/mysite/15/b1/ox101/mailboxes/Trash/dbox-Mails", {st_mode=S_IFDIR0700, st_size=4096, ...}) = 0 close(11) = 0 munmap(0x2b2bea461000, 28672) = 0 close(16) = 0 close(10) = 0 stat("/backup/bacula-restores/buzones/mysite/15/b1/ox101/mailboxes/Trash", {st_mode=S_IFDIR0700, st_size=4096, ...}) = 0 stat("/backup/bacula-restores/buzones/mysite/15/b1/ox101/mailboxes/Trash", {st_mode=S_IFDIR0700, st_size=4096, ...}) = 0 stat("/backup/bacula-restores/buzones/mysite/15/b1/ox101/mailboxes/Trash/dbox-Mails", {st_mode=S_IFDIR0700, st_size=4096, ...}) = 0 open("/backup/bacula-restores/buzones/mysite/15/b1/ox101/mailboxes/Trash/dbox-Mails/dovecot.index.log", O_RDWR) = 10 fstat(10, {st_mode=S_IFREG0600, st_size=5084, ...}) = 0 pread(10, "\1\2(\0\350\10HM\2\0\0\0\1\0\0\0\0\0\0\0\350\10HM\0\0\0\0\0\0\0\0"..., 40, 0) = 40 open("/backup/bacula-restores/buzones/mysite/15/b1/ox101/mailboxes/Trash/dbox-Mails/dovecot.index", O_RDWR) = -1 ENOENT (No such file or directory) fstat(10, {st_mode=S_IFREG0600, st_size=5084, ...}) = 0 mmap(NULL, 5084, PROT_READ, MAP_SHARED, 10, 0) = 0x2b2bea461000 madvise(0x2b2bea461000, 5084, MADV_SEQUENTIAL) = 0 fstat(10, {st_mode=S_IFREG0600, st_size=5084, ...}) = 0 stat("/backup/bacula-restores/buzones/mysite/15/b1/ox101/mailboxes/Trash/dbox-Mails/dovecot.index.log", {st_mode=S_IFREG0600, st_size=5084, ...}) = 0 fstat(10, {st_mode=S_IFREG0600, st_size=5084, ...}) = 0 fstat(10, {st_mode=S_IFREG0600, st_size=5084, ...}) = 0 stat("/backup/bacula-restores/buzones/mysite/15/b1/ox101/mailboxes/Trash/dbox-Mails/dovecot.index.log", {st_mode=S_IFREG0600, st_size=5084, ...}) = 0 fstat(10, {st_mode=S_IFREG0600, st_size=5084, ...}) = 0 fstat(10, {st_mode=S_IFREG0600, st_size=5084, ...}) = 0 getdents(9, /* 3 entries */, 32768) = 80 getdents(9, /* 0 entries */, 32768) = 0 close(9) = 0 getdents(8, /* 0 entries */, 32768) = 0 close(8) = 0 close(25) = 0 close(18) = 0 munmap(0x2b2bea45d000, 6520) = 0 close(13) = 0 munmap(0x2b2bea461000, 5084) = 0 close(10) = 0 close(22) = 0 close(21) = 0 munmap(0x2b2bea681000, 30720) = 0 close(24) = 0 brk(0x1b48000) = 0x1b48000 munmap(0x2b2bea46e000, 6868) = 0 close(17) = 0 munmap(0x2b2bea470000, 22528) = 0 close(23) = 0 close(12) = 0 munmap(0x2b2bea468000, 24576) = 0 close(19) = 0 brk(0x1b44000) = 0x1b44000 close(7) = 0 munmap(0x2b2be9806000, 2161656) = 0 --- SIGSEGV (Segmentation fault) @ 0 (0) --- +++ killed by SIGSEGV +++
dovecot -n outpout:
# 2.0.9: /etc/dovecot/dovecot.conf # OS: Linux 2.6.18-238.1.1.el5 x86_64 Red Hat Enterprise Linux Server release 5.6 (Tikanga) ext3 auth_anonymous_username = anonymous auth_cache_negative_ttl = 1 hours auth_cache_size = 0 auth_cache_ttl = 1 hours auth_debug = no auth_debug_passwords = no auth_default_realm = auth_failure_delay = 2 secs auth_first_valid_uid = 500 auth_gssapi_hostname = auth_krb5_keytab = auth_last_valid_uid = 0 auth_master_user_separator = * auth_mechanisms = plain login auth_realms = auth_socket_path = auth-userdb auth_ssl_require_client_cert = no auth_ssl_username_from_cert = no auth_use_winbind = no auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@ auth_username_format = auth_username_translation = auth_verbose = no auth_verbose_passwords = no auth_winbind_helper_path = /usr/bin/ntlm_auth auth_worker_max_count = 90 base_dir = /var/run/dovecot/ config_cache_size = 1 M debug_log_path = default_client_limit = 4096 default_idle_kill = 60 default_internal_user = dovecot default_login_user = dovenull default_process_limit = 700 default_vsz_limit = 256 M deliver_log_format = msgid=%m: %$ dict_db_config = director_doveadm_port = 0 director_mail_servers = director_servers = director_user_expire = 15 mins disable_plaintext_auth = no dotlock_use_excl = yes doveadm_socket_path = doveadm-server doveadm_worker_count = 0 first_valid_gid = 1 first_valid_uid = 500 hostname = imap_capability = imap_client_workarounds = imap_id_log = imap_id_send = imap_idle_notify_interval = 2 mins imap_logout_format = bytes=%i/%o imap_max_line_length = 64 k info_log_path = 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_proxy = no lmtp_save_to_detail_mailbox = no lock_method = fcntl log_path = syslog log_timestamp = "%b %d %H:%M:%S " login_access_sockets = login_greeting = Dovecot ready. login_log_format = %$: %s login_log_format_elements = user=<%u> method=%m rip=%r lip=%l mpid=%e %c login_trusted_networks = mail_access_groups = mail_attachment_dir = mail_attachment_fs = sis posix mail_attachment_hash = %{sha1} mail_attachment_min_size = 128 k mail_cache_fields = flags mail_cache_min_mail_count = 0 mail_chroot = mail_debug = no mail_fsync = never mail_full_filesystem_access = no mail_gid = entrega mail_home = /buzones/%2.26Hn/mysite/%2.200Hn/%n/mail_home mail_location = mdbox:/buzones/mysite/%2.26Hn/%2.200Hn/%n mail_log_prefix = "%s(%u): " 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 = " zlib quota acl" mail_privileged_group = mail_save_crlf = no mail_temp_dir = /tmp mail_uid = entrega mailbox_idle_check_interval = 30 secs mailbox_list_index_disable = no maildir_copy_with_hardlinks = yes 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 = 65536 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 master_user_separator = mbox_dirty_syncs = yes mbox_dotlock_change_timeout = 2 mins mbox_lazy_writes = yes mbox_lock_timeout = 5 mins 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 = 1 days mdbox_rotate_size = 40 M mmap_disable = no passdb { args = deny = no driver = shadow master = no pass = no } passdb { args = /etc/dovecot/dovecot-ldap.conf deny = no driver = ldap master = no pass = no } passdb { args = /etc/usuario_maestro.txt deny = no driver = passwd-file master = yes pass = no } passdb { args = /etc/dovecot/dovecot-ldap.conf deny = no driver = ldap master = no pass = no } plugin { acl = vfile lda_mailbox_autocreate = yes lda_mailbox_autosubscribe = yes quota = dict:Cuota de usuario::file:/buzones/cuotas/%n quota_rule2 = Trash:storage=+10%% quota_warning = storage=12K aviso_cuota 12K %u sieve = /buzones/%2.26Hn/%2.200Hn/%n/dovecot.sieve sieve_dir = /buzones/%2.26Hn/%2.200Hn/%n/sieve/ zlib_save = gz zlib_save_level = 9 } pop3_client_workarounds = 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_format = %08Xu%08Xv postmaster_address = protocols = pop3 imap sieve quota_full_tempfail = no recipient_delimiter = + rejection_reason = Your message to <%t> was automatically rejected:%n%r rejection_subject = Rejected: %s sendmail_path = /usr/sbin/sendmail service anvil { chroot = empty client_limit = 0 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 = 4096 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 = } unix_listener auth-login { group = mode = 0600 user = $default_internal_user } unix_listener auth-master { group = mode = 0600 user = entrega } unix_listener auth-userdb { group = mode = 0600 user = entrega } unix_listener login/login { group = mode = 0666 user = } user = root vsz_limit = 18446744073709551615 B } service aviso_cuota { 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 aviso_cuota { group = mode = 0666 user = } user = entrega vsz_limit = 18446744073709551615 B } service config { chroot = client_limit = 0 drop_priv_before_exec = no executable = config extra_groups = group = idle_kill = 0 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 { 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 = mode = 0600 user = } 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 privileged_group = process_limit = 1 process_min_avail = 0 protocol = service_count = 0 type = unix_listener director-admin { 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 = group = idle_kill = 0 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 imap-login { chroot = login client_limit = 0 drop_priv_before_exec = no executable = /usr/libexec/dovecot/imap-login extra_groups = group = idle_kill = 0 inet_listener imap { address = port = 143 ssl = no } inet_listener imaps { address = port = 993 ssl = yes } privileged_group = process_limit = 2500 process_min_avail = 0 protocol = imap service_count = 1 type = login user = $default_login_user vsz_limit = 64 M } service imap { chroot = client_limit = 1 drop_priv_before_exec = no executable = /usr/libexec/dovecot/rawlog /usr/libexec/dovecot/imap extra_groups = group = idle_kill = 0 privileged_group = process_limit = 2500 process_min_avail = 0 protocol = imap service_count = 1 type = unix_listener login/imap { group = mode = 0666 user = } user = vsz_limit = 18446744073709551615 B } service lmtp { chroot = client_limit = 0 drop_priv_before_exec = no executable = lmtp extra_groups = group = idle_kill = 0 privileged_group = process_limit = 0 process_min_avail = 0 protocol = lmtp service_count = 0 type = unix_listener lmtp { group = mode = 0666 user = } user = vsz_limit = 0 } service log { chroot = client_limit = 0 drop_priv_before_exec = no executable = log extra_groups = group = idle_kill = 0 privileged_group = process_limit = 1 process_min_avail = 0 protocol = service_count = 0 type = log user = vsz_limit = 18446744073709551615 B } service managesieve-login { chroot = login client_limit = 0 drop_priv_before_exec = no executable = /usr/libexec/dovecot/managesieve-login extra_groups = group = idle_kill = 0 inet_listener sieve { address = port = 2000 ssl = no } privileged_group = process_limit = 2500 process_min_avail = 0 protocol = sieve service_count = 1 type = login user = $default_login_user vsz_limit = 64 M } service managesieve { chroot = client_limit = 1 drop_priv_before_exec = no executable = /usr/libexec/dovecot/managesieve extra_groups = group = idle_kill = 0 privileged_group = process_limit = 2500 process_min_avail = 0 protocol = sieve service_count = 1 type = unix_listener login/sieve { group = mode = 0666 user = } user = vsz_limit = 18446744073709551615 B } service pop3-login { chroot = login client_limit = 0 drop_priv_before_exec = no executable = /usr/libexec/dovecot/pop3-login extra_groups = group = idle_kill = 0 inet_listener pop3 { address = port = 110 ssl = no } inet_listener pop3s { address = port = 995 ssl = yes } privileged_group = process_limit = 2500 process_min_avail = 0 protocol = pop3 service_count = 1 type = login user = $default_login_user vsz_limit = 64 M } service pop3 { chroot = client_limit = 1 drop_priv_before_exec = no executable = /usr/libexec/dovecot/pop3 extra_groups = group = idle_kill = 0 privileged_group = process_limit = 2500 process_min_avail = 0 protocol = pop3 service_count = 1 type = unix_listener login/pop3 { group = mode = 0666 user = } user = vsz_limit = 18446744073709551615 B } service ssl-params { chroot = client_limit = 0 drop_priv_before_exec = no executable = ssl-params extra_groups = group = idle_kill = 0 privileged_group = process_limit = 0 process_min_avail = 0 protocol = service_count = 0 type = startup unix_listener login/ssl-params { group = mode = 0666 user = } user = vsz_limit = 18446744073709551615 B } shutdown_clients = yes ssl = yes ssl_ca =
Regards
Maria