From 0de9945258c2e7910c35f715caf07c5e9270aa1b Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Tue, 12 May 2020 23:10:08 +0100 Subject: smtp transport: message_linelength_limit option. Bug 1684 --- test/stdout/0572 | 1 + test/stdout/0588 | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 test/stdout/0588 (limited to 'test/stdout') diff --git a/test/stdout/0572 b/test/stdout/0572 index d66f928d4..fd77c72b7 100644 --- a/test/stdout/0572 +++ b/test/stdout/0572 @@ -64,6 +64,7 @@ interface = ip4.ip4.ip4.ip4 keepalive no_lmtp_ignore_quota max_rcpt = 100 +message_linelength_limit = 998 multi_domain port = 1224 protocol = smtp diff --git a/test/stdout/0588 b/test/stdout/0588 new file mode 100644 index 000000000..994f04e2e --- /dev/null +++ b/test/stdout/0588 @@ -0,0 +1,40 @@ +Connecting to 127.0.0.1 port 1225 ... connected +??? 220 +<<< 220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +>>> HELO test +??? 250 +<<< 250 the.local.host.name Hello test [127.0.0.1] +>>> MAIL FROM: +??? 250 +<<< 250 OK +>>> RCPT TO: +??? 250 +<<< 250 Accepted +>>> DATA +??? 354 +<<< 354 Enter message, ending with "." on a line by itself +>>> Subject: should be good +>>> +>>> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +>>> . +??? 250 +<<< 250 OK id=10HmaX-0005vi-00 +>>> MAIL FROM: +??? 250 +<<< 250 OK +>>> RCPT TO: +??? 250 +<<< 250 Accepted +>>> DATA +??? 354 +<<< 354 Enter message, ending with "." on a line by itself +>>> Subject: should be bad +>>> +>>> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +>>> . +??? 250 +<<< 250 OK id=10HmaY-0005vi-00 +>>> QUIT +??? 221 +<<< 221 the.local.host.name closing connection +End of script -- cgit v1.2.3 From faeb80dc19bd3cd02ca367090382e58151bfd13a Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Wed, 13 May 2020 12:15:57 +0100 Subject: Debug: quieten DSN --- src/src/transports/smtp.c | 1 - test/stderr/0022 | 3 - test/stderr/0044 | 1 - test/stderr/0092 | 1 - test/stderr/0094 | 1 - test/stderr/0264 | 6 - test/stderr/0275 | 3 - test/stderr/0278 | 3 - test/stderr/0294 | 10 - test/stderr/0303 | 2 - test/stderr/0361 | 3 - test/stderr/0362 | 1 - test/stderr/0371 | 1 - test/stderr/0381 | 1 - test/stderr/0386 | 8 - test/stderr/0391 | 1 - test/stderr/0398 | 2 - test/stderr/0402 | 7 - test/stderr/0403 | 3 - test/stderr/0404 | 613 ---------------------------------------------- test/stderr/0408 | 3 - test/stderr/0464 | 1 - test/stderr/0465 | 5 - test/stderr/0471 | 3 - test/stderr/0479 | 2 - test/stderr/0487 | 4 - test/stderr/0575 | 1 - test/stderr/2600 | 5 - test/stderr/2610 | 3 - test/stderr/2620 | 3 - test/stderr/5004 | 3 - test/stderr/5005 | 18 -- test/stderr/5006 | 3 - test/stdout/0574 | 3 - 34 files changed, 728 deletions(-) (limited to 'test/stdout') diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c index 12a199464..3d41a6767 100644 --- a/src/src/transports/smtp.c +++ b/src/src/transports/smtp.c @@ -4528,7 +4528,6 @@ DEBUG(D_transport) /* Check the restrictions on line length */ -debug_printf("%s %d: max_received_linelength %u message_linelength_limit %u\n", __FUNCTION__, __LINE__, max_received_linelength, ob->message_linelength_limit); if (max_received_linelength > ob->message_linelength_limit) { struct timeval now; diff --git a/test/stderr/0022 b/test/stderr/0022 index 902fa4cd5..510c5499a 100644 --- a/test/stderr/0022 +++ b/test/stderr/0022 @@ -36,7 +36,6 @@ processing "accept" (TESTSUITE/test-config 30) accept: condition test succeeded in ACL "warn_empty" end of ACL "warn_empty": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< data SMTP>> 354 Enter message, ending with "." on a line by itself search_tidyup called @@ -104,7 +103,6 @@ processing "accept" (TESTSUITE/test-config 34) accept: condition test succeeded in ACL "warn_log" end of ACL "warn_log": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< data SMTP>> 354 Enter message, ending with "." on a line by itself search_tidyup called @@ -170,7 +168,6 @@ processing "accept" (TESTSUITE/test-config 38) accept: condition test succeeded in ACL "warn_user" end of ACL "warn_user": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< data SMTP>> 354 Enter message, ending with "." on a line by itself search_tidyup called diff --git a/test/stderr/0044 b/test/stderr/0044 index 34efe6144..5c6e9a99f 100644 --- a/test/stderr/0044 +++ b/test/stderr/0044 @@ -55,7 +55,6 @@ postmaster@exim.test.ex in "postmaster@exim.test.ex"? yes (matched "postmaster@e accept: condition test succeeded in ACL "check_recipient" end of ACL "check_recipient": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< rcpt to:list@exim.test.ex using ACL "check_recipient" processing "accept" (TESTSUITE/test-config 19) diff --git a/test/stderr/0092 b/test/stderr/0092 index e412e874f..b97eed8fd 100644 --- a/test/stderr/0092 +++ b/test/stderr/0092 @@ -102,7 +102,6 @@ test.ex in "+local_domains"? yes (matched "+local_domains") accept: condition test succeeded in ACL "check_recipient" end of ACL "check_recipient": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< data SMTP>> 354 Enter message, ending with "." on a line by itself search_tidyup called diff --git a/test/stderr/0094 b/test/stderr/0094 index c96adbdea..d2b8cc4bc 100644 --- a/test/stderr/0094 +++ b/test/stderr/0094 @@ -125,7 +125,6 @@ test.ex in "+local_domains"? yes (matched "+local_domains") accept: condition test succeeded in ACL "check_recipient" end of ACL "check_recipient": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< rcpt to: using ACL "check_recipient" processing "accept" (TESTSUITE/test-config 23) diff --git a/test/stderr/0264 b/test/stderr/0264 index c7d81f560..d8e96191c 100644 --- a/test/stderr/0264 +++ b/test/stderr/0264 @@ -2,9 +2,6 @@ Exim version x.yz .... configuration file is TESTSUITE/test-config admin user Writing spool header file: TESTSUITE/spool//input//hdr.10HmbJ-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmbJ-0005vi-00-H LOG: MAIN @@ -95,9 +92,6 @@ time on queue = 0s id 10HmbJ-0005vi-00 addr rz.b@outside warning counts: required 0 done 0 delivery deferred: update_spool=1 header_rewritten=0 Writing spool header file: TESTSUITE/spool//input//hdr.10HmbJ-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmbJ-0005vi-00-H end delivery of 10HmbJ-0005vi-00 diff --git a/test/stderr/0275 b/test/stderr/0275 index d8fc7e6cb..58855a5a0 100644 --- a/test/stderr/0275 +++ b/test/stderr/0275 @@ -135,9 +135,6 @@ P Received: from CALLER by myhost.test.ex with local (Exim x.yz) id 10HmaX-0005vi-00 for userx@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H Size of headers = sss diff --git a/test/stderr/0278 b/test/stderr/0278 index d00bc9f00..60abd2a29 100644 --- a/test/stderr/0278 +++ b/test/stderr/0278 @@ -94,9 +94,6 @@ P Received: from CALLER by myhost.test.ex with local (Exim x.yz) id 10HmaX-0005vi-00 for CALLER@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H Size of headers = sss diff --git a/test/stderr/0294 b/test/stderr/0294 index 47aec2f71..cd0424eb8 100644 --- a/test/stderr/0294 +++ b/test/stderr/0294 @@ -14,23 +14,18 @@ log directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100 SMTP>> 250 OK SMTP<< rcpt to: SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< rcpt to: rate limit RCPT: delay 0.25 sec SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< rcpt to: rate limit RCPT: delay 0.263 sec SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< rcpt to: rate limit RCPT: delay 0.276 sec SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< rcpt to: rate limit RCPT: delay 0.289 sec SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< data SMTP>> 354 Enter message, ending with "." on a line by itself >>Headers received: @@ -61,7 +56,6 @@ log directory space = nnnnnK inodes = nnnnn check_space = 10240K inodes = 100 SMTP>> 250 OK SMTP<< rcpt to: SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< data SMTP>> 354 Enter message, ending with "." on a line by itself >>Headers received: @@ -126,7 +120,6 @@ processing "accept" (TESTSUITE/test-config 35) accept: condition test succeeded in inline ACL end of inline ACL: ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< rcpt to: host in smtp_ratelimit_hosts? no (end of list) processing "deny" (TESTSUITE/test-config 35) @@ -137,7 +130,6 @@ processing "accept" (TESTSUITE/test-config 35) accept: condition test succeeded in inline ACL end of inline ACL: ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< quit SMTP>> 221 myhost.test.ex closing connection LOG: smtp_connection MAIN @@ -174,7 +166,6 @@ processing "accept" (TESTSUITE/test-config 35) accept: condition test succeeded in inline ACL end of inline ACL: ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< rcpt to: host in smtp_ratelimit_hosts? yes (matched "V4NET.9.8.7") rate limit RCPT: delay 0.25 sec @@ -186,7 +177,6 @@ processing "accept" (TESTSUITE/test-config 35) accept: condition test succeeded in inline ACL end of inline ACL: ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< quit SMTP>> 221 myhost.test.ex closing connection LOG: smtp_connection MAIN diff --git a/test/stderr/0303 b/test/stderr/0303 index ad3342ba9..5af9bac7f 100644 --- a/test/stderr/0303 +++ b/test/stderr/0303 @@ -85,7 +85,6 @@ processing "accept" (TESTSUITE/test-config 12) accept: condition test succeeded in inline ACL end of inline ACL: ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< data SMTP>> 354 Enter message, ending with "." on a line by itself search_tidyup called @@ -159,7 +158,6 @@ processing "accept" (TESTSUITE/test-config 12) accept: condition test succeeded in inline ACL end of inline ACL: ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< data SMTP>> 354 Enter message, ending with "." on a line by itself search_tidyup called diff --git a/test/stderr/0361 b/test/stderr/0361 index 02c4e0a57..a5d701784 100644 --- a/test/stderr/0361 +++ b/test/stderr/0361 @@ -41,9 +41,6 @@ P Received: from CALLER by the.local.host.name with local (Exim x.yz) id 10HmaY-0005vi-00 for kilos@recurse.test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaY-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaY-0005vi-00-H Size of headers = sss diff --git a/test/stderr/0362 b/test/stderr/0362 index 79725a0fa..f59a01c78 100644 --- a/test/stderr/0362 +++ b/test/stderr/0362 @@ -79,7 +79,6 @@ routed by r2 router accept: condition test succeeded in ACL "check_rcpt" end of ACL "check_rcpt": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< quit SMTP>> 221 the.local.host.name closing connection LOG: smtp_connection MAIN diff --git a/test/stderr/0371 b/test/stderr/0371 index bc5b28b62..d24df68e7 100644 --- a/test/stderr/0371 +++ b/test/stderr/0371 @@ -70,7 +70,6 @@ check set acl_c0 = $acl_c0; rcpt accept: condition test succeeded in ACL "rcpt" end of ACL "rcpt": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< data SMTP>> 354 Enter message, ending with "." on a line by itself search_tidyup called diff --git a/test/stderr/0381 b/test/stderr/0381 index 648d9f6c6..0edf18cf5 100644 --- a/test/stderr/0381 +++ b/test/stderr/0381 @@ -73,7 +73,6 @@ processing "accept" (TESTSUITE/test-config 21) accept: condition test succeeded in ACL "check_rcpt" end of ACL "check_rcpt": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< quit SMTP>> 221 myhost.test.ex closing connection LOG: smtp_connection MAIN diff --git a/test/stderr/0386 b/test/stderr/0386 index 1c6571931..44235a30d 100644 --- a/test/stderr/0386 +++ b/test/stderr/0386 @@ -211,7 +211,6 @@ created log directory TESTSUITE/spool/log accept: condition test succeeded in ACL "chk_rcpt" end of ACL "chk_rcpt": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< data SMTP>> 354 Enter message, ending with "." on a line by itself search_tidyup called @@ -233,9 +232,6 @@ P Received: from [V4NET.11.12.13] (ident=CALLER) X-Warning: This is a test blacklisting message >> Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: <2@b> errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H Size of headers = sss @@ -404,7 +400,6 @@ LOG: MAIN accept: condition test succeeded in ACL "chk_rcpt" end of ACL "chk_rcpt": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< data SMTP>> 354 Enter message, ending with "." on a line by itself search_tidyup called @@ -426,9 +421,6 @@ P Received: from [V4NET.11.12.13] (ident=CALLER) X-Warning: This is a test blacklisting message >> Writing spool header file: TESTSUITE/spool//input//hdr.10HmaY-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: <2@b> errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaY-0005vi-00-H Size of headers = sss diff --git a/test/stderr/0391 b/test/stderr/0391 index 5ae0031b6..cd8405814 100644 --- a/test/stderr/0391 +++ b/test/stderr/0391 @@ -59,7 +59,6 @@ sender U@W.x.y verified ok as U@x.y accept: condition test succeeded in ACL "acl_rcpt" end of ACL "acl_rcpt": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< quit SMTP>> 221 myhost.test.ex closing connection LOG: smtp_connection MAIN diff --git a/test/stderr/0398 b/test/stderr/0398 index 067b3e467..4756eb62f 100644 --- a/test/stderr/0398 +++ b/test/stderr/0398 @@ -175,7 +175,6 @@ qq@remote in "qq@remote"? yes (matched "qq@remote") accept: condition test succeeded in ACL "rcpt" end of ACL "rcpt": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< rcpt to: using ACL "rcpt" processing "deny" (TESTSUITE/test-config 19) @@ -258,7 +257,6 @@ qq@remote in "qq@remote"? yes (matched "qq@remote") accept: condition test succeeded in ACL "rcpt" end of ACL "rcpt": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< quit SMTP>> 221 mail.test.ex closing connection LOG: smtp_connection MAIN diff --git a/test/stderr/0402 b/test/stderr/0402 index 671e32965..9fde73239 100644 --- a/test/stderr/0402 +++ b/test/stderr/0402 @@ -156,17 +156,10 @@ P Received: from CALLER by mail.test.ex with local (Exim x.yz) ├──expanding: ${tod_full} ╰─────result: Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H Size of headers = sss diff --git a/test/stderr/0403 b/test/stderr/0403 index 5d4223268..0c22cf8f5 100644 --- a/test/stderr/0403 +++ b/test/stderr/0403 @@ -34,9 +34,6 @@ P Received: from CALLER by mail.test.ex with local (Exim x.yz) id 10HmaX-0005vi-00 for userx@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H Size of headers = sss diff --git a/test/stderr/0404 b/test/stderr/0404 index b5bee4727..591df3cf9 100644 --- a/test/stderr/0404 +++ b/test/stderr/0404 @@ -133,9 +133,6 @@ P Received: from CALLER by mail.test.ex with local (Exim x.yz) id 10HmaX-0005vi-00 for userx@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H Size of headers = sss @@ -296,1223 +293,613 @@ Data file written for message 10HmaY-0005vi-00 P Received: from CALLER by mail.test.ex with local (Exim x.yz) id 10HmaY-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaY-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaY-0005vi-00-H Size of headers = sss diff --git a/test/stderr/0408 b/test/stderr/0408 index 761cede84..fb7c0d7ce 100644 --- a/test/stderr/0408 +++ b/test/stderr/0408 @@ -34,9 +34,6 @@ P Received: from CALLER by mail.test.ex with local (Exim x.yz) id 10HmaX-0005vi-00 for userx@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H Size of headers = sss diff --git a/test/stderr/0464 b/test/stderr/0464 index dc6639ecc..6ea3f3f97 100644 --- a/test/stderr/0464 +++ b/test/stderr/0464 @@ -167,7 +167,6 @@ processing "accept" (TESTSUITE/test-config 25) accept: condition test succeeded in ACL "rcpt" end of ACL "rcpt": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< quit SMTP>> 221 myhost.test.ex closing connection LOG: smtp_connection MAIN diff --git a/test/stderr/0465 b/test/stderr/0465 index c2c527068..3f4af9827 100644 --- a/test/stderr/0465 +++ b/test/stderr/0465 @@ -58,7 +58,6 @@ processing "accept" (TESTSUITE/test-config 22) accept: condition test succeeded in inline ACL end of inline ACL: ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< data SMTP>> 354 Enter message, ending with "." on a line by itself search_tidyup called @@ -85,9 +84,6 @@ check verify = header_syntax accept: condition test succeeded in ACL "check_data" end of ACL "check_data": ACCEPT Writing spool header file: TESTSUITE/spool//input//hdr.10HmaY-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaY-0005vi-00-H Size of headers = sss @@ -129,7 +125,6 @@ processing "accept" (TESTSUITE/test-config 22) accept: condition test succeeded in inline ACL end of inline ACL: ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< data SMTP>> 354 Enter message, ending with "." on a line by itself search_tidyup called diff --git a/test/stderr/0471 b/test/stderr/0471 index 258f36fd1..f4619a3e9 100644 --- a/test/stderr/0471 +++ b/test/stderr/0471 @@ -25376,9 +25376,6 @@ P Received: from CALLER by myhost.test.ex with local (Exim x.yz) id 10HmaX-0005vi-00 for r1@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H Size of headers = sss diff --git a/test/stderr/0479 b/test/stderr/0479 index 648c7ae1c..a8e7ca169 100644 --- a/test/stderr/0479 +++ b/test/stderr/0479 @@ -71,7 +71,6 @@ processing "accept" (TESTSUITE/test-config 18) accept: condition test succeeded in ACL "rcpt" end of ACL "rcpt": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< rcpt to: using ACL "rcpt" processing "require" (TESTSUITE/test-config 16) @@ -86,7 +85,6 @@ processing "accept" (TESTSUITE/test-config 18) accept: condition test succeeded in ACL "rcpt" end of ACL "rcpt": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< quit SMTP>> 221 the.local.host.name closing connection LOG: smtp_connection MAIN diff --git a/test/stderr/0487 b/test/stderr/0487 index 5287e5855..abe1d674b 100644 --- a/test/stderr/0487 +++ b/test/stderr/0487 @@ -36,7 +36,6 @@ processing "accept" (TESTSUITE/test-config 33) accept: condition test succeeded in inline ACL end of inline ACL: ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< data SMTP>> 354 Enter message, ending with "." on a line by itself search_tidyup called @@ -60,9 +59,6 @@ P Received: from CALLER (helo=x.y) id 10HmaX-0005vi-00 for userx@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H Size of headers = sss diff --git a/test/stderr/0575 b/test/stderr/0575 index 351f3ddf7..7e6ac1c3e 100644 --- a/test/stderr/0575 +++ b/test/stderr/0575 @@ -31,7 +31,6 @@ processing "accept" (TESTSUITE/test-config 13) accept: condition test succeeded in inline ACL end of inline ACL: ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< data SMTP>> 354 Enter message, ending with "." on a line by itself search_tidyup called diff --git a/test/stderr/2600 b/test/stderr/2600 index 627e47755..399fa0adb 100644 --- a/test/stderr/2600 +++ b/test/stderr/2600 @@ -253,7 +253,6 @@ host in "+relay_hosts"? yes (matched "+relay_hosts") accept: condition test succeeded in ACL "check_recipient" end of ACL "check_recipient": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< rcpt to: using ACL "check_recipient" processing "accept" (TESTSUITE/test-config 26) @@ -278,7 +277,6 @@ host in "+relay_hosts"? yes (matched "+relay_hosts") accept: condition test succeeded in ACL "check_recipient" end of ACL "check_recipient": ACCEPT SMTP>> 250 Accepted -DSN: orcpt: NULL flags: 0 SMTP<< quit SMTP>> 221 myhost.test.ex closing connection LOG: smtp_connection MAIN @@ -321,9 +319,6 @@ P Received: from CALLER by myhost.test.ex with local (Exim x.yz) id 10HmaX-0005vi-00 for userx@myhost.test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H Size of headers = sss diff --git a/test/stderr/2610 b/test/stderr/2610 index b8eda8542..39071aef5 100644 --- a/test/stderr/2610 +++ b/test/stderr/2610 @@ -421,9 +421,6 @@ P Received: from CALLER by myhost.test.ex with local (Exim x.yz) id 10HmaX-0005vi-00 for ph10@myhost.test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H Size of headers = sss diff --git a/test/stderr/2620 b/test/stderr/2620 index 2c378284b..8c610d87e 100644 --- a/test/stderr/2620 +++ b/test/stderr/2620 @@ -484,9 +484,6 @@ P Received: from CALLER by myhost.test.ex with local (Exim x.yz) id 10HmaX-0005vi-00 for CALLER@myhost.test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H Size of headers = sss diff --git a/test/stderr/5004 b/test/stderr/5004 index dde3a4883..0ec996f90 100644 --- a/test/stderr/5004 +++ b/test/stderr/5004 @@ -36,9 +36,6 @@ P Received: from CALLER by mail.test.ex with local (Exim x.yz) id 10HmaX-0005vi-00 for userx@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H Size of headers = sss diff --git a/test/stderr/5005 b/test/stderr/5005 index 4941a2981..9f230101e 100644 --- a/test/stderr/5005 +++ b/test/stderr/5005 @@ -34,9 +34,6 @@ P Received: from CALLER by myhost.test.ex with local (Exim x.yz) id 10HmaX-0005vi-00 for nofile@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H Size of headers = sss @@ -223,9 +220,6 @@ P Received: from CALLER by myhost.test.ex with local (Exim x.yz) id 10HmaY-0005vi-00 for userx@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaY-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaY-0005vi-00-H Size of headers = sss @@ -412,9 +406,6 @@ P Received: from CALLER by myhost.test.ex with local (Exim x.yz) id 10HmaZ-0005vi-00 for userx@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaZ-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaZ-0005vi-00-H Size of headers = sss @@ -562,9 +553,6 @@ Writing retry data for T:userx@test.ex end of retry processing delivery deferred: update_spool=1 header_rewritten=0 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaZ-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaZ-0005vi-00-H Size of headers = sss @@ -610,9 +598,6 @@ P Received: from CALLER by myhost.test.ex with local (Exim x.yz) id 10HmbA-0005vi-00 for userx@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmbA-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmbA-0005vi-00-H Size of headers = sss @@ -755,9 +740,6 @@ Writing retry data for T:userx@test.ex end of retry processing delivery deferred: update_spool=1 header_rewritten=0 Writing spool header file: TESTSUITE/spool//input//hdr.10HmbA-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmbA-0005vi-00-H Size of headers = sss diff --git a/test/stderr/5006 b/test/stderr/5006 index 309bd4055..71a696698 100644 --- a/test/stderr/5006 +++ b/test/stderr/5006 @@ -34,9 +34,6 @@ P Received: from CALLER by myhost.test.ex with local (Exim x.yz) id 10HmaX-0005vi-00 for userx@test.ex; Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H Size of headers = sss diff --git a/test/stdout/0574 b/test/stdout/0574 index d040970e1..449fd4cfe 100644 --- a/test/stdout/0574 +++ b/test/stdout/0574 @@ -37,9 +37,6 @@ end of ACL "chk_data": ACCEPT ├──expanding: ${tod_full} ╰─────result: Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.10HmaX-0005vi-00 -DSN: Write SPOOL: -dsn_envid NULL -DSN: Write SPOOL :-dsn_ret 0 -DSN: Flags: 0x0 DSN: **** SPOOL_OUT - address: errorsto: orcpt: dsn_flags: 0x0 Renaming spool header file: TESTSUITE/spool//input//10HmaX-0005vi-00-H Size of headers = sss -- cgit v1.2.3 From 3db72f4b639a64cacf152e4f7718a18581426b10 Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Sat, 16 May 2020 19:30:37 +0100 Subject: Lookups: cache=no_rd option. Bug 1751 --- doc/doc-docbook/spec.xfpt | 19 +++++++++++++ doc/doc-txt/NewStuff | 2 ++ src/src/search.c | 63 ++++++++++++++++++++++++++++-------------- test/scripts/2500-dsearch/2500 | 11 ++++++++ test/stderr/0002 | 2 ++ test/stderr/0085 | 5 ++++ test/stderr/0123 | 18 ++++++++++++ test/stderr/0387 | 32 +++++++++++++++++++++ test/stderr/0403 | 2 ++ test/stderr/0414 | 4 +++ test/stderr/0437 | 5 ++++ test/stderr/0464 | 2 ++ test/stderr/0471 | 5 ++++ test/stderr/0484 | 4 +++ test/stderr/2200 | 3 ++ test/stderr/2201 | 5 ++++ test/stderr/2202 | 1 + test/stderr/2600 | 13 +++++++++ test/stderr/2610 | 21 ++++++++++++++ test/stderr/2620 | 19 +++++++++++++ test/stderr/3201 | 2 ++ test/stderr/3212 | 4 +++ test/stdout/2500 | 11 ++++++++ 23 files changed, 232 insertions(+), 21 deletions(-) (limited to 'test/stdout') diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt index b4d4232e0..a1f361339 100644 --- a/doc/doc-docbook/spec.xfpt +++ b/doc/doc-docbook/spec.xfpt @@ -6668,6 +6668,18 @@ If the value of &$sender_host_address$& is 192.168.5.6, expansion of the first &%domains%& setting above generates the second setting, which therefore causes a second lookup to occur. +.new +The lookup type may optionally be followed by a comma +and a comma-separated list of options. +Each option is a &"name=value"& pair. +Whether an option is meaningful depands on the lookup type. + +All lookups support the option &"cache=no_rd"&. +If this is given then the cache that Exim manages for lookup results +is not checked before diong the lookup. +The result of the lookup is still written to the cache. +.wen + The rest of this chapter describes the different lookup types that are available. Any of them can be used in any part of the configuration where a lookup is permitted. @@ -6685,6 +6697,13 @@ lookup to succeed. The lookup type determines how the file is searched. .new .cindex "tainted data" "single-key lookups" The file string may not be tainted + +All single-key lookups support the option &"ret=key"&. +If this is given and the lookup +(either underlying implementation or cached value) +returns data, the result is replaced with a non-tainted +version of the lookup key. +.cindex "tainted data" "de-tainting" .wen .next .cindex "query-style lookup" "definition of" diff --git a/doc/doc-txt/NewStuff b/doc/doc-txt/NewStuff index 82f1c5c18..83b696fe5 100644 --- a/doc/doc-txt/NewStuff +++ b/doc/doc-txt/NewStuff @@ -24,6 +24,8 @@ Version 4.95 5. Option "message_linelength_limit" on the smtp transport to enforce (by default) the RFC 998 character limit. + 6. An option to ignore the cache on a lookup. + Version 4.94 ------------ diff --git a/src/src/search.c b/src/src/search.c index 94a58897f..d1633a5e1 100644 --- a/src/src/search.c +++ b/src/src/search.c @@ -462,6 +462,7 @@ Arguments: NULL for query-style searches keystring the keystring for single-key+file lookups, or the querystring for query-style lookups + cache_rd FALSE to avoid lookup in cache layer opts type-specific options Returns: a pointer to a dynamic string containing the answer, @@ -472,7 +473,7 @@ Returns: a pointer to a dynamic string containing the answer, static uschar * internal_search_find(void * handle, const uschar * filename, uschar * keystring, - const uschar * opts) + BOOL cache_rd, const uschar * opts) { tree_node * t = (tree_node *)handle; search_cache * c = (search_cache *)(t->data.ptr); @@ -501,11 +502,13 @@ if (keystring[0] == 0) return NULL; store_pool = POOL_SEARCH; /* Look up the data for the key, unless it is already in the cache for this -file. No need to check c->item_cache for NULL, tree_search will do so. */ +file. No need to check c->item_cache for NULL, tree_search will do so. Check +whether we want to use the cache entry last so that we can always replace it. */ if ( (t = tree_search(c->item_cache, keystring)) && (!(e = t->data.ptr)->expiry || e->expiry > time(NULL)) && (!opts && !e->opts || opts && e->opts && Ustrcmp(opts, e->opts) == 0) + && cache_rd ) { /* Data was in the cache already; set the pointer from the tree node */ data = e->data.ptr; @@ -522,7 +525,8 @@ else { if (t) debug_printf_indent("cached data found but %s; ", - e->expiry && e->expiry <= time(NULL) ? "out-of-date" : "wrong opts"); + e->expiry && e->expiry <= time(NULL) ? "out-of-date" + : cache_rd ? "wrong opts" : "no_rd option set"); debug_printf_indent("%s lookup required for %s%s%s\n", filename ? US"file" : US"database", keystring, @@ -541,14 +545,19 @@ else or points to a bit of dynamic store. Cache the result of the lookup if caching is permitted. Lookups can disable caching, when they did something that changes their data. The mysql and pgsql lookups do this when an - UPDATE/INSERT query was executed. */ + UPDATE/INSERT query was executed. Lookups can also set a TTL for the + cache entry; the dnsdb lookup does. + Finally, the caller can request no caching by setting an option. */ else if (do_cache) { + DEBUG(D_lookup) debug_printf_indent("%s cache entry\n", + t ? "replacing old" : "creating new"); if (!t) /* No existing entry. Create new one. */ { int len = keylength + 1; - e = store_get(sizeof(expiring_data) + sizeof(tree_node) + len, is_tainted(keystring)); + e = store_get(sizeof(expiring_data) + sizeof(tree_node) + len, + is_tainted(keystring)); t = (tree_node *)(e+1); memcpy(t->name, keystring, len); t->data.ptr = e; @@ -621,9 +630,9 @@ search_find(void * handle, const uschar * filename, uschar * keystring, int partial, const uschar * affix, int affixlen, int starflags, int * expand_setup, const uschar * opts) { -tree_node *t = (tree_node *)handle; -BOOL set_null_wild = FALSE; -uschar *yield; +tree_node * t = (tree_node *)handle; +BOOL set_null_wild = FALSE, cache_rd = TRUE, ret_key = FALSE; +uschar * yield; DEBUG(D_lookup) { @@ -636,6 +645,23 @@ DEBUG(D_lookup) } +/* Parse global lookup options. Also, create a new options list with +the global options dropped so that the cache-modifiers are not +used in the cache key. */ + +if (opts) + { + int sep = ','; + gstring * g = NULL; + + for (uschar * ele; ele = string_nextinlist(&opts, &sep, NULL, 0); ) + if (Ustrcmp(ele, "ret=key") == 0) ret_key = TRUE; + else if (Ustrcmp(ele, "cache=no_rd") == 0) cache_rd = FALSE; + else g = string_append_listele(g, ',', ele); + + opts = string_from_gstring(g); + } + /* Arrange to put this database at the top of the LRU chain if it is a type that opens real files. */ @@ -683,7 +709,7 @@ DEBUG(D_lookup) /* First of all, try to match the key string verbatim. If matched a complete entry but could have been partial, flag to set up variables. */ -yield = internal_search_find(handle, filename, keystring, opts); +yield = internal_search_find(handle, filename, keystring, cache_rd, opts); if (f.search_find_defer) return NULL; if (yield) { if (partial >= 0) set_null_wild = TRUE; } @@ -708,7 +734,7 @@ else if (partial >= 0) Ustrncpy(keystring2, affix, affixlen); Ustrcpy(keystring2 + affixlen, keystring); DEBUG(D_lookup) debug_printf_indent("trying partial match %s\n", keystring2); - yield = internal_search_find(handle, filename, keystring2, opts); + yield = internal_search_find(handle, filename, keystring2, cache_rd, opts); if (f.search_find_defer) return NULL; } @@ -746,7 +772,8 @@ else if (partial >= 0) } DEBUG(D_lookup) debug_printf_indent("trying partial match %s\n", keystring3); - yield = internal_search_find(handle, filename, keystring3, opts); + yield = internal_search_find(handle, filename, keystring3, + cache_rd, opts); if (f.search_find_defer) return NULL; if (yield) { @@ -787,7 +814,7 @@ if (!yield && starflags & SEARCH_STARAT) *atat = '*'; DEBUG(D_lookup) debug_printf_indent("trying default match %s\n", atat); - yield = internal_search_find(handle, filename, atat, opts); + yield = internal_search_find(handle, filename, atat, cache_rd, opts); *atat = savechar; if (f.search_find_defer) return NULL; @@ -810,7 +837,7 @@ and the second is empty. */ if (!yield && starflags & (SEARCH_STAR|SEARCH_STARAT)) { DEBUG(D_lookup) debug_printf_indent("trying to match *\n"); - yield = internal_search_find(handle, filename, US"*", opts); + yield = internal_search_find(handle, filename, US"*", cache_rd, opts); if (yield && expand_setup && *expand_setup >= 0) { *expand_setup += 1; @@ -843,14 +870,8 @@ if (set_null_wild && expand_setup && *expand_setup >= 0) than the result. Return a de-tainted version of the key on the grounds that it have been validated by the lookup. */ -if (yield && opts) - { - int sep = ','; - uschar * ele; - while ((ele = string_nextinlist(&opts, &sep, NULL, 0))) - if (Ustrcmp(ele, "ret=key") == 0) - { yield = string_copy_taint(keystring, FALSE); break; } - } +if (yield && ret_key) + yield = string_copy_taint(keystring, FALSE); return yield; } diff --git a/test/scripts/2500-dsearch/2500 b/test/scripts/2500-dsearch/2500 index 381ef2563..8677b7166 100644 --- a/test/scripts/2500-dsearch/2500 +++ b/test/scripts/2500-dsearch/2500 @@ -1,6 +1,7 @@ # dsearch lookup # This test will fail on a case-insensitive filesystem (e.g. MacOS default) exim -be +dsearch specifics ok: ${lookup{TESTNUM.tst} dsearch{DIR/aux-fixed}{$value}{FAIL}} fail: ${lookup{TESTNUM.file_not_here} dsearch{DIR/aux-fixed}{$value}{FAIL}} fail: ${lookup{TESTNUM.tst} dsearch{DIR/dir_not_here}{$value}{FAIL}} @@ -16,6 +17,16 @@ fail,dir: ${lookup{TESTNUM.tst} dsearch,filter=dir {DIR/aux-fixed}{$value}{ ok,subdir: ${lookup{TESTNUM.dir} dsearch,filter=subdir {DIR/aux-fixed}{$value}{FAIL}} fail,subdir:${lookup{..} dsearch,filter=subdir {DIR/aux-fixed}{$value}{FAIL}} fail,subdir:${lookup{TESTNUM.tst} dsearch,filter=subdir {DIR/aux-fixed}{$value}{FAIL}} + +cachelayer tests +fail: ${lookup{test-data} dsearch {DIR/} {$value}{FAIL}} +createfile: ${run {/bin/cp DIR/aux-fixed/TESTNUM.tst DIR/test-data} {OK}{FAIL}} +fail,cached:${lookup{test-data} dsearch {DIR/} {$value}{FAIL}} +ok,no_rd ${lookup{test-data} dsearch,cache=no_rd {DIR/} {$value}{FAIL}} +delfile: ${run {/bin/rm DIR/test-data} {OK}{FAIL}} +ok,cached: ${lookup{test-data} dsearch {DIR/} {$value}{FAIL}} +fail,no_rd ${lookup{test-data} dsearch,cache=no_rd {DIR/} {$value}{FAIL}} +fail: ${lookup{test-data} dsearch {DIR/} {$value}{FAIL}} **** # 1 diff --git a/test/stderr/0002 b/test/stderr/0002 index 9d6fb5df8..bd2d8067f 100644 --- a/test/stderr/0002 +++ b/test/stderr/0002 @@ -326,6 +326,7 @@ internal_search_find: file="TESTSUITE/aux-fixed/0002.lsearch" type=lsearch key="ten-1.test.ex" opts=NULL file lookup required for ten-1.test.ex in TESTSUITE/aux-fixed/0002.lsearch +creating new cache entry lookup yielded: host in "< partial-lsearch;TESTSUITE/aux-fixed/0002.lsearch @@ -372,6 +373,7 @@ internal_search_find: file="TESTSUITE/aux-fixed/0002.lsearch" type=lsearch key="V4NET.0.0.2" opts=NULL file lookup required for V4NET.0.0.2 in TESTSUITE/aux-fixed/0002.lsearch +creating new cache entry lookup failed host in "net-lsearch;TESTSUITE/aux-fixed/0002.lsearch"? no (end of list) deny: condition test failed in ACL "connect2" diff --git a/test/stderr/0085 b/test/stderr/0085 index e27089647..7a30dfe54 100644 --- a/test/stderr/0085 +++ b/test/stderr/0085 @@ -54,6 +54,7 @@ checking local_parts type=lsearch key="smart.domain" opts=NULL file lookup required for smart.domain in TESTSUITE/aux-fixed/0085.data + creating new cache entry lookup yielded: x : y : abc@d.e.f x in "x : y : abc@d.e.f"? yes (matched "x") checking senders @@ -124,6 +125,7 @@ checking local_parts type=lsearch key="test.ex" opts=NULL file lookup required for test.ex in TESTSUITE/aux-fixed/0085.data + creating new cache entry lookup yielded: x : y : abc@d.e.f x in "x : y : abc@d.e.f"? yes (matched "x") checking senders @@ -158,6 +160,7 @@ checking require_files type=lsearch key="test.ex.files" opts=NULL file lookup required for test.ex.files in TESTSUITE/aux-fixed/0085.data + creating new cache entry lookup yielded: /etc/passwd file check: ${lookup{$domain.files}lsearch{TESTSUITE/aux-fixed/0085.data}{$value}} expanded file: /etc/passwd @@ -255,6 +258,7 @@ checking local_parts type=lsearch key="smart.domain" opts=NULL file lookup required for smart.domain in TESTSUITE/aux-fixed/0085.data + creating new cache entry lookup yielded: x : y : abc@d.e.f x in "x : y : abc@d.e.f"? yes (matched "x") checking senders @@ -323,6 +327,7 @@ checking local_parts type=lsearch key="test.ex" opts=NULL file lookup required for test.ex in TESTSUITE/aux-fixed/0085.data + creating new cache entry lookup yielded: x : y : abc@d.e.f x in "x : y : abc@d.e.f"? yes (matched "x") checking senders diff --git a/test/stderr/0123 b/test/stderr/0123 index d393252b5..347d9761b 100644 --- a/test/stderr/0123 +++ b/test/stderr/0123 @@ -27,6 +27,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="x" opts=NULL file lookup required for x in TESTSUITE/aux-fixed/0123.aliases1 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -47,6 +48,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="x" opts=NULL file lookup required for x in TESTSUITE/aux-fixed/0123.aliases2 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -69,6 +71,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="x" opts=NULL file lookup required for x in TESTSUITE/aux-fixed/0123.aliases3 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -91,6 +94,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="x" opts=NULL file lookup required for x in TESTSUITE/aux-fixed/0123.aliases4 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -113,6 +117,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="x" opts=NULL file lookup required for x in TESTSUITE/aux-fixed/0123.aliases5 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -135,6 +140,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="x" opts=NULL file lookup required for x in TESTSUITE/aux-fixed/0123.aliases6 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -165,6 +171,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="y" opts=NULL file lookup required for y in TESTSUITE/aux-fixed/0123.aliases1 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -188,6 +195,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="y" opts=NULL file lookup required for y in TESTSUITE/aux-fixed/0123.aliases2 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -211,6 +219,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="y" opts=NULL file lookup required for y in TESTSUITE/aux-fixed/0123.aliases3 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -234,6 +243,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="y" opts=NULL file lookup required for y in TESTSUITE/aux-fixed/0123.aliases4 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -257,6 +267,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="y" opts=NULL file lookup required for y in TESTSUITE/aux-fixed/0123.aliases5 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -280,6 +291,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="y" opts=NULL file lookup required for y in TESTSUITE/aux-fixed/0123.aliases6 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -310,6 +322,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="z" opts=NULL file lookup required for z in TESTSUITE/aux-fixed/0123.aliases1 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -333,6 +346,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="z" opts=NULL file lookup required for z in TESTSUITE/aux-fixed/0123.aliases2 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -356,6 +370,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="z" opts=NULL file lookup required for z in TESTSUITE/aux-fixed/0123.aliases3 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -379,6 +394,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="z" opts=NULL file lookup required for z in TESTSUITE/aux-fixed/0123.aliases4 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -402,6 +418,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="z" opts=NULL file lookup required for z in TESTSUITE/aux-fixed/0123.aliases5 + creating new cache entry lookup failed expanded: '' file is not a filter file @@ -425,6 +442,7 @@ rda_interpret (string): '${lookup{$local_part}lsearch{TESTSUITE/aux-fixed/0123.a type=lsearch key="z" opts=NULL file lookup required for z in TESTSUITE/aux-fixed/0123.aliases6 + creating new cache entry lookup failed expanded: '' file is not a filter file diff --git a/test/stderr/0387 b/test/stderr/0387 index 292f52337..0a27a5878 100644 --- a/test/stderr/0387 +++ b/test/stderr/0387 @@ -13,18 +13,21 @@ dropping to exim gid; retaining priv uid type=lsearch key="a.b.c" opts=NULL file lookup required for a.b.c in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match *.a.b.c internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key="*.a.b.c" opts=NULL file lookup required for *.a.b.c in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match *.b.c internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key="*.b.c" opts=NULL file lookup required for *.b.c in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup yielded: [*.b.c] search_open: lsearch "TESTSUITE/aux-fixed/0387.1" cached open @@ -37,18 +40,21 @@ dropping to exim gid; retaining priv uid type=lsearch key="x.y.c" opts=NULL file lookup required for x.y.c in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match *.x.y.c internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key="*.x.y.c" opts=NULL file lookup required for *.x.y.c in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match *.y.c internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key="*.y.c" opts=NULL file lookup required for *.y.c in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed search_open: lsearch "TESTSUITE/aux-fixed/0387.1" cached open @@ -79,6 +85,7 @@ dropping to exim gid; retaining priv uid type=lsearch key="*" opts=NULL file lookup required for * in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup yielded: [*] search_open: lsearch "TESTSUITE/aux-fixed/0387.1" cached open @@ -109,6 +116,7 @@ dropping to exim gid; retaining priv uid type=lsearch key="*.c" opts=NULL file lookup required for *.c in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup yielded: [*.c] search_open: lsearch "TESTSUITE/aux-fixed/0387.1" cached open @@ -121,12 +129,14 @@ dropping to exim gid; retaining priv uid type=lsearch key="x@y.c" opts=NULL file lookup required for x@y.c in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match *.x@y.c internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key="*.x@y.c" opts=NULL file lookup required for *.x@y.c in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match *.c internal_search_find: file="TESTSUITE/aux-fixed/0387.1" @@ -151,6 +161,7 @@ dropping to exim gid; retaining priv uid type=lsearch key="*@y.c" opts=NULL file lookup required for *@y.c in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup yielded: [*@y.c] search_open: lsearch "TESTSUITE/aux-fixed/0387.1" cached open @@ -193,12 +204,14 @@ dropping to exim gid; retaining priv uid type=lsearch key=".a.b.c" opts=NULL file lookup required for .a.b.c in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match .b.c internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key=".b.c" opts=NULL file lookup required for .b.c in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup yielded: [.b.c] search_open: lsearch "TESTSUITE/aux-fixed/0387.1" cached open @@ -217,6 +230,7 @@ dropping to exim gid; retaining priv uid type=lsearch key="b.c" opts=NULL file lookup required for b.c in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup yielded: [b.c] search_open: lsearch "TESTSUITE/aux-fixed/0387.1" cached open @@ -235,12 +249,14 @@ dropping to exim gid; retaining priv uid type=lsearch key="*a.b.c" opts=NULL file lookup required for *a.b.c in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match *b.c internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key="*b.c" opts=NULL file lookup required for *b.c in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup yielded: [*b.c] search_open: lsearch "TESTSUITE/aux-fixed/0387.1" cached open @@ -253,24 +269,28 @@ dropping to exim gid; retaining priv uid type=lsearch key="p.q.r" opts=NULL file lookup required for p.q.r in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match *.p.q.r internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key="*.p.q.r" opts=NULL file lookup required for *.p.q.r in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match *.q.r internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key="*.q.r" opts=NULL file lookup required for *.q.r in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match *.r internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key="*.r" opts=NULL file lookup required for *.r in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match * internal_search_find: file="TESTSUITE/aux-fixed/0387.1" @@ -295,24 +315,28 @@ dropping to exim gid; retaining priv uid type=lsearch key=".p.q.r" opts=NULL file lookup required for .p.q.r in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match .q.r internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key=".q.r" opts=NULL file lookup required for .q.r in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match .r internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key=".r" opts=NULL file lookup required for .r in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match . internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key="." opts=NULL file lookup required for . in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup yielded: [.] search_open: lsearch "TESTSUITE/aux-fixed/0387.1" cached open @@ -325,18 +349,21 @@ dropping to exim gid; retaining priv uid type=lsearch key="x.aa.bb" opts=NULL file lookup required for x.aa.bb in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match ++x.aa.bb internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key="++x.aa.bb" opts=NULL file lookup required for ++x.aa.bb in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match ++aa.bb internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key="++aa.bb" opts=NULL file lookup required for ++aa.bb in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup yielded: [++aa.bb] search_open: lsearch "TESTSUITE/aux-fixed/0387.1" cached open @@ -349,30 +376,35 @@ dropping to exim gid; retaining priv uid type=lsearch key="x.aa.zz" opts=NULL file lookup required for x.aa.zz in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match ++x.aa.zz internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key="++x.aa.zz" opts=NULL file lookup required for ++x.aa.zz in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match ++aa.zz internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key="++aa.zz" opts=NULL file lookup required for ++aa.zz in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match ++zz internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key="++zz" opts=NULL file lookup required for ++zz in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup failed trying partial match ++ internal_search_find: file="TESTSUITE/aux-fixed/0387.1" type=lsearch key="++" opts=NULL file lookup required for ++ in TESTSUITE/aux-fixed/0387.1 + creating new cache entry lookup yielded: [++] search_open: lsearch "TESTSUITE/aux-fixed/0387.1" cached open diff --git a/test/stderr/0403 b/test/stderr/0403 index 0c22cf8f5..16bf13b5e 100644 --- a/test/stderr/0403 +++ b/test/stderr/0403 @@ -94,6 +94,7 @@ internal_search_find: file="TESTSUITE/aux-fixed/0403.data" type=lsearch key="test.ex" opts=NULL file lookup required for test.ex in TESTSUITE/aux-fixed/0403.data +creating new cache entry lookup yielded: [DOMAINDATA_test.ex] test.ex in "lsearch;TESTSUITE/aux-fixed/0403.data"? yes (matched "lsearch;TESTSUITE/aux-fixed/0403.data") checking local_parts @@ -108,6 +109,7 @@ internal_search_find: file="TESTSUITE/aux-fixed/0403.data" type=lsearch key="userx" opts=NULL file lookup required for userx in TESTSUITE/aux-fixed/0403.data +creating new cache entry lookup yielded: [LOCALPARTDATA_userx] userx in "lsearch;TESTSUITE/aux-fixed/0403.data"? yes (matched "lsearch;TESTSUITE/aux-fixed/0403.data") +++ROUTER: diff --git a/test/stderr/0414 b/test/stderr/0414 index f1edd1ae3..18a514700 100644 --- a/test/stderr/0414 +++ b/test/stderr/0414 @@ -28,6 +28,7 @@ internal_search_find: file="TESTSUITE/aux-fixed/0414.list1" type=lsearch key="b.domain" opts=NULL file lookup required for b.domain in TESTSUITE/aux-fixed/0414.list1 +creating new cache entry lookup failed b.domain in "lsearch;TESTSUITE/aux-fixed/0414.list1"? no (end of list) search_open: lsearch "TESTSUITE/aux-fixed/0414.list2" @@ -41,6 +42,7 @@ internal_search_find: file="TESTSUITE/aux-fixed/0414.list2" type=lsearch key="b.domain" opts=NULL file lookup required for b.domain in TESTSUITE/aux-fixed/0414.list2 +creating new cache entry lookup yielded: b.domain-data b.domain in "lsearch;TESTSUITE/aux-fixed/0414.list2"? yes (matched "lsearch;TESTSUITE/aux-fixed/0414.list2") data from lookup saved for cache for +B: key 'b.domain' value 'b.domain-data' @@ -87,6 +89,7 @@ internal_search_find: file="TESTSUITE/aux-fixed/0414.list1" type=lsearch key="a.domain" opts=NULL file lookup required for a.domain in TESTSUITE/aux-fixed/0414.list1 +creating new cache entry lookup yielded: a.domain-data a.domain in "lsearch;TESTSUITE/aux-fixed/0414.list1"? yes (matched "lsearch;TESTSUITE/aux-fixed/0414.list1") data from lookup saved for cache for +A: key 'a.domain' value 'a.domain-data' @@ -109,6 +112,7 @@ internal_search_find: file="TESTSUITE/aux-fixed/0414.list2" type=lsearch key="a.domain" opts=NULL file lookup required for a.domain in TESTSUITE/aux-fixed/0414.list2 +creating new cache entry lookup failed a.domain in "lsearch;TESTSUITE/aux-fixed/0414.list2"? no (end of list) a.domain in "+B"? no (end of list) diff --git a/test/stderr/0437 b/test/stderr/0437 index 0e5a5b3e9..8c2cf0a8a 100644 --- a/test/stderr/0437 +++ b/test/stderr/0437 @@ -9,6 +9,7 @@ Exim version x.yz .... type=lsearch key="spool" opts=NULL file lookup required for spool in TESTSUITE/aux-fixed/0437.ls + creating new cache entry lookup yielded: spool configuration file is TESTSUITE/test-config admin user @@ -26,6 +27,7 @@ search_tidyup called type=lsearch key="transport" opts=NULL file lookup required for transport in TESTSUITE/aux-fixed/0437.ls + creating new cache entry lookup yielded: t1 search_tidyup called search_tidyup called @@ -39,6 +41,7 @@ search_tidyup called type=lsearch key="file" opts=NULL file lookup required for file in TESTSUITE/aux-fixed/0437.ls + creating new cache entry lookup yielded: file search_tidyup called LOG: MAIN @@ -58,6 +61,7 @@ search_tidyup called type=lsearch key="transport" opts=NULL file lookup required for transport in TESTSUITE/aux-fixed/0437.ls + creating new cache entry lookup yielded: t1 search_tidyup called search_tidyup called @@ -71,6 +75,7 @@ search_tidyup called type=lsearch key="file" opts=NULL file lookup required for file in TESTSUITE/aux-fixed/0437.ls + creating new cache entry lookup yielded: file search_tidyup called LOG: MAIN diff --git a/test/stderr/0464 b/test/stderr/0464 index 6ea3f3f97..625b57122 100644 --- a/test/stderr/0464 +++ b/test/stderr/0464 @@ -31,6 +31,7 @@ internal_search_find: file="TESTSUITE/aux-fixed/0464.domains" type=lsearch key="domain1" opts=NULL file lookup required for domain1 in TESTSUITE/aux-fixed/0464.domains +creating new cache entry lookup yielded: data for domain1 domain1 in "lsearch;TESTSUITE/aux-fixed/0464.domains"? yes (matched "lsearch;TESTSUITE/aux-fixed/0464.domains") data from lookup saved for cache for +special_domains: key 'domain1' value 'data for domain1' @@ -78,6 +79,7 @@ internal_search_find: file="TESTSUITE/aux-fixed/0464.domains" type=lsearch key="xxx.domain1" opts=NULL file lookup required for xxx.domain1 in TESTSUITE/aux-fixed/0464.domains +creating new cache entry lookup failed xxx.domain1 in "lsearch;TESTSUITE/aux-fixed/0464.domains"? no (end of list) xxx.domain1 in "+special_domains"? no (end of list) diff --git a/test/stderr/0471 b/test/stderr/0471 index f4619a3e9..14fbe5534 100644 --- a/test/stderr/0471 +++ b/test/stderr/0471 @@ -111,12 +111,14 @@ r1@test.ex in "*@*"? yes (matched "*@*") type=lsearch key="test.ex" opts=NULL file lookup required for test.ex in TESTSUITE/aux-fixed/0471.rw + creating new cache entry lookup failed trying partial match *.test.ex internal_search_find: file="TESTSUITE/aux-fixed/0471.rw" type=lsearch key="*.test.ex" opts=NULL file lookup required for *.test.ex in TESTSUITE/aux-fixed/0471.rw + creating new cache entry lookup failed address match test: subject=CALLER@myhost.test.ex pattern=*@* myhost.test.ex in "*"? yes (matched "*") @@ -132,12 +134,14 @@ CALLER@myhost.test.ex in "*@*"? yes (matched "*@*") type=lsearch key="myhost.test.ex" opts=NULL file lookup required for myhost.test.ex in TESTSUITE/aux-fixed/0471.rw + creating new cache entry lookup failed trying partial match *.myhost.test.ex internal_search_find: file="TESTSUITE/aux-fixed/0471.rw" type=lsearch key="*.myhost.test.ex" opts=NULL file lookup required for *.myhost.test.ex in TESTSUITE/aux-fixed/0471.rw + creating new cache entry lookup failed trying partial match *.test.ex internal_search_find: file="TESTSUITE/aux-fixed/0471.rw" @@ -241,6 +245,7 @@ random@test.example in "*@*"? yes (matched "*@*") type=lsearch key="test.example" opts=NULL file lookup required for test.example in TESTSUITE/aux-fixed/0471.rw + creating new cache entry lookup yielded: rwtest.example LOG: address_rewrite MAIN "random@test.example" from to: rewritten as "random@rwtest.example" by rule 1 diff --git a/test/stderr/0484 b/test/stderr/0484 index 25d7f745d..56ce2e13a 100644 --- a/test/stderr/0484 +++ b/test/stderr/0484 @@ -16,6 +16,7 @@ sender address = CALLER@myhost.test.ex type=lsearch key="list" opts=NULL file lookup required for list in TESTSUITE/aux-fixed/0484.aliases + creating new cache entry lookup yielded: userx, usery search_open: lsearch "TESTSUITE/aux-fixed/0484.aliases" cached open @@ -40,6 +41,7 @@ sender address = CALLER@myhost.test.ex type=lsearch key="root" opts=NULL file lookup required for root in TESTSUITE/aux-fixed/0484.aliases + creating new cache entry lookup yielded: userx search_open: lsearch "TESTSUITE/aux-fixed/0484.aliases" cached open @@ -76,6 +78,7 @@ sender address = CALLER@myhost.test.ex type=lsearch key="list" opts=NULL file lookup required for list in TESTSUITE/aux-fixed/0484.aliases2 + creating new cache entry lookup yielded: userx2, usery2 search_open: lsearch "TESTSUITE/aux-fixed/0484.aliases2" cached open @@ -89,6 +92,7 @@ sender address = CALLER@myhost.test.ex type=lsearch key="root" opts=NULL file lookup required for root in TESTSUITE/aux-fixed/0484.aliases2 + creating new cache entry lookup failed search_open: lsearch "TESTSUITE/aux-fixed/0484.aliases2" cached open diff --git a/test/stderr/2200 b/test/stderr/2200 index ba50dffa7..9631e9b82 100644 --- a/test/stderr/2200 +++ b/test/stderr/2200 @@ -10,6 +10,7 @@ dropping to exim gid; retaining priv uid type=dnsdb key="a=localhost.test.ex" opts=NULL database lookup required for a=localhost.test.ex dnsdb key: localhost.test.ex + creating new cache entry lookup yielded: 127.0.0.1 search_open: dnsdb "NULL" cached open @@ -35,6 +36,7 @@ search_tidyup called type=dnsdb key="a=shorthost.test.ex" opts=NULL database lookup required for a=shorthost.test.ex dnsdb key: shorthost.test.ex + creating new cache entry lookup yielded: 127.0.0.1 search_open: dnsdb "NULL" cached open @@ -45,6 +47,7 @@ search_tidyup called type=dnsdb key="a=shorthost.test.ex" opts=NULL cached data found but out-of-date; database lookup required for a=shorthost.test.ex dnsdb key: shorthost.test.ex + replacing old cache entry lookup yielded: 127.0.0.1 LOG: MAIN <= CALLER@myhost.test.ex U=CALLER P=local S=sss diff --git a/test/stderr/2201 b/test/stderr/2201 index 8f9d0b585..d25ac4575 100644 --- a/test/stderr/2201 +++ b/test/stderr/2201 @@ -37,6 +37,7 @@ database lookup required for test.ex dnsdb key: test.ex DNS lookup of test.ex (TXT) using fakens DNS lookup of test.ex (TXT) succeeded +creating new cache entry lookup yielded: A TXT record for test.ex. test.ex in "dnsdb;test.ex"? yes (matched "dnsdb;test.ex") checking local_parts @@ -101,6 +102,7 @@ DNS lookup of unknown (TXT) gave HOST_NOT_FOUND returning DNS_NOMATCH faking res_search(TXT) response length as 65535 writing neg-cache entry for unknown-TXT-xxxx, ttl 3000 +creating new cache entry lookup failed unknown in "dnsdb;unknown"? no (end of list) r1 router skipped: local_parts mismatch @@ -130,6 +132,7 @@ database lookup required for A=myhost.test.ex dnsdb key: myhost.test.ex DNS lookup of myhost.test.ex (A) using fakens DNS lookup of myhost.test.ex (A) succeeded +creating new cache entry lookup yielded: V4NET.10.10.10 CALLER@myhost.test.ex in "dnsdb;A=myhost.test.ex"? yes (matched "dnsdb;A=myhost.test.ex") calling r2 router @@ -159,6 +162,7 @@ internal_search_find: file="NULL" type=dnsdb key="a=shorthost.test.ex" opts=NULL database lookup required for a=shorthost.test.ex dnsdb key: shorthost.test.ex +creating new cache entry lookup yielded: 127.0.0.1 search_open: dnsdb "NULL" cached open @@ -178,6 +182,7 @@ internal_search_find: file="NULL" type=dnsdb key="a=shorthost.test.ex" opts=NULL cached data found but out-of-date; database lookup required for a=shorthost.test.ex dnsdb key: shorthost.test.ex +replacing old cache entry lookup yielded: 127.0.0.1 LOG: MAIN <= a@shorthost.test.ex U=CALLER P=local S=sss diff --git a/test/stderr/2202 b/test/stderr/2202 index 3752ec538..2c595a6dd 100644 --- a/test/stderr/2202 +++ b/test/stderr/2202 @@ -44,6 +44,7 @@ cioce.test.again.dns in dns_again_means_nonexist? yes (matched "*") cioce.test.again.dns is in dns_again_means_nonexist: returning DNS_NOMATCH DNS: no SOA record found for neg-TTL writing neg-cache entry for cioce.test.again.dns-MX-xxxx, ttl -1 + creating new cache entry lookup failed sender host name required, to match against *.cioce.test.again.dns looking up host name for ip4.ip4.ip4.ip4 diff --git a/test/stderr/2600 b/test/stderr/2600 index 399fa0adb..e5dd60a27 100644 --- a/test/stderr/2600 +++ b/test/stderr/2600 @@ -10,6 +10,7 @@ dropping to exim gid; retaining priv uid type=sqlite key="select name from them where id='userx';" opts=NULL file lookup required for select name from them where id='userx'; in TESTSUITE/aux-fixed/sqlitedb + creating new cache entry lookup yielded: Ayen Other search_open: sqlite "TESTSUITE/aux-fixed/sqlitedb" cached open @@ -41,6 +42,7 @@ dropping to exim gid; retaining priv uid type=sqlite key="select name from them where id='nothing';" opts=NULL file lookup required for select name from them where id='nothing'; in TESTSUITE/aux-fixed/sqlitedb + creating new cache entry lookup yielded: search_open: sqlite "TESTSUITE/aux-fixed/sqlitedb" cached open @@ -51,6 +53,7 @@ dropping to exim gid; retaining priv uid type=sqlite key="select id,name from them where id='nothing';" opts=NULL file lookup required for select id,name from them where id='nothing'; in TESTSUITE/aux-fixed/sqlitedb + creating new cache entry lookup yielded: id=nothing name="" search_open: sqlite "TESTSUITE/aux-fixed/sqlitedb" cached open @@ -61,6 +64,7 @@ dropping to exim gid; retaining priv uid type=sqlite key="select * from them where id='quote2';" opts=NULL file lookup required for select * from them where id='quote2'; in TESTSUITE/aux-fixed/sqlitedb + creating new cache entry lookup yielded: name="\"stquot" id=quote2 search_open: sqlite "TESTSUITE/aux-fixed/sqlitedb" cached open @@ -71,6 +75,7 @@ dropping to exim gid; retaining priv uid type=sqlite key="select * from them where id='newline';" opts=NULL file lookup required for select * from them where id='newline'; in TESTSUITE/aux-fixed/sqlitedb + creating new cache entry lookup yielded: name="before after" id=newline search_open: sqlite "TESTSUITE/aux-fixed/sqlitedb" @@ -82,6 +87,7 @@ dropping to exim gid; retaining priv uid type=sqlite key="select * from them where id='tab';" opts=NULL file lookup required for select * from them where id='tab'; in TESTSUITE/aux-fixed/sqlitedb + creating new cache entry lookup yielded: name="x x" id=tab search_open: sqlite "TESTSUITE/aux-fixed/sqlitedb" cached open @@ -92,6 +98,7 @@ dropping to exim gid; retaining priv uid type=sqlite key="select * from them where id='its';" opts=NULL file lookup required for select * from them where id='its'; in TESTSUITE/aux-fixed/sqlitedb + creating new cache entry lookup yielded: name=it's id=its search_open: sqlite "TESTSUITE/aux-fixed/sqlitedb" cached open @@ -102,6 +109,7 @@ dropping to exim gid; retaining priv uid type=sqlite key="select * from them where name='it''s';" opts=NULL file lookup required for select * from them where name='it''s'; in TESTSUITE/aux-fixed/sqlitedb + creating new cache entry lookup yielded: name=it's id=its search_tidyup called >>>>>>>>>>>>>>>> Exim pid=pppp (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>> @@ -247,6 +255,7 @@ internal_search_find: file="TESTSUITE/aux-fixed/sqlitedb" type=sqlite key="select * from them where id='10.10.10.10'" opts=NULL file lookup required for select * from them where id='10.10.10.10' in TESTSUITE/aux-fixed/sqlitedb +creating new cache entry lookup yielded: name=ok id=10.10.10.10 host in "sqlite;TESTSUITE/aux-fixed/sqlitedb select * from them where id='10.10.10.10'"? yes (matched "sqlite;TESTSUITE/aux-fixed/sqlitedb select * from them where id='10.10.10.10'") host in "+relay_hosts"? yes (matched "+relay_hosts") @@ -377,6 +386,7 @@ processing address_data type=sqlite key="select name from them where id='userx'" opts=NULL file lookup required for select name from them where id='userx' in TESTSUITE/aux-fixed/sqlitedb + creating new cache entry lookup yielded: Ayen Other calling r1 router r1 router called for userx@myhost.test.ex @@ -419,6 +429,7 @@ appendfile transport entered type=sqlite key="select id from them where id='userx'" opts=NULL file lookup required for select id from them where id='userx' in TESTSUITE/aux-fixed/sqlitedb + creating new cache entry lookup yielded: userx appendfile: mode=600 notify_comsat=0 quota=0 warning=0 file=TESTSUITE/test-mail/userx format=unix @@ -481,6 +492,7 @@ dropping to exim gid; retaining priv uid type=sqlite key="select name from them where id='userx';" opts=NULL file lookup required for select name from them where id='userx'; in TESTSUITE/aux-fixed/sqlitedb + creating new cache entry lookup yielded: Ayen Other search_tidyup called >>>>>>>>>>>>>>>> Exim pid=pppp (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>> @@ -495,6 +507,7 @@ dropping to exim gid; retaining priv uid internal_search_find: file="NULL" type=sqlite key="select name from them where id='userx';" opts=NULL database lookup required for select name from them where id='userx'; + creating new cache entry lookup yielded: Ayen Other search_tidyup called >>>>>>>>>>>>>>>> Exim pid=pppp (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>> diff --git a/test/stderr/2610 b/test/stderr/2610 index 39071aef5..4cc8801f7 100644 --- a/test/stderr/2610 +++ b/test/stderr/2610 @@ -11,6 +11,7 @@ dropping to exim gid; retaining priv uid database lookup required for select name from them where id='ph10'; MySQL query: "select name from them where id='ph10';" opts 'NULL' MYSQL new connection: host=127.0.0.1 port=1223 socket=NULL database=test user=root + creating new cache entry lookup yielded: Philip Hazel search_open: mysql "NULL" cached open @@ -32,6 +33,7 @@ dropping to exim gid; retaining priv uid MySQL query: "select name from them where id='xxxx';" opts 'NULL' MYSQL using cached connection for 127.0.0.1:1223/test/root MYSQL: no data found + creating new cache entry lookup failed search_open: mysql "NULL" cached open @@ -43,6 +45,7 @@ dropping to exim gid; retaining priv uid database lookup required for select name from them where id='nothing'; MySQL query: "select name from them where id='nothing';" opts 'NULL' MYSQL using cached connection for 127.0.0.1:1223/test/root + creating new cache entry lookup yielded: search_open: mysql "NULL" cached open @@ -54,6 +57,7 @@ dropping to exim gid; retaining priv uid database lookup required for select id,name from them where id='nothing'; MySQL query: "select id,name from them where id='nothing';" opts 'NULL' MYSQL using cached connection for 127.0.0.1:1223/test/root + creating new cache entry lookup yielded: id=nothing name="" search_open: mysql "NULL" cached open @@ -79,6 +83,7 @@ dropping to exim gid; retaining priv uid MySQL query: "select * from them where id='quote';" opts 'NULL' MYSQL using cached connection for 127.0.0.1:1223/test/root MYSQL: no data found + creating new cache entry lookup failed search_open: mysql "NULL" cached open @@ -91,6 +96,7 @@ dropping to exim gid; retaining priv uid MySQL query: "select * from them where id='filter';" opts 'NULL' MYSQL using cached connection for 127.0.0.1:1223/test/root MYSQL: no data found + creating new cache entry lookup failed search_open: mysql "NULL" cached open @@ -102,6 +108,7 @@ dropping to exim gid; retaining priv uid database lookup required for select * from them where id='quote2'; MySQL query: "select * from them where id='quote2';" opts 'NULL' MYSQL using cached connection for 127.0.0.1:1223/test/root + creating new cache entry lookup yielded: name="\"stquot" id=quote2 search_open: mysql "NULL" cached open @@ -114,6 +121,7 @@ dropping to exim gid; retaining priv uid MySQL query: "select * from them where id='nlonly';" opts 'NULL' MYSQL using cached connection for 127.0.0.1:1223/test/root MYSQL: no data found + creating new cache entry lookup failed search_open: mysql "NULL" cached open @@ -135,6 +143,7 @@ dropping to exim gid; retaining priv uid database lookup required for servers=127.0.0.1::1223:x; select name from them where id='ph10'; MySQL query: "servers=127.0.0.1::1223:x; select name from them where id='ph10';" opts 'NULL' MYSQL using cached connection for 127.0.0.1:1223/test/root + creating new cache entry lookup yielded: Philip Hazel search_open: mysql "NULL" cached open @@ -146,6 +155,7 @@ dropping to exim gid; retaining priv uid database lookup required for servers=127.0.0.1::1223/test/root/:x; select name from them where id='ph10'; MySQL query: "servers=127.0.0.1::1223/test/root/:x; select name from them where id='ph10';" opts 'NULL' MYSQL using cached connection for 127.0.0.1:1223/test/root + creating new cache entry lookup yielded: Philip Hazel search_open: mysql "NULL" cached open @@ -157,6 +167,7 @@ dropping to exim gid; retaining priv uid database lookup required for servers=ip4.ip4.ip4.ip4::1223/test/root/:127.0.0.1::1223; select name from them where id='ph10'; MySQL query: "servers=ip4.ip4.ip4.ip4::1223/test/root/:127.0.0.1::1223; select name from them where id='ph10';" opts 'NULL' MYSQL new connection: host=ip4.ip4.ip4.ip4 port=1223 socket=NULL database=test user=root + creating new cache entry lookup yielded: Philip Hazel search_open: mysql "NULL" cached open @@ -168,6 +179,7 @@ dropping to exim gid; retaining priv uid database lookup required for servers=localhost(TESTSUITE/mysql/sock)/test/root/; select name from them where id='ph10'; MySQL query: "servers=localhost(TESTSUITE/mysql/sock)/test/root/; select name from them where id='ph10';" opts 'NULL' MYSQL new connection: host=localhost port=0 socket=TESTSUITE/mysql/sock database=test user=root + creating new cache entry lookup yielded: Philip Hazel search_open: mysql "NULL" cached open @@ -179,6 +191,7 @@ dropping to exim gid; retaining priv uid database lookup required for SELECT name FROM them WHERE id IN ('ph10', 'aaaa'); MySQL query: "SELECT name FROM them WHERE id IN ('ph10', 'aaaa');" opts 'NULL' MYSQL using cached connection for 127.0.0.1:1223/test/root + creating new cache entry lookup yielded: Philip Hazel Aristotle search_open: mysql "NULL" @@ -191,6 +204,7 @@ dropping to exim gid; retaining priv uid database lookup required for SELECT * FROM them WHERE id IN ('ph10', 'aaaa'); MySQL query: "SELECT * FROM them WHERE id IN ('ph10', 'aaaa');" opts 'NULL' MYSQL using cached connection for 127.0.0.1:1223/test/root + creating new cache entry lookup yielded: name="Philip Hazel" id=ph10 name=Aristotle id=aaaa search_open: mysql "NULL" @@ -254,6 +268,7 @@ processing "warn" (TESTSUITE/test-config 25) MySQL query: "select name from them where id = 'c'" opts 'NULL' MYSQL new connection: host=127.0.0.1 port=1223 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 = '$local_part'}} = ok: @@ -268,6 +283,7 @@ check set acl_m0 = ok: ${lookup mysql {select name from the MySQL query: "select name from them where id = 'c'" opts 'servers=127.0.0.1::1223/test/root/' MYSQL using cached connection for 127.0.0.1:1223/test/root MYSQL: no data found + replacing old cache entry lookup failed check set acl_m0 = ok: ${lookup mysql,servers=127.0.0.1::1223/test/root/ {select name from them where id = '$local_part'}} = ok: @@ -282,6 +298,7 @@ check set acl_m0 = ok: ${lookup mysql,servers=127.0.0.1::1223/test/root/ MySQL query: "select name from them where id = 'c'" opts 'servers=127.0.0.1::1223' MYSQL using cached connection for 127.0.0.1:1223/test/root MYSQL: no data found + replacing old cache entry lookup failed check set acl_m0 = ok: ${lookup mysql,servers=127.0.0.1::1223 {select name from them where id = '$local_part'}} = ok: @@ -312,6 +329,7 @@ database lookup required for select * from them where id='c' MySQL query: "select * from them where id='c'" opts 'NULL' MYSQL using cached connection for 127.0.0.1:1223/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" @@ -367,6 +385,7 @@ 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:1223/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) host in "+relay_hosts"? no (end of list) @@ -480,6 +499,7 @@ processing address_data database lookup required for select name from them where id='ph10' MySQL query: "select name from them where id='ph10'" opts 'NULL' MYSQL new connection: host=127.0.0.1 port=1223 socket=NULL database=test user=root + creating new cache entry lookup yielded: Philip Hazel calling r1 router r1 router called for ph10@myhost.test.ex @@ -524,6 +544,7 @@ appendfile transport entered database lookup required for select id from them where id='ph10' MySQL query: "select id from them where id='ph10'" opts 'NULL' MYSQL new connection: host=127.0.0.1 port=1223 socket=NULL database=test user=root + creating new cache entry lookup yielded: ph10 appendfile: mode=600 notify_comsat=0 quota=0 warning=0 file=TESTSUITE/test-mail/ph10 format=unix diff --git a/test/stderr/2620 b/test/stderr/2620 index 8c610d87e..eee26190d 100644 --- a/test/stderr/2620 +++ b/test/stderr/2620 @@ -15,6 +15,7 @@ dropping to exim gid; retaining priv uid database lookup required for select name from them where id='ph10'; PostgreSQL query: "select name from them where id='ph10';" opts 'NULL' PGSQL new connection: host=localhost port=1223 database=test user=CALLER + creating new cache entry lookup yielded: Philip Hazel search_open: pgsql "NULL" cached open @@ -36,6 +37,7 @@ dropping to exim gid; retaining priv uid PostgreSQL query: "select name from them where id='xxxx';" opts 'NULL' PGSQL using cached connection for localhost:1223/test/CALLER PGSQL: no data found + creating new cache entry lookup failed search_open: pgsql "NULL" cached open @@ -47,6 +49,7 @@ dropping to exim gid; retaining priv uid database lookup required for select name from them where id='nothing'; PostgreSQL query: "select name from them where id='nothing';" opts 'NULL' PGSQL using cached connection for localhost:1223/test/CALLER + creating new cache entry lookup yielded: search_open: pgsql "NULL" cached open @@ -58,6 +61,7 @@ dropping to exim gid; retaining priv uid database lookup required for select id,name from them where id='nothing'; PostgreSQL query: "select id,name from them where id='nothing';" opts 'NULL' PGSQL using cached connection for localhost:1223/test/CALLER + creating new cache entry lookup yielded: id=nothing name="" search_open: pgsql "NULL" cached open @@ -82,6 +86,7 @@ dropping to exim gid; retaining priv uid database lookup required for select * from them where id='quote2'; PostgreSQL query: "select * from them where id='quote2';" opts 'NULL' PGSQL using cached connection for localhost:1223/test/CALLER + creating new cache entry lookup yielded: name="\"stquot" id=quote2 search_open: pgsql "NULL" cached open @@ -93,6 +98,7 @@ dropping to exim gid; retaining priv uid database lookup required for select * from them where id='newline'; PostgreSQL query: "select * from them where id='newline';" opts 'NULL' PGSQL using cached connection for localhost:1223/test/CALLER + creating new cache entry lookup yielded: name="before after" id=newline search_open: pgsql "NULL" @@ -105,6 +111,7 @@ dropping to exim gid; retaining priv uid database lookup required for select * from them where id='tab'; PostgreSQL query: "select * from them where id='tab';" opts 'NULL' PGSQL using cached connection for localhost:1223/test/CALLER + creating new cache entry lookup yielded: name="x x" id=tab search_open: pgsql "NULL" cached open @@ -116,6 +123,7 @@ dropping to exim gid; retaining priv uid database lookup required for select * from them where name='''stquot'; PostgreSQL query: "select * from them where name='''stquot';" opts 'NULL' PGSQL using cached connection for localhost:1223/test/CALLER + creating new cache entry lookup yielded: name='stquot id=quote1 search_open: pgsql "NULL" cached open @@ -137,6 +145,7 @@ dropping to exim gid; retaining priv uid database lookup required for servers=localhost::1223:x; select name from them where id='ph10'; PostgreSQL query: "servers=localhost::1223:x; select name from them where id='ph10';" opts 'NULL' PGSQL using cached connection for localhost:1223/test/CALLER + creating new cache entry lookup yielded: Philip Hazel search_open: pgsql "NULL" cached open @@ -148,6 +157,7 @@ dropping to exim gid; retaining priv uid database lookup required for servers=localhost::1223/test/CALLER/:x; select name from them where id='ph10'; PostgreSQL query: "servers=localhost::1223/test/CALLER/:x; select name from them where id='ph10';" opts 'NULL' PGSQL using cached connection for localhost:1223/test/CALLER + creating new cache entry lookup yielded: Philip Hazel search_open: pgsql "NULL" cached open @@ -159,6 +169,7 @@ dropping to exim gid; retaining priv uid 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' PGSQL new connection: socket=TESTSUITE/pgsql/.s.PGSQL.1223 database=test user=CALLER + creating new cache entry lookup yielded: Philip Hazel search_open: pgsql "NULL" cached open @@ -170,6 +181,7 @@ dropping to exim gid; retaining priv uid database lookup required for SELECT name FROM them WHERE id IN ('ph10', 'aaaa'); PostgreSQL query: "SELECT name FROM them WHERE id IN ('ph10', 'aaaa');" opts 'NULL' PGSQL using cached connection for localhost:1223/test/CALLER + creating new cache entry lookup yielded: Philip Hazel Aristotle search_open: pgsql "NULL" @@ -182,6 +194,7 @@ dropping to exim gid; retaining priv uid database lookup required for SELECT * FROM them WHERE id IN ('ph10', 'aaaa'); PostgreSQL query: "SELECT * FROM them WHERE id IN ('ph10', 'aaaa');" opts 'NULL' PGSQL using cached connection for localhost:1223/test/CALLER + creating new cache entry lookup yielded: name="Philip Hazel" id=ph10 name=Aristotle id=aaaa search_open: pgsql "NULL" @@ -244,6 +257,7 @@ processing "warn" (TESTSUITE/test-config 27) PostgreSQL query: "select name from them where id = 'c'" opts 'NULL' PGSQL new connection: host=localhost port=1223 database=test user=CALLER PGSQL: no data found + creating new cache entry lookup failed check set acl_m0 = ok: ${lookup pgsql {select name from them where id = '$local_part'}} = ok: @@ -274,6 +288,7 @@ database lookup required for select * from them where id='c' PostgreSQL query: "select * from them where id='c'" opts 'NULL' PGSQL using cached connection for localhost:1223/test/CALLER PGSQL: no data found +creating new cache entry lookup failed host in "net-pgsql;select * from them where id='c'"? no (end of list) warn: condition test failed in ACL "check_recipient" @@ -329,6 +344,7 @@ database lookup required for select * from them where id='10.0.0.0' PostgreSQL query: "select * from them where id='10.0.0.0'" opts 'NULL' PGSQL using cached connection for localhost:1223/test/CALLER PGSQL: no data found +creating new cache entry lookup failed host in "net-pgsql;select * from them where id='10.0.0.0'"? no (end of list) host in "+relay_hosts"? no (end of list) @@ -543,6 +559,7 @@ processing address_data database lookup required for select name from them where id='ph10' PostgreSQL query: "select name from them where id='ph10'" opts 'NULL' PGSQL new connection: host=localhost port=1223 database=test user=CALLER + creating new cache entry lookup yielded: Philip Hazel calling r1 router r1 router called for CALLER@myhost.test.ex @@ -587,6 +604,7 @@ appendfile transport entered database lookup required for select id from them where id='ph10' PostgreSQL query: "select id from them where id='ph10'" opts 'NULL' PGSQL new connection: host=localhost port=1223 database=test user=CALLER + creating new cache entry lookup yielded: ph10 appendfile: mode=600 notify_comsat=0 quota=0 warning=0 file=TESTSUITE/test-mail/ph10 format=unix @@ -651,6 +669,7 @@ dropping to exim gid; retaining priv uid database lookup required for select name from them where id='ph10'; PostgreSQL query: "select name from them where id='ph10';" opts 'NULL' PGSQL new connection: socket=TESTSUITE/pgsql/.s.PGSQL.1223 database=test user=CALLER + creating new cache entry lookup yielded: Philip Hazel search_tidyup called close PGSQL connection: (TESTSUITE/pgsql/.s.PGSQL.1223)/test/CALLER diff --git a/test/stderr/3201 b/test/stderr/3201 index 32bf69ca6..601a9ec85 100644 --- a/test/stderr/3201 +++ b/test/stderr/3201 @@ -31,6 +31,7 @@ internal_search_find: file="NULL" type=testdb key="fail" opts=NULL database lookup required for fail testdb lookup forced FAIL +creating new cache entry lookup failed host in "testdb;fail"? no (end of list) deny: condition test failed in ACL "connect1" @@ -73,6 +74,7 @@ internal_search_find: file="NULL" type=testdb key="fail" opts=NULL database lookup required for fail testdb lookup forced FAIL +creating new cache entry lookup failed host in "net-testdb;fail"? no (end of list) deny: condition test failed in ACL "connect2" diff --git a/test/stderr/3212 b/test/stderr/3212 index 1c944c24c..7b7719801 100644 --- a/test/stderr/3212 +++ b/test/stderr/3212 @@ -16,6 +16,7 @@ sender address = CALLER@myhost.test.ex type=lsearch key="list" opts=NULL file lookup required for list in TESTSUITE/aux-fixed/3212.aliases + creating new cache entry lookup yielded: userx, usery search_open: lsearch "TESTSUITE/aux-fixed/3212.aliases" cached open @@ -40,6 +41,7 @@ sender address = CALLER@myhost.test.ex type=lsearch key="root" opts=NULL file lookup required for root in TESTSUITE/aux-fixed/3212.aliases + creating new cache entry lookup yielded: userx search_open: lsearch "TESTSUITE/aux-fixed/3212.aliases" cached open @@ -74,6 +76,7 @@ sender address = CALLER@myhost.test.ex internal_search_find: file="NULL" type=testdb key="something" opts=NULL database lookup required for something + creating new cache entry lookup yielded: something search_open: testdb "NULL" cached open @@ -108,6 +111,7 @@ sender address = CALLER@myhost.test.ex internal_search_find: file="NULL" type=testdb key="something" opts=NULL database lookup required for something + creating new cache entry lookup yielded: something search_open: lsearch "TESTSUITE/aux-fixed/3212.aliases" cached open diff --git a/test/stdout/2500 b/test/stdout/2500 index 7e413c0a3..c6014d388 100644 --- a/test/stdout/2500 +++ b/test/stdout/2500 @@ -1,3 +1,4 @@ +> dsearch specifics > ok: 2500.tst > fail: FAIL > Failed: failed to open TESTSUITE/dir_not_here for directory search: No such file or directory @@ -14,3 +15,13 @@ > fail,subdir:FAIL > fail,subdir:FAIL > +> cachelayer tests +> fail: FAIL +> createfile: OK +> fail,cached:FAIL +> ok,no_rd test-data +> delfile: OK +> ok,cached: test-data +> fail,no_rd FAIL +> fail: FAIL +> -- cgit v1.2.3 From 5fbb51949cbd9765421c5832c2d391f80f8183e9 Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Mon, 25 May 2020 22:57:57 +0100 Subject: Quota checking during reception. Bug 163 --- doc/doc-docbook/spec.xfpt | 51 ++++++ doc/doc-txt/NewStuff | 3 + src/src/acl.c | 85 ++++++++- src/src/child.c | 2 +- src/src/deliver.c | 2 +- src/src/exim.c | 21 +++ src/src/functions.h | 4 + src/src/globals.h | 1 + src/src/macros.h | 1 + src/src/smtp_in.c | 3 +- src/src/transports/appendfile.c | 12 ++ src/src/verify.c | 377 +++++++++++++++++++++++++++++++++------- test/confs/0589 | 60 +++++++ test/log/0589 | 17 ++ test/rejectlog/0589 | 6 + test/scripts/0000-Basic/0589 | 44 +++++ test/stdout/0589 | 61 +++++++ 17 files changed, 680 insertions(+), 70 deletions(-) create mode 100644 test/confs/0589 create mode 100644 test/log/0589 create mode 100644 test/rejectlog/0589 create mode 100644 test/scripts/0000-Basic/0589 create mode 100644 test/stdout/0589 (limited to 'test/stdout') diff --git a/doc/doc-docbook/spec.xfpt b/doc/doc-docbook/spec.xfpt index a1f361339..68f3b5b5a 100644 --- a/doc/doc-docbook/spec.xfpt +++ b/doc/doc-docbook/spec.xfpt @@ -3906,6 +3906,13 @@ together with the file descriptor number of an open pipe. Closure of the pipe signals the final completion of the sequence of processes that are passing messages through the same SMTP connection. +.new +.vitem &%-MCq%&&~<&'recipient&~address'&>&~<&'size'&> +.oindex "&%-MCq%&" +This option is not intended for use by external callers. It is used internally +by Exim to implement quota checking for local users. +.wen + .vitem &%-MCS%& .oindex "&%-MCS%&" This option is not intended for use by external callers. It is used internally @@ -32740,6 +32747,15 @@ The &%success_on_redirect%& option causes verification always to succeed immediately after a successful redirection. By default, if a redirection generates just one address, that address is also verified. See further discussion in section &<>&. +.new +.next +If the &%quota%& option is specified for recipient verify, +successful routing to an appendfile transport is followed by a call into +the transport to evaluate the quota status for the recipient. +No actual delivery is done, but verification will succeed if the quota +is sufficient for the message (if the sender gave a message size) or +not already exceeded (otherwise). +.wen .endlist .cindex "verifying address" "differentiating failures" @@ -32773,6 +32789,9 @@ connection, HELO, or MAIL). &%recipient%&: The RCPT command in a callout was rejected. .next &%postmaster%&: The postmaster check in a callout was rejected. +.new +.next +&%quota%&: The quota check for a local recipient did non pass. .endlist The main use of these variables is expected to be to distinguish between @@ -33102,6 +33121,38 @@ behaviour will be the same. +.new +.section "Quota caching" "SECTquotacache" +.cindex "hints database" "quota cache" +.cindex "quota" "cache, description of" +.cindex "caching" "quota" +Exim caches the results of quota verification +in order to reduce the amount of resources used. +The &"callout"& hints database is used. + +The default cache periods are five minutes for a positive (good) result +and one hour for a negative result. +To change the periods the &%quota%& option can be followed by an equals sign +and a number of optional paramemters, separated by commas. +For example: +.code +verify = recipient/quota=cachepos=1h,cacheneg=1d +.endd +Possible parameters are: +.vlist +.vitem &*cachepos&~=&~*&<&'time&~interval'&> +.cindex "quota cache" "positive entry expiry, specifying" +Set the lifetime for a positive cache entry. +A value of zero seconds is legitimate. + +.vitem &*cacheneg&~=&~*&<&'time&~interval'&> +.cindex "quota cache" "negative entry expiry, specifying" +As above, for a negative entry. + +.vitem &*no_cache*& +Set both positive and negative lifetimes to zero. +.wen + .section "Sender address verification reporting" "SECTsenaddver" .cindex "verifying" "suppressing error details" See section &<>& for a general discussion of diff --git a/doc/doc-txt/NewStuff b/doc/doc-txt/NewStuff index 83b696fe5..9797e97db 100644 --- a/doc/doc-txt/NewStuff +++ b/doc/doc-txt/NewStuff @@ -26,6 +26,9 @@ Version 4.95 6. An option to ignore the cache on a lookup. + 7. Quota checking during reception (i.e. at SMTP time) for appendfile- + transport-managed quotas. + Version 4.94 ------------ diff --git a/src/src/acl.c b/src/src/acl.c index 24716f0d1..57a07296f 100644 --- a/src/src/acl.c +++ b/src/src/acl.c @@ -15,6 +15,12 @@ #define CALLOUT_TIMEOUT_DEFAULT 30 +/* Default quota cache TTLs */ + +#define QUOTA_POS_DEFAULT (5*60) +#define QUOTA_NEG_DEFAULT (60*60) + + /* ACL verb codes - keep in step with the table of verbs that follows */ enum { ACL_ACCEPT, ACL_DEFER, ACL_DENY, ACL_DISCARD, ACL_DROP, ACL_REQUIRE, @@ -1556,6 +1562,20 @@ static callout_opt_t callout_opt_list[] = { +static int +v_period(const uschar * s, const uschar * arg, uschar ** log_msgptr) +{ +int period; +if ((period = readconf_readtime(s, 0, FALSE)) < 0) + { + *log_msgptr = string_sprintf("bad time value in ACL condition " + "\"verify %s\"", arg); + } +return period; +} + + + /* This function implements the "verify" condition. It is called when encountered in any ACL, because some tests are almost always permitted. Some just don't make sense, and always fail (for example, an attempt to test a host @@ -1590,6 +1610,8 @@ BOOL defer_ok = FALSE; BOOL callout_defer_ok = FALSE; BOOL no_details = FALSE; BOOL success_on_redirect = FALSE; +BOOL quota = FALSE; +int quota_pos_cache = QUOTA_POS_DEFAULT, quota_neg_cache = QUOTA_NEG_DEFAULT; address_item *sender_vaddr = NULL; uschar *verify_sender_address = NULL; uschar *pm_mailfrom = NULL; @@ -1823,12 +1845,8 @@ while ((ss = string_nextinlist(&list, &sep, big_buffer, big_buffer_size))) } while (isspace(*opt)) opt++; } - if (op->timeval && (period = readconf_readtime(opt, 0, FALSE)) < 0) - { - *log_msgptr = string_sprintf("bad time value in ACL condition " - "\"verify %s\"", arg); + if (op->timeval && (period = v_period(opt, arg, log_msgptr)) < 0) return ERROR; - } switch(op->value) { @@ -1861,6 +1879,38 @@ while ((ss = string_nextinlist(&list, &sep, big_buffer, big_buffer_size))) } } + /* The quota option has sub-options, comma-separated */ + + else if (strncmpic(ss, US"quota", 5) == 0) + { + quota = TRUE; + if (*(ss += 5)) + { + while (isspace(*ss)) ss++; + if (*ss++ == '=') + { + const uschar * sublist = ss; + int optsep = ','; + int period; + + while (isspace(*sublist)) sublist++; + for (uschar * opt; opt = string_nextinlist(&sublist, &optsep, NULL, 0); ) + if (Ustrncmp(opt, "cachepos=", 9) == 0) + if ((period = v_period(opt += 9, arg, log_msgptr)) < 0) + return ERROR; + else + quota_pos_cache = period; + else if (Ustrncmp(opt, "cacheneg=", 9) == 0) + if ((period = v_period(opt += 9, arg, log_msgptr)) < 0) + return ERROR; + else + quota_neg_cache = period; + else if (Ustrcmp(opt, "no_cache") == 0) + quota_pos_cache = quota_neg_cache = 0; + } + } + } + /* Option not recognized */ else @@ -1879,6 +1929,31 @@ if ((verify_options & (vopt_callout_recipsender|vopt_callout_recippmaster)) == return ERROR; } +/* Handle quota verification */ +if (quota) + { + if (vp->value != VERIFY_RCPT) + { + *log_msgptr = US"can only verify quota of recipient"; + return ERROR; + } + + if ((rc = verify_quota_call(addr->address, + quota_pos_cache, quota_neg_cache, log_msgptr)) != OK) + { + *basic_errno = errno; + if (smtp_return_error_details) + { + if (!*user_msgptr && *log_msgptr) + *user_msgptr = string_sprintf("Rejected after %s: %s", + smtp_names[smtp_connection_had[smtp_ch_index-1]], *log_msgptr); + if (rc == DEFER) f.acl_temp_details = TRUE; + } + } + + return rc; + } + /* Handle sender-in-header verification. Default the user message to the log message if giving out verification details. */ diff --git a/src/src/child.c b/src/src/child.c index b36a96fe1..1407b3718 100644 --- a/src/src/child.c +++ b/src/src/child.c @@ -27,7 +27,7 @@ Arguments: Returns: nothing */ -static void +void force_fd(int oldfd, int newfd) { if (oldfd == newfd) return; diff --git a/src/src/deliver.c b/src/src/deliver.c index acb87bca6..dd922c728 100644 --- a/src/src/deliver.c +++ b/src/src/deliver.c @@ -2125,7 +2125,7 @@ Arguments: Returns: nothing */ -static void +void deliver_local(address_item *addr, BOOL shadowing) { BOOL use_initgroups; diff --git a/src/src/exim.c b/src/src/exim.c index 905ef0a70..4e7aae69a 100644 --- a/src/src/exim.c +++ b/src/src/exim.c @@ -1618,6 +1618,7 @@ BOOL removed_privilege = FALSE; BOOL usage_wanted = FALSE; BOOL verify_address_mode = FALSE; BOOL verify_as_sender = FALSE; +BOOL rcpt_verify_quota = FALSE; BOOL version_printed = FALSE; uschar *alias_arg = NULL; uschar *called_as = US""; @@ -2790,6 +2791,13 @@ on the second character (the one after '-'), to save some effort. */ else badarg = TRUE; break; + /* -MCq: do a quota check on the given recipient for the given size + of message. Separate from -MC. */ + case 'q': rcpt_verify_quota = TRUE; + if (++i < argc) message_size = Uatoi(argv[i]); + else badarg = TRUE; + break; + /* -MCS: set the smtp_use_size flag; this is useful only when it precedes -MC (see above) */ @@ -4296,6 +4304,7 @@ if ( !unprivileged /* originally had root AND */ || msg_action != MSG_DELIVER /* not delivering */ ) /* and */ && (!checking || !f.address_test_mode) /* not address checking */ + && !rcpt_verify_quota /* and not quota checking */ ) ) ) exim_setugid(exim_uid, exim_gid, TRUE, US"privilege not needed"); @@ -4414,6 +4423,18 @@ needed in transports so we lost the optimisation. */ #endif } +/* Handle a request to check quota */ +if (rcpt_verify_quota) + if (real_uid != root_uid && real_uid != exim_uid) + exim_fail("exim: Permission denied\n"); + else if (recipients_arg >= argc) + exim_fail("exim: missing recipient for quota check\n"); + else + { + verify_quota(argv[recipients_arg]); + exim_exit(EXIT_SUCCESS); + } + /* Handle the -brt option. This is for checking out retry configurations. The next three arguments are a domain name or a complete address, and optionally two error numbers. All it does is to call the function that diff --git a/src/src/functions.h b/src/src/functions.h index 2a4597202..486a91595 100644 --- a/src/src/functions.h +++ b/src/src/functions.h @@ -189,6 +189,7 @@ extern void debug_print_socket(int); extern void decode_bits(unsigned int *, size_t, int *, uschar *, bit_table *, int, uschar *, int); extern void delete_pid_file(void); +extern void deliver_local(address_item *, BOOL); extern address_item *deliver_make_addr(uschar *, BOOL); extern void delivery_log(int, address_item *, int, uschar *); extern int deliver_message(uschar *, BOOL, BOOL); @@ -260,6 +261,7 @@ extern BOOL filter_runtest(int, uschar *, BOOL, BOOL); extern BOOL filter_system_interpret(address_item **, uschar **); extern uschar * fn_hdrs_added(void); +extern void force_fd(int, int); extern void header_add(int, const char *, ...); extern header_line *header_add_at_position_internal(BOOL, uschar *, BOOL, int, const char *, ...); @@ -620,6 +622,8 @@ extern int verify_check_this_host(const uschar **, unsigned int *, const uschar*, const uschar *, const uschar **); extern address_item *verify_checked_sender(uschar *); extern void verify_get_ident(int); +extern void verify_quota(uschar *); +extern int verify_quota_call(const uschar *, int, int, uschar **); extern BOOL verify_sender(int *, uschar **); extern BOOL verify_sender_preliminary(int *, uschar **); extern void version_init(void); diff --git a/src/src/globals.h b/src/src/globals.h index 1bdf338a2..3dfbbc2b1 100644 --- a/src/src/globals.h +++ b/src/src/globals.h @@ -943,6 +943,7 @@ extern int smtp_load_reserve; /* Only from reserved if load > this */ extern int smtp_mailcmd_count; /* Count of MAIL commands */ extern int smtp_max_synprot_errors;/* Max syntax/protocol errors */ extern int smtp_max_unknown_commands; /* As it says */ +extern uschar *smtp_names[]; /* decode for command codes */ extern uschar *smtp_notquit_reason; /* Global for disconnect reason */ extern FILE *smtp_out; /* Incoming SMTP output file */ extern uschar *smtp_ratelimit_hosts; /* Rate limit these hosts */ diff --git a/src/src/macros.h b/src/src/macros.h index a507bbf83..f6012447d 100644 --- a/src/src/macros.h +++ b/src/src/macros.h @@ -736,6 +736,7 @@ enum { v_none, v_sender, v_recipient, v_expn }; #define vopt_callout_recippmaster 0x0100 /* use postmaster to verify recip */ #define vopt_callout_hold 0x0200 /* lazy close connection */ #define vopt_success_on_redirect 0x0400 +#define vopt_quota 0x0800 /* quota check, to local/appendfile */ /* Values for fields in callout cache records */ diff --git a/src/src/smtp_in.c b/src/src/smtp_in.c index 2b4323bec..ce27c5f3e 100644 --- a/src/src/smtp_in.c +++ b/src/src/smtp_in.c @@ -227,7 +227,7 @@ static smtp_cmd_list *cmd_list_end = /* This list of names is used for performing the smtp_no_mail logging action. It must be kept in step with the SCH_xxx enumerations. */ -static uschar *smtp_names[] = +uschar * smtp_names[] = { US"NONE", US"AUTH", US"DATA", US"BDAT", US"EHLO", US"ETRN", US"EXPN", US"HELO", US"HELP", US"MAIL", US"NOOP", US"QUIT", US"RCPT", US"RSET", @@ -2058,6 +2058,7 @@ sending_ip_address = NULL; return_path = sender_address = NULL; deliver_localpart_data = deliver_domain_data = recipient_data = sender_data = NULL; /* Can be set by ACL */ +recipient_verify_failure = NULL; deliver_localpart_parent = deliver_localpart_orig = NULL; deliver_domain_parent = deliver_domain_orig = NULL; callout_address = NULL; diff --git a/src/src/transports/appendfile.c b/src/src/transports/appendfile.c index f07f3bacb..a621de074 100644 --- a/src/src/transports/appendfile.c +++ b/src/src/transports/appendfile.c @@ -2740,6 +2740,18 @@ if (!disable_quota && ob->quota_value > 0) } +if (verify_mode) + { + addr->basic_errno = errno; + addr->message = US"Over quota"; + addr->transport_return = yield; + DEBUG(D_transport) + debug_printf("appendfile (verify) yields %d with errno=%d more_errno=%d\n", + yield, addr->basic_errno, addr->more_errno); + + goto RETURN; + } + /* If we are writing in MBX format, what we actually do is to write the message to a temporary file, and then copy it to the real file once we know its size. This is the most straightforward way of getting the correct length in the diff --git a/src/src/verify.c b/src/src/verify.c index 7f1752120..3a40cea26 100644 --- a/src/src/verify.c +++ b/src/src/verify.c @@ -568,6 +568,7 @@ if (!addr->transport) { HDEBUG(D_verify) debug_printf("cannot callout via null transport\n"); } + else if (Ustrcmp(addr->transport->driver_name, "smtp") != 0) log_write(0, LOG_MAIN|LOG_PANIC|LOG_CONFIG_FOR, "callout transport '%s': %s is non-smtp", addr->transport->name, addr->transport->driver_name); @@ -1846,6 +1847,8 @@ while (addr_new) if (rc == OK) { + BOOL local_verify = FALSE; + if (routed) *routed = TRUE; if (callout > 0) { @@ -1872,72 +1875,76 @@ while (addr_new) transport's options, so as to mimic what would happen if we were really sending a message to this address. */ - if ((tp = addr->transport) && !tp->info->local) - { - (void)(tp->setup)(tp, addr, &tf, 0, 0, NULL); + if ((tp = addr->transport)) + if (!tp->info->local) + { + (void)(tp->setup)(tp, addr, &tf, 0, 0, NULL); - /* If the transport has hosts and the router does not, or if the - transport is configured to override the router's hosts, we must build a - host list of the transport's hosts, and find the IP addresses */ + /* If the transport has hosts and the router does not, or if the + transport is configured to override the router's hosts, we must build a + host list of the transport's hosts, and find the IP addresses */ - if (tf.hosts && (!host_list || tf.hosts_override)) - { - uschar *s; - const uschar *save_deliver_domain = deliver_domain; - uschar *save_deliver_localpart = deliver_localpart; - - host_list = NULL; /* Ignore the router's hosts */ - - deliver_domain = addr->domain; - deliver_localpart = addr->local_part; - s = expand_string(tf.hosts); - deliver_domain = save_deliver_domain; - deliver_localpart = save_deliver_localpart; - - if (!s) - { - log_write(0, LOG_MAIN|LOG_PANIC, "failed to expand list of hosts " - "\"%s\" in %s transport for callout: %s", tf.hosts, - tp->name, expand_string_message); - } - else - { - int flags; - host_build_hostlist(&host_list, s, tf.hosts_randomize); - - /* Just ignore failures to find a host address. If we don't manage - to find any addresses, the callout will defer. Note that more than - one address may be found for a single host, which will result in - additional host items being inserted into the chain. Hence we must - save the next host first. */ - - flags = HOST_FIND_BY_A | HOST_FIND_BY_AAAA; - if (tf.qualify_single) flags |= HOST_FIND_QUALIFY_SINGLE; - if (tf.search_parents) flags |= HOST_FIND_SEARCH_PARENTS; - - for (host_item * host = host_list, * nexthost; host; host = nexthost) - { - nexthost = host->next; - if (tf.gethostbyname || - string_is_ip_address(host->name, NULL) != 0) - (void)host_find_byname(host, NULL, flags, NULL, TRUE); - else + if (tf.hosts && (!host_list || tf.hosts_override)) + { + uschar *s; + const uschar *save_deliver_domain = deliver_domain; + uschar *save_deliver_localpart = deliver_localpart; + + host_list = NULL; /* Ignore the router's hosts */ + + deliver_domain = addr->domain; + deliver_localpart = addr->local_part; + s = expand_string(tf.hosts); + deliver_domain = save_deliver_domain; + deliver_localpart = save_deliver_localpart; + + if (!s) + { + log_write(0, LOG_MAIN|LOG_PANIC, "failed to expand list of hosts " + "\"%s\" in %s transport for callout: %s", tf.hosts, + tp->name, expand_string_message); + } + else + { + int flags; + host_build_hostlist(&host_list, s, tf.hosts_randomize); + + /* Just ignore failures to find a host address. If we don't manage + to find any addresses, the callout will defer. Note that more than + one address may be found for a single host, which will result in + additional host items being inserted into the chain. Hence we must + save the next host first. */ + + flags = HOST_FIND_BY_A | HOST_FIND_BY_AAAA; + if (tf.qualify_single) flags |= HOST_FIND_QUALIFY_SINGLE; + if (tf.search_parents) flags |= HOST_FIND_SEARCH_PARENTS; + + for (host_item * host = host_list, * nexthost; host; host = nexthost) { - const dnssec_domains * dsp = NULL; - if (Ustrcmp(tp->driver_name, "smtp") == 0) + nexthost = host->next; + if (tf.gethostbyname || + string_is_ip_address(host->name, NULL) != 0) + (void)host_find_byname(host, NULL, flags, NULL, TRUE); + else { - smtp_transport_options_block * ob = - (smtp_transport_options_block *) tp->options_block; - dsp = &ob->dnssec; - } + const dnssec_domains * dsp = NULL; + if (Ustrcmp(tp->driver_name, "smtp") == 0) + { + smtp_transport_options_block * ob = + (smtp_transport_options_block *) tp->options_block; + dsp = &ob->dnssec; + } - (void) host_find_bydns(host, NULL, flags, NULL, NULL, NULL, - dsp, NULL, NULL); + (void) host_find_bydns(host, NULL, flags, NULL, NULL, NULL, + dsp, NULL, NULL); + } } - } - } - } - } + } + } + } + else if ( options & vopt_quota + && Ustrcmp(tp->driver_name, "appendfile") == 0) + local_verify = TRUE; /* Can only do a callout if we have at least one host! If the callout fails, it will have set ${sender,recipient}_verify_failure. */ @@ -1963,11 +1970,17 @@ while (addr_new) #endif } } + else if (local_verify) + { + HDEBUG(D_verify) debug_printf("Attempting quota verification\n"); + + deliver_set_expansions(addr); + deliver_local(addr, TRUE); + rc = addr->transport_return; + } else - { HDEBUG(D_verify) debug_printf("Cannot do callout: neither router nor " "transport provided a host list, or transport is not smtp\n"); - } } } @@ -3919,6 +3932,246 @@ while ((domain = string_nextinlist(&list, &sep, NULL, 0))) return FAIL; } + + +/**************************************************** + Verify a local user account for quota sufficiency +****************************************************/ + +/* The real work, done via a re-exec for privs, calls +down to the transport for the quota check. + +Route and transport (in recipient-verify mode) the +given recipient. + +A routing result indicating any transport type other than appendfile +results in a fail. + +Return, on stdout, a result string containing: +- highlevel result code (OK, DEFER, FAIL) +- errno +- where string +- message string +*/ + +void +verify_quota(uschar * address) +{ +address_item vaddr = {.address = address}; +BOOL routed; +uschar * msg = US"\0"; +int rc, len = 1; + +if ((rc = verify_address(&vaddr, NULL, vopt_is_recipient | vopt_quota, + 1, 0, 0, NULL, NULL, &routed)) != OK) + { + uschar * where = recipient_verify_failure; + msg = acl_verify_message ? acl_verify_message : vaddr.message; + if (!msg) msg = US""; + if (rc == DEFER && vaddr.basic_errno == ERRNO_EXIMQUOTA) + { + rc = FAIL; /* DEFER -> FAIL */ + where = US"quota"; + vaddr.basic_errno = 0; + } + else if (!where) where = US""; + + len = 5 + Ustrlen(msg) + 1 + Ustrlen(where); + msg = string_sprintf("%c%c%c%c%c%s%c%s", (uschar)rc, + (vaddr.basic_errno >> 24) && 0xff, (vaddr.basic_errno >> 16) && 0xff, + (vaddr.basic_errno >> 8) && 0xff, vaddr.basic_errno && 0xff, + where, '\0', msg); + } + +DEBUG(D_verify) debug_printf_indent("verify_quota: len %d\n", len); +write(1, msg, len); +return; +} + + +/******************************************************************************/ + +/* Quota cache lookup. We use the callout hints db also for the quota cache. +Return TRUE if a nonexpired record was found, having filled in the yield +argument. +*/ + +static BOOL +cached_quota_lookup(const uschar * rcpt, int * yield, + int pos_cache, int neg_cache) +{ +open_db dbblock, *dbm_file = NULL; +dbdata_callout_cache_address * cache_address_record; + +if (!pos_cache && !neg_cache) + return FALSE; +if (!(dbm_file = dbfn_open(US"callout", O_RDWR, &dbblock, FALSE, TRUE))) + { + HDEBUG(D_verify) debug_printf_indent("quota cache: not available\n"); + return FALSE; + } +if (!(cache_address_record = (dbdata_callout_cache_address *) + get_callout_cache_record(dbm_file, rcpt, US"address", + pos_cache, neg_cache))) + { + dbfn_close(dbm_file); + return FALSE; + } +if (cache_address_record->result == ccache_accept) + *yield = OK; +dbfn_close(dbm_file); +return TRUE; +} + +/* Quota cache write */ + +static void +cache_quota_write(const uschar * rcpt, int yield, int pos_cache, int neg_cache) +{ +open_db dbblock, *dbm_file = NULL; +dbdata_callout_cache_address cache_address_record; + +if (!pos_cache && !neg_cache) + return; +if (!(dbm_file = dbfn_open(US"callout", O_RDWR|O_CREAT, &dbblock, FALSE, TRUE))) + { + HDEBUG(D_verify) debug_printf_indent("quota cache: not available\n"); + return; + } + +cache_address_record.result = yield == OK ? ccache_accept : ccache_reject; + +(void)dbfn_write(dbm_file, rcpt, &cache_address_record, + (int)sizeof(dbdata_callout_cache_address)); +HDEBUG(D_verify) debug_printf_indent("wrote %s quota cache record for %s\n", + yield == OK ? "positive" : "negative", rcpt); + +dbfn_close(dbm_file); +return; +} + + +/* To evaluate a local user's quota, starting in ACL, we need to +fork & exec to regain privileges, to that we can change to the user's +identity for access to their files. + +Arguments: + rcpt Recipient account + pos_cache Number of seconds to cache a positive result (delivery + to be accepted). Zero to disable caching. + neg_cache Number of seconds to cache a negative result. Zero to disable. + msg Pointer to result string pointer + +Return: OK/DEFER/FAIL code +*/ + +int +verify_quota_call(const uschar * rcpt, int pos_cache, int neg_cache, + uschar ** msg) +{ +int pfd[2], pid, save_errno, yield = FAIL; +void (*oldsignal)(int); +const uschar * where = US"socketpair"; + +*msg = NULL; + +if (cached_quota_lookup(rcpt, &yield, pos_cache, neg_cache)) + { + HDEBUG(D_verify) debug_printf_indent("quota cache: address record is %d\n", + yield == OK ? "positive" : "negative"); + if (yield != OK) + { + recipient_verify_failure = US"quota"; + acl_verify_message = *msg = + US"Previous (cached) quota verification failure"; + } + return yield; + } + +if (pipe(pfd) != 0) + goto fail; + +where = US"fork"; +oldsignal = signal(SIGCHLD, SIG_DFL); +if ((pid = exim_fork(US"quota-verify")) < 0) + { + save_errno = errno; + close(pfd[pipe_write]); + close(pfd[pipe_read]); + errno = save_errno; + goto fail; + } + +if (pid == 0) /* child */ + { + close(pfd[pipe_read]); + force_fd(pfd[pipe_write], 1); /* stdout to pipe */ + close(pfd[pipe_write]); + dup2(1, 0); + if (debug_fd > 0) force_fd(debug_fd, 2); + + child_exec_exim(CEE_EXEC_EXIT, FALSE, NULL, FALSE, 3, + US"-MCq", string_sprintf("%d", message_size), rcpt); + /*NOTREACHED*/ + } + +save_errno = errno; +close(pfd[pipe_write]); + +if (pid < 0) + { + DEBUG(D_verify) debug_printf_indent(" fork: %s\n", strerror(save_errno)); + } +else + { + uschar buf[128]; + int n = read(pfd[pipe_read], buf, sizeof(buf)); + int status; + + waitpid(pid, &status, 0); + if (status == 0) + { + uschar * s; + + if (n > 0) yield = buf[0]; + if (n > 4) + save_errno = (buf[1] << 24) | (buf[2] << 16) | (buf[3] << 8) | buf[4]; + if ((recipient_verify_failure = n > 5 + ? string_copyn_taint(buf+5, n-5, FALSE) : NULL)) + { + int m; + s = buf + 5 + Ustrlen(recipient_verify_failure) + 1; + m = n - (s - buf); + acl_verify_message = *msg = + m > 0 ? string_copyn_taint(s, m, FALSE) : NULL; + } + + DEBUG(D_verify) debug_printf_indent("verify call response:" + " len %d yield %s errno '%s' where '%s' msg '%s'\n", + n, rc_names[yield], strerror(save_errno), recipient_verify_failure, *msg); + + if ( yield == OK + || save_errno == 0 && Ustrcmp(recipient_verify_failure, "quota") == 0) + cache_quota_write(rcpt, yield, pos_cache, neg_cache); + else DEBUG(D_verify) + debug_printf_indent("result not cacheable\n"); + } + else + { + DEBUG(D_verify) + debug_printf_indent("verify call response: waitpid status 0x%04x\n", status); + } + } + +close(pfd[pipe_read]); +errno = save_errno; + +fail: + +return yield; +} + + /* vi: aw ai sw=2 */ /* End of verify.c */ diff --git a/test/confs/0589 b/test/confs/0589 new file mode 100644 index 000000000..b0f731143 --- /dev/null +++ b/test/confs/0589 @@ -0,0 +1,60 @@ +# Exim test configuration 0589 + +.include DIR/aux-var/std_conf_prefix + +primary_hostname = myhost.test.ex + +# ----- Main settings ----- + +acl_smtp_rcpt = chk_rcpt +log_selector = +millisec + +# --- ACL --- + +begin acl + +chk_rcpt: + deny !verify = recipient/quota=cachepos=20s,cacheneg=100s + logwrite = where='$recipient_verify_failure' msg='$acl_verify_message' + accept + +loggit: + accept logwrite = $acl_arg1 was called for $local_part@$domain + message = / + +# ----- Routers ----- + +begin routers + +localuser: + driver = accept + local_parts = !route_fail + transport = appendfile + # set address_data purely to get logging of use of the router + address_data = ${acl {loggit}{router }} + +failrouter: + driver = accept + condition = ${if eq {${acl {loggit}{router }}}{} {no}{no}} + transport = appendfile + +# ----- Transports ----- + +begin transports + +appendfile: + driver = appendfile + file = DIR/test-mail/themailfile + quota = 1k + user = CALLER + # set homedir purely to get logging of use of the transport + home_directory = ${acl {loggit}{transport}} + +# ----- Retry ----- + +begin retry + +* * F,5d,1d + + +# End diff --git a/test/log/0589 b/test/log/0589 new file mode 100644 index 000000000..dcbd6565a --- /dev/null +++ b/test/log/0589 @@ -0,0 +1,17 @@ + +******** SERVER ******** +2017-07-30 18:51:05.712 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port PORT_D +2017-07-30 18:51:05.712 router was called for quota_good@test.ex +2017-07-30 18:51:05.712 transport was called for quota_good@test.ex +2017-07-30 18:51:05.712 router was called for quota_fail@test.ex +2017-07-30 18:51:05.712 transport was called for quota_fail@test.ex +2017-07-30 18:51:05.712 where='quota' msg='Over quota' +2017-07-30 18:51:05.712 H=(test) [127.0.0.1] F= rejected RCPT : Over quota +2017-07-30 18:51:05.712 router was called for route_fail@test.ex +2017-07-30 18:51:05.712 where='route' msg='Unrouteable address' +2017-07-30 18:51:05.712 H=(test) [127.0.0.1] F= rejected RCPT : Unrouteable address +2017-07-30 18:51:05.712 where='quota' msg='Previous (cached) quota verification failure' +2017-07-30 18:51:05.712 H=(test) [127.0.0.1] F= rejected RCPT : Previous (cached) quota verification failure +2017-07-30 18:51:05.712 router was called for route_fail@test.ex +2017-07-30 18:51:05.712 where='route' msg='Unrouteable address' +2017-07-30 18:51:05.712 H=(test) [127.0.0.1] F= rejected RCPT : Unrouteable address diff --git a/test/rejectlog/0589 b/test/rejectlog/0589 new file mode 100644 index 000000000..432b6780f --- /dev/null +++ b/test/rejectlog/0589 @@ -0,0 +1,6 @@ + +******** SERVER ******** +2017-07-30 18:51:05.712 H=(test) [127.0.0.1] F= rejected RCPT : Over quota +2017-07-30 18:51:05.712 H=(test) [127.0.0.1] F= rejected RCPT : Unrouteable address +2017-07-30 18:51:05.712 H=(test) [127.0.0.1] F= rejected RCPT : Previous (cached) quota verification failure +2017-07-30 18:51:05.712 H=(test) [127.0.0.1] F= rejected RCPT : Unrouteable address diff --git a/test/scripts/0000-Basic/0589 b/test/scripts/0000-Basic/0589 new file mode 100644 index 000000000..8cea367eb --- /dev/null +++ b/test/scripts/0000-Basic/0589 @@ -0,0 +1,44 @@ +# verify quota at smtp time +# +exim -bd -DSERVER=server -oX PORT_D +**** +client 127.0.0.1 PORT_D +??? 220 +EHLO test +??? 250- +??? 250-SIZE +??? 250-8BITMIME +??? 250-PIPELINING +??? 250 HELP +MAIL FROM:\r\nRCPT TO: +??? 250 +??? 250 +RSET +??? 250 +MAIL FROM: SIZE=2048\r\nRCPT TO: +??? 250 +??? 550 +RSET +??? 250 +MAIL FROM:\r\nRCPT TO: +??? 250 +??? 550 +RSET +??? 250 +MAIL FROM:\r\nRCPT TO: +??? 250 +??? 250 +RSET +??? 250 +MAIL FROM: SIZE=512\r\nRCPT TO: +??? 250 +??? 550 +RSET +??? 250 +MAIL FROM:\r\nRCPT TO: +??? 250 +??? 550 +QUIT +**** +# +killdaemon diff --git a/test/stdout/0589 b/test/stdout/0589 new file mode 100644 index 000000000..9f70b7343 --- /dev/null +++ b/test/stdout/0589 @@ -0,0 +1,61 @@ +Connecting to 127.0.0.1 port 1225 ... connected +??? 220 +<<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 +>>> EHLO test +??? 250- +<<< 250-myhost.test.ex Hello test [127.0.0.1] +??? 250-SIZE +<<< 250-SIZE 52428800 +??? 250-8BITMIME +<<< 250-8BITMIME +??? 250-PIPELINING +<<< 250-PIPELINING +??? 250 HELP +<<< 250 HELP +>>> MAIL FROM:\r\nRCPT TO: +??? 250 +<<< 250 OK +??? 250 +<<< 250 Accepted +>>> RSET +??? 250 +<<< 250 Reset OK +>>> MAIL FROM: SIZE=ssss\r\nRCPT TO: +??? 250 +<<< 250 OK +??? 550 +<<< 550 Administrative prohibition +>>> RSET +??? 250 +<<< 250 Reset OK +>>> MAIL FROM:\r\nRCPT TO: +??? 250 +<<< 250 OK +??? 550 +<<< 550 Administrative prohibition +>>> RSET +??? 250 +<<< 250 Reset OK +>>> MAIL FROM:\r\nRCPT TO: +??? 250 +<<< 250 OK +??? 250 +<<< 250 Accepted +>>> RSET +??? 250 +<<< 250 Reset OK +>>> MAIL FROM: SIZE=ssss\r\nRCPT TO: +??? 250 +<<< 250 OK +??? 550 +<<< 550 Administrative prohibition +>>> RSET +??? 250 +<<< 250 Reset OK +>>> MAIL FROM:\r\nRCPT TO: +??? 250 +<<< 250 OK +??? 550 +<<< 550 Administrative prohibition +>>> QUIT +End of script -- cgit v1.2.3