v2.2.27 Panic: file rfc822-parser.h: line 23 (rfc822_parser_deinit): assertion failed: (ctx->data <= ctx->end)

Jason Lewis jason at dickson.st
Mon Mar 25 03:20:17 EET 2019


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 = </etc/letsencrypt/live/imap.organictrader.com.au/fullchain.pem
ssl_key =  # hidden, use -P to show it
userdb {
  driver = passwd
}
protocol imap {
  mail_max_userip_connections = 20
  mail_plugins = fts fts_solr imap_sieve
}





jason at 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 at 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 at 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 at 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 <repeats 15 times>}}
#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


More information about the dovecot mailing list