last_login LDAP - killed with signal 11 (core dumped)

Leon Kyneur leon at f-m.fm
Wed Mar 22 10:03:04 EET 2017


Hi

I am trying to configure the last_login plugin with LDAP dictionary
which is causing dict service to crash. Not sure if this is a bug or
some configuration parameter I'm getting wrong?

Running latest dovecot but was having the same problem in earlier
version 2.2.25

# dovecot --version
2.2.28 (bed8434)

I have configured dovecot like so:

dovecot.conf (before conf.d/*.conf:
dict {
  #quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
  #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext
  lastlogin = ldap:/etc/dovecot/dovecot-ldap-dict.conf.ext
}

conf.d/10-master.conf
service dict {
  # If dict proxy is used, mail processes should have access to its
  socket.
  # For example: mode=0660, group=vmail and global
  mail_access_groups=vmail
  unix_listener dict {
    mode = 0660
    user = vmail
    group = vmail
  }
}


conf.d/20-imap.conf:
protocol imap {
  # Space separated list of plugins to load (default is global
  mail_plugins).
  mail_plugins = $mail_plugins last_login 

  # Maximum number of IMAP connections allowed for a user from each IP
  address.
  # NOTE: The username is compared case-sensitively.
  #mail_max_userip_connections = 10
}



90-plugins.conf
plugin {
  #setting_name = value
  #last_login_dict = proxy::lastlogin
  last_login_dict = proxy:dict:lastlogin
  zlib_save = gz
  zlib_save_level = 6
}


dovecot-ldap-dict.conf.ext:
uri = ldap://ldap.internal
bind_dn = cn=Manager,dc=mail,dc=com
password = XXXX
tls = no
debug = 1

map {
  pattern = last-login/$user
  filter = (&(mail=%{user})(objectClass=mailUser)) # the () is required
  base_dn = o=domains,dc=mail,dc=com 
  username_attribute = mail
  value_attribute = lastLoginTime
  fields {
    mail=$user
  }
}

I don't see dovecot ever making a connection to the LDAP server I've
configured in the dovecot-ldap-dict.conf.ext file. 

Log shows

==> /var/log/dovecot.log <==
Mar 22 07:49:30 imap-login: Info: Login: user=<leon at mail.com>,
method=PLAIN, rip=X.X.X.X, lip=X.X.X.X, mpid=36105, secured,
session=<o0Lu/0xL4N3LhgGR>
Mar 22 07:49:30 dict: Fatal: master: service(dict): child 36107 killed
with signal 11 (core dumped)
Mar 22 07:49:30 imap(leon at mail.com): Error: dict-client: Commit may have
failed: Connection closed (reply took 0.015 secs)
Mar 22 07:49:30 imap(leon at mail.com): Error: last_login_dict: Write was
unconfirmed (timeout or disconnect) for user leon at mail.com

Backtrace:
 # gdb /var/core/36107 
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-94.el7
Copyright (C) 2013 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-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
[New LWP 36107]
Reading symbols from /usr/libexec/dovecot/dict...Reading symbols from
/usr/lib/debug/usr/libexec/dovecot/dict.debug...done.
done.
Missing separate debuginfo for 
Try: yum --enablerepo='*debug*' install
/usr/lib/debug/.build-id/b0/07fede01895dec1aca9d8b8993fe27d70a3a20
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `dovecot/dict'.
Program terminated with signal 11, Segmentation fault.
#0  0x0000000000000000 in ?? ()
(gdb) bt full
#0  0x0000000000000000 in ?? ()
No symbol table info available.
#1  0x00007fbcf11bd04f in cmd_begin (cmd=0x7fbcf2c02910, line=<optimized
out>) at dict-commands.c:365
        trans = 0x7fbcf2c029a0
        id = 1
#2  0x00007fbcf11bdef8 in dict_command_input
(conn=conn at entry=0x7fbcf2bf24d0, line=line at entry=0x7fbcf2bf48cb "B1") at
dict-commands.c:625
        cmd_func = 0x7fbcf13c85c0 <cmds+32>
        cmd = 0x7fbcf2c02910
        ret = <optimized out>
#3  0x00007fbcf11bc6ee in dict_connection_input_more
(conn=0x7fbcf2bf24d0) at dict-connection.c:117
        _data_stack_cur_id = 3
        line = 0x7fbcf2bf48cb "B1"
        ret = <optimized out>
#4  0x00007fbcf11bc7d2 in dict_connection_input (conn=0x7fbcf2bf24d0) at
dict-connection.c:167
        line = <optimized out>
        conn = 0x7fbcf2bf24d0
#5  0x00007fbcf0d1b2d2 in io_loop_call_io (io=0x7fbcf2bf2890) at
ioloop.c:599
        ioloop = 0x7fbcf2be0740
        t_id = 2
        __FUNCTION__ = "io_loop_call_io"
#6  0x00007fbcf0d1c95f in io_loop_handler_run_internal
(ioloop=ioloop at entry=0x7fbcf2be0740) at ioloop-epoll.c:223
        ctx = 0x7fbcf2beded0
        events = <optimized out>
        list = 0x7fbcf2bf28f0
        io = <optimized out>
        tv = {tv_sec = 2147483, tv_usec = 0}
        events_count = <optimized out>
        msecs = <optimized out>
        ret = 1
        i = 0
        call = <optimized out>
        __FUNCTION__ = "io_loop_handler_run_internal"
#7  0x00007fbcf0d1b36c in io_loop_handler_run
(ioloop=ioloop at entry=0x7fbcf2be0740) at ioloop.c:648
No locals.
#8  0x00007fbcf0d1b528 in io_loop_run (ioloop=0x7fbcf2be0740) at
ioloop.c:623
        __FUNCTION__ = "io_loop_run"
#9  0x00007fbcf0ca4603 in master_service_run (service=0x7fbcf2be05e0,
callback=callback at entry=0x7fbcf11be150 <client_connected>) at
master-service.c:641
No locals.
#10 0x00007fbcf11bbff9 in main (argc=1, argv=0x7fbcf2be0390) at
main.c:161
        set_roots = {0x7fbcf13c88a0 <dict_setting_parser_info>, 0x0}
        error = 0x0




More information about the dovecot mailing list