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