[Dovecot] fetchmail and lmtp -> auth crashing
Hi,
while trying to get new mails into dovecot 2.0.1 via fetchmail and lmtp, auth process crashes:
Sep 7 19:55:58 oldbox dovecot: lmtp(29944): Error: userdb lookup(heini@localhost): Disconnected unexpectedly Sep 7 19:55:58 oldbox fetchmail[29928]: Nachricht USER@ISP:1 von 2 wird gelesen (2204 Bytes im Nachrichtenkopf) (Log-Meldung unvollständig) Sep 7 19:55:58 oldbox fetchmail[29928]: LMTP-Fehler: 451 4.3.0 <heini@localhost> Internal error occurred. Refer to server log for more information. Sep 7 19:55:58 oldbox dovecot: master: Error: service(auth): child 29949 killed with signal 11 (core not dumped) Sep 7 19:55:58 oldbox dovecot: master: Error: service(auth): command startup failed, throttling
# doveconf -n # 2.0.1 (a05834588ffb): /etc/dovecot/dovecot.conf # OS: Linux 2.6.32-5-486 i586 Debian squeeze/sid auth_debug = yes auth_gssapi_hostname = oldbox.altum.de auth_krb5_keytab = /etc/krb5.keytab auth_mechanisms = gssapi auth_verbose = yes disable_plaintext_auth = no listen = * mail_location = maildir:~/mail managesieve_notify_capability = mailto managesieve_sieve_capability = comparator-i;octet comparator-i;ascii-casemap fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date plugin { sieve = ~/.dovecot.sieve sieve_dir = ~/sieve } protocols = imap lmtp service lmtp { unix_listener lmtp { mode = 0666 user = fetchmail } } ssl = no ssl_cert = </etc/ssl/certs/dovecot.pem ssl_key = </etc/ssl/private/dovecot.pem userdb { args = uid=vmail gid=vmail home=/var/vmail/%u driver = static }
fetchmailrc:
set postmaster "postmaster" set nobouncemail set no spambounce set properties "" set daemon 60 set syslog poll ISP with proto IMAP user 'USER' there with password 'password' is 'heini' here options stripcr fetchsizelimit 0 ssl expunge 500 smtphost /var/run/dovecot/lmtp
Any ideas what could be wrong?
Thanks...
Dirk
On Tue, 2010-09-07 at 20:03 +0200, Dirk Heinrichs wrote:
Sep 7 19:55:58 oldbox dovecot: master: Error: service(auth): child 29949 killed with signal 11 (core not dumped)
Can you get gdb backtrace? For example one easy way would be to attach gdb into a running auth process:
gdb -p pidof dovecot/auth
cont
<make it crash>
bt full
Am 07.09.2010 20:06, schrieb Timo Sirainen:
On Tue, 2010-09-07 at 20:03 +0200, Dirk Heinrichs wrote:
Sep 7 19:55:58 oldbox dovecot: master: Error: service(auth): child 29949 killed with signal 11 (core not dumped)
Can you get gdb backtrace? For example one easy way would be to attach gdb into a running auth process:
gdb -p
pidof dovecot/auth
cont <make it crash> bt full
(gdb) bt full #0 auth_request_lookup_credentials (request=0x8e12c78, scheme=0x8079acf "", callback=0x8068d20 <static_credentials_callback>) at auth-request.c:634 passdb = <value optimized out> cache_key = <value optimized out> cache_cred = <value optimized out> cache_scheme = <value optimized out> result = <value optimized out> __FUNCTION__ = "auth_request_lookup_credentials" #1 0x08068cdd in static_lookup (auth_request=0x8e12c78, callback=0x8058390 <auth_request_userdb_callback>) at userdb-static.c:206 _module = <value optimized out> __FUNCTION__ = "static_lookup" #2 0x080585db in auth_request_lookup_user (request=0x8e12c78, callback=0x80548e0 <user_callback>) at auth-request.c:826 userdb = 0x8e00c48 cache_key = 0x4 <Address 0x4 out of bounds> #3 0x08054fe4 in master_input_user (conn=0x8e0d160) at auth-master-connection.c:222 auth_request = 0x8e12c78 error = 0x0 ret = <value optimized out> #4 auth_master_input_line (conn=0x8e0d160) at auth-master-connection.c:405 No locals. #5 master_input (conn=0x8e0d160) at auth-master-connection.c:466 _data_stack_cur_id = 3 line = 0x8e14004 "USER\t1\theini@localhost\tservice=lmtp" ret = <value optimized out> #6 0xb7712b32 in io_loop_handler_run (ioloop=0x8e00390) at ioloop-epoll.c:212 ctx = 0x8e0b1c0 event = <value optimized out> list = 0x8e0dfd0 io = 0x8e13dd8 tv = {tv_sec = 0, tv_usec = 999435} t_id = 2 msecs = 2 ret = 2 i = 0 j = 0 call = <value optimized out> #7 0xb7711b10 in io_loop_run (ioloop=0x8e00390) at ioloop.c:350 ---Type <return> to continue, or q <return> to quit--- No locals. #8 0xb76ff25a in master_service_run (service=0x8e002e0, callback=0x805df80 <client_connected>) at master-service.c:496 No locals. #9 0x0805e518 in main (argc=1, argv=0x8e001e0) at main.c:282 c = <value optimized out>
HTH...
Dirk
On Tue, 2010-09-07 at 23:12 +0200, Dirk Heinrichs wrote:
(gdb) bt full #0 auth_request_lookup_credentials (request=0x8e12c78, scheme=0x8079acf "",
Fixed the crash: http://hg.dovecot.org/dovecot-2.0/rev/e392f5f65cd8
But the main problem you have is that you don't have a passdb and your userdb is static. So Dovecot can't verify if the user exists or not. Either use a passdb or userdb that can verify user existence, or add allow_all_users=yes to userdb static args.
Am 08.09.2010 16:04, schrieb Timo Sirainen:
On Tue, 2010-09-07 at 23:12 +0200, Dirk Heinrichs wrote:
(gdb) bt full #0 auth_request_lookup_credentials (request=0x8e12c78, scheme=0x8079acf "",
Fixed the crash: http://hg.dovecot.org/dovecot-2.0/rev/e392f5f65cd8
OK, I've updated debian packages and crash is gone. Thanks.
But the main problem you have is that you don't have a passdb and your userdb is static. So Dovecot can't verify if the user exists or not.
Maybe I misunderstood the docs, but I think I've read somewhere that static userdb is sufficient if kerberos is used as "passdb".
Either use a passdb or userdb that can verify user existence, or add allow_all_users=yes to userdb static args.
Since this is a test install, I've added this for now. Later I will switch to LDAP. Mail is delivered now, but into /var/vmail/user@localhost instead of /var/vmail/user. How do I get rid of "@localhost"?
Thanks...
Dirk
On Fri, 2010-09-10 at 18:55 +0200, Dirk Heinrichs wrote:
Am 08.09.2010 19:18, schrieb Dirk Heinrichs:
Mail is delivered now, but into /var/vmail/user@localhost instead of /var/vmail/user. How do I get rid of "@localhost"?
Any ideas about this?
So you don't have any domains? Change %u to %n:
userdb { args = uid=vmail gid=vmail home=/var/vmail/%n driver = static }
Am 13.09.2010 13:56, schrieb Timo Sirainen:
On Fri, 2010-09-10 at 18:55 +0200, Dirk Heinrichs wrote:
Am 08.09.2010 19:18, schrieb Dirk Heinrichs:
Mail is delivered now, but into /var/vmail/user@localhost instead of /var/vmail/user. How do I get rid of "@localhost"?
Any ideas about this?
So you don't have any domains? Change %u to %n:
Great, works fine now (also switched to ldap userdb).
Thanks a lot.
Bye...
Dirk
participants (2)
-
Dirk Heinrichs
-
Timo Sirainen