diff -urN src.orig/deliver.c src/deliver.c --- src.orig/deliver.c 2009-11-16 21:50:36.000000000 +0200 +++ src/deliver.c 2010-02-23 14:23:28.000000000 +0200 @@ -744,17 +744,21 @@ if (addr->message != NULL) { addr->message = string_printing(addr->message); - if (Ustrstr(addr->message, "failed to expand") != NULL && + if (((Ustrstr(addr->message, "failed to expand") != NULL) || (Ustrstr(addr->message, "expansion of ") != NULL)) && (Ustrstr(addr->message, "ldap:") != NULL || Ustrstr(addr->message, "ldapdn:") != NULL || Ustrstr(addr->message, "ldapm:") != NULL)) { +/* uschar *p = Ustrstr(addr->message, "pass="); - if (p != NULL) + while (p != NULL) { p += 5; while (*p != 0 && !isspace(*p)) *p++ = 'x'; + p = Ustrstr(p, "pass="); } +*/ + addr->message = string_sprintf("Temporary internal error"); } } diff -urN src.orig/route.c src/route.c --- src.orig/route.c 2009-11-16 21:50:37.000000000 +0200 +++ src/route.c 2010-02-23 14:23:45.000000000 +0200 @@ -1691,6 +1691,25 @@ addr->message = string_sprintf("expansion of \"%s\" failed " "in %s router: %s", r->address_data, r->name, expand_string_message); yield = DEFER; +// Scan the message for an LDAP expansion item that has a password setting, and flatten the password + if ( + ((Ustrstr(addr->message, "failed to expand") != NULL) || (Ustrstr(addr->message, "expansion of ") != NULL)) && + ( + Ustrstr(addr->message, "ldap:") != NULL || + Ustrstr(addr->message, "ldapdn:") != NULL || + Ustrstr(addr->message, "ldapm:") != NULL + ) + ) { +/* + uschar *p = Ustrstr(addr->message, "pass="); + while (p != NULL) { + p += 5; + while (*p != 0 && !isspace(*p)) *p++ = 'x'; + p = Ustrstr(p, "pass="); + } +*/ + addr->message = string_sprintf("Temporary internal error"); + } goto ROUTE_EXIT; } } @@ -1820,6 +1839,25 @@ debug_printf(" message: %s\n", (addr->message == NULL)? US"" : addr->message); } +// Scan the message for an LDAP expansion item that has a password setting, and flatten the password + if ( + ((Ustrstr(addr->message, "failed to expand") != NULL) || (Ustrstr(addr->message, "expansion of ") != NULL)) && + ( + Ustrstr(addr->message, "ldap:") != NULL || + Ustrstr(addr->message, "ldapdn:") != NULL || + Ustrstr(addr->message, "ldapm:") != NULL + ) + ) { +/* + uschar *p = Ustrstr(addr->message, "pass="); + while (p != NULL) { + p += 5; + while (*p != 0 && !isspace(*p)) *p++ = 'x'; + p = Ustrstr(p, "pass="); + } +*/ + addr->message = string_sprintf("Temporary internal error"); + } goto ROUTE_EXIT; }