doveadm-server segfaults when searching or expunging with the -A flag
Burak Seydioglu
Burak.Seydioglu at servicenow.com
Tue Apr 26 01:04:50 UTC 2016
Hello,
I have an openldap backend that contains a large number of users and serves passdb and userdb requests. I was trying to work around the pop3 deletion issue that I had reported earlier (http://www.dovecot.org/list/dovecot/2016-April/103973.html) with the pop3_deleted_flag setting so I updated my configuration and created some background jobs to expunge deleted emails. However, doveadm-server segfaults when running search or expunge commands with the -A flag:
doveadm search mailbox INBOX KEYWORD '$Pop3Deleted' -A
doveadm expunge mailbox INBOX KEYWORD '$Pop3Deleted' -A
######################################
gdb /usr/libexec/dovecot/doveadm-server /var/crash/core-doveadm-server-11-0-0-2589-1461628665
#0 o_stream_cork (stream=0x0) at ostream.c:141
#1 0x0000000000430193 in server_connection_output (conn=0xfe10e0) at server-connection.c:126
#2 0x00007fcde9fc80c7 in plain_flush_callback (sstream=0xfdacf0) at ostream-openssl.c:180
#3 0x00007fcdeb6f9929 in stream_send_io (fstream=0xfe65e0) at ostream-file.c:482
#4 0x00007fcdeb6ebceb in io_loop_call_io (io=0xfdb110) at ioloop.c:564
#5 0x00007fcdeb6ed2e7 in io_loop_handler_run_internal (ioloop=<value optimized out>) at ioloop-epoll.c:220
#6 0x00007fcdeb6ebd95 in io_loop_handler_run (ioloop=0xfdf4b0) at ioloop.c:612
#7 0x00007fcdeb6ebf38 in io_loop_run (ioloop=0xfdf4b0) at ioloop.c:588
#8 0x000000000041f542 in dsync_connect_tcp (ctx=0xfc7d70, mail_set=<value optimized out>, target=<value optimized out>, ssl=true, error_r=0x7ffde6127020) at doveadm-dsync.c:806
#9 0x000000000041ff95 in parse_location (_ctx=0xfc7d70, service_user=<value optimized out>, error_r=0x7ffde6127020) at doveadm-dsync.c:837
#10 cmd_dsync_prerun (_ctx=0xfc7d70, service_user=<value optimized out>, error_r=0x7ffde6127020) at doveadm-dsync.c:903
#11 0x00000000004205f2 in doveadm_mail_next_user (ctx=0xfc7d70, cctx=<value optimized out>, error_r=0x7ffde6127020) at doveadm-mail.c:383
#12 0x000000000043151f in doveadm_mail_cmd_server_run (conn=0xfc3950) at client-connection.c:183
#13 doveadm_cmd_handle (conn=0xfc3950) at client-connection.c:266
#14 client_handle_command (conn=0xfc3950) at client-connection.c:330
#15 client_connection_input (conn=0xfc3950) at client-connection.c:444
#16 0x00007fcdeb6ebceb in io_loop_call_io (io=0xfc34f0) at ioloop.c:564
#17 0x00007fcdeb6ed2e7 in io_loop_handler_run_internal (ioloop=<value optimized out>) at ioloop-epoll.c:220
#18 0x00007fcdeb6ebd95 in io_loop_handler_run (ioloop=0xf90780) at ioloop.c:612
#19 0x00007fcdeb6ebf38 in io_loop_run (ioloop=0xf90780) at ioloop.c:588
#20 0x00007fcdeb684753 in master_service_run (service=0xf90620, callback=<value optimized out>) at master-service.c:640
#21 0x0000000000433897 in main (argc=1, argv=0xf903a0) at main.c:126
######################################
Dovecot version
######################################
dovecot --version
2.2.23 (806d709)
######################################
doveconf -n
######################################
# 2.2.23 (806d709): /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-573.22.1.el6.x86_64 x86_64 CentOS release 6.7 (Final)
auth_debug = yes
auth_mechanisms = plain login
auth_verbose = yes
base_dir = /var/run/dovecot/
disable_plaintext_auth = no
doveadm_password = # hidden, use -P to show it
first_valid_uid = 89
last_valid_uid = 89
login_greeting = Dovecot ready on mda01.dc1.domain.com.
login_trusted_networks = 127.0.0.1
mail_debug = yes
mail_gid = 89
mail_plugins = " notify replication"
mail_uid = 89
mbox_write_locks = fcntl
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 {
args = /etc/dovecot/conf.d/dovecot-ldap-passdb.conf.ext
driver = ldap
}
plugin {
mail_replica = tcps:mdareplica:12345
}
pop3_deleted_flag = $POP3Deleted
protocols = pop3 lmtp
replication_full_sync_interval = 3 hours
replication_max_conns = 20
service aggregator {
fifo_listener replication-notify-fifo {
group = postfix
mode = 0640
user = postfix
}
unix_listener replication-notify {
group = postfix
mode = 0640
user = postfix
}
}
service auth {
unix_listener auth {
mode = 0660
}
}
service doveadm {
inet_listener {
port = 12345
ssl = yes
}
}
service lmtp {
process_min_avail = 10
unix_listener lmtp {
group = postfix
mode = 0640
user = postfix
}
}
service replicator {
process_min_avail = 1
unix_listener replicator-doveadm {
group = postfix
mode = 0640
user = postfix
}
}
ssl_cert = </etc/pki/tls/certs/dovecot.crt
ssl_client_ca_file = /etc/pki/tls/CA/dovecot.bundle
ssl_key = </etc/pki/tls/private/dovecot.key
ssl_prefer_server_ciphers = yes
userdb {
driver = prefetch
}
userdb {
args = /etc/dovecot/conf.d/dovecot-ldap-userdb.conf.ext
driver = ldap
}
protocol lmtp {
mail_plugins = " notify replication"
}
######################################
LDAP configuration
######################################
cat /etc/dovecot/conf.d/dovecot-ldap-userdb.conf.ext
hosts = localhost
dn = cn=dovecot,dc=csi,dc=domain,dc=com
dnpass = xxx
ldap_version = 3
base = ou=instances,dc=csi,dc=domain,dc=com
deref = never
scope = subtree
user_attrs = \
=home=/glide/mail/spool/%{ldap:uid}, \
=mail=maildir:/glide/mail/spool/%{ldap:maildrop}
user_filter = (&(objectClass=mailUser)(uid=%n))
iterate_attrs = uid=user
iterate_filter = (objectClass=mailUser)
cat /etc/dovecot/conf.d/dovecot-ldap-passdb.conf.ext
hosts = localhost
dn = cn=dovecot,dc=csi,dc=domain,dc=com
dnpass = xxx
ldap_version = 3
base = ou=instances,dc=csi,dc=domain,dc=com
deref = never
scope = subtree
pass_attrs = uid=user,userPassword=password, \
=userdb_home=/glide/mail/spool/%{ldap:uid}, \
=userdb_mail=maildir:/glide/mail/spool/%{ldap:maildrop}
pass_filter = (&(objectClass=inetLocalMailRecipient)(uid=%n))
######################################
Only interesting thing from the debug logs is a prefetch related entry:
######################################
Apr 25 17:31:22 mda01 dovecot: auth: Debug: master in: USER#01119118#011dev13654#011service=doveadm
Apr 25 17:31:22 mda01 dovecot: auth: Debug: prefetch(dev13654): passdb didn't return userdb entries, trying the next userdb
Apr 25 17:31:22 mda01 dovecot: auth: Debug: ldap(dev13654): user search: base=ou=instances,dc=csi,dc=domain,dc=com scope=subtree filter=(&(objectClass=mailUser)(uid=dev13654)) fields=uid,maildrop
Apr 25 17:31:22 mda01 dovecot: auth: Debug: ldap(dev13654): result: uid=dev13654 maildrop=dev13654/maildir/; maildrop,uid unused
Apr 25 17:31:22 mda01 dovecot: auth: Debug: ldap(dev13654): result: uid=dev13654 maildrop=dev13654/maildir/
Apr 25 17:31:22 mda01 dovecot: auth: Debug: userdb out: USER#01119118#011dev13654#011home=/glide/mail/spool/dev13654#011mail=maildir:/glide/mail/spool/dev13654/maildir/
######################################
More information about the dovecot
mailing list