Hello, Jeremy Harris <[email protected]> (Mi 27 Aug 2014 19:33:18 CEST): … > > attributetype ( > > eximAttribute:1 NAME ('x-MailPrimaryAddress' 'x-MailAddress' > > 'x-MailOfficialAddress') > > DESC 'official mail address' > > SINGLE-VALUE > > SUP mail ) > > > > attributetype ( > > eximAttribute:2 NAME ('x-MailAlternateAddress' 'x-MailAlias') > > DESC 'alternate mail address (alias)' > > SUP mail ) > > You may be able to tell I don't really talk LDAP :) > > What do we want the Exim expansion's view of the results to be? > Labelled by the base object class, or by the text > "x-MailAlternateAddress" (or whchever)?
I'd say, by the name of the attribute.
> diff --git a/src/src/lookups/ldap.c b/src/src/lookups/ldap.c
> index f77229d..64af12d 100644
…
Here comes a shorter patch. I'll test yours too.
diff --git a/src/src/lookups/ldap.c b/src/src/lookups/ldap.c
index f77229d..ef7ed9e 100644
--- a/src/src/lookups/ldap.c
+++ b/src/src/lookups/ldap.c
@@ -797,7 +797,13 @@ while ((rc = ldap_result(lcp->ld, msgid, 0, timeoutptr,
&result)) ==
DEBUG(D_lookup) debug_printf("LDAP attr loop %s:%s\n", attr,
value);
- if (values != firstval)
+ /* In case we requested one attribute only but got
+ * several times into that attr loop, we need to append
+ * the additional values. (This may happen if you derive
+ * attributeTypes B and C from A and then query for A.)
+ * In all other cases we detect the different attribute
+ * and append only every non first value. */
+ if ((attr_count == 1 && data) || (values != firstval))
data = string_cat(data, &size, &ptr, US",", 1);
/* For multiple attributes, the data is in quotes. We must escape
For testing I'm using the following LDAP entry:
dn: uid=heiko,dc=schlittermann,dc=de
x-MailPrimaryAddress: [email protected]
description: a
description: b,c
x-MailAlternateAddress: h,[email protected]
x-MailAlternateAddress: [email protected]
x-MailAlternateAddress: [email protected]
$ ../../build-Linux-x86_64/exim -be '${lookup
ldap{ldap:///dc=schlittermann,dc=de?mail?sub?uid=heiko}}'
[email protected],h,,[email protected],[email protected],[email protected]
$ ../../build-Linux-x86_64/exim -be '${lookup
ldap{ldap:///dc=schlittermann,dc=de?description,mail?sub?uid=heiko}}'
x-MailPrimaryAddress="[email protected]" description="a,b,,c"
x-MailAlternateAddress="h,,[email protected],[email protected],[email protected]"
But, I'm not sure if I didn't break anything else :)
Best regards from Dresden/Germany
Viele Grüße aus Dresden
Heiko Schlittermann
--
SCHLITTERMANN.de ---------------------------- internet & unix support -
Heiko Schlittermann, Dipl.-Ing. (TU) - {fon,fax}: +49.351.802998{1,3} -
gnupg encrypted messages are welcome --------------- key ID: 7CBF764A -
gnupg fingerprint: 9288 F17D BBF9 9625 5ABC 285C 26A9 687E 7CBF 764A -
(gnupg fingerprint: 3061 CFBF 2D88 F034 E8D2 7E92 EE4E AC98 48D0 359B)-
signature.asc
Description: Digital signature
-- ## List details at https://lists.exim.org/mailman/listinfo/exim-users ## Exim details at http://www.exim.org/ ## Please use the Wiki with this list - http://wiki.exim.org/
