v2.2.27 Panic: file rfc822-parser.h: line 23 (rfc822_parser_deinit): assertion failed: (ctx->data <= ctx->end)
Hi,
I've been having an issue with the indexer giving me errors on mailbox in dovecot.
I managed to narrow it down to a specific email in that mailbox.
Various dovecot functions have issues with this email.
The email itself is just spam. I can email it to you if you want to analyse it. I did run it through mbox-anonymize but its not clear to me that that would be of any use. Happy to email the suspect email privately to anyone who wants it.
/home is mounted nfs4 and is zfs on the nfs server.
Dovecot is installed from Debian Jessie. $ /usr/sbin/dovecot --version 2.2.27 (c0f36b0)
dovecot-core: Installed: 1:2.2.27-3+deb9u2~bpo8+1 Candidate: 1:2.2.27-3+deb9u2~bpo8+1 Version table: *** 1:2.2.27-3+deb9u2~bpo8+1 0 100 /var/lib/dpkg/status 1:2.2.13-12~deb8u5 0 400 http://security.debian.org/ jessie/updates/main amd64 Packages 1:2.2.13-12~deb8u4 0 400 http://deb.debian.org/debian/ jessie/main amd64 Packages
~# dovecot -n # 2.2.27 (c0f36b0): /etc/dovecot/dovecot.conf # Pigeonhole version 0.4.16 (fed8554) # OS: Linux 4.9.0-0.bpo.6-amd64 x86_64 Debian 8.10 imap_hibernate_timeout = 5 secs mail_location = maildir:~/Maildir mail_plugins = fts fts_solr mailbox_list_index = yes namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = } passdb { driver = pam } plugin { fts = solr fts_autoindex = yes fts_enforced = yes fts_solr = url=http://10.0.2.19:8080/solr/ imapsieve_mailbox1_before = file:/etc/dovecot/train-as-spam.sieve imapsieve_mailbox1_causes = COPY imapsieve_mailbox1_name = Junk imapsieve_mailbox2_before = file:/etc/dovecot/train-as-ham.sieve imapsieve_mailbox2_causes = COPY imapsieve_mailbox2_from = Junk imapsieve_mailbox2_name = * sieve = file:~/sieve;active=~/.dovecot.sieve sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment sieve_pipe_bin_dir = /usr/bin sieve_plugins = sieve_imapsieve sieve_extprograms } protocols = " imap" service anvil { client_limit = 1127 } service auth { client_limit = 2200 unix_listener /var/spool/postfix/private/auth { mode = 0666 } } service imap-hibernate { unix_listener imap-hibernate { group = dovecot mode = 0660 } } service imap-login { process_limit = 1024 process_min_avail = 12 service_count = 0 vsz_limit = 1 G } service imap { extra_groups = dovecot unix_listener imap-master { user = dovecot } } ssl_cert =
jason@debian:~$ doveadm -D -f flow fetch imap.envelope mailbox crm-spam.2008.g Debug: Loading modules from directory: /usr/lib/dovecot/modules Debug: Module loaded: /usr/lib/dovecot/modules/lib20_fts_plugin.so Debug: Module loaded: /usr/lib/dovecot/modules/lib21_fts_solr_plugin.so Debug: Loading modules from directory: /usr/lib/dovecot/modules/doveadm Debug: Skipping module doveadm_acl_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so: undefined symbol: acl_user_module (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_expire_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_expire_plugin.so: undefined symbol: expire_set_deinit (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_quota_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so: undefined symbol: quota_user_module (this is usually intentional, so just ignore this message) Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_sieve_plugin.so Debug: Skipping module doveadm_fts_lucene_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_lucene_plugin.so: undefined symbol: lucene_index_iter_deinit (this is usually intentional, so just ignore this message) Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_mail_crypt_plugin.so: undefined symbol: mail_crypt_box_get_pvt_digests (this is usually intentional, so just ignore this message) doveadm(jason): Debug: Effective uid=1000, gid=1000, home=/home/jason doveadm(jason): Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:~/Maildir doveadm(jason): Debug: maildir++: root=/home/jason/Maildir, index=, indexpvt=, control=, inbox=/home/jason/Maildir, alt= doveadm(jason): Debug: Namespace : Using permissions from /home/jason/Maildir: mode=0700 gid=default doveadm(jason): Debug: Mailbox crm-spam.2008.g: Opened mail UID=38 because: 1/10 headers not cached (first=Sender) (Mail has other cached fields, reset_id=1553472765) doveadm(jason): Panic: file rfc822-parser.h: line 23 (rfc822_parser_deinit): assertion failed: (ctx->data <= ctx->end) doveadm(jason): Error: Raw backtrace: /usr/lib/dovecot/libdovecot.so.0(+0x989ae) [0x7f170b1389ae] -> /usr/lib/dovecot/libdovecot.so.0(+0x98a28) [0x7f170b138a28] -> /usr/lib/dovecot/libdovecot.so.0(i_fatal+0) [0x7f170b0ce67e] -> /usr/lib/dovecot/libdovecot.so.0(+0x7c97d) [0x7f170b11c97d] -> /usr/lib/dovecot/libdovecot.so.0(message_address_parse+0x55) [0x7f170b11c9e5] -> /usr/lib/dovecot/libdovecot.so.0(imap_envelope_parse_header+0x144) [0x7f170b110374] -> /usr/lib/dovecot/libdovecot-storage.so.0(index_mail_parse_header+0xfe) [0x7f170b47422e] -> /usr/lib/dovecot/libdovecot.so.0(+0x7979f) [0x7f170b11979f] -> /usr/lib/dovecot/libdovecot.so.0(i_stream_read+0x53) [0x7f170b1437e3] -> /usr/lib/dovecot/libdovecot.so.0(i_stream_read_data+0x3d) [0x7f170b14422d] -> /usr/lib/dovecot/libdovecot.so.0(message_parse_header_next+0x72) [0x7f170b11f3d2] -> /usr/lib/dovecot/libdovecot.so.0(message_parse_header+0x4f) [0x7f170b11fd7f] -> /usr/lib/dovecot/libdovecot-storage.so.0(index_mail_headers_get_envelope+0x138) [0x7f170b475448] -> /usr/lib/dovecot/libdovecot-storage.so.0(index_mail_get_special+0x1a1) [0x7f170b4796c1] -> /usr/lib/dovecot/libdovecot-storage.so.0(+0x69dd3) [0x7f170b42fdd3] -> /usr/lib/dovecot/libdovecot-storage.so.0(mail_get_special+0xd) [0x7f170b400a8d] -> /usr/bin/doveadm(+0x2dca8) [0x562378dd4ca8] -> /usr/bin/doveadm(+0x2ed7e) [0x562378dd5d7e] -> /usr/bin/doveadm(+0x2a57c) [0x562378dd157c] -> /usr/bin/doveadm(+0x2b0da) [0x562378dd20da] -> /usr/bin/doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x21f) [0x562378dd2f5f] -> /usr/bin/doveadm(doveadm_cmd_run_ver2+0x560) [0x562378de2390] -> /usr/bin/doveadm(doveadm_cmd_try_run_ver2+0x37) [0x562378de23e7] -> /usr/bin/doveadm(main+0x1e4) [0x562378dc1f44] -> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f170ad16b45] -> /usr/bin/doveadm(+0x1b32c) [0x562378dc232c] Aborted (core dumped)
jason@debian:~$ gdb /usr/bin/doveadm /home/jason/core
GNU gdb (Debian 7.7.1+dfsg-5) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/.
Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/doveadm...(no debugging symbols found)...done.
[New LWP 22454]
Core was generated by `/usr/bin/doveadm -D -f flow fetch imap.envelope
mailbox crm-spam.2008.g'.
Program terminated with signal SIGABRT, Aborted.
#0 0x00007f170ad2a067 in __GI_raise (sig=sig@entry=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt full
#0 0x00007f170ad2a067 in __GI_raise (sig=sig@entry=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:56
resultvar = 0
pid = 22454
selftid = 22454
#1 0x00007f170ad2b448 in __GI_abort () at abort.c:89
save_stage = 2
act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction =
0x0}, sa_mask = {__val = {1024, 94710351668199, 94710351535940,
139736942472005, 94710351536940, 0,
94710367714600, 513, 13251895700223756544, 94710367714600,
139736946974659, 94710367714600, 140734907147216, 4294967040,
139736946975017, 94710367714600}},
sa_flags = 185808618, sa_restorer = 0x7fff6625e401}
sigs = {__val = {32, 0
-- Jason Lewis http://emacstragic.net
Can you install dovecot-dbg and try gdb again?
Aki
On 25.3.2019 3.20, Jason Lewis via dovecot wrote:
Hi,
I've been having an issue with the indexer giving me errors on mailbox in dovecot.
I managed to narrow it down to a specific email in that mailbox.
Various dovecot functions have issues with this email.
The email itself is just spam. I can email it to you if you want to analyse it. I did run it through mbox-anonymize but its not clear to me that that would be of any use. Happy to email the suspect email privately to anyone who wants it.
/home is mounted nfs4 and is zfs on the nfs server.
Dovecot is installed from Debian Jessie. $ /usr/sbin/dovecot --version 2.2.27 (c0f36b0)
dovecot-core: Installed: 1:2.2.27-3+deb9u2~bpo8+1 Candidate: 1:2.2.27-3+deb9u2~bpo8+1 Version table: *** 1:2.2.27-3+deb9u2~bpo8+1 0 100 /var/lib/dpkg/status 1:2.2.13-12~deb8u5 0 400 http://security.debian.org/ jessie/updates/main amd64 Packages 1:2.2.13-12~deb8u4 0 400 http://deb.debian.org/debian/ jessie/main amd64 Packages
~# dovecot -n # 2.2.27 (c0f36b0): /etc/dovecot/dovecot.conf # Pigeonhole version 0.4.16 (fed8554) # OS: Linux 4.9.0-0.bpo.6-amd64 x86_64 Debian 8.10 imap_hibernate_timeout = 5 secs mail_location = maildir:~/Maildir mail_plugins = fts fts_solr mailbox_list_index = yes namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = } passdb { driver = pam } plugin { fts = solr fts_autoindex = yes fts_enforced = yes fts_solr = url=http://10.0.2.19:8080/solr/ imapsieve_mailbox1_before = file:/etc/dovecot/train-as-spam.sieve imapsieve_mailbox1_causes = COPY imapsieve_mailbox1_name = Junk imapsieve_mailbox2_before = file:/etc/dovecot/train-as-ham.sieve imapsieve_mailbox2_causes = COPY imapsieve_mailbox2_from = Junk imapsieve_mailbox2_name = * sieve = file:~/sieve;active=~/.dovecot.sieve sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment sieve_pipe_bin_dir = /usr/bin sieve_plugins = sieve_imapsieve sieve_extprograms } protocols = " imap" service anvil { client_limit = 1127 } service auth { client_limit = 2200 unix_listener /var/spool/postfix/private/auth { mode = 0666 } } service imap-hibernate { unix_listener imap-hibernate { group = dovecot mode = 0660 } } service imap-login { process_limit = 1024 process_min_avail = 12 service_count = 0 vsz_limit = 1 G } service imap { extra_groups = dovecot unix_listener imap-master { user = dovecot } } ssl_cert =
jason@debian:~$ doveadm -D -f flow fetch imap.envelope mailbox crm-spam.2008.g Debug: Loading modules from directory: /usr/lib/dovecot/modules Debug: Module loaded: /usr/lib/dovecot/modules/lib20_fts_plugin.so Debug: Module loaded: /usr/lib/dovecot/modules/lib21_fts_solr_plugin.so Debug: Loading modules from directory: /usr/lib/dovecot/modules/doveadm Debug: Skipping module doveadm_acl_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so: undefined symbol: acl_user_module (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_expire_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_expire_plugin.so: undefined symbol: expire_set_deinit (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_quota_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so: undefined symbol: quota_user_module (this is usually intentional, so just ignore this message) Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_sieve_plugin.so Debug: Skipping module doveadm_fts_lucene_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_lucene_plugin.so: undefined symbol: lucene_index_iter_deinit (this is usually intentional, so just ignore this message) Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_mail_crypt_plugin.so: undefined symbol: mail_crypt_box_get_pvt_digests (this is usually intentional, so just ignore this message) doveadm(jason): Debug: Effective uid=1000, gid=1000, home=/home/jason doveadm(jason): Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:~/Maildir doveadm(jason): Debug: maildir++: root=/home/jason/Maildir, index=, indexpvt=, control=, inbox=/home/jason/Maildir, alt= doveadm(jason): Debug: Namespace : Using permissions from /home/jason/Maildir: mode=0700 gid=default doveadm(jason): Debug: Mailbox crm-spam.2008.g: Opened mail UID=38 because: 1/10 headers not cached (first=Sender) (Mail has other cached fields, reset_id=1553472765) doveadm(jason): Panic: file rfc822-parser.h: line 23 (rfc822_parser_deinit): assertion failed: (ctx->data <= ctx->end) doveadm(jason): Error: Raw backtrace: /usr/lib/dovecot/libdovecot.so.0(+0x989ae) [0x7f170b1389ae] -> /usr/lib/dovecot/libdovecot.so.0(+0x98a28) [0x7f170b138a28] -> /usr/lib/dovecot/libdovecot.so.0(i_fatal+0) [0x7f170b0ce67e] -> /usr/lib/dovecot/libdovecot.so.0(+0x7c97d) [0x7f170b11c97d] -> /usr/lib/dovecot/libdovecot.so.0(message_address_parse+0x55) [0x7f170b11c9e5] -> /usr/lib/dovecot/libdovecot.so.0(imap_envelope_parse_header+0x144) [0x7f170b110374] -> /usr/lib/dovecot/libdovecot-storage.so.0(index_mail_parse_header+0xfe) [0x7f170b47422e] -> /usr/lib/dovecot/libdovecot.so.0(+0x7979f) [0x7f170b11979f] -> /usr/lib/dovecot/libdovecot.so.0(i_stream_read+0x53) [0x7f170b1437e3] -> /usr/lib/dovecot/libdovecot.so.0(i_stream_read_data+0x3d) [0x7f170b14422d] -> /usr/lib/dovecot/libdovecot.so.0(message_parse_header_next+0x72) [0x7f170b11f3d2] -> /usr/lib/dovecot/libdovecot.so.0(message_parse_header+0x4f) [0x7f170b11fd7f] -> /usr/lib/dovecot/libdovecot-storage.so.0(index_mail_headers_get_envelope+0x138) [0x7f170b475448] -> /usr/lib/dovecot/libdovecot-storage.so.0(index_mail_get_special+0x1a1) [0x7f170b4796c1] -> /usr/lib/dovecot/libdovecot-storage.so.0(+0x69dd3) [0x7f170b42fdd3] -> /usr/lib/dovecot/libdovecot-storage.so.0(mail_get_special+0xd) [0x7f170b400a8d] -> /usr/bin/doveadm(+0x2dca8) [0x562378dd4ca8] -> /usr/bin/doveadm(+0x2ed7e) [0x562378dd5d7e] -> /usr/bin/doveadm(+0x2a57c) [0x562378dd157c] -> /usr/bin/doveadm(+0x2b0da) [0x562378dd20da] -> /usr/bin/doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x21f) [0x562378dd2f5f] -> /usr/bin/doveadm(doveadm_cmd_run_ver2+0x560) [0x562378de2390] -> /usr/bin/doveadm(doveadm_cmd_try_run_ver2+0x37) [0x562378de23e7] -> /usr/bin/doveadm(main+0x1e4) [0x562378dc1f44] -> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f170ad16b45] -> /usr/bin/doveadm(+0x1b32c) [0x562378dc232c] Aborted (core dumped)
jason@debian:~$ gdb /usr/bin/doveadm /home/jason/core GNU gdb (Debian 7.7.1+dfsg-5) 7.7.1 Copyright (C) 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: http://www.gnu.org/software/gdb/bugs/. Find the GDB manual and other documentation resources online at: http://www.gnu.org/software/gdb/documentation/. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from /usr/bin/doveadm...(no debugging symbols found)...done. [New LWP 22454] Core was generated by `/usr/bin/doveadm -D -f flow fetch imap.envelope mailbox crm-spam.2008.g'. Program terminated with signal SIGABRT, Aborted. #0 0x00007f170ad2a067 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory. (gdb) bt full #0 0x00007f170ad2a067 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 resultvar = 0 pid = 22454 selftid = 22454 #1 0x00007f170ad2b448 in __GI_abort () at abort.c:89 save_stage = 2 act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {1024, 94710351668199, 94710351535940, 139736942472005, 94710351536940, 0, 94710367714600, 513, 13251895700223756544, 94710367714600, 139736946974659, 94710367714600, 140734907147216, 4294967040, 139736946975017, 94710367714600}}, sa_flags = 185808618, sa_restorer = 0x7fff6625e401} sigs = {__val = {32, 0
}} #2 0x00007f170b1389a6 in ?? () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #3 0x00007f170b138a28 in default_fatal_handler () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #4 0x00007f170b0ce67e in i_panic () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #5 0x00007f170b11c97d in ?? () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #6 0x00007f170b11c9e5 in message_address_parse () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #7 0x00007f170b110374 in imap_envelope_parse_header () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #8 0x00007f170b47422e in index_mail_parse_header () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. #9 0x00007f170b11979f in ?? () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #10 0x00007f170b1437e3 in i_stream_read () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #11 0x00007f170b14422d in i_stream_read_data () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #12 0x00007f170b11f3d2 in message_parse_header_next () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #13 0x00007f170b11fd7f in message_parse_header () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #14 0x00007f170b475448 in index_mail_headers_get_envelope () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. #15 0x00007f170b4796c1 in index_mail_get_special () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. #16 0x00007f170b42fdd3 in ?? () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. ---Type <return> to continue, or q <return> to quit--- #17 0x00007f170b400a8d in mail_get_special () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. #18 0x0000562378dd4ca8 in ?? () No symbol table info available. #19 0x0000562378dd5d7e in ?? () No symbol table info available. #20 0x0000562378dd157c in ?? () No symbol table info available. #21 0x0000562378dd20da in ?? () No symbol table info available. #22 0x0000562378dd2f5f in doveadm_cmd_ver2_to_mail_cmd_wrapper () No symbol table info available. #23 0x0000562378de2390 in doveadm_cmd_run_ver2 () No symbol table info available. #24 0x0000562378de23e7 in doveadm_cmd_try_run_ver2 () No symbol table info available. #25 0x0000562378dc1f44 in main () No symbol table info available. (gdb)
After some investigation, it turns out it is non trivial to install dovecot-dbg on debian jessie.
Sorry I can't investigate further.
Jason
Aki Tuomi wrote on 25/3/19 6:12 pm:
Can you install dovecot-dbg and try gdb again?
Aki
On 25.3.2019 3.20, Jason Lewis via dovecot wrote:
Hi,
I've been having an issue with the indexer giving me errors on mailbox in dovecot.
I managed to narrow it down to a specific email in that mailbox.
Various dovecot functions have issues with this email.
The email itself is just spam. I can email it to you if you want to analyse it. I did run it through mbox-anonymize but its not clear to me that that would be of any use. Happy to email the suspect email privately to anyone who wants it.
/home is mounted nfs4 and is zfs on the nfs server.
Dovecot is installed from Debian Jessie. $ /usr/sbin/dovecot --version 2.2.27 (c0f36b0)
dovecot-core: Installed: 1:2.2.27-3+deb9u2~bpo8+1 Candidate: 1:2.2.27-3+deb9u2~bpo8+1 Version table: *** 1:2.2.27-3+deb9u2~bpo8+1 0 100 /var/lib/dpkg/status 1:2.2.13-12~deb8u5 0 400 http://security.debian.org/ jessie/updates/main amd64 Packages 1:2.2.13-12~deb8u4 0 400 http://deb.debian.org/debian/ jessie/main amd64 Packages
~# dovecot -n # 2.2.27 (c0f36b0): /etc/dovecot/dovecot.conf # Pigeonhole version 0.4.16 (fed8554) # OS: Linux 4.9.0-0.bpo.6-amd64 x86_64 Debian 8.10 imap_hibernate_timeout = 5 secs mail_location = maildir:~/Maildir mail_plugins = fts fts_solr mailbox_list_index = yes namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = } passdb { driver = pam } plugin { fts = solr fts_autoindex = yes fts_enforced = yes fts_solr = url=http://10.0.2.19:8080/solr/ imapsieve_mailbox1_before = file:/etc/dovecot/train-as-spam.sieve imapsieve_mailbox1_causes = COPY imapsieve_mailbox1_name = Junk imapsieve_mailbox2_before = file:/etc/dovecot/train-as-ham.sieve imapsieve_mailbox2_causes = COPY imapsieve_mailbox2_from = Junk imapsieve_mailbox2_name = * sieve = file:~/sieve;active=~/.dovecot.sieve sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment sieve_pipe_bin_dir = /usr/bin sieve_plugins = sieve_imapsieve sieve_extprograms } protocols = " imap" service anvil { client_limit = 1127 } service auth { client_limit = 2200 unix_listener /var/spool/postfix/private/auth { mode = 0666 } } service imap-hibernate { unix_listener imap-hibernate { group = dovecot mode = 0660 } } service imap-login { process_limit = 1024 process_min_avail = 12 service_count = 0 vsz_limit = 1 G } service imap { extra_groups = dovecot unix_listener imap-master { user = dovecot } } ssl_cert =
jason@debian:~$ doveadm -D -f flow fetch imap.envelope mailbox crm-spam.2008.g Debug: Loading modules from directory: /usr/lib/dovecot/modules Debug: Module loaded: /usr/lib/dovecot/modules/lib20_fts_plugin.so Debug: Module loaded: /usr/lib/dovecot/modules/lib21_fts_solr_plugin.so Debug: Loading modules from directory: /usr/lib/dovecot/modules/doveadm Debug: Skipping module doveadm_acl_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so: undefined symbol: acl_user_module (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_expire_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_expire_plugin.so: undefined symbol: expire_set_deinit (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_quota_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so: undefined symbol: quota_user_module (this is usually intentional, so just ignore this message) Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_sieve_plugin.so Debug: Skipping module doveadm_fts_lucene_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_lucene_plugin.so: undefined symbol: lucene_index_iter_deinit (this is usually intentional, so just ignore this message) Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_mail_crypt_plugin.so: undefined symbol: mail_crypt_box_get_pvt_digests (this is usually intentional, so just ignore this message) doveadm(jason): Debug: Effective uid=1000, gid=1000, home=/home/jason doveadm(jason): Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:~/Maildir doveadm(jason): Debug: maildir++: root=/home/jason/Maildir, index=, indexpvt=, control=, inbox=/home/jason/Maildir, alt= doveadm(jason): Debug: Namespace : Using permissions from /home/jason/Maildir: mode=0700 gid=default doveadm(jason): Debug: Mailbox crm-spam.2008.g: Opened mail UID=38 because: 1/10 headers not cached (first=Sender) (Mail has other cached fields, reset_id=1553472765) doveadm(jason): Panic: file rfc822-parser.h: line 23 (rfc822_parser_deinit): assertion failed: (ctx->data <= ctx->end) doveadm(jason): Error: Raw backtrace: /usr/lib/dovecot/libdovecot.so.0(+0x989ae) [0x7f170b1389ae] -> /usr/lib/dovecot/libdovecot.so.0(+0x98a28) [0x7f170b138a28] -> /usr/lib/dovecot/libdovecot.so.0(i_fatal+0) [0x7f170b0ce67e] -> /usr/lib/dovecot/libdovecot.so.0(+0x7c97d) [0x7f170b11c97d] -> /usr/lib/dovecot/libdovecot.so.0(message_address_parse+0x55) [0x7f170b11c9e5] -> /usr/lib/dovecot/libdovecot.so.0(imap_envelope_parse_header+0x144) [0x7f170b110374] -> /usr/lib/dovecot/libdovecot-storage.so.0(index_mail_parse_header+0xfe) [0x7f170b47422e] -> /usr/lib/dovecot/libdovecot.so.0(+0x7979f) [0x7f170b11979f] -> /usr/lib/dovecot/libdovecot.so.0(i_stream_read+0x53) [0x7f170b1437e3] -> /usr/lib/dovecot/libdovecot.so.0(i_stream_read_data+0x3d) [0x7f170b14422d] -> /usr/lib/dovecot/libdovecot.so.0(message_parse_header_next+0x72) [0x7f170b11f3d2] -> /usr/lib/dovecot/libdovecot.so.0(message_parse_header+0x4f) [0x7f170b11fd7f] -> /usr/lib/dovecot/libdovecot-storage.so.0(index_mail_headers_get_envelope+0x138) [0x7f170b475448] -> /usr/lib/dovecot/libdovecot-storage.so.0(index_mail_get_special+0x1a1) [0x7f170b4796c1] -> /usr/lib/dovecot/libdovecot-storage.so.0(+0x69dd3) [0x7f170b42fdd3] -> /usr/lib/dovecot/libdovecot-storage.so.0(mail_get_special+0xd) [0x7f170b400a8d] -> /usr/bin/doveadm(+0x2dca8) [0x562378dd4ca8] -> /usr/bin/doveadm(+0x2ed7e) [0x562378dd5d7e] -> /usr/bin/doveadm(+0x2a57c) [0x562378dd157c] -> /usr/bin/doveadm(+0x2b0da) [0x562378dd20da] -> /usr/bin/doveadm(doveadm_cmd_ver2_to_mail_cmd_wrapper+0x21f) [0x562378dd2f5f] -> /usr/bin/doveadm(doveadm_cmd_run_ver2+0x560) [0x562378de2390] -> /usr/bin/doveadm(doveadm_cmd_try_run_ver2+0x37) [0x562378de23e7] -> /usr/bin/doveadm(main+0x1e4) [0x562378dc1f44] -> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f170ad16b45] -> /usr/bin/doveadm(+0x1b32c) [0x562378dc232c] Aborted (core dumped)
jason@debian:~$ gdb /usr/bin/doveadm /home/jason/core GNU gdb (Debian 7.7.1+dfsg-5) 7.7.1 Copyright (C) 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: http://www.gnu.org/software/gdb/bugs/. Find the GDB manual and other documentation resources online at: http://www.gnu.org/software/gdb/documentation/. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from /usr/bin/doveadm...(no debugging symbols found)...done. [New LWP 22454] Core was generated by `/usr/bin/doveadm -D -f flow fetch imap.envelope mailbox crm-spam.2008.g'. Program terminated with signal SIGABRT, Aborted. #0 0x00007f170ad2a067 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory. (gdb) bt full #0 0x00007f170ad2a067 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 resultvar = 0 pid = 22454 selftid = 22454 #1 0x00007f170ad2b448 in __GI_abort () at abort.c:89 save_stage = 2 act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {1024, 94710351668199, 94710351535940, 139736942472005, 94710351536940, 0, 94710367714600, 513, 13251895700223756544, 94710367714600, 139736946974659, 94710367714600, 140734907147216, 4294967040, 139736946975017, 94710367714600}}, sa_flags = 185808618, sa_restorer = 0x7fff6625e401} sigs = {__val = {32, 0
}} #2 0x00007f170b1389a6 in ?? () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #3 0x00007f170b138a28 in default_fatal_handler () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #4 0x00007f170b0ce67e in i_panic () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #5 0x00007f170b11c97d in ?? () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #6 0x00007f170b11c9e5 in message_address_parse () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #7 0x00007f170b110374 in imap_envelope_parse_header () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #8 0x00007f170b47422e in index_mail_parse_header () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. #9 0x00007f170b11979f in ?? () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #10 0x00007f170b1437e3 in i_stream_read () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #11 0x00007f170b14422d in i_stream_read_data () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #12 0x00007f170b11f3d2 in message_parse_header_next () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #13 0x00007f170b11fd7f in message_parse_header () from /usr/lib/dovecot/libdovecot.so.0 No symbol table info available. #14 0x00007f170b475448 in index_mail_headers_get_envelope () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. #15 0x00007f170b4796c1 in index_mail_get_special () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. #16 0x00007f170b42fdd3 in ?? () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. ---Type <return> to continue, or q <return> to quit--- #17 0x00007f170b400a8d in mail_get_special () from /usr/lib/dovecot/libdovecot-storage.so.0 No symbol table info available. #18 0x0000562378dd4ca8 in ?? () No symbol table info available. #19 0x0000562378dd5d7e in ?? () No symbol table info available. #20 0x0000562378dd157c in ?? () No symbol table info available. #21 0x0000562378dd20da in ?? () No symbol table info available. #22 0x0000562378dd2f5f in doveadm_cmd_ver2_to_mail_cmd_wrapper () No symbol table info available. #23 0x0000562378de2390 in doveadm_cmd_run_ver2 () No symbol table info available. #24 0x0000562378de23e7 in doveadm_cmd_try_run_ver2 () No symbol table info available. #25 0x0000562378dc1f44 in main () No symbol table info available. (gdb)
-- Jason Lewis http://emacstragic.net
What's non-trivial about apt-get install dovecot-dbg?
Aki
On 26.3.2019 5.38, Jason Lewis via dovecot wrote:
After some investigation, it turns out it is non trivial to install dovecot-dbg on debian jessie.
Sorry I can't investigate further.
Jason
Aki Tuomi wrote on 25/3/19 6:12 pm:
Can you install dovecot-dbg and try gdb again?
Aki
On 25.3.2019 3.20, Jason Lewis via dovecot wrote:
Hi Aki,
debian jessie backports has been moved to archive.debian.org and initially I was unable to install dovecot-dbg because of that. But I've managed to resolve that issue now.
This was the command I ran: doveadm -D -f flow fetch imap.envelope mailbox crm-spam.2008.g
Backtrace follows.
Jason
jason@debian:~$ gdb /usr/bin/doveadm /home/jason/core
GNU gdb (Debian 7.7.1+dfsg-5) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/.
Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/doveadm...Reading symbols from
/usr/lib/debug/.build-id/8a/e850dc3cde00618eb0c3386b7404fe984c8118.debug...done.
done.
[New LWP 23099]
Core was generated by `/usr/bin/doveadm -D -f flow fetch imap.envelope
mailbox crm-spam.2008.g'.
Program terminated with signal SIGABRT, Aborted.
#0 0x00007f3a7bf58067 in __GI_raise (sig=sig@entry=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt full
#0 0x00007f3a7bf58067 in __GI_raise (sig=sig@entry=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:56
resultvar = 0
pid = 23099
selftid = 23099
#1 0x00007f3a7bf59448 in __GI_abort () at abort.c:89
save_stage = 2
act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction =
0x0}, sa_mask = {__val = {1024, 93886903596007, 93886903463748,
139889164438341, 93886903464748, 0, 93886931979560, 513,
12274393185022739456, 93886931979560, 139889168940995, 93886931979560,
140727948500176, 4294967040, 139889168941353,
93886931979560}}, sa_flags = 2083919594, sa_restorer = 0x7ffdc7615d01}
sigs = {__val = {32, 0
Aki Tuomi wrote on 26/3/19 7:28 pm:
What's non-trivial about apt-get install dovecot-dbg?
Aki
On 26.3.2019 5.38, Jason Lewis via dovecot wrote:
After some investigation, it turns out it is non trivial to install dovecot-dbg on debian jessie.
Sorry I can't investigate further.
Jason
Aki Tuomi wrote on 25/3/19 6:12 pm:
Can you install dovecot-dbg and try gdb again?
Aki
On 25.3.2019 3.20, Jason Lewis via dovecot wrote:
-- Jason Lewis http://emacstragic.net
On 27 Mar 2019, at 1.25, Jason Lewis via dovecot dovecot@dovecot.org wrote:
Hi Aki,
debian jessie backports has been moved to archive.debian.org and initially I was unable to install dovecot-dbg because of that. But I've managed to resolve that issue now.
This was the command I ran: doveadm -D -f flow fetch imap.envelope mailbox crm-spam.2008.g
Backtrace follows.
I've a feeling Debian's security fix backports didn't work properly:
#5 0x00007f3a7c34a97d in rfc822_parser_deinit (ctx=0x7ffdc7615e38, ctx=0x7ffdc7615e38) at rfc822-parser.h:23
rfc822_parser_deinit() wasn't added until v2.2.31. I think it was added as part of a security fix.
data=data@entry=0x5563c13f3910 "To: bluefrog@dickson.st, jason@dickson.st, lewisjason@dickson.st, 05 Jul 2008 16:39:47 -0500 PDT6Q--q=dns; c=nofws;d sender) smtp.mail=Matt_Cooley@postnewsweektech.com; domainkeys=pass (test mode) hea"..., size=size@entry=64,
I tried fetching a mail with these contents in v2.2.27, v2.2.33 and master. They all worked fine.
Thanks Timo.
Given the age of these dovecot packages, and this being on debian oldstable, what should we do next? I'm inclined to just delete the email in question and move on.
Jason
Timo Sirainen wrote on 28/3/19 12:16 am:
On 27 Mar 2019, at 1.25, Jason Lewis via dovecot dovecot@dovecot.org wrote:
Hi Aki,
debian jessie backports has been moved to archive.debian.org and initially I was unable to install dovecot-dbg because of that. But I've managed to resolve that issue now.
This was the command I ran: doveadm -D -f flow fetch imap.envelope mailbox crm-spam.2008.g
Backtrace follows.
I've a feeling Debian's security fix backports didn't work properly:
#5 0x00007f3a7c34a97d in rfc822_parser_deinit (ctx=0x7ffdc7615e38, ctx=0x7ffdc7615e38) at rfc822-parser.h:23
rfc822_parser_deinit() wasn't added until v2.2.31. I think it was added as part of a security fix.
data=data@entry=0x5563c13f3910 "To: bluefrog@dickson.st, jason@dickson.st, lewisjason@dickson.st, 05 Jul 2008 16:39:47 -0500 PDT6Q--q=dns; c=nofws;d sender) smtp.mail=Matt_Cooley@postnewsweektech.com; domainkeys=pass (test mode) hea"..., size=size@entry=64,
I tried fetching a mail with these contents in v2.2.27, v2.2.33 and master. They all worked fine.
-- Jason Lewis http://emacstragic.net
On 28 Mar 2019, at 1.08, Jason Lewis via dovecot dovecot@dovecot.org wrote:
Thanks Timo.
Given the age of these dovecot packages, and this being on debian oldstable, what should we do next? I'm inclined to just delete the email in question and move on.
https://repo.dovecot.org/ https://repo.dovecot.org/
Sami
On Wed, Mar 27, 2019 at 10:25:02AM +1100, Jason Lewis via dovecot wrote:
Hi Aki,
debian jessie backports has been moved to archive.debian.org and initially I was unable to install dovecot-dbg because of that. But I've managed to resolve that issue now.
Just curious -- what deb line did you use in /etc/apt/sources.lst to refer to the archived repositories?
-- hendrik
Hi Hendrik,
Hendrik Boom via dovecot wrote on 29/3/19 4:03 am:
On Wed, Mar 27, 2019 at 10:25:02AM +1100, Jason Lewis via dovecot wrote:
Hi Aki,
debian jessie backports has been moved to archive.debian.org and initially I was unable to install dovecot-dbg because of that. But I've managed to resolve that issue now.
Just curious -- what deb line did you use in /etc/apt/sources.lst to refer to the archived repositories?
-- hendrik
my sources.list:
deb http://deb.debian.org/debian jessie main contrib non-free deb http://archive.debian.org/debian jessie-backports main contrib non-free deb http://security.debian.org jessie/updates main contrib non-free
deb-src http://deb.debian.org/debian jessie main contrib non-free deb-src http://archive.debian.org/debian jessie-backports main contrib non-free deb-src http://security.debian.org jessie/updates main contrib non-free
Jason
-- Jason Lewis http://emacstragic.net
participants (5)
-
Aki Tuomi
-
Hendrik Boom
-
Jason Lewis
-
Sami Ketola
-
Timo Sirainen