Recently i've noticed that one of our heavily used mail servers started
to throw "400 service temporarily unavailable" messages to logs. Problem
occurs when courier tries to check an email with asterisks in address
(i.e. rcpt to:<a**[email protected]>) against ldap alias database.
Esmtpd accepts those messages (RFC allows asterisks in mail addresses)
and passes this address to ldapaliasd, which subsequently passes it
unmodified to LDAP server in search filter
(mail=a**[email protected]). LDAP interprets asterisks as special
wildcard symbol. At this point there is a problem. Instead of finding an
exact a***** record in database, ldap server would return something
matching the wildcard.
Some LDAP servers (i.e., redhat directory server) don't allow consequent
asterisks in search filter, throw a "Bad search filter" error and set
non-zero errorcode. ldapaliasd than stops working for a while and
rejects even regular-addressed messages with a "400 service temporarily
unavailable" error.
It seems, that asterisks (and possibly other special symbols) in mail
addresses should be escaped before passing them to ldap.
BTW, it's almost impossible to have mail aliases under the same search
scope as regular mail accounts for ldapaliasd doesn't set objectclass in
filter string. This simple patch makes things more straightforward,
please consider accepting it.
--- ./old/courier/ldapaliasd.c 2006-11-12 16:33:23.000000000 +0100
+++ ./new/courier/ldapaliasd.c 2009-10-01 17:08:10.000000000 +0200
@@ -277,14 +277,14 @@
filter=malloc(strlen(mail)+(source ? strlen(source):0)+
(sourcefield ? strlen(sourcefield):0)+
- strlen(mailfield)+80);
+ strlen(mailfield)+80+30);
if (!filter)
{
syslog(LOG_DAEMON|LOG_CRIT, "malloc failed: %m");
return (0);
}
- strcpy(filter, "(&(");
+ strcpy(filter, "(&(objectclass=CourierMailAlias)(");
strcat(filter, mailfield);
strcat(filter, "=");
--
Ing. Yevheniy Demchenko
Senior Linux Administrator
UVT s.r.o.
------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev
_______________________________________________
courier-users mailing list
[email protected]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users