Using Dovecot 2.2.13 with Tika 1.5 on Centos 5 64bit
Tika is throwing an exception for some reason, which seems to be causing
Dovecot's indexer to segfault. I'm using mdbox/gzipped compressed mail and
private indexes for the shared folder. I'm importing mail via
formail/dovecot-lda:
formail -s /usr/libexec/dovecot/dovecot-lda -d admin -m Public/TestSubFolder <
/tmp/Inbox.mbox
dovecot -n and the GDB backtrace are attached.
# find /var/mail/ -maxdepth 2
/var/mail/_public
/var/mail/_public/dovecot.mailbox.log
/var/mail/_public/dovecot-uidvalidity
/var/mail/_public/dovecot-uidvalidity.53ecade1
/var/mail/_public/storage
/var/mail/_public/subscriptions
/var/mail/_public/mailboxes
/var/mail/admin
/var/mail/admin/dovecot-uidvalidity.53ecade2
/var/mail/admin/dovecot.mailbox.log
/var/mail/admin/public
/var/mail/admin/dovecot-uidvalidity
/var/mail/admin/storage
/var/mail/admin/subscriptions
/var/mail/admin/mailboxes
Core was generated by `dovecot/indexer-worker'.
Program terminated with signal 11, Segmentation fault.
#0 i_stream_ref (stream=0x0) at istream.c:42
42 istream.c: No such file or directory.
in istream.c
(gdb) bt full
#0 i_stream_ref (stream=0x0) at istream.c:42
No locals.
#1 0x00007f13f5497ed0 in fts_tika_parser_response (response=0x7fffd5910230,
parser=0x660460) at fts-parser-tika.c:87
__FUNCTION__ = "fts_tika_parser_response"
#2 0x00007f13f646e07d in http_client_request_callback (req=0x6690d0,
response=0xc8) at http-client-request.c:767
callback = 0x7f13f5497e00 <fts_tika_parser_response>
orig_attempts = 0
#3 0x00007f13f646f5f2 in http_client_connection_return_response
(conn=0x66c780, req=0x6690d0, response=0x7fffd5910230) at
http-client-connection.c:456
payload = <value optimized out>
retrying = <value optimized out>
__FUNCTION__ = "http_client_connection_return_response"
#4 0x00007f13f6470b12 in http_client_connection_input (_conn=<value optimized
out>) at http-client-connection.c:640
aborted = false
conn = 0x0
response = {version_major = 1 '\001', version_minor = 1 '\001', status
= 200, reason = 0x672380 "OK", location = 0x0, date = 1408020040, retry_after =
-1, header = 0x671fe0, payload = 0x0, headers = {arr = {buffer = 0x671ff0,
element_size = 24}, v = 0x671ff0, v_modifiable = 0x671ff0},
connection_options = {arr = {buffer = 0x672328, element_size = 8}, v =
0x672328, v_modifiable = 0x672328}, connection_close = 0}
req = 0x6690d0
finished = 0
ret = <value optimized out>
error = <value optimized out>
payload_type = <value optimized out>
__FUNCTION__ = "http_client_connection_input"
#5 0x00007f13f64aa0bc in io_loop_call_io (io=0x66bad0) at ioloop.c:441
ioloop = 0x66cd30
t_id = 6
__FUNCTION__ = "io_loop_call_io"
#6 0x00007f13f64ab7dd in io_loop_handler_run_internal (ioloop=<value optimized
out>) at ioloop-epoll.c:220
ctx = <value optimized out>
event = 0x66bd60
list = 0x66bb30
io = 0x0
tv = {tv_sec = 2147483, tv_usec = 0}
events_count = <value optimized out>
msecs = <value optimized out>
ret = 1
i = 0
call = 200
__FUNCTION__ = "io_loop_handler_run_internal"
#7 0x00007f13f64aa159 in io_loop_handler_run (ioloop=0x0) at ioloop.c:488
No locals.
#8 0x00007f13f64aa1d8 in io_loop_run (ioloop=0x66cd30) at ioloop.c:465
__FUNCTION__ = "io_loop_run"
#9 0x00007f13f646e58d in http_client_request_continue_payload (_req=0x660490,
data=0x0, size=0) at http-client-request.c:496
prev_ioloop = 0x60d720
req = 0x6690d0
conn = 0x66c780
client = 0x65ffc0
ret = <value optimized out>
__FUNCTION__ = "http_client_request_continue_payload"
#10 0x00007f13f5497acc in fts_parser_tika_more (_parser=0x660460,
block=0x660460) at fts-parser-tika.c:161
data = <value optimized out>
size = <value optimized out>
ret = <value optimized out>
__FUNCTION__ = "fts_parser_tika_more"
#11 0x00007f13f54969d7 in fts_parser_more (parser=0x0, block=0x7fffd5910440) at
fts-parser.c:67
No locals.
#12 0x00007f13f5494d2f in fts_body_parser_finish (ctx=0x7fffd59104b0) at
fts-build-mail.c:256
block = {part = 0x0, hdr = 0x0, data = 0x0, size = 0}
ret = <value optimized out>
#13 0x00007f13f549530d in fts_build_mail_real (update_ctx=0x649b40,
mail=0x63cd40) at fts-build-mail.c:361
__FUNCTION__ = "fts_build_mail_real"
#14 fts_build_mail (update_ctx=0x649b40, mail=0x63cd40) at fts-build-mail.c:386
---Type <return> to continue, or q <return> to quit---
_data_stack_cur_id = 5
ret = <value optimized out>
#15 0x00007f13f549a404 in fts_mail_index (_mail=0x63cd40) at fts-storage.c:451
No locals.
#16 fts_mail_precache (_mail=0x63cd40) at fts-storage.c:468
_data_stack_cur_id = 4
fmail = 0x6395b0
#17 0x0000000000402522 in master_connection_input ()
No symbol table info available.
#18 0x00007f13f64aa0bc in io_loop_call_io (io=0x612000) at ioloop.c:441
ioloop = 0x60d720
t_id = 2
__FUNCTION__ = "io_loop_call_io"
#19 0x00007f13f64ab7dd in io_loop_handler_run_internal (ioloop=<value optimized
out>) at ioloop-epoll.c:220
ctx = <value optimized out>
event = 0x6113b0
list = 0x612060
io = 0x0
tv = {tv_sec = 2147483, tv_usec = 0}
events_count = <value optimized out>
msecs = <value optimized out>
ret = 1
i = 0
call = 200
__FUNCTION__ = "io_loop_handler_run_internal"
#20 0x00007f13f64aa159 in io_loop_handler_run (ioloop=0x0) at ioloop.c:488
No locals.
#21 0x00007f13f64aa1d8 in io_loop_run (ioloop=0x60d720) at ioloop.c:465
__FUNCTION__ = "io_loop_run"
#22 0x00007f13f6459293 in master_service_run (service=0x60d5b0,
callback=0x660460) at master-service.c:566
No locals.
#23 0x0000000000401f8b in main ()
# 2.2.13: /etc/dovecot/dovecot.conf
# OS: Linux 3.0.74-3 x86_64 Cobra release 5.9.5 (Final) ext3
auth_master_user_separator = ^
auth_verbose = yes
first_valid_gid = 12
first_valid_uid = 97
hostname = mail.example.com
last_valid_gid = 12
last_valid_uid = 97
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
mail_location = mdbox:/var/mail/%n
mail_plugins = " zlib fts fts_solr quota mailbox_alias notify mail_log"
mdbox_rotate_size = 100 M
namespace {
inbox = yes
location =
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
auto = subscribe
special_use = \Junk
}
mailbox Junk/Ham {
auto = subscribe
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox Trash {
auto = subscribe
special_use = \Trash
}
prefix =
separator = /
type = private
}
namespace {
location = mdbox:/var/mail/_public:INDEXPVT=/var/mail/%n/public
prefix = Public/
separator = /
subscriptions = yes
type = public
}
passdb {
args = /etc/dovecot/passdb.conf
driver = sql
}
passdb {
args = /etc/dovecot/passdb-master.conf
driver = sql
master = yes
}
plugin {
fts = solr
fts_autoindex = yes
fts_index_timeout = 45
fts_solr = url=http://localhost:8983/solr/
fts_tika = http://localhost:9998/tika/
mail_log_events = delete expunge mailbox_delete
mail_log_fields = box from subject size
mailbox_alias_new = Sent Messages
mailbox_alias_old = Sent
quota = dirsize:User quota
quota_rule = *:storage=0
sieve = /var/mail/_sieve/%n.sieve
sieve_after = /var/mail/_sieve/__post.sieve
sieve_before = /var/mail/_sieve/__pre.sieve
sieve_extensions = +editheader +vnd.dovecot.debug +vnd.dovecot.duplicate
}
postmaster_address = [email protected]
protocols = lmtp imap
service auth {
unix_listener auth-userdb {
mode = 0777
}
}
service decode2text {
executable = script /usr/libexec/dovecot/decode2text.sh
unix_listener decode2text {
mode = 0666
}
user = dovecot
}
service imap-lastlogin {
executable = script-login /usr/libexec/dovecot/last-login-update
user = mail
}
service imap {
executable = imap
}
service lmtp {
process_min_avail = 10
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
}
ssl = required
ssl_cert = </etc/pki/tls/certs/mailor.de.crt
ssl_key = </etc/pki/tls/private/mailor.de.key
userdb {
args = /etc/dovecot/userdb.conf
default_fields = uid=97 gid=12 home=/var/mail/%n domain=mailor.de
driver = sql
}
protocol lda {
mail_plugins = " zlib fts fts_solr quota mailbox_alias notify mail_log sieve"
sendmail_path = /usr/sbin/sendmail.msmtp
userdb {
args = /etc/dovecot/userdb-receive.conf
default_fields = uid=97 gid=12 home=/var/mail/%n
driver = sql
name =
result_failure = return-fail
}
}
protocol lmtp {
mail_plugins = " zlib fts fts_solr quota mailbox_alias notify mail_log sieve"
sendmail_path = /usr/sbin/sendmail.msmtp
userdb {
args = /etc/dovecot/userdb-receive.conf
default_fields = uid=97 gid=12 home=/var/mail/%n
driver = sql
name =
result_failure = return-fail
}
}
protocol imap {
mail_plugins = " zlib fts fts_solr quota mailbox_alias notify mail_log
imap_zlib"
userdb {
args = /etc/dovecot/userdb-view.conf
default_fields = uid=97 gid=12 home=/var/mail/%n
driver = sql
name =
result_failure = return-fail
}
}