From: Jeremy Harris Date: Wed, 28 Feb 2024 13:46:56 +0000 (+0000) Subject: Lookups: avoid leaking user/passwd from server spec to log. Bug 3066 X-Git-Tag: exim-4.98-RC0~68 X-Git-Url: https://git.exim.org/exim.git/commitdiff_plain/f2738aab2d72569b6d47b788099f6ebab701b2b2 Lookups: avoid leaking user/passwd from server spec to log. Bug 3066 --- diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index c261e13c7..20dcd1348 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -116,7 +116,9 @@ JH/21 Bug 3059: Fix crash in smtp transport. When running for a message for dealt with. Thanks to Wolfgand Breyha for debug runs. JH/22 The ESMTP_LIMITS facility (RFC 9422) is promoted from experimental status - and is now controlled by the build-time option DISABLE_ESMTP_LIMITS.. + and is now controlled by the build-time option DISABLE_ESMTP_LIMITS. + +JH/23 Bug 3066: Avoid leaking lookup database credentials to log. Exim version 4.97 diff --git a/src/src/acl.c b/src/src/acl.c index ecba07b25..f4d65464e 100644 --- a/src/src/acl.c +++ b/src/src/acl.c @@ -1146,9 +1146,9 @@ Returns: nothing */ static void -acl_warn(int where, uschar *user_message, uschar *log_message) +acl_warn(int where, uschar * user_message, uschar * log_message) { -if (log_message != NULL && log_message != user_message) +if (log_message && log_message != user_message) { uschar *text; string_item *logged; @@ -1159,9 +1159,9 @@ if (log_message != NULL && log_message != user_message) /* If a sender verification has failed, and the log message is "sender verify failed", add the failure message. */ - if (sender_verified_failed != NULL && - sender_verified_failed->message != NULL && - strcmpic(log_message, US"sender verify failed") == 0) + if ( sender_verified_failed + && sender_verified_failed->message + && strcmpic(log_message, US"sender verify failed") == 0) text = string_sprintf("%s: %s", text, sender_verified_failed->message); /* Search previously logged warnings. They are kept in malloc diff --git a/src/src/lookups/lf_sqlperform.c b/src/src/lookups/lf_sqlperform.c index d5bb8d297..0f3984ba7 100644 --- a/src/src/lookups/lf_sqlperform.c +++ b/src/src/lookups/lf_sqlperform.c @@ -13,6 +13,15 @@ +static int +server_len_for_logging(const uschar * server) +{ +const uschar * s = Ustrchr(server, '/'); +if (!s) return 64; +if (!(s = Ustrchr(s+1, '/'))) return 64; +return (int) (s - server); +} + /************************************************* * Call SQL server(s) to run an actual query * *************************************************/ @@ -30,6 +39,7 @@ Arguments: result where to pass back the result errmsg where to pass back an error message do_cache to be set zero if data is changed + opts options (which suffixed the lookup name, minus cache-control ones) or NULL func the lookup function to call Returns: the return from the lookup function, or DEFER @@ -42,21 +52,19 @@ lf_sqlperform(const uschar *name, const uschar *optionname, int(*fn)(const uschar *, uschar *, uschar **, uschar **, BOOL *, uint *, const uschar *)) { int rc; -uschar *server; +uschar * server; BOOL defer_break = FALSE; DEBUG(D_lookup) debug_printf_indent("%s query: \"%s\" opts '%s'\n", name, query, opts); -/* Handle queries that do have server information at the start. */ +/* Handle queries that do have server information at the start (old style). */ if (Ustrncmp(query, "servers", 7) == 0) { int qsep = 0; - const uschar *s, *ss; - const uschar *qserverlist; - uschar *qserver; + const uschar * s, * ss, * qserverlist; - log_write(0, LOG_MAIN|LOG_CONFIG_IN, "WARNING: obslete syntax used for lookup\n"); + log_write(0, LOG_MAIN|LOG_CONFIG_IN, "WARNING: obsolete syntax used for lookup"); s = query + 7; skip_whitespace(&s); @@ -83,35 +91,37 @@ if (Ustrncmp(query, "servers", 7) == 0) } qserverlist = string_sprintf("%.*s", (int)(ss - s), s); + query = ss + 1; - while ((qserver = string_nextinlist(&qserverlist, &qsep, NULL, 0))) + for (uschar * qsrv; qsrv = string_nextinlist(&qserverlist, &qsep, NULL, 0); ) { - if (Ustrchr(qserver, '/')) - server = qserver; + if (Ustrchr(qsrv, '/')) + server = qsrv; /* full server spec */ else - { - int len = Ustrlen(qserver); + { /* only name; search in option list */ + int len = Ustrlen(qsrv); const uschar * serverlist = optserverlist; for (int sep = 0; server = string_nextinlist(&serverlist, &sep, NULL, 0);) - if (Ustrncmp(server, qserver, len) == 0 && server[len] == '/') + if (Ustrncmp(server, qsrv, len) == 0 && server[len] == '/') break; if (!server) { - *errmsg = string_sprintf("%s server \"%s\" not found in %s", name, - qserver, optionname); + *errmsg = string_sprintf("%s server \"%.*s\" not found in %s", + name, server_len_for_logging(qsrv), qsrv, optionname); return DEFER; } } if (is_tainted(server)) { - *errmsg = string_sprintf("%s server \"%s\" is tainted", name, server); + *errmsg = string_sprintf("%s server \"%.*s\" is tainted", + name, server_len_for_logging(server), server); return DEFER; } - rc = (*fn)(ss+1, server, result, errmsg, &defer_break, do_cache, opts); + rc = (*fn)(query, server, result, errmsg, &defer_break, do_cache, opts); if (rc != DEFER || defer_break) return rc; } } @@ -139,7 +149,7 @@ else *errmsg = string_sprintf("no %s servers defined (%s option)", name, optionname); else - for (int d = 0; (server = string_nextinlist(&serverlist, &d, NULL, 0)); ) + for (int d = 0; server = string_nextinlist(&serverlist, &d, NULL, 0); ) { /* If not a full spec assume from options; scan main list for matching hostname */ @@ -163,7 +173,8 @@ else if (is_tainted(server)) { - *errmsg = string_sprintf("%s server \"%s\" is tainted", name, server); + *errmsg = string_sprintf("%s server \"%.*s\" is tainted", + name, server_len_for_logging(server), server); return DEFER; } @@ -176,3 +187,5 @@ return DEFER; } /* End of lf_sqlperform.c */ +/* vi: aw ai sw=2 +*/ diff --git a/src/src/receive.c b/src/src/receive.c index abac05c56..a56ff473e 100644 --- a/src/src/receive.c +++ b/src/src/receive.c @@ -290,12 +290,11 @@ Returns: FALSE if there isn't enough space, or if the information cannot BOOL receive_check_fs(int msg_size) { -int_eximarith_t space; int inodes; if (check_spool_space > 0 || msg_size > 0 || check_spool_inodes > 0) { - space = receive_statvfs(TRUE, &inodes); + int_eximarith_t space = receive_statvfs(TRUE, &inodes); DEBUG(D_receive) debug_printf("spool directory space = " PR_EXIM_ARITH "K inodes = %d " @@ -313,7 +312,7 @@ if (check_spool_space > 0 || msg_size > 0 || check_spool_inodes > 0) if (check_log_space > 0 || check_log_inodes > 0) { - space = receive_statvfs(FALSE, &inodes); + int_eximarith_t space = receive_statvfs(FALSE, &inodes); DEBUG(D_receive) debug_printf("log directory space = " PR_EXIM_ARITH "K inodes = %d " diff --git a/src/src/search.c b/src/src/search.c index 52dcab2b7..62416da76 100644 --- a/src/src/search.c +++ b/src/src/search.c @@ -590,35 +590,48 @@ else is either untainted or properly quoted for the lookup type. XXX Should we this move into lf_sqlperform() ? The server-taint check is there. + Also it already knows about looking for a "servers" spec in the query string. + Passing search_type down that far is an issue. */ if ( !filename && lookup_list[search_type]->quote && is_tainted(keystring) && !is_quoted_like(keystring, search_type)) { - uschar * s = acl_current_verb(); - if (!s) s = authenticator_current_name(); /* must be before transport */ - if (!s) s = transport_current_name(); /* must be before router */ - if (!s) s = router_current_name(); /* GCC ?: would be good, but not in clang */ - if (!s) s = US""; + const uschar * ks = keystring; + uschar * loc = acl_current_verb(); + if (!loc) loc = authenticator_current_name(); /* must be before transport */ + if (!loc) loc = transport_current_name(); /* must be before router */ + if (!loc) loc = router_current_name(); /* GCC ?: would be good, but not in clang */ + if (!loc) loc = US""; + + if (Ustrncmp(ks, "servers", 7) == 0) /* Avoid logging server/password */ + if ((ks = Ustrchr(keystring, ';'))) + while (isspace(*++ks)) + ; + else + ks = US""; + #ifdef enforce_quote_protection_notyet search_error_message = string_sprintf( "tainted search query is not properly quoted%s: %s%s", - s, keystring); + loc, ks); f.search_find_defer = TRUE; + goto out; #else - { - int q = quoter_for_address(keystring); - /* If we're called from a transport, no privs to open the paniclog; - the logging punts to using stderr - and that seems to stop the debug - stream. */ - log_write(0, - transport_name ? LOG_MAIN : LOG_MAIN|LOG_PANIC, - "tainted search query is not properly quoted%s: %s", s, keystring); - - DEBUG(D_lookup) debug_printf_indent("search_type %d (%s) quoting %d (%s)\n", + /* If we're called from a transport, no privs to open the paniclog; + the logging punts to using stderr - and that seems to stop the debug + stream. */ + log_write(0, + transport_name ? LOG_MAIN : LOG_MAIN|LOG_PANIC, + "tainted search query is not properly quoted%s: %s", loc, ks); + + DEBUG(D_lookup) + { + int q = quoter_for_address(ks); + debug_printf_indent("search_type %d (%s) quoting %d (%s)\n", search_type, lookup_list[search_type]->name, q, is_real_quoter(q) ? lookup_list[q]->name : US"none"); - } + } #endif } @@ -669,6 +682,7 @@ pointer to NULL here, because we cannot release the store at this stage. */ } } +out: DEBUG(D_lookup) { if (data) diff --git a/test/confs/2610 b/test/confs/2610 index 3f75d44a2..94be1b91f 100644 --- a/test/confs/2610 +++ b/test/confs/2610 @@ -14,7 +14,7 @@ acl_not_smtp = check_notsmtp PARTIAL = 127.0.0.1::PORT_N SSPEC = PARTIAL/test/root/pass -mysql_servers = SSPEC +hide mysql_servers = SSPEC # ----- ACL ----- @@ -25,27 +25,29 @@ check_recipient: # Tainted-data checks warn # taint only in lookup string, properly quoted - set acl_m0 = ok: ${lookup mysql {select name from them where id = '${quote_mysql:$local_part}'}} + set acl_m0 = ok: ${lookup mysql {select name from them where id = '${quote_mysql:$local_part}'}} # taint only in lookup string, but not quoted - set acl_m0 = FAIL: ${lookup mysql,no_rd {select name from them where id = '$local_part'}} + set acl_m0 = FAIL1: ${lookup mysql,no_rd {select name from them where id = '$local_part'}} warn # option on lookup type unaffected - set acl_m0 = ok: ${lookup mysql,servers=SSPEC {select name from them where id = '${quote_mysql:$local_part}'}} + set acl_m0 = ok: ${lookup mysql,servers=SSPEC {select name from them where id = '${quote_mysql:$local_part}'}} # partial server-spec, indexing main-option, works - set acl_m0 = ok: ${lookup mysql,servers=PARTIAL {select name from them where id = '${quote_mysql:$local_part}'}} + set acl_m0 = ok: ${lookup mysql,servers=PARTIAL {select name from them where id = '${quote_mysql:$local_part}'}} # oldstyle server spec, prepended to lookup string, fails with taint - set acl_m0 = FAIL: ${lookup mysql {servers=SSPEC; select name from them where id = '${quote_mysql:$local_part}'}} + set acl_m0 = FAIL2: ${lookup mysql {servers=SSPEC; select name from them where id = '${quote_mysql:$local_part}'}} + # oldstyle partial server spec, prepended to lookup string, indexing main-option, but not quoted + warn set acl_m0 = FAIL3: ${lookup mysql {servers=PARTIAL; select name from them where id = '$local_part'}} # In list-style lookup, tainted lookup string is ok if server spec comes from main-option - warn set acl_m0 = ok: hostlist + warn set acl_m0 = ok: hostlist hosts = net-mysql;select * from them where id='${quote_mysql:$local_part}' # ... but setting a per-query servers spec fails due to the taint - warn set acl_m0 = FAIL: hostlist + warn set acl_m0 = FAIL4: hostlist hosts = <& net-mysql;servers=SSPEC; select * from them where id='${quote_mysql:$local_part}' # The newer server-list-as-option-to-lookup-type is not a solution to tainted data in the lookup, because # string-expansion is done before list-expansion so the taint contaminates the entire list. - warn set acl_m0 = FAIL: hostlist + warn set acl_m0 = FAIL5: hostlist hosts = <& net-mysql,servers=SSPEC; select * from them where id='${quote_mysql:$local_part}' accept domains = +local_domains diff --git a/test/log/2610 b/test/log/2610 index cd0e6e9dd..4acbbd873 100644 --- a/test/log/2610 +++ b/test/log/2610 @@ -1,5 +1,5 @@ 1999-03-02 09:44:33 10HmaX-000000005vi-0000 <= CALLER@myhost.test.ex U=CALLER P=local S=sss -1999-03-02 09:44:33 10HmaX-000000005vi-0000 tainted search query is not properly quoted (router r1, TESTSUITE/test-config 66): select name from them where id='ph10' limit 1 -1999-03-02 09:44:33 10HmaX-000000005vi-0000 tainted search query is not properly quoted (transport t1, TESTSUITE/test-config 80): select id from them where id='ph10' +1999-03-02 09:44:33 10HmaX-000000005vi-0000 tainted search query is not properly quoted (router r1, TESTSUITE/test-config 68): select name from them where id='ph10' limit 1 +1999-03-02 09:44:33 10HmaX-000000005vi-0000 tainted search query is not properly quoted (transport t1, TESTSUITE/test-config 82): select id from them where id='ph10' 1999-03-02 09:44:33 10HmaX-000000005vi-0000 => ph10 R=r1 T=t1 1999-03-02 09:44:33 10HmaX-000000005vi-0000 Completed diff --git a/test/paniclog/2610 b/test/paniclog/2610 index 3573be261..917a0a801 100644 --- a/test/paniclog/2610 +++ b/test/paniclog/2610 @@ -1 +1 @@ -1999-03-02 09:44:33 10HmaX-000000005vi-0000 tainted search query is not properly quoted (router r1, TESTSUITE/test-config 66): select name from them where id='ph10' limit 1 +1999-03-02 09:44:33 10HmaX-000000005vi-0000 tainted search query is not properly quoted (router r1, TESTSUITE/test-config 68): select name from them where id='ph10' limit 1 diff --git a/test/runtest b/test/runtest index cdf7bd339..07c499fa4 100755 --- a/test/runtest +++ b/test/runtest @@ -1260,7 +1260,7 @@ RESET_AFTER_EXTRA_LINE_READ: # drop pdkim debugging header next if /^DKIM( <<<<<<<<<<<<<<<<<<<<<<<<<<<<<+|: no signatures)$/; - # Some platforms have TIOCOUTome do not + # Some platforms have TIOCOUT, some do not next if /\d+ bytes remain in socket output buffer$/; # Various other IPv6 lines must be omitted too @@ -1434,7 +1434,7 @@ RESET_AFTER_EXTRA_LINE_READ: s/^cmd buf flush \d+ bytes/cmd buf flush ddd bytes/; # Spool filesystem free space changes on different systems. - s/^((?:spool|log) directory space =) -?\d+K (inodes =)\s*-?\d+/$1 nnnnnK $2 nnnnn/; + s/((?:spool|log) directory space =) -?\d+K (inodes =)\s*-?\d+/$1 nnnnnK $2 nnnnn/; # Non-TLS builds have different expansions for received_header_text if (s/(with \$received_protocol)\}\} \$\{if def:tls_cipher \{\(\$tls_cipher\)\n$/$1/) diff --git a/test/scripts/2610-MySQL/2610 b/test/scripts/2610-MySQL/2610 index 91a3f6be3..597504a59 100644 --- a/test/scripts/2610-MySQL/2610 +++ b/test/scripts/2610-MySQL/2610 @@ -81,7 +81,7 @@ ${lookup mysql {SELECT name FROM them WHERE id IN ('ph10', 'aaaa');}} ${lookup mysql {SELECT * FROM them WHERE id IN ('ph10', 'aaaa');}} ${lookup mysql {delete from them where id='aaaa'}} **** -exim -d -bh 10.0.0.0 +exim -d+all -bh 10.0.0.0 helo test mail from: rcpt to: diff --git a/test/stderr/2610 b/test/stderr/2610 index 667d8bba9..dd45d50c3 100644 --- a/test/stderr/2610 +++ b/test/stderr/2610 @@ -136,9 +136,8 @@ dropping to exim gid; retaining priv uid database lookup required for servers=x:127.0.0.1::PORT_N; select name from them where id='ph10'; MySQL query: "servers=x:127.0.0.1::PORT_N; select name from them where id='ph10';" opts 'NULL' LOG: MAIN - Exim configuration error in line 87 of TESTSUITE/test-config: - WARNING: obslete syntax used for lookup - + Exim configuration error in line 89 of TESTSUITE/test-config: + WARNING: obsolete syntax used for lookup lookup deferred: MySQL server "x" not found in mysql_servers search_open: mysql "NULL" cached open @@ -150,9 +149,8 @@ LOG: MAIN database lookup required for servers=127.0.0.1::PORT_N:x; select name from them where id='ph10'; MySQL query: "servers=127.0.0.1::PORT_N:x; select name from them where id='ph10';" opts 'NULL' LOG: MAIN - Exim configuration error in line 87 of TESTSUITE/test-config: - WARNING: obslete syntax used for lookup - + Exim configuration error in line 89 of TESTSUITE/test-config: + WARNING: obsolete syntax used for lookup MYSQL using cached connection for 127.0.0.1:PORT_N/test/root creating new cache entry lookup yielded: Philip Hazel @@ -166,9 +164,8 @@ LOG: MAIN database lookup required for servers=127.0.0.1::PORT_N/test/root/:x; select name from them where id='ph10'; MySQL query: "servers=127.0.0.1::PORT_N/test/root/:x; select name from them where id='ph10';" opts 'NULL' LOG: MAIN - Exim configuration error in line 87 of TESTSUITE/test-config: - WARNING: obslete syntax used for lookup - + Exim configuration error in line 89 of TESTSUITE/test-config: + WARNING: obsolete syntax used for lookup MYSQL using cached connection for 127.0.0.1:PORT_N/test/root creating new cache entry lookup yielded: Philip Hazel @@ -182,9 +179,8 @@ LOG: MAIN database lookup required for servers=ip4.ip4.ip4.ip4::1223/test/root/:127.0.0.1::PORT_N; select name from them where id='ph10'; MySQL query: "servers=ip4.ip4.ip4.ip4::1223/test/root/:127.0.0.1::PORT_N; select name from them where id='ph10';" opts 'NULL' LOG: MAIN - Exim configuration error in line 87 of TESTSUITE/test-config: - WARNING: obslete syntax used for lookup - + Exim configuration error in line 89 of TESTSUITE/test-config: + WARNING: obsolete syntax used for lookup MYSQL new connection: host=ip4.ip4.ip4.ip4 port=PORT_N socket=NULL database=test user=root creating new cache entry lookup yielded: Philip Hazel @@ -198,9 +194,8 @@ LOG: MAIN database lookup required for servers=localhost(TESTSUITE/mysql/sock)/test/root/pass; select name from them where id='ph10'; MySQL query: "servers=localhost(TESTSUITE/mysql/sock)/test/root/pass; select name from them where id='ph10';" opts 'NULL' LOG: MAIN - Exim configuration error in line 87 of TESTSUITE/test-config: - WARNING: obslete syntax used for lookup - + Exim configuration error in line 89 of TESTSUITE/test-config: + WARNING: obsolete syntax used for lookup MYSQL new connection: host=localhost port=0 socket=TESTSUITE/mysql/sock database=test user=root creating new cache entry lookup yielded: Philip Hazel @@ -248,248 +243,489 @@ close MYSQL connection: localhost(TESTSUITE/mysql/sock)/test/root close MYSQL connection: ip4.ip4.ip4.ip4:1223/test/root close MYSQL connection: 127.0.0.1:PORT_N/test/root >>>>>>>>>>>>>>>> Exim pid=p1234 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>> -Exim version x.yz .... -changed uid/gid: forcing real = effective - uid=uuuu gid=CALLER_GID pid=p1235 -configuration file is TESTSUITE/test-config -admin user -changed uid/gid: privilege not needed - uid=EXIM_UID gid=EXIM_GID pid=p1235 -seeking password data for user "CALLER": cache not available -getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID -originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME -sender address = CALLER@myhost.test.ex -sender_fullhost = [10.0.0.0] -sender_rcvhost = [10.0.0.0] -host in hosts_connection_nolog? no (option unset) -LOG: smtp_connection MAIN - SMTP connection from [10.0.0.0] -host in host_lookup? no (option unset) -set_process_info: pppp handling incoming connection from [10.0.0.0] -host in host_reject_connection? no (option unset) -host in sender_unqualified_hosts? no (option unset) -host in recipient_unqualified_hosts? no (option unset) -host in helo_verify_hosts? no (option unset) -host in helo_try_verify_hosts? no (option unset) -host in helo_accept_junk_hosts? no (option unset) -SMTP>> 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 -smtp_setup_msg entered -SMTP<< helo test -test in helo_lookup_domains? - list element: @ - list element: @[] -test in helo_lookup_domains? no (end of list) -sender_fullhost = (test) [10.0.0.0] -sender_rcvhost = [10.0.0.0] (helo=test) -set_process_info: pppp handling incoming connection from (test) [10.0.0.0] -SMTP>> 250 myhost.test.ex Hello test [10.0.0.0] -SMTP<< mail from: -spool directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100 msg_size = 0 -log directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100 -SMTP>> 250 OK -SMTP<< rcpt to: -using ACL "check_recipient" -processing "warn" (TESTSUITE/test-config 26) - search_open: mysql "NULL" - search_find: file="NULL" - key="select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts=NULL - LRU list: - internal_search_find: file="NULL" - type=mysql key="select name from them where id = 'c'" opts=NULL - database lookup required for select name from them where id = 'c' - (tainted, quoted:mysql) - MySQL query: "select name from them where id = 'c'" opts 'NULL' - MYSQL new connection: host=127.0.0.1 port=PORT_N socket=NULL database=test user=root - MYSQL: no data found - creating new cache entry - lookup failed -check set acl_m0 = ok: ${lookup mysql {select name from them where id = '${quote_mysql:$local_part}'}} - = ok: - search_open: mysql "NULL" - cached open - search_find: file="NULL" - key="select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts="no_rd" - LRU list: - internal_search_find: file="NULL" - type=mysql key="select name from them where id = 'c'" opts="no_rd" - cached data found but wrong opts; database lookup required for select name from them where id = 'c' - (tainted) -LOG: MAIN PANIC - tainted search query is not properly quoted (ACL warn, TESTSUITE/test-config 26): select name from them where id = 'c' - search_type NN (mysql) quoting -1 (none) - MySQL query: "select name from them where id = 'c'" opts 'no_rd' - MYSQL using cached connection for 127.0.0.1:PORT_N/test/root - MYSQL: no data found - replacing old cache entry - lookup failed -check set acl_m0 = FAIL: ${lookup mysql,no_rd {select name from them where id = '$local_part'}} - = FAIL: -warn: condition test succeeded in ACL "check_recipient" -processing "warn" (TESTSUITE/test-config 31) - search_open: mysql "NULL" - cached open - search_find: file="NULL" - key="select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts="servers=127.0.0.1::PORT_N/test/root/pass" - LRU list: - internal_search_find: file="NULL" - type=mysql key="select name from them where id = 'c'" opts="servers=127.0.0.1::PORT_N/test/root/pass" - cached data found but wrong opts; database lookup required for select name from them where id = 'c' - (tainted, quoted:mysql) - MySQL query: "select name from them where id = 'c'" opts 'servers=127.0.0.1::PORT_N/test/root/pass' - MYSQL using cached connection for 127.0.0.1:PORT_N/test/root - MYSQL: no data found - replacing old cache entry - lookup failed -check set acl_m0 = ok: ${lookup mysql,servers=127.0.0.1::PORT_N/test/root/pass {select name from them where id = '${quote_mysql:$local_part}'}} - = ok: - search_open: mysql "NULL" - cached open - search_find: file="NULL" - key="select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts="servers=127.0.0.1::PORT_N" - LRU list: - internal_search_find: file="NULL" - type=mysql key="select name from them where id = 'c'" opts="servers=127.0.0.1::PORT_N" - cached data found but wrong opts; database lookup required for select name from them where id = 'c' - (tainted, quoted:mysql) - MySQL query: "select name from them where id = 'c'" opts 'servers=127.0.0.1::PORT_N' - MYSQL using cached connection for 127.0.0.1:PORT_N/test/root - MYSQL: no data found - replacing old cache entry - lookup failed -check set acl_m0 = ok: ${lookup mysql,servers=127.0.0.1::PORT_N {select name from them where id = '${quote_mysql:$local_part}'}} - = ok: - search_open: mysql "NULL" - cached open - search_find: file="NULL" - key="servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts=NULL - LRU list: - internal_search_find: file="NULL" - type=mysql key="servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = 'c'" opts=NULL - database lookup required for servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = 'c' - (tainted, quoted:mysql) - MySQL query: "servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = 'c'" opts 'NULL' -LOG: MAIN - Exim configuration error in line 87 of TESTSUITE/test-config: - WARNING: obslete syntax used for lookup - - lookup deferred: MySQL server "127.0.0.1:PORT_N/test/root/pass" is tainted -warn: condition test deferred in ACL "check_recipient" -LOG: MAIN - H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: MySQL server "127.0.0.1:PORT_N/test/root/pass" is tainted -processing "warn" (TESTSUITE/test-config 40) -check set acl_m0 = ok: hostlist -check hosts = net-mysql;select * from them where id='${quote_mysql:$local_part}' -host in "net-mysql;select * from them where id='c'"? - list element: net-mysql;select * from them where id='c' - search_open: mysql "NULL" - cached open - search_find: file="NULL" - key="select * from them where id='c'" partial=-1 affix=NULL starflags=0 opts=NULL - LRU list: - internal_search_find: file="NULL" - type=mysql key="select * from them where id='c'" opts=NULL - database lookup required for select * from them where id='c' - (tainted, quoted:mysql) - MySQL query: "select * from them where id='c'" opts 'NULL' - MYSQL using cached connection for 127.0.0.1:PORT_N/test/root - MYSQL: no data found - creating new cache entry - lookup failed -host in "net-mysql;select * from them where id='c'"? no (end of list) -warn: condition test failed in ACL "check_recipient" -processing "warn" (TESTSUITE/test-config 43) -check set acl_m0 = FAIL: hostlist -check hosts = <& net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='${quote_mysql:$local_part}' -host in "<& net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'"? - list element: net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c' - search_open: mysql "NULL" - cached open - search_find: file="NULL" - key="servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'" partial=-1 affix=NULL starflags=0 opts=NULL - LRU list: - internal_search_find: file="NULL" - type=mysql key="servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'" opts=NULL - database lookup required for servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c' - (tainted, quoted:mysql) - MySQL query: "servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'" opts 'NULL' -LOG: MAIN - Exim configuration error in line 87 of TESTSUITE/test-config: - WARNING: obslete syntax used for lookup - - lookup deferred: MySQL server "127.0.0.1:PORT_N/test/root/pass" is tainted -host in "<& net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'"? list match deferred for net-mysql;servers=127.0.0.1::1223/test/root/pass; select * from them where id='c' -warn: condition test deferred in ACL "check_recipient" -LOG: MAIN - H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: MySQL server "127.0.0.1:PORT_N/test/root/pass" is tainted -processing "warn" (TESTSUITE/test-config 48) -check set acl_m0 = FAIL: hostlist -check hosts = <& net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='${quote_mysql:$local_part}' -host in "<& net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'"? - list element: net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c' - search_open: mysql "NULL" - cached open - search_find: file="NULL" - key=" select * from them where id='c'" partial=-1 affix=NULL starflags=0 opts="servers=127.0.0.1::PORT_N/test/root/pass" - LRU list: - internal_search_find: file="NULL" - type=mysql key=" select * from them where id='c'" opts="servers=127.0.0.1::PORT_N/test/root/pass" - database lookup required for select * from them where id='c' - (tainted, quoted:mysql) - MySQL query: " select * from them where id='c'" opts 'servers=127.0.0.1::PORT_N/test/root/pass' - lookup deferred: MySQL server "127.0.0.1:PORT_N/test/root/pass" is tainted -host in "<& net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'"? list match deferred for net-mysql,servers=127.0.0.1::1223/test/root/pass; select * from them where id='c' -warn: condition test deferred in ACL "check_recipient" -LOG: MAIN - H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: MySQL server "127.0.0.1:PORT_N/test/root/pass" is tainted -processing "accept" (TESTSUITE/test-config 51) -check domains = +local_domains -d in "+local_domains"? - list element: +local_domains - start sublist local_domains - d in "@"? - ╎list element: @ - d in "@"? no (end of list) - end sublist local_domains -d in "+local_domains"? no (end of list) -accept: condition test failed in ACL "check_recipient" -processing "accept" (TESTSUITE/test-config 54) -check hosts = +relay_hosts -host in "+relay_hosts"? - list element: +relay_hosts - start sublist relay_hosts - host in "net-mysql;select * from them where id='10.0.0.0'"? - ╎list element: net-mysql;select * from them where id='10.0.0.0' - ╎search_open: mysql "NULL" - ╎ cached open - ╎search_find: file="NULL" - ╎ key="select * from them where id='10.0.0.0'" partial=-1 affix=NULL starflags=0 opts=NULL - ╎LRU list: - ╎internal_search_find: file="NULL" - ╎ type=mysql key="select * from them where id='10.0.0.0'" opts=NULL - ╎database lookup required for select * from them where id='10.0.0.0' - ╎MySQL query: "select * from them where id='10.0.0.0'" opts 'NULL' - ╎MYSQL using cached connection for 127.0.0.1:PORT_N/test/root - ╎MYSQL: no data found - ╎creating new cache entry - ╎lookup failed - host in "net-mysql;select * from them where id='10.0.0.0'"? no (end of list) - end sublist relay_hosts -host in "+relay_hosts"? no (end of list) -accept: condition test failed in ACL "check_recipient" -processing "deny" (TESTSUITE/test-config 55) - message: relay not permitted -deny: condition test succeeded in ACL "check_recipient" -end of ACL "check_recipient": DENY -SMTP>> 550 relay not permitted -LOG: MAIN REJECT - H=(test) [10.0.0.0] F= rejected RCPT : relay not permitted -SMTP<< quit -SMTP>> 221 myhost.test.ex closing connection -LOG: smtp_connection MAIN - SMTP connection from (test) [10.0.0.0] D=qqs closed by QUIT -search_tidyup called -close MYSQL connection: 127.0.0.1:PORT_N/test/root ->>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>> +01:01:01 p1235 Exim version x.yz uid=CALLER_UID gid=CALLER_GID pid=p1235 D=fff9ffff +01:01:01 p1235 macros_trusted overridden to true by whitelisting +01:01:01 p1235 changed uid/gid: forcing real = effective +01:01:01 p1235 uid=uuuu gid=CALLER_GID pid=p1235 +01:01:01 p1235 environment after trimming: +01:01:01 p1235 PATH= +01:01:01 p1235 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys +01:01:01 p1235 configuration file is TESTSUITE/test-config +01:01:01 p1235 admin user +01:01:01 p1235 changed uid/gid: privilege not needed +01:01:01 p1235 uid=EXIM_UID gid=EXIM_GID pid=p1235 +01:01:01 p1235 seeking password data for user "CALLER": cache not available +01:01:01 p1235 getpwnam() succeeded uid=CALLER_UID gid=CALLER_GID +01:01:01 p1235 try option gecos_pattern +01:01:01 p1235 try option gecos_name +01:01:01 p1235 try option unknown_login +01:01:01 p1235 originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME +01:01:01 p1235 sender address = CALLER@myhost.test.ex +01:01:01 p1235 try option smtp_active_hostname +01:01:01 p1235 sender_fullhost = [10.0.0.0] +01:01:01 p1235 sender_rcvhost = [10.0.0.0] +01:01:01 p1235 host in hosts_connection_nolog? no (option unset) +01:01:01 p1235 LOG: smtp_connection MAIN +01:01:01 p1235 SMTP connection from [10.0.0.0] +01:01:01 p1235 try option message_size_limit +01:01:01 p1235 host in host_lookup? no (option unset) +01:01:01 p1235 set_process_info: pppp handling incoming connection from [10.0.0.0] +01:01:01 p1235 host in host_reject_connection? no (option unset) +01:01:01 p1235 host in sender_unqualified_hosts? no (option unset) +01:01:01 p1235 host in recipient_unqualified_hosts? no (option unset) +01:01:01 p1235 host in helo_verify_hosts? no (option unset) +01:01:01 p1235 host in helo_try_verify_hosts? no (option unset) +01:01:01 p1235 host in helo_accept_junk_hosts? no (option unset) +01:01:01 p1235 try option acl_smtp_connect +01:01:01 p1235 try option smtp_banner +01:01:01 p1235 ╭considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full +01:01:01 p1235 ├──────value: myhost.test.ex +01:01:01 p1235 ├considering: ESMTP Exim $version_number $tod_full +01:01:01 p1235 ├───────text: ESMTP Exim +01:01:01 p1235 ├considering: $version_number $tod_full +01:01:01 p1235 ├──────value: x.yz +01:01:01 p1235 ├considering: $tod_full +01:01:01 p1235 ├───────text: +01:01:01 p1235 ├considering: $tod_full +01:01:01 p1235 ├──────value: Tue, 2 Mar 1999 09:44:33 +0000 +01:01:01 p1235 ├──expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full +01:01:01 p1235 ╰─────result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +01:01:01 p1235 host in pipelining_connect_advertise_hosts? +01:01:01 p1235 list element: +01:01:01 p1235 SMTP>> 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +01:01:01 p1235 smtp_setup_msg entered +01:01:01 p1235 SMTP<< helo test +01:01:01 p1235 test in helo_lookup_domains? +01:01:01 p1235 list element: @ +01:01:01 p1235 list element: @[] +01:01:01 p1235 test in helo_lookup_domains? no (end of list) +01:01:01 p1235 sender_fullhost = (test) [10.0.0.0] +01:01:01 p1235 sender_rcvhost = [10.0.0.0] (helo=test) +01:01:01 p1235 set_process_info: pppp handling incoming connection from (test) [10.0.0.0] +01:01:01 p1235 spf_conn_init: test 10.0.0.0 +01:01:01 p1235 SPF_dns_exim_new +01:01:01 p1235 try option acl_smtp_helo +01:01:01 p1235 SMTP>> 250 myhost.test.ex Hello test [10.0.0.0] +01:01:01 p1235 SMTP<< mail from: +01:01:01 p1235 spool directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100 msg_size = 0 +01:01:01 p1235 log directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100 +01:01:01 p1235 try option acl_smtp_mail +01:01:01 p1235 SMTP>> 250 OK +01:01:01 p1235 SMTP<< rcpt to: +01:01:01 p1235 try option acl_smtp_rcpt +01:01:01 p1235 using ACL "check_recipient" +01:01:01 p1235 processing "warn" (TESTSUITE/test-config 26) +01:01:01 p1235 ╭considering: ok: ${lookup mysql {select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 ├───────text: ok: +01:01:01 p1235 ├considering: ${lookup mysql {select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 ╭considering: select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 ├───────text: select name from them where id = ' +01:01:01 p1235 ├considering: ${quote_mysql:$local_part}'}} +01:01:01 p1235 ╭considering: $local_part}'}} +01:01:01 p1235 ├──────value: c +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 ├considering: }'}} +01:01:01 p1235 ├──expanding: $local_part +01:01:01 p1235 ╰─────result: c +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 ├─────op-res: c +01:01:01 p1235 ╰──(tainted, quoted:mysql) +01:01:01 p1235 ├considering: '}} +01:01:01 p1235 ├───────text: ' +01:01:01 p1235 ├considering: }} +01:01:01 p1235 ├──expanding: select name from them where id = '${quote_mysql:$local_part}' +01:01:01 p1235 ╰─────result: select name from them where id = 'c' +01:01:01 p1235 ╰──(tainted, quoted:mysql) +01:01:01 p1235 search_open: mysql "NULL" +01:01:01 p1235 search_find: file="NULL" +01:01:01 p1235 key="select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts=NULL +01:01:01 p1235 LRU list: +01:01:01 p1235 internal_search_find: file="NULL" +01:01:01 p1235 type=mysql key="select name from them where id = 'c'" opts=NULL +01:01:01 p1235 database lookup required for select name from them where id = 'c' +01:01:01 p1235 (tainted, quoted:mysql) +01:01:01 p1235 MySQL query: "select name from them where id = 'c'" opts 'NULL' +01:01:01 p1235 MYSQL new connection: host=127.0.0.1 port=PORT_N socket=NULL database=test user=root +01:01:01 p1235 MYSQL: no data found +01:01:01 p1235 creating new cache entry +01:01:01 p1235 lookup failed +01:01:01 p1235 ├───item-res: +01:01:01 p1235 ├──expanding: ok: ${lookup mysql {select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 ╰─────result: ok: +01:01:01 p1235 check set acl_m0 = ok: ${lookup mysql {select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 = ok: +01:01:01 p1235 ╭considering: FAIL1: ${lookup mysql,no_rd {select name from them where id = '$local_part'}} +01:01:01 p1235 ├───────text: FAIL1: +01:01:01 p1235 ├considering: ${lookup mysql,no_rd {select name from them where id = '$local_part'}} +01:01:01 p1235 ╭considering: select name from them where id = '$local_part'}} +01:01:01 p1235 ├───────text: select name from them where id = ' +01:01:01 p1235 ├considering: $local_part'}} +01:01:01 p1235 ├──────value: c +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 ├considering: '}} +01:01:01 p1235 ├───────text: ' +01:01:01 p1235 ├considering: }} +01:01:01 p1235 ├──expanding: select name from them where id = '$local_part' +01:01:01 p1235 ╰─────result: select name from them where id = 'c' +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 search_open: mysql "NULL" +01:01:01 p1235 cached open +01:01:01 p1235 search_find: file="NULL" +01:01:01 p1235 key="select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts="no_rd" +01:01:01 p1235 LRU list: +01:01:01 p1235 internal_search_find: file="NULL" +01:01:01 p1235 type=mysql key="select name from them where id = 'c'" opts="no_rd" +01:01:01 p1235 cached data found but wrong opts; database lookup required for select name from them where id = 'c' +01:01:01 p1235 (tainted) +01:01:01 p1235 LOG: MAIN PANIC +01:01:01 p1235 tainted search query is not properly quoted (ACL warn, TESTSUITE/test-config 26): select name from them where id = 'c' +01:01:01 p1235 search_type 13 (mysql) quoting -1 (none) +01:01:01 p1235 MySQL query: "select name from them where id = 'c'" opts 'no_rd' +01:01:01 p1235 MYSQL using cached connection for 127.0.0.1:PORT_N/test/root +01:01:01 p1235 MYSQL: no data found +01:01:01 p1235 replacing old cache entry +01:01:01 p1235 lookup failed +01:01:01 p1235 ├───item-res: +01:01:01 p1235 ├──expanding: FAIL1: ${lookup mysql,no_rd {select name from them where id = '$local_part'}} +01:01:01 p1235 ╰─────result: FAIL1: +01:01:01 p1235 check set acl_m0 = FAIL1: ${lookup mysql,no_rd {select name from them where id = '$local_part'}} +01:01:01 p1235 = FAIL1: +01:01:01 p1235 warn: condition test succeeded in ACL "check_recipient" +01:01:01 p1235 processing "warn" (TESTSUITE/test-config 31) +01:01:01 p1235 ╭considering: ok: ${lookup mysql,servers=127.0.0.1::PORT_N/test/root/pass {select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 ├───────text: ok: +01:01:01 p1235 ├considering: ${lookup mysql,servers=127.0.0.1::PORT_N/test/root/pass {select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 ╭considering: select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 ├───────text: select name from them where id = ' +01:01:01 p1235 ├considering: ${quote_mysql:$local_part}'}} +01:01:01 p1235 ╭considering: $local_part}'}} +01:01:01 p1235 ├──────value: c +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 ├considering: }'}} +01:01:01 p1235 ├──expanding: $local_part +01:01:01 p1235 ╰─────result: c +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 ├─────op-res: c +01:01:01 p1235 ╰──(tainted, quoted:mysql) +01:01:01 p1235 ├considering: '}} +01:01:01 p1235 ├───────text: ' +01:01:01 p1235 ├considering: }} +01:01:01 p1235 ├──expanding: select name from them where id = '${quote_mysql:$local_part}' +01:01:01 p1235 ╰─────result: select name from them where id = 'c' +01:01:01 p1235 ╰──(tainted, quoted:mysql) +01:01:01 p1235 search_open: mysql "NULL" +01:01:01 p1235 cached open +01:01:01 p1235 search_find: file="NULL" +01:01:01 p1235 key="select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts="servers=127.0.0.1::PORT_N/test/root/pass" +01:01:01 p1235 LRU list: +01:01:01 p1235 internal_search_find: file="NULL" +01:01:01 p1235 type=mysql key="select name from them where id = 'c'" opts="servers=127.0.0.1::PORT_N/test/root/pass" +01:01:01 p1235 cached data found but wrong opts; database lookup required for select name from them where id = 'c' +01:01:01 p1235 (tainted, quoted:mysql) +01:01:01 p1235 MySQL query: "select name from them where id = 'c'" opts 'servers=127.0.0.1::PORT_N/test/root/pass' +01:01:01 p1235 MYSQL using cached connection for 127.0.0.1:PORT_N/test/root +01:01:01 p1235 MYSQL: no data found +01:01:01 p1235 replacing old cache entry +01:01:01 p1235 lookup failed +01:01:01 p1235 ├───item-res: +01:01:01 p1235 ├──expanding: ok: ${lookup mysql,servers=127.0.0.1::PORT_N/test/root/pass {select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 ╰─────result: ok: +01:01:01 p1235 check set acl_m0 = ok: ${lookup mysql,servers=127.0.0.1::PORT_N/test/root/pass {select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 = ok: +01:01:01 p1235 ╭considering: ok: ${lookup mysql,servers=127.0.0.1::PORT_N {select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 ├───────text: ok: +01:01:01 p1235 ├considering: ${lookup mysql,servers=127.0.0.1::PORT_N {select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 ╭considering: select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 ├───────text: select name from them where id = ' +01:01:01 p1235 ├considering: ${quote_mysql:$local_part}'}} +01:01:01 p1235 ╭considering: $local_part}'}} +01:01:01 p1235 ├──────value: c +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 ├considering: }'}} +01:01:01 p1235 ├──expanding: $local_part +01:01:01 p1235 ╰─────result: c +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 ├─────op-res: c +01:01:01 p1235 ╰──(tainted, quoted:mysql) +01:01:01 p1235 ├considering: '}} +01:01:01 p1235 ├───────text: ' +01:01:01 p1235 ├considering: }} +01:01:01 p1235 ├──expanding: select name from them where id = '${quote_mysql:$local_part}' +01:01:01 p1235 ╰─────result: select name from them where id = 'c' +01:01:01 p1235 ╰──(tainted, quoted:mysql) +01:01:01 p1235 search_open: mysql "NULL" +01:01:01 p1235 cached open +01:01:01 p1235 search_find: file="NULL" +01:01:01 p1235 key="select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts="servers=127.0.0.1::PORT_N" +01:01:01 p1235 LRU list: +01:01:01 p1235 internal_search_find: file="NULL" +01:01:01 p1235 type=mysql key="select name from them where id = 'c'" opts="servers=127.0.0.1::PORT_N" +01:01:01 p1235 cached data found but wrong opts; database lookup required for select name from them where id = 'c' +01:01:01 p1235 (tainted, quoted:mysql) +01:01:01 p1235 MySQL query: "select name from them where id = 'c'" opts 'servers=127.0.0.1::PORT_N' +01:01:01 p1235 MYSQL using cached connection for 127.0.0.1:PORT_N/test/root +01:01:01 p1235 MYSQL: no data found +01:01:01 p1235 replacing old cache entry +01:01:01 p1235 lookup failed +01:01:01 p1235 ├───item-res: +01:01:01 p1235 ├──expanding: ok: ${lookup mysql,servers=127.0.0.1::PORT_N {select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 ╰─────result: ok: +01:01:01 p1235 check set acl_m0 = ok: ${lookup mysql,servers=127.0.0.1::PORT_N {select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 = ok: +01:01:01 p1235 ╭considering: FAIL2: ${lookup mysql {servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 ├───────text: FAIL2: +01:01:01 p1235 ├considering: ${lookup mysql {servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 ╭considering: servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 ├───────text: servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = ' +01:01:01 p1235 ├considering: ${quote_mysql:$local_part}'}} +01:01:01 p1235 ╭considering: $local_part}'}} +01:01:01 p1235 ├──────value: c +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 ├considering: }'}} +01:01:01 p1235 ├──expanding: $local_part +01:01:01 p1235 ╰─────result: c +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 ├─────op-res: c +01:01:01 p1235 ╰──(tainted, quoted:mysql) +01:01:01 p1235 ├considering: '}} +01:01:01 p1235 ├───────text: ' +01:01:01 p1235 ├considering: }} +01:01:01 p1235 ├──expanding: servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = '${quote_mysql:$local_part}' +01:01:01 p1235 ╰─────result: servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = 'c' +01:01:01 p1235 ╰──(tainted, quoted:mysql) +01:01:01 p1235 search_open: mysql "NULL" +01:01:01 p1235 cached open +01:01:01 p1235 search_find: file="NULL" +01:01:01 p1235 key="servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts=NULL +01:01:01 p1235 LRU list: +01:01:01 p1235 internal_search_find: file="NULL" +01:01:01 p1235 type=mysql key="servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = 'c'" opts=NULL +01:01:01 p1235 database lookup required for servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = 'c' +01:01:01 p1235 (tainted, quoted:mysql) +01:01:01 p1235 MySQL query: "servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = 'c'" opts 'NULL' +01:01:01 p1235 LOG: MAIN +01:01:01 p1235 Exim configuration error in line 89 of TESTSUITE/test-config: +01:01:01 p1235 WARNING: obsolete syntax used for lookup +01:01:01 p1235 lookup deferred: MySQL server "127.0.0.1:PORT_N/test" is tainted +01:01:01 p1235 ├failed to expand: FAIL2: ${lookup mysql {servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = '${quote_mysql:$local_part}'}} +01:01:01 p1235 ╰───error message: lookup of "servers=127.0.0.1::PORT_N/test/root/pass; select name from them where id = 'c'" gave DEFER: MySQL server "127.0.0.1:1223/test" is tainted +01:01:01 p1235 warn: condition test deferred in ACL "check_recipient" +01:01:01 p1235 LOG: MAIN +01:01:01 p1235 H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: MySQL server "127.0.0.1:PORT_N/test" is tainted +01:01:01 p1235 processing "warn" (TESTSUITE/test-config 39) +01:01:01 p1235 ╭considering: FAIL3: ${lookup mysql {servers=127.0.0.1::PORT_N; select name from them where id = '$local_part'}} +01:01:01 p1235 ├───────text: FAIL3: +01:01:01 p1235 ├considering: ${lookup mysql {servers=127.0.0.1::PORT_N; select name from them where id = '$local_part'}} +01:01:01 p1235 ╭considering: servers=127.0.0.1::PORT_N; select name from them where id = '$local_part'}} +01:01:01 p1235 ├───────text: servers=127.0.0.1::PORT_N; select name from them where id = ' +01:01:01 p1235 ├considering: $local_part'}} +01:01:01 p1235 ├──────value: c +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 ├considering: '}} +01:01:01 p1235 ├───────text: ' +01:01:01 p1235 ├considering: }} +01:01:01 p1235 ├──expanding: servers=127.0.0.1::PORT_N; select name from them where id = '$local_part' +01:01:01 p1235 ╰─────result: servers=127.0.0.1::PORT_N; select name from them where id = 'c' +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 search_open: mysql "NULL" +01:01:01 p1235 cached open +01:01:01 p1235 search_find: file="NULL" +01:01:01 p1235 key="servers=127.0.0.1::PORT_N; select name from them where id = 'c'" partial=-1 affix=NULL starflags=0 opts=NULL +01:01:01 p1235 LRU list: +01:01:01 p1235 internal_search_find: file="NULL" +01:01:01 p1235 type=mysql key="servers=127.0.0.1::PORT_N; select name from them where id = 'c'" opts=NULL +01:01:01 p1235 database lookup required for servers=127.0.0.1::PORT_N; select name from them where id = 'c' +01:01:01 p1235 (tainted) +01:01:01 p1235 LOG: MAIN PANIC +01:01:01 p1235 tainted search query is not properly quoted (ACL warn, TESTSUITE/test-config 39): select name from them where id = 'c' +01:01:01 p1235 search_type 13 (mysql) quoting -1 (none) +01:01:01 p1235 MySQL query: "servers=127.0.0.1::PORT_N; select name from them where id = 'c'" opts 'NULL' +01:01:01 p1235 LOG: MAIN +01:01:01 p1235 Exim configuration error in line 89 of TESTSUITE/test-config: +01:01:01 p1235 WARNING: obsolete syntax used for lookup +01:01:01 p1235 MYSQL using cached connection for 127.0.0.1:PORT_N/test/root +01:01:01 p1235 MYSQL: no data found +01:01:01 p1235 creating new cache entry +01:01:01 p1235 lookup failed +01:01:01 p1235 ├───item-res: +01:01:01 p1235 ├──expanding: FAIL3: ${lookup mysql {servers=127.0.0.1::PORT_N; select name from them where id = '$local_part'}} +01:01:01 p1235 ╰─────result: FAIL3: +01:01:01 p1235 check set acl_m0 = FAIL3: ${lookup mysql {servers=127.0.0.1::PORT_N; select name from them where id = '$local_part'}} +01:01:01 p1235 = FAIL3: +01:01:01 p1235 warn: condition test succeeded in ACL "check_recipient" +01:01:01 p1235 processing "warn" (TESTSUITE/test-config 42) +01:01:01 p1235 check set acl_m0 = ok: hostlist +01:01:01 p1235 check hosts = net-mysql;select * from them where id='${quote_mysql:$local_part}' +01:01:01 p1235 ╭considering: net-mysql;select * from them where id='${quote_mysql:$local_part}' +01:01:01 p1235 ├───────text: net-mysql;select * from them where id=' +01:01:01 p1235 ├considering: ${quote_mysql:$local_part}' +01:01:01 p1235 ╭considering: $local_part}' +01:01:01 p1235 ├──────value: c +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 ├considering: }' +01:01:01 p1235 ├──expanding: $local_part +01:01:01 p1235 ╰─────result: c +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 ├─────op-res: c +01:01:01 p1235 ╰──(tainted, quoted:mysql) +01:01:01 p1235 ├considering: ' +01:01:01 p1235 ├───────text: ' +01:01:01 p1235 ├──expanding: net-mysql;select * from them where id='${quote_mysql:$local_part}' +01:01:01 p1235 ╰─────result: net-mysql;select * from them where id='c' +01:01:01 p1235 ╰──(tainted, quoted:mysql) +01:01:01 p1235 host in "net-mysql;select * from them where id='c'"? +01:01:01 p1235 list element: net-mysql;select * from them where id='c' +01:01:01 p1235 search_open: mysql "NULL" +01:01:01 p1235 cached open +01:01:01 p1235 search_find: file="NULL" +01:01:01 p1235 key="select * from them where id='c'" partial=-1 affix=NULL starflags=0 opts=NULL +01:01:01 p1235 LRU list: +01:01:01 p1235 internal_search_find: file="NULL" +01:01:01 p1235 type=mysql key="select * from them where id='c'" opts=NULL +01:01:01 p1235 database lookup required for select * from them where id='c' +01:01:01 p1235 (tainted, quoted:mysql) +01:01:01 p1235 MySQL query: "select * from them where id='c'" opts 'NULL' +01:01:01 p1235 MYSQL using cached connection for 127.0.0.1:PORT_N/test/root +01:01:01 p1235 MYSQL: no data found +01:01:01 p1235 creating new cache entry +01:01:01 p1235 lookup failed +01:01:01 p1235 host in "net-mysql;select * from them where id='c'"? no (end of list) +01:01:01 p1235 warn: condition test failed in ACL "check_recipient" +01:01:01 p1235 processing "warn" (TESTSUITE/test-config 45) +01:01:01 p1235 check set acl_m0 = FAIL4: hostlist +01:01:01 p1235 check hosts = <& net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='${quote_mysql:$local_part}' +01:01:01 p1235 ╭considering: <& net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='${quote_mysql:$local_part}' +01:01:01 p1235 ├───────text: <& net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id=' +01:01:01 p1235 ├considering: ${quote_mysql:$local_part}' +01:01:01 p1235 ╭considering: $local_part}' +01:01:01 p1235 ├──────value: c +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 ├considering: }' +01:01:01 p1235 ├──expanding: $local_part +01:01:01 p1235 ╰─────result: c +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 ├─────op-res: c +01:01:01 p1235 ╰──(tainted, quoted:mysql) +01:01:01 p1235 ├considering: ' +01:01:01 p1235 ├───────text: ' +01:01:01 p1235 ├──expanding: <& net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='${quote_mysql:$local_part}' +01:01:01 p1235 ╰─────result: <& net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c' +01:01:01 p1235 ╰──(tainted, quoted:mysql) +01:01:01 p1235 host in "<& net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'"? +01:01:01 p1235 list element: net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c' +01:01:01 p1235 search_open: mysql "NULL" +01:01:01 p1235 cached open +01:01:01 p1235 search_find: file="NULL" +01:01:01 p1235 key="servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'" partial=-1 affix=NULL starflags=0 opts=NULL +01:01:01 p1235 LRU list: +01:01:01 p1235 internal_search_find: file="NULL" +01:01:01 p1235 type=mysql key="servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'" opts=NULL +01:01:01 p1235 database lookup required for servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c' +01:01:01 p1235 (tainted, quoted:mysql) +01:01:01 p1235 MySQL query: "servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'" opts 'NULL' +01:01:01 p1235 LOG: MAIN +01:01:01 p1235 Exim configuration error in line 89 of TESTSUITE/test-config: +01:01:01 p1235 WARNING: obsolete syntax used for lookup +01:01:01 p1235 lookup deferred: MySQL server "127.0.0.1:PORT_N/test" is tainted +01:01:01 p1235 host in "<& net-mysql;servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'"? list match deferred for net-mysql;servers=127.0.0.1::1223/test/root/pass; select * from them where id='c' +01:01:01 p1235 warn: condition test deferred in ACL "check_recipient" +01:01:01 p1235 LOG: MAIN +01:01:01 p1235 H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: MySQL server "127.0.0.1:PORT_N/test" is tainted +01:01:01 p1235 processing "warn" (TESTSUITE/test-config 50) +01:01:01 p1235 check set acl_m0 = FAIL5: hostlist +01:01:01 p1235 check hosts = <& net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='${quote_mysql:$local_part}' +01:01:01 p1235 ╭considering: <& net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='${quote_mysql:$local_part}' +01:01:01 p1235 ├───────text: <& net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id=' +01:01:01 p1235 ├considering: ${quote_mysql:$local_part}' +01:01:01 p1235 ╭considering: $local_part}' +01:01:01 p1235 ├──────value: c +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 ├considering: }' +01:01:01 p1235 ├──expanding: $local_part +01:01:01 p1235 ╰─────result: c +01:01:01 p1235 ╰──(tainted) +01:01:01 p1235 ├─────op-res: c +01:01:01 p1235 ╰──(tainted, quoted:mysql) +01:01:01 p1235 ├considering: ' +01:01:01 p1235 ├───────text: ' +01:01:01 p1235 ├──expanding: <& net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='${quote_mysql:$local_part}' +01:01:01 p1235 ╰─────result: <& net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c' +01:01:01 p1235 ╰──(tainted, quoted:mysql) +01:01:01 p1235 host in "<& net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'"? +01:01:01 p1235 list element: net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c' +01:01:01 p1235 search_open: mysql "NULL" +01:01:01 p1235 cached open +01:01:01 p1235 search_find: file="NULL" +01:01:01 p1235 key=" select * from them where id='c'" partial=-1 affix=NULL starflags=0 opts="servers=127.0.0.1::PORT_N/test/root/pass" +01:01:01 p1235 LRU list: +01:01:01 p1235 internal_search_find: file="NULL" +01:01:01 p1235 type=mysql key=" select * from them where id='c'" opts="servers=127.0.0.1::PORT_N/test/root/pass" +01:01:01 p1235 database lookup required for select * from them where id='c' +01:01:01 p1235 (tainted, quoted:mysql) +01:01:01 p1235 MySQL query: " select * from them where id='c'" opts 'servers=127.0.0.1::PORT_N/test/root/pass' +01:01:01 p1235 lookup deferred: MySQL server "127.0.0.1:PORT_N/test" is tainted +01:01:01 p1235 host in "<& net-mysql,servers=127.0.0.1::PORT_N/test/root/pass; select * from them where id='c'"? list match deferred for net-mysql,servers=127.0.0.1::1223/test/root/pass; select * from them where id='c' +01:01:01 p1235 warn: condition test deferred in ACL "check_recipient" +01:01:01 p1235 LOG: MAIN +01:01:01 p1235 H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: MySQL server "127.0.0.1:PORT_N/test" is tainted +01:01:01 p1235 processing "accept" (TESTSUITE/test-config 53) +01:01:01 p1235 check domains = +local_domains +01:01:01 p1235 d in "+local_domains"? +01:01:01 p1235 list element: +local_domains +01:01:01 p1235 start sublist local_domains +01:01:01 p1235 d in "@"? +01:01:01 p1235 ╎list element: @ +01:01:01 p1235 d in "@"? no (end of list) +01:01:01 p1235 end sublist local_domains +01:01:01 p1235 d in "+local_domains"? no (end of list) +01:01:01 p1235 accept: condition test failed in ACL "check_recipient" +01:01:01 p1235 processing "accept" (TESTSUITE/test-config 56) +01:01:01 p1235 check hosts = +relay_hosts +01:01:01 p1235 host in "+relay_hosts"? +01:01:01 p1235 list element: +relay_hosts +01:01:01 p1235 start sublist relay_hosts +01:01:01 p1235 ╎╭considering: net-mysql;select * from them where id='$sender_host_address' +01:01:01 p1235 ╎├───────text: net-mysql;select * from them where id=' +01:01:01 p1235 ╎├considering: $sender_host_address' +01:01:01 p1235 ╎├──────value: 10.0.0.0 +01:01:01 p1235 ╎├considering: ' +01:01:01 p1235 ╎├───────text: ' +01:01:01 p1235 ╎├──expanding: net-mysql;select * from them where id='$sender_host_address' +01:01:01 p1235 ╎╰─────result: net-mysql;select * from them where id='10.0.0.0' +01:01:01 p1235 host in "net-mysql;select * from them where id='10.0.0.0'"? +01:01:01 p1235 ╎list element: net-mysql;select * from them where id='10.0.0.0' +01:01:01 p1235 ╎search_open: mysql "NULL" +01:01:01 p1235 ╎ cached open +01:01:01 p1235 ╎search_find: file="NULL" +01:01:01 p1235 ╎ key="select * from them where id='10.0.0.0'" partial=-1 affix=NULL starflags=0 opts=NULL +01:01:01 p1235 ╎LRU list: +01:01:01 p1235 ╎internal_search_find: file="NULL" +01:01:01 p1235 ╎ type=mysql key="select * from them where id='10.0.0.0'" opts=NULL +01:01:01 p1235 ╎database lookup required for select * from them where id='10.0.0.0' +01:01:01 p1235 ╎MySQL query: "select * from them where id='10.0.0.0'" opts 'NULL' +01:01:01 p1235 ╎MYSQL using cached connection for 127.0.0.1:PORT_N/test/root +01:01:01 p1235 ╎MYSQL: no data found +01:01:01 p1235 ╎creating new cache entry +01:01:01 p1235 ╎lookup failed +01:01:01 p1235 host in "net-mysql;select * from them where id='10.0.0.0'"? no (end of list) +01:01:01 p1235 end sublist relay_hosts +01:01:01 p1235 host in "+relay_hosts"? no (end of list) +01:01:01 p1235 accept: condition test failed in ACL "check_recipient" +01:01:01 p1235 processing "deny" (TESTSUITE/test-config 57) +01:01:01 p1235 message: relay not permitted +01:01:01 p1235 deny: condition test succeeded in ACL "check_recipient" +01:01:01 p1235 end of ACL "check_recipient": DENY +01:01:01 p1235 SMTP>> 550 relay not permitted +01:01:01 p1235 LOG: MAIN REJECT +01:01:01 p1235 H=(test) [10.0.0.0] F= rejected RCPT : relay not permitted +01:01:01 p1235 SMTP<< quit +01:01:01 p1235 try option acl_smtp_quit +01:01:01 p1235 SMTP>> 221 myhost.test.ex closing connection +01:01:01 p1235 LOG: smtp_connection MAIN +01:01:01 p1235 SMTP connection from (test) [10.0.0.0] D=qqs closed by QUIT +01:01:01 p1235 search_tidyup called +01:01:01 p1235 close MYSQL connection: 127.0.0.1:PORT_N/test/root +01:01:01 p1235 >>>>>>>>>>>>>>>> Exim pid=p1235 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>> Exim version x.yz .... changed uid/gid: forcing real = effective uid=uuuu gid=CALLER_GID pid=p1236 @@ -530,7 +766,7 @@ P Received: from CALLER by myhost.test.ex with local (Exim x.yz) for ph10@myhost.test.ex; Tue, 2 Mar 1999 09:44:33 +0000 using ACL "check_notsmtp" -processing "accept" (TESTSUITE/test-config 58) +processing "accept" (TESTSUITE/test-config 60) check set acl_m_qtest = ${quote_mysql:$recipients} = ph10@myhost.test.ex accept: condition test succeeded in ACL "check_notsmtp" @@ -609,7 +845,7 @@ processing address_data database lookup required for select name from them where id='ph10' limit 1 (tainted) LOG: MAIN PANIC - tainted search query is not properly quoted (router r1, TESTSUITE/test-config 66): select name from them where id='ph10' limit 1 + tainted search query is not properly quoted (router r1, TESTSUITE/test-config 68): select name from them where id='ph10' limit 1 search_type NN (mysql) quoting -1 (none) MySQL query: "select name from them where id='ph10' limit 1" opts 'NULL' MYSQL using cached connection for 127.0.0.1:PORT_N/test/root @@ -658,7 +894,7 @@ appendfile transport entered database lookup required for select id from them where id='ph10' (tainted) LOG: MAIN - tainted search query is not properly quoted (transport t1, TESTSUITE/test-config 80): select id from them where id='ph10' + tainted search query is not properly quoted (transport t1, TESTSUITE/test-config 82): select id from them where id='ph10' search_type NN (mysql) quoting -1 (none) MySQL query: "select id from them where id='ph10'" opts 'NULL' MYSQL new connection: host=127.0.0.1 port=PORT_N socket=NULL database=test user=root diff --git a/test/stderr/2620 b/test/stderr/2620 index bafb175df..4b4bd1ccf 100644 --- a/test/stderr/2620 +++ b/test/stderr/2620 @@ -1,7 +1,6 @@ WARNING: enabling "trust" authentication for local connections -You can change this by editing pg_hba.conf or using the option -A, or ---auth-local and --auth-host, the next time you run initdb. +initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. Exim version x.yz .... configuration file is TESTSUITE/test-config admin user @@ -134,6 +133,9 @@ dropping to exim gid; retaining priv uid type=pgsql key="servers=x:localhost; select name from them where id='ph10';" opts=NULL database lookup required for servers=x:localhost; select name from them where id='ph10'; PostgreSQL query: "servers=x:localhost; select name from them where id='ph10';" opts 'NULL' +LOG: MAIN + Exim configuration error in line 78 of TESTSUITE/test-config: + WARNING: obsolete syntax used for lookup lookup deferred: PostgreSQL server "x" not found in pgsql_servers search_open: pgsql "NULL" cached open @@ -144,6 +146,9 @@ dropping to exim gid; retaining priv uid type=pgsql key="servers=localhost::PORT_N:x; select name from them where id='ph10';" opts=NULL database lookup required for servers=localhost::PORT_N:x; select name from them where id='ph10'; PostgreSQL query: "servers=localhost::PORT_N:x; select name from them where id='ph10';" opts 'NULL' +LOG: MAIN + Exim configuration error in line 78 of TESTSUITE/test-config: + WARNING: obsolete syntax used for lookup PGSQL using cached connection for localhost:PORT_N/test/CALLER creating new cache entry lookup yielded: Philip Hazel @@ -156,6 +161,9 @@ dropping to exim gid; retaining priv uid type=pgsql key="servers=localhost::PORT_N/test/CALLER/:x; select name from them where id='ph10';" opts=NULL database lookup required for servers=localhost::PORT_N/test/CALLER/:x; select name from them where id='ph10'; PostgreSQL query: "servers=localhost::PORT_N/test/CALLER/:x; select name from them where id='ph10';" opts 'NULL' +LOG: MAIN + Exim configuration error in line 78 of TESTSUITE/test-config: + WARNING: obsolete syntax used for lookup PGSQL using cached connection for localhost:PORT_N/test/CALLER creating new cache entry lookup yielded: Philip Hazel @@ -168,6 +176,9 @@ dropping to exim gid; retaining priv uid type=pgsql key="servers=(TESTSUITE/pgsql/.s.PGSQL.1223)/test/CALLER/:x; select name from them where id='ph10';" opts=NULL database lookup required for servers=(TESTSUITE/pgsql/.s.PGSQL.1223)/test/CALLER/:x; select name from them where id='ph10'; PostgreSQL query: "servers=(TESTSUITE/pgsql/.s.PGSQL.1223)/test/CALLER/:x; select name from them where id='ph10';" opts 'NULL' +LOG: MAIN + Exim configuration error in line 78 of TESTSUITE/test-config: + WARNING: obsolete syntax used for lookup PGSQL new connection: socket=TESTSUITE/pgsql/.s.PGSQL.1223 database=test user=CALLER creating new cache entry lookup yielded: Philip Hazel @@ -334,10 +345,13 @@ check set acl_m0 = ok: ${lookup pgsql,servers=localhost::PORT_N {select nam database lookup required for servers=localhost::PORT_N/test/CALLER/; select name from them where id = 'c' (tainted, quoted:pgsql) PostgreSQL query: "servers=localhost::PORT_N/test/CALLER/; select name from them where id = 'c'" opts 'NULL' - lookup deferred: PostgreSQL server "localhost:PORT_N/test/CALLER/" is tainted +LOG: MAIN + Exim configuration error in line 78 of TESTSUITE/test-config: + WARNING: obsolete syntax used for lookup + lookup deferred: PostgreSQL server "localhost:PORT_N/test" is tainted warn: condition test deferred in ACL "check_recipient" LOG: MAIN - H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: PostgreSQL server "localhost:PORT_N/test/CALLER/" is tainted + H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: PostgreSQL server "localhost:PORT_N/test" is tainted processing "warn" (TESTSUITE/test-config 41) check set acl_m0 = ok: hostlist check hosts = net-pgsql;select * from them where id='${quote_pgsql:$local_part}' @@ -374,11 +388,14 @@ host in "<& net-pgsql;servers=localhost::PORT_N/test/CALLER/; select * from them database lookup required for servers=localhost::PORT_N/test/CALLER/; select * from them where id='c' (tainted, quoted:pgsql) PostgreSQL query: "servers=localhost::PORT_N/test/CALLER/; select * from them where id='c'" opts 'NULL' - lookup deferred: PostgreSQL server "localhost:PORT_N/test/CALLER/" is tainted +LOG: MAIN + Exim configuration error in line 78 of TESTSUITE/test-config: + WARNING: obsolete syntax used for lookup + lookup deferred: PostgreSQL server "localhost:PORT_N/test" is tainted host in "<& net-pgsql;servers=localhost::PORT_N/test/CALLER/; select * from them where id='c'"? list match deferred for net-pgsql;servers=localhost::1223/test/CALLER/; select * from them where id='c' warn: condition test deferred in ACL "check_recipient" LOG: MAIN - H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: PostgreSQL server "localhost:PORT_N/test/CALLER/" is tainted + H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: PostgreSQL server "localhost:PORT_N/test" is tainted processing "warn" (TESTSUITE/test-config 49) check set acl_m0 = FAIL: hostlist check hosts = <& net-pgsql,servers=localhost::PORT_N/test/CALLER/; select * from them where id='${quote_pgsql:$local_part}' @@ -394,11 +411,11 @@ host in "<& net-pgsql,servers=localhost::PORT_N/test/CALLER/; select * from them database lookup required for select * from them where id='c' (tainted, quoted:pgsql) PostgreSQL query: " select * from them where id='c'" opts 'servers=localhost::PORT_N/test/CALLER/' - lookup deferred: PostgreSQL server "localhost:PORT_N/test/CALLER/" is tainted + lookup deferred: PostgreSQL server "localhost:PORT_N/test" is tainted host in "<& net-pgsql,servers=localhost::PORT_N/test/CALLER/; select * from them where id='c'"? list match deferred for net-pgsql,servers=localhost::1223/test/CALLER/; select * from them where id='c' warn: condition test deferred in ACL "check_recipient" LOG: MAIN - H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: PostgreSQL server "localhost:PORT_N/test/CALLER/" is tainted + H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: PostgreSQL server "localhost:PORT_N/test" is tainted processing "accept" (TESTSUITE/test-config 52) check domains = +local_domains d in "+local_domains"? @@ -523,10 +540,13 @@ check set acl_m0 = ok: ${lookup pgsql,servers=localhost::PORT_N {select nam database lookup required for servers=localhost::PORT_N/test/CALLER/; select name from them where id = 'c' (tainted, quoted:pgsql) PostgreSQL query: "servers=localhost::PORT_N/test/CALLER/; select name from them where id = 'c'" opts 'NULL' - lookup deferred: PostgreSQL server "localhost:PORT_N/test/CALLER/" is tainted +LOG: MAIN + Exim configuration error in line 78 of TESTSUITE/test-config: + WARNING: obsolete syntax used for lookup + lookup deferred: PostgreSQL server "localhost:PORT_N/test" is tainted warn: condition test deferred in ACL "check_recipient" LOG: MAIN - H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: PostgreSQL server "localhost:PORT_N/test/CALLER/" is tainted + H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: PostgreSQL server "localhost:PORT_N/test" is tainted processing "warn" (TESTSUITE/test-config 41) check set acl_m0 = ok: hostlist check hosts = net-pgsql;select * from them where id='${quote_pgsql:$local_part}' @@ -558,11 +578,14 @@ host in "<& net-pgsql;servers=localhost::PORT_N/test/CALLER/; select * from them database lookup required for servers=localhost::PORT_N/test/CALLER/; select * from them where id='c' (tainted, quoted:pgsql) PostgreSQL query: "servers=localhost::PORT_N/test/CALLER/; select * from them where id='c'" opts 'NULL' - lookup deferred: PostgreSQL server "localhost:PORT_N/test/CALLER/" is tainted +LOG: MAIN + Exim configuration error in line 78 of TESTSUITE/test-config: + WARNING: obsolete syntax used for lookup + lookup deferred: PostgreSQL server "localhost:PORT_N/test" is tainted host in "<& net-pgsql;servers=localhost::PORT_N/test/CALLER/; select * from them where id='c'"? list match deferred for net-pgsql;servers=localhost::1223/test/CALLER/; select * from them where id='c' warn: condition test deferred in ACL "check_recipient" LOG: MAIN - H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: PostgreSQL server "localhost:PORT_N/test/CALLER/" is tainted + H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: PostgreSQL server "localhost:PORT_N/test" is tainted processing "warn" (TESTSUITE/test-config 49) check set acl_m0 = FAIL: hostlist check hosts = <& net-pgsql,servers=localhost::PORT_N/test/CALLER/; select * from them where id='${quote_pgsql:$local_part}' @@ -578,11 +601,11 @@ host in "<& net-pgsql,servers=localhost::PORT_N/test/CALLER/; select * from them database lookup required for select * from them where id='c' (tainted, quoted:pgsql) PostgreSQL query: " select * from them where id='c'" opts 'servers=localhost::PORT_N/test/CALLER/' - lookup deferred: PostgreSQL server "localhost:PORT_N/test/CALLER/" is tainted + lookup deferred: PostgreSQL server "localhost:PORT_N/test" is tainted host in "<& net-pgsql,servers=localhost::PORT_N/test/CALLER/; select * from them where id='c'"? list match deferred for net-pgsql,servers=localhost::1223/test/CALLER/; select * from them where id='c' warn: condition test deferred in ACL "check_recipient" LOG: MAIN - H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: PostgreSQL server "localhost:PORT_N/test/CALLER/" is tainted + H=(test) [10.0.0.0] Warning: ACL "warn" statement skipped: condition test deferred: PostgreSQL server "localhost:PORT_N/test" is tainted processing "accept" (TESTSUITE/test-config 52) check domains = +local_domains d in "+local_domains"? diff --git a/test/stdout/2620 b/test/stdout/2620 index 13020359a..f0796ae6f 100644 --- a/test/stdout/2620 +++ b/test/stdout/2620 @@ -25,6 +25,13 @@ Success. You can now start the database server using: pg_ctl: server is running (PID: p1234) POSTGRES "-D" "TESTSUITE/pgsql/data" "-p" "1223" "-k" "TESTSUITE/pgsql" +CREATE TABLE +INSERT 0 1 +INSERT 0 1 +INSERT 0 1 +INSERT 0 1 +INSERT 0 1 +INSERT 0 1 INSERT 0 1 > Philip Hazel > Philip Hazel