Re: Perdition1.18 problem with LDAP query

Simon Horman <[email protected]>
Newsgroups gmane.mail.perdition.user
Message-ID <[email protected]>
On Wed, May 26, 2010 at 03:48:21PM +0800, cktan wrote:
> Hi,
> 
> I've tried that and it was started without any error but we can't
> login with with the maillog error as below:
> 
> 
> May 26 15:40:17 mail2 perdition[462]: version=1.18, add_domain="",
> authenticate_in=off, authenticate_timeout=1800, bind_address="",
> capability="UIDL  USER", client_server_specification=off,
> config_file="/etc/perdition/perdition.conf", connection_limit=0,
> connection_logging=off, connect_relog=300, debug=off,
> domain_delimiter="@", explicit_domain="", group="nobody",
> inetd_mode=off, listen_port="110", log_facility="mail",
> log_passwd="never", login_disabled=off, lower_case="",
> map_library="/usr/lib/libperditiondb_gdbm.so.0", map_library_opt="ldap://ldap.abc.com:389/dc=.?uid,mailHost?sub?(mail=%45s)?!BINDNAME=cn=xxx%2cdc=.,X-BINDPW=yyy",
> no_bind_banner=off, no_daemon=off, no_lookup=off, nodename="mail2",
> ok_line="You are so in", outgoing_port="110", outgoing_server="",
> pid_file="/var/run/perdition.pop3/perdition.pop3.pid",
> protocol="POP3", server_resp_line=off, strip_domain="",
> timeout=1800, username="nobody", username_from_database=off,
> query_key="", quiet=off, ssl_mode="", ssl_ca_file="", ssl_ca_pat
> 
> 
> Auth user="[email protected]" passwd="XXXXXX" server="(null)" port="110"
> status="failed: Could not determine server"

Sorry for not noticing this the first time around but
I think that you are seeing the problem that is resolved by the following
patch:

http://hg.vergenet.net/perdition/perdition/rev/28264fe9e31b


# HG changeset patch
# User Simon Horman <[email protected]>
# Date 1263455327 -39600
# Node ID 28264fe9e31b7f34676260de9f26134399bd0372
# Parent c9763a7ea6adb242c7e837bc232f19ec6ebda6ca
LDAP: support schema-misc mailHost

This previously worked by chance when the get_server() internal API was
used, but broke when the ldap module was switched over to use get_server().

Tested-by: Dominique Marant <[email protected]>
Signed-off-by: Simon Horman <[email protected]>

--- a/perdition/db/ldap/perditiondb_ldap.c	Thu Dec 24 17:40:40 2009 +1100
+++ b/perdition/db/ldap/perditiondb_ldap.c	Thu Jan 14 18:48:47 2010 +1100
@@ -516,12 +516,27 @@
 	ber = NULL;
 
 	/* Build the return string */
-	if (returns[0])
-		*user_str = returns[0];
-	if (returns[1])
-		*server_str = returns[1];
-	if (returns[2])
-		*port_str = returns[2];
+	if (returns[0] && !returns[1] && !returns[2]) {
+		user_server_port_t *usp = NULL;
+		if (user_server_port_str_assign(&usp, returns[0]) < 0) {
+			VANESSA_LOGGER_DEBUG("user_server_port_str_assign");
+			goto leave;
+		}
+		free(returns[0]);
+		*user_str = user_server_port_get_user(usp);
+		*server_str = user_server_port_get_server(usp);
+		*port_str = user_server_port_get_port(usp);
+		user_server_port_unassign(usp);
+		user_server_port_destroy(usp);
+	}
+	else {
+		if (returns[0])
+			*user_str = returns[0];
+		if (returns[1])
+			*server_str = returns[1];
+		if (returns[2])
+			*port_str = returns[2];
+	}
 
 	status = 0;
 

______________________________________________
Perdition-users mailing list
[email protected]
http://lists.vergenet.net/listinfo/perdition-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.