Postfix's smtpd segfaults during LDAP recipient maps lookup (64 bit)

Christoph Brüser brueser at hia.rwth-aachen.de
Tue Nov 10 09:33:41 CET 2009


Hi all,

I have been setting up a Kolab 2.2.2 server on an Ubuntu 8.04 (64 bit) 
server. The machine is a quad-core Xeon running at 2.33 GHz. I built and 
bootstrapped Kolab from source which worked flawlessly.

However, I am now experiencing a strange bug in Postfix's smtpd demon. 
Whenever a client tries to send an e-mail through the Postfix server the 
smtpd process that handles the connection segfaults. The postfix.log 
snippet pasted below shows that the demon crashes after/while trying to 
connect to the local LDAP server to check the recipient maps.


postfix.log
===========
....
postfix/smtpd[28099]: >>> CHECKING RECIPIENT MAPS <<<
postfix/smtpd[28099]: ctable_locate: leave existing entry key 
test1 at medit.intern
postfix/smtpd[28099]: maps_find: recipient_canonical_maps: 
test1 at medit.intern: not found
postfix/smtpd[28099]: maps_find: recipient_canonical_maps: test1: not found
postfix/smtpd[28099]: maps_find: recipient_canonical_maps: 
@medit.intern: not found
postfix/smtpd[28099]: mail_addr_find: test1 at medit.intern -> (not found)
postfix/smtpd[28099]: maps_find: canonical_maps: test1 at medit.intern: not 
found
postfix/smtpd[28099]: maps_find: canonical_maps: test1: not found
postfix/smtpd[28099]: maps_find: canonical_maps: @medit.intern: not found
postfix/smtpd[28099]: mail_addr_find: test1 at medit.intern -> (not found)
postfix/smtpd[28099]: dict_ldap_lookup: In dict_ldap_lookup
postfix/smtpd[28099]: dict_ldap_lookup: No existing connection for LDAP 
source /kolab/etc/postfix/ldapdistlist.cf, reopening
postfix/smtpd[28099]: dict_ldap_connect: Connecting to server 
ldap://127.0.0.1:389
postfix/master[27949]: warning: process /kolab/libexec/postfix/smtpd pid 
28099 killed by signal 11


I have also captured the output of ltrace for the smtpd process which 
shows that the cause for the segfault is a memmove() call with a source 
adress of -1.


ltrace output
=============
....
strlen("dict_ldap_connect: Connecting to"...)    = 61
gettimeofday(0x7fff30585810, NULL)               = 0
write(7, "Nov 10 09:14:10 lothlorien <info"..., 117) = 117
setrlimit(1, 0x7fff30586400, 0, -1, 117)         = 0
calloc(1, 272)                                   = 0xa919a0
memmove(0xa919a8, 0x9710c0, 168, 0xa91ab8, 0)    = 0xa919a8
malloc(16)                                       = 0xa09580
memmove(0xa09580, -1, 16, 0x7f7c27afba50, 0 <unfinished ...>
--- SIGSEGV (Segmentation fault) ---
+++ killed by SIGSEGV +++


Interestingly, the bug only occurs with remote clients, i.e. SMTP 
connections from 127.0.0.1 do not cause cause this crash. Hence, sending 
mails by means of the webclient works while sending mails through 
Outlook and Kontakt does not.

I suppose that this might be a 64 bit issue. Does anybody have any 
pointers or possible solutions for this problem?

Any help is greatly appreciated. Thanks!

Best regards

Christoph

-- 
--------------------------------------------------------------------------
Dipl.-Ing. Christoph Brüser
Lehrstuhl fuer Medizinische Informationstechnik
Helmholtz-Institut fuer Biomedizinische Technik
RWTH Aachen
Pauwelsstr. 20, D-52074 Aachen
---
Web:   http://www.medit.hia.rwth-aachen.de/
Tel:   +49-(0)241-80 23203
Fax:   +49-(0)241-80 82442
email: brueser at hia.rwth-aachen.de
--------------------------------------------------------------------------




More information about the users mailing list