From e1d04f48a45c9f8e8ff75610003048f8ead73219 Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Sun, 5 Feb 2017 23:19:56 +0000 Subject: Debug: indent ACL and expreassion tracing by evaluation depth --- src/src/acl.c | 152 +++++----- src/src/debug.c | 24 +- src/src/expand.c | 85 +++--- src/src/functions.h | 2 + src/src/globals.c | 3 + src/src/globals.h | 2 + src/src/malware.c | 44 +-- src/src/mime.c | 24 +- src/src/pdkim/rsa.c | 34 +-- src/src/receive.c | 20 +- src/src/smtp_out.c | 28 +- src/src/spam.c | 10 +- src/src/transports/smtp.c | 4 +- src/src/transports/smtp_socks.c | 26 +- src/src/verify.c | 30 +- test/stderr/0002 | 304 +++++++++---------- test/stderr/0022 | 20 +- test/stderr/0023 | 238 +++++++-------- test/stderr/0092 | 42 +-- test/stderr/0402 | 216 +++++++------- test/stderr/0537 | 128 ++++---- test/stderr/0544 | 226 +++++++------- test/stderr/3000 | 68 ++--- test/stderr/5410 | 636 +++++++++++++++++++++------------------- test/stderr/5420 | 636 +++++++++++++++++++++------------------- test/stdout/0574 | 6 +- 26 files changed, 1572 insertions(+), 1436 deletions(-) diff --git a/src/src/acl.c b/src/src/acl.c index 396e29965..60fa97752 100644 --- a/src/src/acl.c +++ b/src/src/acl.c @@ -573,7 +573,7 @@ static uschar *ratelimit_option_string[] = { /* Enable recursion between acl_check_internal() and acl_check_condition() */ -static int acl_check_wargs(int, address_item *, const uschar *, int, uschar **, +static int acl_check_wargs(int, address_item *, const uschar *, uschar **, uschar **); @@ -1167,7 +1167,7 @@ if (host_lookup_failed) /* Need to do a lookup */ HDEBUG(D_acl) - debug_printf("looking up host name to force name/address consistency check\n"); + debug_printf_indent("looking up host name to force name/address consistency check\n"); if ((rc = host_name_lookup()) != OK) { @@ -1241,7 +1241,7 @@ for (rr = dns_next_rr(dnsa, dnss, reset); { /* If the client IP address matches the target IP address, it's good! */ - DEBUG(D_acl) debug_printf("CSA target address is %s\n", da->address); + DEBUG(D_acl) debug_printf_indent("CSA target address is %s\n", da->address); if (strcmpic(sender_host_address, da->address) == 0) return CSA_OK; } @@ -1372,7 +1372,7 @@ for (rr = dns_next_rr(&dnsa, &dnss, RESET_ANSWERS); GETSHORT(port, p); DEBUG(D_acl) - debug_printf("CSA priority=%d weight=%d port=%d\n", priority, weight, port); + debug_printf_indent("CSA priority=%d weight=%d port=%d\n", priority, weight, port); /* Check the CSA version number */ @@ -1404,7 +1404,7 @@ for (rr = dns_next_rr(&dnsa, &dnss, RESET_ANSWERS); (void)dn_expand(dnsa.answer, dnsa.answer + dnsa.answerlen, p, (DN_EXPAND_ARG4_TYPE)target, sizeof(target)); - DEBUG(D_acl) debug_printf("CSA target is %s\n", target); + DEBUG(D_acl) debug_printf_indent("CSA target is %s\n", target); break; } @@ -1633,7 +1633,7 @@ switch(vp->value) *log_msgptr = *user_msgptr = string_sprintf("client SMTP authorization %s", csa_reason_string[rc]); csa_status = csa_status_string[rc]; - DEBUG(D_acl) debug_printf("CSA result %s\n", csa_status); + DEBUG(D_acl) debug_printf_indent("CSA result %s\n", csa_status); return csa_return_code[rc]; case VERIFY_HDR_SYNTAX: @@ -1888,7 +1888,7 @@ else if (verify_sender_address) rc = sender_vaddr->special_action; *basic_errno = sender_vaddr->basic_errno; } - HDEBUG(D_acl) debug_printf("using cached sender verify result\n"); + HDEBUG(D_acl) debug_printf_indent("using cached sender verify result\n"); } /* Do a new verification, and cache the result. The cache is used to avoid @@ -1935,7 +1935,7 @@ else if (verify_sender_address) rc = verify_address(sender_vaddr, NULL, verify_options, callout, callout_overall, callout_connect, se_mailfrom, pm_mailfrom, &routed); - HDEBUG(D_acl) debug_printf("----------- end verify ------------\n"); + HDEBUG(D_acl) debug_printf_indent("----------- end verify ------------\n"); if (rc != OK) *basic_errno = sender_vaddr->basic_errno; @@ -1943,10 +1943,10 @@ else if (verify_sender_address) DEBUG(D_acl) { if (Ustrcmp(sender_vaddr->address, verify_sender_address) != 0) - debug_printf("sender %s verified ok as %s\n", + debug_printf_indent("sender %s verified ok as %s\n", verify_sender_address, sender_vaddr->address); else - debug_printf("sender %s verified ok\n", + debug_printf_indent("sender %s verified ok\n", verify_sender_address); } } @@ -1988,7 +1988,7 @@ else addr2 = *addr; rc = verify_address(&addr2, NULL, verify_options|vopt_is_recipient, callout, callout_overall, callout_connect, se_mailfrom, pm_mailfrom, NULL); - HDEBUG(D_acl) debug_printf("----------- end verify ------------\n"); + HDEBUG(D_acl) debug_printf_indent("----------- end verify ------------\n"); *basic_errno = addr2.basic_errno; *log_msgptr = addr2.message; @@ -2007,7 +2007,7 @@ else if (rc == DEFER && (defer_ok || (callout_defer_ok && *basic_errno == ERRNO_CALLOUTDEFER))) { - HDEBUG(D_acl) debug_printf("verify defer overridden by %s\n", + HDEBUG(D_acl) debug_printf_indent("verify defer overridden by %s\n", defer_ok? "defer_ok" : "callout_defer_ok"); rc = OK; } @@ -2306,7 +2306,7 @@ key = string_sprintf("%s/%s/%s%s", key); HDEBUG(D_acl) - debug_printf("ratelimit condition count=%.0f %.1f/%s\n", count, limit, key); + debug_printf_indent("ratelimit condition count=%.0f %.1f/%s\n", count, limit, key); /* See if we have already computed the rate by looking in the relevant tree. For per-connection rate limiting, store tree nodes and dbdata in the permanent @@ -2349,7 +2349,7 @@ if (t != NULL) store_pool = old_pool; sender_rate = string_sprintf("%.1f", dbd->rate); HDEBUG(D_acl) - debug_printf("ratelimit found pre-computed rate %s\n", sender_rate); + debug_printf_indent("ratelimit found pre-computed rate %s\n", sender_rate); return rc; } @@ -2361,7 +2361,7 @@ if (dbm == NULL) { store_pool = old_pool; sender_rate = NULL; - HDEBUG(D_acl) debug_printf("ratelimit database not available\n"); + HDEBUG(D_acl) debug_printf_indent("ratelimit database not available\n"); *log_msgptr = US"ratelimit database not available"; return DEFER; } @@ -2373,7 +2373,7 @@ gettimeofday(&tv, NULL); if (dbdb != NULL) { /* Locate the basic ratelimit block inside the DB data. */ - HDEBUG(D_acl) debug_printf("ratelimit found key in database\n"); + HDEBUG(D_acl) debug_printf_indent("ratelimit found key in database\n"); dbd = &dbdb->dbd; /* Forget the old Bloom filter if it is too old, so that we count each @@ -2383,7 +2383,7 @@ if (dbdb != NULL) if(unique != NULL && tv.tv_sec > dbdb->bloom_epoch + period) { - HDEBUG(D_acl) debug_printf("ratelimit discarding old Bloom filter\n"); + HDEBUG(D_acl) debug_printf_indent("ratelimit discarding old Bloom filter\n"); dbdb = NULL; } @@ -2391,7 +2391,7 @@ if (dbdb != NULL) if(unique != NULL && dbdb_size < sizeof(*dbdb)) { - HDEBUG(D_acl) debug_printf("ratelimit discarding undersize Bloom filter\n"); + HDEBUG(D_acl) debug_printf_indent("ratelimit discarding undersize Bloom filter\n"); dbdb = NULL; } } @@ -2404,14 +2404,14 @@ if (dbdb == NULL) if (unique == NULL) { /* No Bloom filter. This basic ratelimit block is initialized below. */ - HDEBUG(D_acl) debug_printf("ratelimit creating new rate data block\n"); + HDEBUG(D_acl) debug_printf_indent("ratelimit creating new rate data block\n"); dbdb_size = sizeof(*dbd); dbdb = store_get(dbdb_size); } else { int extra; - HDEBUG(D_acl) debug_printf("ratelimit creating new Bloom filter\n"); + HDEBUG(D_acl) debug_printf_indent("ratelimit creating new Bloom filter\n"); /* See the long comment below for an explanation of the magic number 2. The filter has a minimum size in case the rate limit is very small; @@ -2495,7 +2495,7 @@ if (unique != NULL && !readonly) /* Scan the bits corresponding to this event. A zero bit means we have not seen it before. Ensure all bits are set to record this event. */ - HDEBUG(D_acl) debug_printf("ratelimit checking uniqueness of %s\n", unique); + HDEBUG(D_acl) debug_printf_indent("ratelimit checking uniqueness of %s\n", unique); seen = TRUE; for (n = 0; n < 8; n++, hash += hinc) @@ -2513,11 +2513,11 @@ if (unique != NULL && !readonly) if (seen) { - HDEBUG(D_acl) debug_printf("ratelimit event found in Bloom filter\n"); + HDEBUG(D_acl) debug_printf_indent("ratelimit event found in Bloom filter\n"); count = 0.0; } else - HDEBUG(D_acl) debug_printf("ratelimit event added to Bloom filter\n"); + HDEBUG(D_acl) debug_printf_indent("ratelimit event added to Bloom filter\n"); } /* If there was no previous ratelimit data block for this key, initialize @@ -2526,7 +2526,7 @@ is what would be computed by the code below for an infinite interval. */ if (dbd == NULL) { - HDEBUG(D_acl) debug_printf("ratelimit initializing new key's rate data\n"); + HDEBUG(D_acl) debug_printf_indent("ratelimit initializing new key's rate data\n"); dbd = &dbdb->dbd; dbd->time_stamp = tv.tv_sec; dbd->time_usec = tv.tv_usec; @@ -2627,11 +2627,11 @@ neither leaky nor strict are set, so we do not do any updates. */ if ((rc == FAIL && leaky) || strict) { dbfn_write(dbm, key, dbdb, dbdb_size); - HDEBUG(D_acl) debug_printf("ratelimit db updated\n"); + HDEBUG(D_acl) debug_printf_indent("ratelimit db updated\n"); } else { - HDEBUG(D_acl) debug_printf("ratelimit db not updated: %s\n", + HDEBUG(D_acl) debug_printf_indent("ratelimit db not updated: %s\n", readonly? "readonly mode" : "over the limit, but leaky"); } @@ -2651,7 +2651,7 @@ store_pool = old_pool; sender_rate = string_sprintf("%.1f", dbd->rate); HDEBUG(D_acl) - debug_printf("ratelimit computed rate %s\n", sender_rate); + debug_printf_indent("ratelimit computed rate %s\n", sender_rate); return rc; } @@ -2729,7 +2729,7 @@ if (r == HOST_FIND_FAILED || r == HOST_FIND_AGAIN) } HDEBUG(D_acl) - debug_printf("udpsend [%s]:%d %s\n", h->address, portnum, arg); + debug_printf_indent("udpsend [%s]:%d %s\n", h->address, portnum, arg); r = s = ip_connectedsocket(SOCK_DGRAM, h->address, portnum, portnum, 1, NULL, &errstr); @@ -2751,7 +2751,7 @@ if (r < len) } HDEBUG(D_acl) - debug_printf("udpsend %d bytes\n", r); + debug_printf_indent("udpsend %d bytes\n", r); return OK; @@ -2813,14 +2813,14 @@ for (; cb != NULL; cb = cb->next) if (cb->type == ACLC_MESSAGE) { - HDEBUG(D_acl) debug_printf(" message: %s\n", cb->arg); + HDEBUG(D_acl) debug_printf_indent(" message: %s\n", cb->arg); user_message = cb->arg; continue; } if (cb->type == ACLC_LOG_MESSAGE) { - HDEBUG(D_acl) debug_printf("l_message: %s\n", cb->arg); + HDEBUG(D_acl) debug_printf_indent("l_message: %s\n", cb->arg); log_message = cb->arg; continue; } @@ -2853,7 +2853,7 @@ for (; cb != NULL; cb = cb->next) HDEBUG(D_acl) { int lhswidth = 0; - debug_printf("check %s%s %n", + debug_printf_indent("check %s%s %n", (!conditions[cb->type].is_modifier && cb->u.negated)? "!":"", conditions[cb->type].name, &lhswidth); @@ -2893,7 +2893,7 @@ for (; cb != NULL; cb = cb->next) "discard" verb. */ case ACLC_ACL: - rc = acl_check_wargs(where, addr, arg, level+1, user_msgptr, log_msgptr); + rc = acl_check_wargs(where, addr, arg, user_msgptr, log_msgptr); if (rc == DISCARD && verb != ACL_ACCEPT && verb != ACL_DISCARD) { *log_msgptr = string_sprintf("nested ACL returned \"discard\" for " @@ -2998,7 +2998,7 @@ for (; cb != NULL; cb = cb->next) if (af < 0) { HDEBUG(D_acl) - debug_printf("smtp input is probably not a socket [%s], not setting DSCP\n", + debug_printf_indent("smtp input is probably not a socket [%s], not setting DSCP\n", strerror(errno)); break; } @@ -3006,12 +3006,12 @@ for (; cb != NULL; cb = cb->next) { if (setsockopt(fd, level, optname, &value, sizeof(value)) < 0) { - HDEBUG(D_acl) debug_printf("failed to set input DSCP[%s]: %s\n", + HDEBUG(D_acl) debug_printf_indent("failed to set input DSCP[%s]: %s\n", p+1, strerror(errno)); } else { - HDEBUG(D_acl) debug_printf("set input DSCP to \"%s\"\n", p+1); + HDEBUG(D_acl) debug_printf_indent("set input DSCP to \"%s\"\n", p+1); } } else @@ -3306,12 +3306,12 @@ for (; cb != NULL; cb = cb->next) } else { - HDEBUG(D_acl) debug_printf("delay modifier requests %d-second delay\n", + HDEBUG(D_acl) debug_printf_indent("delay modifier requests %d-second delay\n", delay); if (host_checking) { HDEBUG(D_acl) - debug_printf("delay skipped in -bh checking mode\n"); + debug_printf_indent("delay skipped in -bh checking mode\n"); } /* NOTE 1: Remember that we may be @@ -3339,7 +3339,7 @@ for (; cb != NULL; cb = cb->next) n = 1; } if (poll(&p, n, delay*1000) > 0) - HDEBUG(D_acl) debug_printf("delay cancelled by peer close\n"); + HDEBUG(D_acl) debug_printf_indent("delay cancelled by peer close\n"); } #else /* It appears to be impossible to detect that a TCP/IP connection has @@ -3842,7 +3842,6 @@ Arguments: where where called from addr address item when called from RCPT; otherwise NULL s the input string; NULL is the same as an empty ACL => DENY - level the nesting level user_msgptr where to put a user error (for SMTP response) log_msgptr where to put a logging message (not for SMTP response) @@ -3855,7 +3854,7 @@ Returns: OK access is granted */ static int -acl_check_internal(int where, address_item *addr, uschar *s, int level, +acl_check_internal(int where, address_item *addr, uschar *s, uschar **user_msgptr, uschar **log_msgptr) { int fd = -1; @@ -3865,25 +3864,24 @@ uschar *ss; /* Catch configuration loops */ -if (level > 20) +if (acl_level > 20) { *log_msgptr = US"ACL nested too deep: possible loop"; return ERROR; } -if (s == NULL) +if (!s) { - HDEBUG(D_acl) debug_printf("ACL is NULL: implicit DENY\n"); + HDEBUG(D_acl) debug_printf_indent("ACL is NULL: implicit DENY\n"); return FAIL; } /* At top level, we expand the incoming string. At lower levels, it has already been expanded as part of condition processing. */ -if (level == 0) +if (acl_level == 0) { - ss = expand_string(s); - if (ss == NULL) + if (!(ss = expand_string(s))) { if (expand_string_forcedfail) return OK; *log_msgptr = string_sprintf("failed to expand ACL string \"%s\": %s", s, @@ -3914,11 +3912,11 @@ if (Ustrchr(ss, ' ') == NULL) acl = (acl_block *)(t->data.ptr); if (acl == NULL) { - HDEBUG(D_acl) debug_printf("ACL \"%s\" is empty: implicit DENY\n", ss); + HDEBUG(D_acl) debug_printf_indent("ACL \"%s\" is empty: implicit DENY\n", ss); return FAIL; } acl_name = string_sprintf("ACL \"%s\"", ss); - HDEBUG(D_acl) debug_printf("using ACL \"%s\"\n", ss); + HDEBUG(D_acl) debug_printf_indent("using ACL \"%s\"\n", ss); } else if (*ss == '/') @@ -3952,7 +3950,7 @@ if (Ustrchr(ss, ' ') == NULL) (void)close(fd); acl_name = string_sprintf("ACL \"%s\"", ss); - HDEBUG(D_acl) debug_printf("read ACL from file %s\n", ss); + HDEBUG(D_acl) debug_printf_indent("read ACL from file %s\n", ss); } } @@ -3983,19 +3981,19 @@ while (acl != NULL) int cond; int basic_errno = 0; BOOL endpass_seen = FALSE; - BOOL acl_quit_check = level == 0 + BOOL acl_quit_check = acl_level == 0 && (where == ACL_WHERE_QUIT || where == ACL_WHERE_NOTQUIT); *log_msgptr = *user_msgptr = NULL; acl_temp_details = FALSE; - HDEBUG(D_acl) debug_printf("processing \"%s\"\n", verbs[acl->verb]); + HDEBUG(D_acl) debug_printf_indent("processing \"%s\"\n", verbs[acl->verb]); /* Clear out any search error message from a previous check before testing this condition. */ search_error_message = NULL; - cond = acl_check_condition(acl->verb, acl->condition, where, addr, level, + cond = acl_check_condition(acl->verb, acl->condition, where, addr, acl_level, &endpass_seen, user_msgptr, log_msgptr, &basic_errno); /* Handle special returns: DEFER causes a return except on a WARN verb; @@ -4004,7 +4002,7 @@ while (acl != NULL) switch (cond) { case DEFER: - HDEBUG(D_acl) debug_printf("%s: condition test deferred in %s\n", verbs[acl->verb], acl_name); + HDEBUG(D_acl) debug_printf_indent("%s: condition test deferred in %s\n", verbs[acl->verb], acl_name); if (basic_errno != ERRNO_CALLOUTDEFER) { if (search_error_message != NULL && *search_error_message != 0) @@ -4020,28 +4018,28 @@ while (acl != NULL) default: /* Paranoia */ case ERROR: - HDEBUG(D_acl) debug_printf("%s: condition test error in %s\n", verbs[acl->verb], acl_name); + HDEBUG(D_acl) debug_printf_indent("%s: condition test error in %s\n", verbs[acl->verb], acl_name); return ERROR; case OK: - HDEBUG(D_acl) debug_printf("%s: condition test succeeded in %s\n", + HDEBUG(D_acl) debug_printf_indent("%s: condition test succeeded in %s\n", verbs[acl->verb], acl_name); break; case FAIL: - HDEBUG(D_acl) debug_printf("%s: condition test failed in %s\n", verbs[acl->verb], acl_name); + HDEBUG(D_acl) debug_printf_indent("%s: condition test failed in %s\n", verbs[acl->verb], acl_name); break; /* DISCARD and DROP can happen only from a nested ACL condition, and DISCARD can happen only for an "accept" or "discard" verb. */ case DISCARD: - HDEBUG(D_acl) debug_printf("%s: condition test yielded \"discard\" in %s\n", + HDEBUG(D_acl) debug_printf_indent("%s: condition test yielded \"discard\" in %s\n", verbs[acl->verb], acl_name); break; case FAIL_DROP: - HDEBUG(D_acl) debug_printf("%s: condition test yielded \"drop\" in %s\n", + HDEBUG(D_acl) debug_printf_indent("%s: condition test yielded \"drop\" in %s\n", verbs[acl->verb], acl_name); break; } @@ -4055,12 +4053,12 @@ while (acl != NULL) case ACL_ACCEPT: if (cond == OK || cond == DISCARD) { - HDEBUG(D_acl) debug_printf("end of %s: ACCEPT\n", acl_name); + HDEBUG(D_acl) debug_printf_indent("end of %s: ACCEPT\n", acl_name); return cond; } if (endpass_seen) { - HDEBUG(D_acl) debug_printf("accept: endpass encountered - denying access\n"); + HDEBUG(D_acl) debug_printf_indent("accept: endpass encountered - denying access\n"); return cond; } break; @@ -4068,7 +4066,7 @@ while (acl != NULL) case ACL_DEFER: if (cond == OK) { - HDEBUG(D_acl) debug_printf("end of %s: DEFER\n", acl_name); + HDEBUG(D_acl) debug_printf_indent("end of %s: DEFER\n", acl_name); if (acl_quit_check) goto badquit; acl_temp_details = TRUE; return DEFER; @@ -4078,7 +4076,7 @@ while (acl != NULL) case ACL_DENY: if (cond == OK) { - HDEBUG(D_acl) debug_printf("end of %s: DENY\n", acl_name); + HDEBUG(D_acl) debug_printf_indent("end of %s: DENY\n", acl_name); if (acl_quit_check) goto badquit; return FAIL; } @@ -4087,13 +4085,13 @@ while (acl != NULL) case ACL_DISCARD: if (cond == OK || cond == DISCARD) { - HDEBUG(D_acl) debug_printf("end of %s: DISCARD\n", acl_name); + HDEBUG(D_acl) debug_printf_indent("end of %s: DISCARD\n", acl_name); if (acl_quit_check) goto badquit; return DISCARD; } if (endpass_seen) { - HDEBUG(D_acl) debug_printf("discard: endpass encountered - denying access\n"); + HDEBUG(D_acl) debug_printf_indent("discard: endpass encountered - denying access\n"); return cond; } break; @@ -4101,7 +4099,7 @@ while (acl != NULL) case ACL_DROP: if (cond == OK) { - HDEBUG(D_acl) debug_printf("end of %s: DROP\n", acl_name); + HDEBUG(D_acl) debug_printf_indent("end of %s: DROP\n", acl_name); if (acl_quit_check) goto badquit; return FAIL_DROP; } @@ -4110,7 +4108,7 @@ while (acl != NULL) case ACL_REQUIRE: if (cond != OK) { - HDEBUG(D_acl) debug_printf("end of %s: not OK\n", acl_name); + HDEBUG(D_acl) debug_printf_indent("end of %s: not OK\n", acl_name); if (acl_quit_check) goto badquit; return cond; } @@ -4140,7 +4138,7 @@ while (acl != NULL) /* We have reached the end of the ACL. This is an implicit DENY. */ -HDEBUG(D_acl) debug_printf("end of %s: implicit DENY\n", acl_name); +HDEBUG(D_acl) debug_printf_indent("end of %s: implicit DENY\n", acl_name); return FAIL; badquit: @@ -4156,7 +4154,7 @@ badquit: the name of an ACL followed optionally by up to 9 space-separated arguments. The name and args are separately expanded. Args go into $acl_arg globals. */ static int -acl_check_wargs(int where, address_item *addr, const uschar *s, int level, +acl_check_wargs(int where, address_item *addr, const uschar *s, uschar **user_msgptr, uschar **log_msgptr) { uschar * tmp; @@ -4194,7 +4192,9 @@ while (i < 9) acl_arg[i++] = NULL; } -ret = acl_check_internal(where, addr, name, level, user_msgptr, log_msgptr); +acl_level++; +ret = acl_check_internal(where, addr, name, user_msgptr, log_msgptr); +acl_level--; acl_narg = sav_narg; for (i = 0; i < 9; i++) acl_arg[i] = sav_arg[i]; @@ -4219,6 +4219,7 @@ acl_eval(int where, uschar *s, uschar **user_msgptr, uschar **log_msgptr) { address_item adb; address_item *addr = NULL; +int rc; *user_msgptr = *log_msgptr = NULL; sender_verified_failed = NULL; @@ -4236,7 +4237,10 @@ if (where == ACL_WHERE_RCPT) addr->lc_local_part = deliver_localpart; } -return acl_check_internal(where, addr, s, 0, user_msgptr, log_msgptr); +acl_level++; +rc = acl_check_internal(where, addr, s, user_msgptr, log_msgptr); +acl_level--; +return rc; } @@ -4300,7 +4304,9 @@ if (where==ACL_WHERE_RCPT || where==ACL_WHERE_VRFY) } acl_where = where; -rc = acl_check_internal(where, addr, s, 0, user_msgptr, log_msgptr); +acl_level = 0; +rc = acl_check_internal(where, addr, s, user_msgptr, log_msgptr); +acl_level = 0; acl_where = ACL_WHERE_UNKNOWN; /* Cutthrough - if requested, @@ -4347,7 +4353,7 @@ switch (where) } else { - HDEBUG(D_acl) debug_printf("cutthrough defer; will spool\n"); + HDEBUG(D_acl) debug_printf_indent("cutthrough defer; will spool\n"); rc = OK; } break; diff --git a/src/src/debug.c b/src/src/debug.c index 8f9359b15..3cd6d0c92 100644 --- a/src/src/debug.c +++ b/src/src/debug.c @@ -137,7 +137,7 @@ debug_printf("%s uid=%ld gid=%ld euid=%ld egid=%ld\n", s, *************************************************/ /* There are two entries, one for use when being called directly from a -function with a variable argument list. +function with a variable argument list, one for prepending an indent. If debug_pid is nonzero, print the pid at the start of each line. This is for tidier output when running parallel remote deliveries with debugging turned on. @@ -146,6 +146,28 @@ get interleaved. Since some calls to debug_printf() don't end with newline, we save up the text until we do get the newline. Take care to not disturb errno. */ + +/* Debug printf indented by ACL nest depth */ +void +debug_printf_indent(const char * format, ...) +{ +va_list ap; +unsigned depth = acl_level + expand_level, i; + +if (!debug_file) return; +if (depth > 0) + { + for (i = depth >> 2; i > 0; i--) + fprintf(debug_file, " ."); + fprintf(debug_file, "%*s", depth & 3, ""); + } + +va_start(ap, format); +debug_vprintf(format, ap); +va_end(ap); +} + + void debug_printf(const char *format, ...) { diff --git a/src/src/expand.c b/src/src/expand.c index d2fcd2358..55fb0b875 100644 --- a/src/src/expand.c +++ b/src/src/expand.c @@ -2099,7 +2099,7 @@ while (i < nsub) } DEBUG(D_expand) - debug_printf("expanding: acl: %s arg: %s%s\n", + debug_printf_indent("expanding: acl: %s arg: %s%s\n", sub[0], acl_narg>0 ? acl_arg[0] : US"", acl_narg>1 ? " +more" : ""); @@ -2523,7 +2523,7 @@ switch(cond_type) { num[i] = 0; DEBUG(D_expand) - debug_printf("empty string cast to zero for numerical comparison\n"); + debug_printf_indent("empty string cast to zero for numerical comparison\n"); } else { @@ -2832,7 +2832,7 @@ switch(cond_type) uschar *save_iterate_item = iterate_item; int (*compare)(const uschar *, const uschar *); - DEBUG(D_expand) debug_printf("condition: %s\n", name); + DEBUG(D_expand) debug_printf_indent("condition: %s\n", name); tempcond = FALSE; compare = cond_type == ECOND_INLISTI @@ -2920,7 +2920,7 @@ switch(cond_type) int sep = 0; uschar *save_iterate_item = iterate_item; - DEBUG(D_expand) debug_printf("condition: %s\n", name); + DEBUG(D_expand) debug_printf_indent("condition: %s\n", name); while (isspace(*s)) s++; if (*s++ != '{') goto COND_FAILED_CURLY_START; /* }-for-text-editors */ @@ -2959,7 +2959,7 @@ switch(cond_type) list = sub[0]; while ((iterate_item = string_nextinlist(&list, &sep, NULL, 0)) != NULL) { - DEBUG(D_expand) debug_printf("%s: $item = \"%s\"\n", name, iterate_item); + DEBUG(D_expand) debug_printf_indent("%s: $item = \"%s\"\n", name, iterate_item); if (!eval_condition(sub[1], resetok, &tempcond)) { expand_string_message = string_sprintf("%s inside \"%s\" condition", @@ -2967,7 +2967,7 @@ switch(cond_type) iterate_item = save_iterate_item; return NULL; } - DEBUG(D_expand) debug_printf("%s: condition evaluated to %s\n", name, + DEBUG(D_expand) debug_printf_indent("%s: condition evaluated to %s\n", name, tempcond? "true":"false"); if (yield != NULL) *yield = (tempcond == testfor); @@ -3024,7 +3024,7 @@ switch(cond_type) } } DEBUG(D_expand) - debug_printf("considering %s: %s\n", ourname, len ? t : US""); + debug_printf_indent("considering %s: %s\n", ourname, len ? t : US""); /* logic for the lax case from expand_check_condition(), which also does expands, and the logic is both short and stable enough that there should be no maintenance burden from replicating it. */ @@ -3051,7 +3051,7 @@ switch(cond_type) "value \"%s\"", t); return NULL; } - DEBUG(D_expand) debug_printf("%s: condition evaluated to %s\n", ourname, + DEBUG(D_expand) debug_printf_indent("%s: condition evaluated to %s\n", ourname, boolvalue? "true":"false"); if (yield != NULL) *yield = (boolvalue == testfor); return s; @@ -3447,7 +3447,7 @@ hash_source = string_catn(hash_source, &size, &offset, daystamp, 3); hash_source = string_cat(hash_source, &size, &offset, address); hash_source[offset] = '\0'; -DEBUG(D_expand) debug_printf("prvs: hash source is '%s'\n", hash_source); +DEBUG(D_expand) debug_printf_indent("prvs: hash source is '%s'\n", hash_source); memset(innerkey, 0x36, 64); memset(outerkey, 0x5c, 64); @@ -3870,8 +3870,9 @@ uschar *save_expand_nstring[EXPAND_MAXN+1]; int save_expand_nlength[EXPAND_MAXN+1]; BOOL resetok = TRUE; +expand_level++; DEBUG(D_expand) - debug_printf("%s: %s\n", skipping ? " scanning" : "considering", string); + debug_printf_indent("/%s: %s\n", skipping ? " scanning" : "considering", string); expand_string_forcedfail = FALSE; expand_string_message = US""; @@ -4086,7 +4087,7 @@ while (*s != 0) case OK: case FAIL: DEBUG(D_expand) - debug_printf("acl expansion yield: %s\n", user_msg); + debug_printf_indent("acl expansion yield: %s\n", user_msg); if (user_msg) yield = string_cat(yield, &size, &ptr, user_msg); continue; @@ -4117,9 +4118,10 @@ while (*s != 0) if (next_s == NULL) goto EXPAND_FAILED; /* message already set */ DEBUG(D_expand) - debug_printf(" condition: %.*s\n result: %s\n", - (int)(next_s - s), s, - cond ? "true" : "false"); + { + debug_printf_indent("|__condition: %.*s\n", (int)(next_s - s), s); + debug_printf_indent("|_____result: %s\n", cond ? "true" : "false"); + } s = next_s; @@ -4576,11 +4578,11 @@ while (*s != 0) uschar *hash = string_copyn(expand_nstring[3],expand_nlength[3]); uschar *domain = string_copyn(expand_nstring[5],expand_nlength[5]); - DEBUG(D_expand) debug_printf("prvscheck localpart: %s\n", local_part); - DEBUG(D_expand) debug_printf("prvscheck key number: %s\n", key_num); - DEBUG(D_expand) debug_printf("prvscheck daystamp: %s\n", daystamp); - DEBUG(D_expand) debug_printf("prvscheck hash: %s\n", hash); - DEBUG(D_expand) debug_printf("prvscheck domain: %s\n", domain); + DEBUG(D_expand) debug_printf_indent("prvscheck localpart: %s\n", local_part); + DEBUG(D_expand) debug_printf_indent("prvscheck key number: %s\n", key_num); + DEBUG(D_expand) debug_printf_indent("prvscheck daystamp: %s\n", daystamp); + DEBUG(D_expand) debug_printf_indent("prvscheck hash: %s\n", hash); + DEBUG(D_expand) debug_printf_indent("prvscheck domain: %s\n", domain); /* Set up expansion variables */ prvscheck_address = string_cat (NULL, &mysize, &myptr, local_part); @@ -4608,8 +4610,8 @@ while (*s != 0) goto EXPAND_FAILED; } - DEBUG(D_expand) debug_printf("prvscheck: received hash is %s\n", hash); - DEBUG(D_expand) debug_printf("prvscheck: own hash is %s\n", p); + DEBUG(D_expand) debug_printf_indent("prvscheck: received hash is %s\n", hash); + DEBUG(D_expand) debug_printf_indent("prvscheck: own hash is %s\n", p); if (Ustrcmp(p,hash) == 0) { @@ -4627,18 +4629,18 @@ while (*s != 0) if (iexpire >= inow) { prvscheck_result = US"1"; - DEBUG(D_expand) debug_printf("prvscheck: success, $pvrs_result set to 1\n"); + DEBUG(D_expand) debug_printf_indent("prvscheck: success, $pvrs_result set to 1\n"); } else { prvscheck_result = NULL; - DEBUG(D_expand) debug_printf("prvscheck: signature expired, $pvrs_result unset\n"); + DEBUG(D_expand) debug_printf_indent("prvscheck: signature expired, $pvrs_result unset\n"); } } else { prvscheck_result = NULL; - DEBUG(D_expand) debug_printf("prvscheck: hash failure, $pvrs_result unset\n"); + DEBUG(D_expand) debug_printf_indent("prvscheck: hash failure, $pvrs_result unset\n"); } /* Now expand the final argument. We leave this till now so that @@ -4841,7 +4843,7 @@ while (*s != 0) } } - DEBUG(D_expand) debug_printf("connected to socket %s\n", sub_arg[0]); + DEBUG(D_expand) debug_printf_indent("connected to socket %s\n", sub_arg[0]); /* Allow sequencing of test actions */ if (running_in_test_harness) millisleep(100); @@ -4851,7 +4853,7 @@ while (*s != 0) if (sub_arg[1][0] != 0) { int len = Ustrlen(sub_arg[1]); - DEBUG(D_expand) debug_printf("writing \"%s\" to socket\n", + DEBUG(D_expand) debug_printf_indent("writing \"%s\" to socket\n", sub_arg[1]); if (write(fd, sub_arg[1], len) != len) { @@ -5803,7 +5805,7 @@ while (*s != 0) { *outsep = (uschar)sep; /* Separator as a string */ - DEBUG(D_expand) debug_printf("%s: $item = \"%s\"\n", name, iterate_item); + DEBUG(D_expand) debug_printf_indent("%s: $item = \"%s\"\n", name, iterate_item); if (item_type == EITEM_FILTER) { @@ -5816,7 +5818,7 @@ while (*s != 0) expand_string_message, name); goto EXPAND_FAILED; } - DEBUG(D_expand) debug_printf("%s: condition is %s\n", name, + DEBUG(D_expand) debug_printf_indent("%s: condition is %s\n", name, condresult? "true":"false"); if (condresult) temp = iterate_item; /* TRUE => include this item */ @@ -5971,7 +5973,7 @@ while (*s != 0) uschar * newkeylist = NULL; uschar * srcfield; - DEBUG(D_expand) debug_printf("%s: $item = \"%s\"\n", name, srcitem); + DEBUG(D_expand) debug_printf_indent("%s: $item = \"%s\"\n", name, srcitem); /* extract field for comparisons */ iterate_item = srcitem; @@ -6000,7 +6002,7 @@ while (*s != 0) /* build and run condition string */ expr = string_sprintf("%s{%s}{%s}", cmp, srcfield, dstfield); - DEBUG(D_expand) debug_printf("%s: cond = \"%s\"\n", name, expr); + DEBUG(D_expand) debug_printf_indent("%s: cond = \"%s\"\n", name, expr); if (!eval_condition(expr, &resetok, &before)) { expand_string_message = string_sprintf("comparison in sort: %s", @@ -6045,8 +6047,8 @@ while (*s != 0) dstlist = newlist; dstkeylist = newkeylist; - DEBUG(D_expand) debug_printf("%s: dstlist = \"%s\"\n", name, dstlist); - DEBUG(D_expand) debug_printf("%s: dstkeylist = \"%s\"\n", name, dstkeylist); + DEBUG(D_expand) debug_printf_indent("%s: dstlist = \"%s\"\n", name, dstlist); + DEBUG(D_expand) debug_printf_indent("%s: dstkeylist = \"%s\"\n", name, dstkeylist); } if (dstlist) @@ -7095,7 +7097,7 @@ while (*s != 0) goto EXPAND_FAILED; } yield = string_cat(yield, &size, &ptr, s); - DEBUG(D_expand) debug_printf("yield: '%s'\n", yield); + DEBUG(D_expand) debug_printf_indent("yield: '%s'\n", yield); continue; } @@ -7489,10 +7491,11 @@ else if (resetok_p) *resetok_p = FALSE; DEBUG(D_expand) { - debug_printf(" expanding: %.*s\n result: %s\n", (int)(s - string), string, - yield); - if (skipping) debug_printf(" skipping: result is not used\n"); + debug_printf_indent("|__expanding: %.*s\n", (int)(s - string), string); + debug_printf_indent("%s_____result: %s\n", skipping ? "|" : "\\", yield); + if (skipping) debug_printf_indent("\\___skipping: result is not used\n"); } +expand_level--; return yield; /* This is the failure exit: easiest to program with a goto. We still need @@ -7514,11 +7517,13 @@ EXPAND_FAILED: if (left != NULL) *left = s; DEBUG(D_expand) { - debug_printf("failed to expand: %s\n", string); - debug_printf(" error message: %s\n", expand_string_message); - if (expand_string_forcedfail) debug_printf("failure was forced\n"); + debug_printf_indent("|failed to expand: %s\n", string); + debug_printf_indent("%s___error message: %s\n", + expand_string_forcedfail ? "|" : "\\", expand_string_message); + if (expand_string_forcedfail) debug_printf_indent("\\failure was forced\n"); } if (resetok_p) *resetok_p = resetok; +expand_level--; return NULL; } @@ -7645,7 +7650,7 @@ if (isspace(*s)) if (*s == '\0') { DEBUG(D_expand) - debug_printf("treating blank string as number 0\n"); + debug_printf_indent("treating blank string as number 0\n"); return 0; } } diff --git a/src/src/functions.h b/src/src/functions.h index 790d8faf7..0fc69e4eb 100644 --- a/src/src/functions.h +++ b/src/src/functions.h @@ -95,6 +95,7 @@ extern int auth_call_saslauthd(const uschar *, const uschar *, extern int auth_check_serv_cond(auth_instance *); extern int auth_check_some_cond(auth_instance *, uschar *, uschar *, int); + extern int auth_get_data(uschar **, uschar *, int); extern int auth_get_no64_data(uschar **, uschar *); extern uschar *auth_xtextencode(uschar *, int); @@ -131,6 +132,7 @@ extern void debug_logging_activate(uschar *, uschar *); extern void debug_logging_stop(void); extern void debug_print_argv(const uschar **); extern void debug_print_ids(uschar *); +extern void debug_printf_indent(const char *, ...) PRINTF_FUNCTION(1,2); extern void debug_print_string(uschar *); extern void debug_print_tree(tree_node *); extern void debug_vprintf(const char *, va_list); diff --git a/src/src/globals.c b/src/src/globals.c index bab135dba..5e0fc2387 100644 --- a/src/src/globals.c +++ b/src/src/globals.c @@ -228,6 +228,8 @@ uschar *acl_arg[9] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}; int acl_narg = 0; +int acl_level = 0; + uschar *acl_not_smtp = NULL; #ifdef WITH_CONTENT_SCAN uschar *acl_not_smtp_mime = NULL; @@ -713,6 +715,7 @@ uschar *exim_path = US BIN_DIRECTORY "/exim" "\0<---------------Space to patch exim_path->"; uid_t exim_uid = EXIM_UID; BOOL exim_uid_set = TRUE; /* This uid is always set */ +int expand_level = 0; /* Nesting depth, indent for debug */ int expand_forbid = 0; int expand_nlength[EXPAND_MAXN+1]; int expand_nmax = -1; diff --git a/src/src/globals.h b/src/src/globals.h index 4e1e0ca7b..c2c69cf7c 100644 --- a/src/src/globals.h +++ b/src/src/globals.h @@ -160,6 +160,7 @@ extern header_line *acl_added_headers; /* Headers added by an ACL */ extern tree_node *acl_anchor; /* Tree of named ACLs */ extern uschar *acl_arg[9]; /* Argument to ACL call */ extern int acl_narg; /* Number of arguments to ACL call */ +extern int acl_level; /* Nesting depth and debug indent */ extern uschar *acl_not_smtp; /* ACL run for non-SMTP messages */ #ifdef WITH_CONTENT_SCAN extern uschar *acl_not_smtp_mime; /* For MIME parts of ditto */ @@ -442,6 +443,7 @@ extern uschar *exim_path; /* Path to exec exim */ extern const uschar *exim_sieve_extension_list[]; /* list of sieve extensions */ extern uid_t exim_uid; /* Non-root uid for exim */ extern BOOL exim_uid_set; /* TRUE if exim_uid set */ +extern int expand_level; /* Nesting depth; indent for debug */ extern int expand_forbid; /* RDO flags for forbidding things */ extern int expand_nlength[]; /* Lengths of numbered strings */ extern int expand_nmax; /* Max numerical value */ diff --git a/src/src/malware.c b/src/src/malware.c index e1eff16cf..547bc26e6 100644 --- a/src/src/malware.c +++ b/src/src/malware.c @@ -231,13 +231,13 @@ while ((rcv = read(fd, p, 1)) > 0) } if (!ok) { - DEBUG(D_acl) debug_printf("Malware scan: read %s (%s)\n", + DEBUG(D_acl) debug_printf_indent("Malware scan: read %s (%s)\n", rcv==0 ? "EOF" : "error", strerror(errno)); return rcv==0 ? -1 : -2; } *p = '\0'; -DEBUG(D_acl) debug_printf("Malware scan: read '%s'\n", buffer); +DEBUG(D_acl) debug_printf_indent("Malware scan: read '%s'\n", buffer); return p - buffer; } @@ -475,7 +475,7 @@ if (*av_scanner == '$') expand_string_message)); DEBUG(D_acl) - debug_printf("Expanded av_scanner global: %s\n", av_scanner_work); + debug_printf_indent("Expanded av_scanner global: %s\n", av_scanner_work); /* disable result caching in this case */ malware_name = NULL; malware_ok = FALSE; @@ -512,7 +512,7 @@ if (!malware_ok) return m_errlog_defer(scanent, CUS callout_address, errstr); break; } - DEBUG(D_acl) debug_printf("Malware scan: %s tmo %s\n", scanner_name, readconf_printtime(timeout)); + DEBUG(D_acl) debug_printf_indent("Malware scan: %s tmo %s\n", scanner_name, readconf_printtime(timeout)); switch (scanent->scancode) { @@ -535,7 +535,7 @@ if (!malware_ok) par_count++; } scanrequest = string_sprintf("%s HTTP/1.0\r\n\r\n", scanrequest); - DEBUG(D_acl) debug_printf("Malware scan: issuing %s: %s\n", + DEBUG(D_acl) debug_printf_indent("Malware scan: issuing %s: %s\n", scanner_name, scanrequest); /* send scan request */ @@ -615,7 +615,7 @@ if (!malware_ok) drweb_slen = htonl(fsize); lseek(drweb_fd, 0, SEEK_SET); - DEBUG(D_acl) debug_printf("Malware scan: issuing %s remote scan [%s]\n", + DEBUG(D_acl) debug_printf_indent("Malware scan: issuing %s remote scan [%s]\n", scanner_name, scanner_options); /* send scan request */ @@ -664,7 +664,7 @@ if (!malware_ok) { drweb_slen = htonl(Ustrlen(eml_filename)); - DEBUG(D_acl) debug_printf("Malware scan: issuing %s local scan [%s]\n", + DEBUG(D_acl) debug_printf_indent("Malware scan: issuing %s local scan [%s]\n", scanner_name, scanner_options); /* send scan request */ @@ -782,7 +782,7 @@ if (!malware_ok) eml_filename); /* and send it */ - DEBUG(D_acl) debug_printf("Malware scan: issuing %s %s\n", + DEBUG(D_acl) debug_printf_indent("Malware scan: issuing %s %s\n", scanner_name, buf); if (m_sock_send(sock, buf, Ustrlen(buf), &errstr) < 0) return m_errlog_defer(scanent, CUS callout_address, errstr); @@ -842,7 +842,7 @@ if (!malware_ok) malware_name = NULL; - DEBUG(D_acl) debug_printf("Malware scan: issuing %s scan [%s]\n", + DEBUG(D_acl) debug_printf_indent("Malware scan: issuing %s scan [%s]\n", scanner_name, scanner_options); /* pass options */ memset(av_buffer, 0, sizeof(av_buffer)); @@ -938,7 +938,7 @@ if (!malware_ok) if (p) *p = '\0'; - DEBUG(D_acl) debug_printf("Malware scan: issuing %s scan [%s]\n", + DEBUG(D_acl) debug_printf_indent("Malware scan: issuing %s scan [%s]\n", scanner_name, scanner_options); /* send scan request */ @@ -1069,7 +1069,7 @@ if (!malware_ok) /* redirect STDERR too */ commandline = string_sprintf("%s 2>&1", commandline); - DEBUG(D_acl) debug_printf("Malware scan: issuing %s scan [%s]\n", + DEBUG(D_acl) debug_printf_indent("Malware scan: issuing %s scan [%s]\n", scanner_name, commandline); /* store exims signal handlers */ @@ -1172,7 +1172,7 @@ if (!malware_ok) if ((p = Ustrrchr(file_name, '/'))) *p = '\0'; - DEBUG(D_acl) debug_printf("Malware scan: issuing %s scan [%s]\n", + DEBUG(D_acl) debug_printf_indent("Malware scan: issuing %s scan [%s]\n", scanner_name, scanner_options); if ( write(sock, file_name, Ustrlen(file_name)) < 0 @@ -1346,7 +1346,7 @@ if (!malware_ok) int i = random_number( num_servers ); clamd_address * cd = cv[i]; - DEBUG(D_acl) debug_printf("trying server name %s, port %u\n", + DEBUG(D_acl) debug_printf_indent("trying server name %s, port %u\n", cd->hostspec, cd->tcp_port); /* Lookup the host. This is to ensure that we connect to the same IP @@ -1402,7 +1402,7 @@ if (!malware_ok) * that port on a second connection; then in the scan-method-neutral * part, read the response back on the original connection. */ - DEBUG(D_acl) debug_printf( + DEBUG(D_acl) debug_printf_indent( "Malware scan: issuing %s old-style remote scan (PORT)\n", scanner_name); @@ -1444,7 +1444,7 @@ if (!malware_ok) chunks, a 4-byte number (network order), terminated by a zero-length chunk. */ - DEBUG(D_acl) debug_printf( + DEBUG(D_acl) debug_printf_indent( "Malware scan: issuing %s new-style remote scan (zINSTREAM)\n", scanner_name); @@ -1555,7 +1555,7 @@ if (!malware_ok) /* Pass the string to ClamAV (7 = "SCAN \n" + \0) */ file_name = string_sprintf("SCAN %s\n", eml_filename); - DEBUG(D_acl) debug_printf( + DEBUG(D_acl) debug_printf_indent( "Malware scan: issuing %s local-path scan [%s]\n", scanner_name, scanner_options); @@ -1616,7 +1616,7 @@ if (!malware_ok) p = av_buffer + Ustrlen(av_buffer) - 1; if (*p == '\n') *p = '\0'; - DEBUG(D_acl) debug_printf("Malware response: %s\n", av_buffer); + DEBUG(D_acl) debug_printf_indent("Malware response: %s\n", av_buffer); while (isspace(*--p) && (p > av_buffer)) *p = '\0'; @@ -1653,7 +1653,7 @@ if (!malware_ok) *p = '\0'; } malware_name = string_copy(vname); - DEBUG(D_acl) debug_printf("Malware found, name \"%s\"\n", malware_name); + DEBUG(D_acl) debug_printf_indent("Malware found, name \"%s\"\n", malware_name); } else if (Ustrcmp(result_tag, "ERROR") == 0) @@ -1664,7 +1664,7 @@ if (!malware_ok) { /* Everything should be OK */ malware_name = NULL; - DEBUG(D_acl) debug_printf("Malware not found\n"); + DEBUG(D_acl) debug_printf_indent("Malware not found\n"); } else @@ -1770,7 +1770,7 @@ if (!malware_ok) malware_name = NULL; - DEBUG(D_acl) debug_printf("Malware scan: issuing %s scan\n", scanner_name); + DEBUG(D_acl) debug_printf_indent("Malware scan: issuing %s scan\n", scanner_name); if ((retval = mksd_scan_packed(scanent, sock, eml_filename, tmo)) != OK) { @@ -1812,7 +1812,7 @@ if (!malware_ok) int slen = Ustrlen(buf); if (slen >= 1) { - DEBUG(D_acl) debug_printf("got from avast: %s\n", buf); + DEBUG(D_acl) debug_printf_indent("got from avast: %s\n", buf); switch (avast_stage) { case AVA_HELO: @@ -1923,7 +1923,7 @@ if (!malware_ok) /* match virus name against pattern (caseless ------->----------v) */ if (malware_name && regex_match_and_setup(re, malware_name, 0, -1)) { - DEBUG(D_acl) debug_printf( + DEBUG(D_acl) debug_printf_indent( "Matched regex to malware [%s] [%s]\n", malware_re, malware_name); return OK; } diff --git a/src/src/mime.c b/src/src/mime.c index 5ed15b081..821cb541d 100644 --- a/src/src/mime.c +++ b/src/src/mime.c @@ -446,7 +446,7 @@ uschar * s = *sp; uschar * val = NULL; int size = 0, ptr = 0; -/* debug_printf(" considering paramval '%s'\n", s); */ +/* debug_printf_indent(" considering paramval '%s'\n", s); */ while (*s && *s != ';') /* ; terminates */ if (*s == '"') @@ -545,7 +545,7 @@ while(1) if (!fgets(CS header, MIME_MAX_HEADER_SIZE, f)) { /* Hit EOF or read error. Ugh. */ - DEBUG(D_acl) debug_printf("MIME: Hit EOF ...\n"); + DEBUG(D_acl) debug_printf_indent("MIME: Hit EOF ...\n"); return rc; } @@ -557,12 +557,12 @@ while(1) if (Ustrncmp((header+2+Ustrlen(context->boundary)), "--", 2) == 0) { /* END boundary found */ - DEBUG(D_acl) debug_printf("MIME: End boundary found %s\n", + DEBUG(D_acl) debug_printf_indent("MIME: End boundary found %s\n", context->boundary); return rc; } - DEBUG(D_acl) debug_printf("MIME: Next part with boundary %s\n", + DEBUG(D_acl) debug_printf_indent("MIME: Next part with boundary %s\n", context->boundary); break; } @@ -586,7 +586,7 @@ while(1) for (q = p; *q != ';' && *q; q++) ; *mh->value = string_copynlc(p, q-p); - DEBUG(D_acl) debug_printf("MIME: found %s header, value is '%s'\n", + DEBUG(D_acl) debug_printf_indent("MIME: found %s header, value is '%s'\n", mh->name, *mh->value); if (*(p = q)) p++; /* jump past the ; */ @@ -604,7 +604,7 @@ while(1) { mime_parameter * mp; - DEBUG(D_acl) debug_printf("MIME: considering paramlist '%s'\n", p); + DEBUG(D_acl) debug_printf_indent("MIME: considering paramlist '%s'\n", p); if ( !mime_filename && strncmpic(CUS"content-disposition:", header, 20) == 0 @@ -649,15 +649,15 @@ while(1) else p = q; - DEBUG(D_acl) debug_printf("MIME: charset %s fname '%s'\n", + DEBUG(D_acl) debug_printf_indent("MIME: charset %s fname '%s'\n", mime_filename_charset ? mime_filename_charset : US"", p); temp_string = rfc2231_to_2047(p, mime_filename_charset, &slen); - DEBUG(D_acl) debug_printf("MIME: 2047-name %s\n", temp_string); + DEBUG(D_acl) debug_printf_indent("MIME: 2047-name %s\n", temp_string); temp_string = rfc2047_decode(temp_string, FALSE, NULL, ' ', NULL, &err_msg); - DEBUG(D_acl) debug_printf("MIME: plain-name %s\n", temp_string); + DEBUG(D_acl) debug_printf_indent("MIME: plain-name %s\n", temp_string); size = Ustrlen(temp_string); @@ -692,7 +692,7 @@ while(1) ? rfc2047_decode(q, check_rfc2047_length, NULL, 32, NULL, &dummy_errstr) : NULL; - DEBUG(D_acl) debug_printf( + DEBUG(D_acl) debug_printf_indent( "MIME: found %s parameter in %s header, value '%s'\n", mp->name, mh->name, *mp->value); @@ -710,7 +710,7 @@ while(1) { if (decoding_failed) mime_filename = mime_fname_rfc2231; - DEBUG(D_acl) debug_printf( + DEBUG(D_acl) debug_printf_indent( "MIME: found %s parameter in %s header, value is '%s'\n", "filename", mh->name, mime_filename); } @@ -753,7 +753,7 @@ while(1) (Ustrncmp(mime_content_type,"multipart",9) == 0) ) { DEBUG(D_acl) - debug_printf("MIME: Entering multipart recursion, boundary '%s'\n", + debug_printf_indent("MIME: Entering multipart recursion, boundary '%s'\n", nested_context.boundary); nested_context.context = diff --git a/src/src/pdkim/rsa.c b/src/src/pdkim/rsa.c index aeb016ce5..548bae6be 100644 --- a/src/src/pdkim/rsa.c +++ b/src/src/pdkim/rsa.c @@ -170,7 +170,7 @@ uschar tag_class; int taglen; long tag, len; -/* debug_printf("as_tag: %02x %02x %02x %02x\n", +/* acl_debug_printf("as_tag: %02x %02x %02x %02x\n", der->data[0], der->data[1], der->data[2], der->data[3]); */ if ((rc = asn1_get_tag_der(der->data++, der->len--, &tag_class, &taglen, &tag)) @@ -183,7 +183,7 @@ if ((len = asn1_get_length_der(der->data, der->len, &taglen)) < 0) return ASN1_DER_ERROR; if (alen) *alen = len; -/* debug_printf("as_tag: tlen %d dlen %d\n", taglen, (int)len); */ +/* acl_debug_printf("as_tag: tlen %d dlen %d\n", taglen, (int)len); */ der->data += taglen; der->len -= taglen; @@ -325,25 +325,25 @@ if ( (s1 = as_mpi(&der, &sign_ctx->n)) ) return s1; -DEBUG(D_acl) debug_printf("rsa_signing_init:\n"); +DEBUG(D_acl) acl_debug_printf("rsa_signing_init:\n"); { uschar * s; gcry_mpi_aprint (GCRYMPI_FMT_HEX, &s, NULL, sign_ctx->n); - debug_printf(" N : %s\n", s); + acl_debug_printf(" N : %s\n", s); gcry_mpi_aprint (GCRYMPI_FMT_HEX, &s, NULL, sign_ctx->e); - debug_printf(" E : %s\n", s); + acl_debug_printf(" E : %s\n", s); gcry_mpi_aprint (GCRYMPI_FMT_HEX, &s, NULL, sign_ctx->d); - debug_printf(" D : %s\n", s); + acl_debug_printf(" D : %s\n", s); gcry_mpi_aprint (GCRYMPI_FMT_HEX, &s, NULL, sign_ctx->p); - debug_printf(" P : %s\n", s); + acl_debug_printf(" P : %s\n", s); gcry_mpi_aprint (GCRYMPI_FMT_HEX, &s, NULL, sign_ctx->q); - debug_printf(" Q : %s\n", s); + acl_debug_printf(" Q : %s\n", s); gcry_mpi_aprint (GCRYMPI_FMT_HEX, &s, NULL, sign_ctx->dp); - debug_printf(" DP: %s\n", s); + acl_debug_printf(" DP: %s\n", s); gcry_mpi_aprint (GCRYMPI_FMT_HEX, &s, NULL, sign_ctx->dq); - debug_printf(" DQ: %s\n", s); + acl_debug_printf(" DQ: %s\n", s); gcry_mpi_aprint (GCRYMPI_FMT_HEX, &s, NULL, sign_ctx->qp); - debug_printf(" QP: %s\n", s); + acl_debug_printf(" QP: %s\n", s); } return NULL; @@ -402,13 +402,13 @@ DEBUG(D_acl) { uschar * s; gcry_mpi_aprint (GCRYMPI_FMT_HEX, &s, NULL, m_sig); - debug_printf(" SG: %s\n", s); + acl_debug_printf(" SG: %s\n", s); } gerr = gcry_mpi_print(GCRYMPI_FMT_USG, sig->data, SIGSPACE, &sig->len, m_sig); if (gerr) { - debug_printf("signature conversion from MPI to buffer failed\n"); + acl_debug_printf("signature conversion from MPI to buffer failed\n"); return US gcry_strerror(gerr); } #undef SIGSPACE @@ -480,13 +480,13 @@ if ( (errstr = as_mpi(pubkey_der, &verify_ctx->n)) ) return errstr; -DEBUG(D_acl) debug_printf("rsa_verify_init:\n"); +DEBUG(D_acl) acl_debug_printf("rsa_verify_init:\n"); { uschar * s; gcry_mpi_aprint (GCRYMPI_FMT_HEX, &s, NULL, verify_ctx->n); - debug_printf(" N : %s\n", s); + acl_debug_printf(" N : %s\n", s); gcry_mpi_aprint (GCRYMPI_FMT_HEX, &s, NULL, verify_ctx->e); - debug_printf(" E : %s\n", s); + acl_debug_printf(" E : %s\n", s); } return NULL; @@ -528,7 +528,7 @@ if ( (stage = US"pkey sexp build", gerr = gcry_pk_verify (s_sig, s_hash, s_pkey)) ) { - DEBUG(D_acl) debug_printf("verify: error in stage '%s'\n", stage); + DEBUG(D_acl) acl_debug_printf("verify: error in stage '%s'\n", stage); return US gcry_strerror(gerr); } diff --git a/src/src/receive.c b/src/src/receive.c index 67fcc8e15..f98eab18c 100644 --- a/src/src/receive.c +++ b/src/src/receive.c @@ -1116,7 +1116,7 @@ switch(where) if (acl_removed_headers != NULL) { - DEBUG(D_receive|D_acl) debug_printf(">>Headers removed by %s ACL:\n", acl_name); + DEBUG(D_receive|D_acl) debug_printf_indent(">>Headers removed by %s ACL:\n", acl_name); for (h = header_list; h != NULL; h = h->next) if (h->type != htype_old) { @@ -1129,15 +1129,15 @@ if (acl_removed_headers != NULL) if (header_testname(h, s, Ustrlen(s), FALSE)) { h->type = htype_old; - DEBUG(D_receive|D_acl) debug_printf(" %s", h->text); + DEBUG(D_receive|D_acl) debug_printf_indent(" %s", h->text); } } acl_removed_headers = NULL; - DEBUG(D_receive|D_acl) debug_printf(">>\n"); + DEBUG(D_receive|D_acl) debug_printf_indent(">>\n"); } if (acl_added_headers == NULL) return; -DEBUG(D_receive|D_acl) debug_printf(">>Headers added by %s ACL:\n", acl_name); +DEBUG(D_receive|D_acl) debug_printf_indent(">>Headers added by %s ACL:\n", acl_name); for (h = acl_added_headers; h != NULL; h = next) { @@ -1148,7 +1148,7 @@ for (h = acl_added_headers; h != NULL; h = next) case htype_add_top: h->next = header_list; header_list = h; - DEBUG(D_receive|D_acl) debug_printf(" (at top)"); + DEBUG(D_receive|D_acl) debug_printf_indent(" (at top)"); break; case htype_add_rec: @@ -1163,7 +1163,7 @@ for (h = acl_added_headers; h != NULL; h = next) } h->next = last_received->next; last_received->next = h; - DEBUG(D_receive|D_acl) debug_printf(" (after Received:)"); + DEBUG(D_receive|D_acl) debug_printf_indent(" (after Received:)"); break; case htype_add_rfc: @@ -1178,7 +1178,7 @@ for (h = acl_added_headers; h != NULL; h = next) of all headers. Our current header must follow it. */ h->next = last_received->next; last_received->next = h; - DEBUG(D_receive|D_acl) debug_printf(" (before any non-Received: or Resent-*: header)"); + DEBUG(D_receive|D_acl) debug_printf_indent(" (before any non-Received: or Resent-*: header)"); break; default: @@ -1198,11 +1198,11 @@ for (h = acl_added_headers; h != NULL; h = next) h->type = header_checkname(h, FALSE); if (h->type >= 'a') h->type = htype_other; - DEBUG(D_receive|D_acl) debug_printf(" %s", header_last->text); + DEBUG(D_receive|D_acl) debug_printf_indent(" %s", header_last->text); } acl_added_headers = NULL; -DEBUG(D_receive|D_acl) debug_printf(">>\n"); +DEBUG(D_receive|D_acl) debug_printf_indent(">>\n"); } @@ -1354,7 +1354,7 @@ if (rc == OK) { (void) string_format(rfc822_file_path, sizeof(rfc822_file_path), "%s/scan/%s/%s", spool_directory, message_id, entry->d_name); - debug_printf("RFC822 attachment detected: running MIME ACL for '%s'\n", + DEBUG(D_receive) debug_printf("RFC822 attachment detected: running MIME ACL for '%s'\n", rfc822_file_path); break; } diff --git a/src/src/smtp_out.c b/src/src/smtp_out.c index 0b5e796d9..ba6153ea9 100644 --- a/src/src/smtp_out.c +++ b/src/src/smtp_out.c @@ -166,7 +166,7 @@ if ((sock = ip_socket(SOCK_STREAM, host_af)) < 0) return -1; if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, US &on, sizeof(on))) HDEBUG(D_transport|D_acl|D_v) - debug_printf("failed to set NODELAY: %s ", strerror(errno)); + debug_printf_indent("failed to set NODELAY: %s ", strerror(errno)); /* Set DSCP value, if we can. For now, if we fail to set the value, we don't bomb out, just log it and continue in default traffic class. */ @@ -174,10 +174,10 @@ bomb out, just log it and continue in default traffic class. */ if (dscp && dscp_lookup(dscp, host_af, &dscp_level, &dscp_option, &dscp_value)) { HDEBUG(D_transport|D_acl|D_v) - debug_printf("DSCP \"%s\"=%x ", dscp, dscp_value); + debug_printf_indent("DSCP \"%s\"=%x ", dscp, dscp_value); if (setsockopt(sock, dscp_level, dscp_option, &dscp_value, sizeof(dscp_value)) < 0) HDEBUG(D_transport|D_acl|D_v) - debug_printf("failed to set DSCP: %s ", strerror(errno)); + debug_printf_indent("failed to set DSCP: %s ", strerror(errno)); /* If the kernel supports IPv4 and IPv6 on an IPv6 socket, we need to set the option for both; ignore failures here */ if (host_af == AF_INET6 && @@ -196,7 +196,7 @@ if (interface && ip_bind(sock, host_af, interface, 0) < 0) { save_errno = errno; HDEBUG(D_transport|D_acl|D_v) - debug_printf("unable to bind outgoing SMTP call to %s: %s", interface, + debug_printf_indent("unable to bind outgoing SMTP call to %s: %s", interface, strerror(errno)); } @@ -212,7 +212,7 @@ if (save_errno != 0) { HDEBUG(D_transport|D_acl|D_v) { - debug_printf("failed: %s", CUstrerror(save_errno)); + debug_printf_indent("failed: %s", CUstrerror(save_errno)); if (save_errno == ETIMEDOUT) debug_printf(" (timeout=%s)", readconf_printtime(timeout)); debug_printf("\n"); @@ -228,7 +228,7 @@ else { union sockaddr_46 interface_sock; EXIM_SOCKLEN_T size = sizeof(interface_sock); - HDEBUG(D_transport|D_acl|D_v) debug_printf("connected\n"); + HDEBUG(D_transport|D_acl|D_v) debug_printf_indent("connected\n"); if (getsockname(sock, (struct sockaddr *)(&interface_sock), &size) == 0) sending_ip_address = host_ntoa(-1, &interface_sock, NULL, &sending_port); else @@ -280,7 +280,7 @@ smtp_transport_options_block * ob = if (host->port != PORT_NONE) { HDEBUG(D_transport|D_acl|D_v) - debug_printf("Transport port=%d replaced by host-specific port=%d\n", port, + debug_printf_indent("Transport port=%d replaced by host-specific port=%d\n", port, host->port); port = host->port; } @@ -295,7 +295,7 @@ HDEBUG(D_transport|D_acl|D_v) #ifdef SUPPORT_SOCKS if (ob->socks_proxy) s = string_sprintf("%svia proxy ", s); #endif - debug_printf("Connecting to %s %s%s... ", host->name, callout_address, s); + debug_printf_indent("Connecting to %s %s%s... ", host->name, callout_address, s); } /* Create and connect the socket */ @@ -329,7 +329,7 @@ flush_buffer(smtp_outblock *outblock) int rc; int n = outblock->ptr - outblock->buffer; -HDEBUG(D_transport|D_acl) debug_printf("cmd buf flush %d bytes\n", n); +HDEBUG(D_transport|D_acl) debug_printf_indent("cmd buf flush %d bytes\n", n); #ifdef SUPPORT_TLS if (tls_out.active == outblock->sock) rc = tls_write(FALSE, outblock->buffer, n); @@ -339,7 +339,7 @@ else if (rc <= 0) { - HDEBUG(D_transport|D_acl) debug_printf("send failed: %s\n", strerror(errno)); + HDEBUG(D_transport|D_acl) debug_printf_indent("send failed: %s\n", strerror(errno)); return FALSE; } @@ -420,7 +420,7 @@ if (format) while (*p != 0) *p++ = '*'; } - HDEBUG(D_transport|D_acl|D_v) debug_printf(" SMTP>> %s\n", big_buffer); + HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" SMTP>> %s\n", big_buffer); } if (!noflush) @@ -501,7 +501,7 @@ for (;;) if((rc = ip_recv(sock, inblock->buffer, inblock->buffersize, timeout)) <= 0) { if (!errno) - DEBUG(D_deliver|D_transport|D_acl) debug_printf(" SMTP(closed)<<\n"); + DEBUG(D_deliver|D_transport|D_acl) debug_printf_indent(" SMTP(closed)<<\n"); break; } @@ -510,7 +510,7 @@ for (;;) ptrend = inblock->ptrend = inblock->buffer + rc; ptr = inblock->buffer; - DEBUG(D_transport|D_acl) debug_printf("read response data: size=%d\n", rc); + DEBUG(D_transport|D_acl) debug_printf_indent("read response data: size=%d\n", rc); } /* Get here if there has been some kind of recv() error; errno is set, but we @@ -563,7 +563,7 @@ for (;;) return FALSE; HDEBUG(D_transport|D_acl|D_v) - debug_printf(" %s %s\n", (ptr == buffer)? "SMTP<<" : " ", ptr); + debug_printf_indent(" %s %s\n", (ptr == buffer)? "SMTP<<" : " ", ptr); /* Check the format of the response: it must start with three digits; if these are followed by a space or end of line, the response is complete. If diff --git a/src/src/spam.c b/src/src/spam.c index ac25a881f..d4b95b2f9 100644 --- a/src/src/spam.c +++ b/src/src/spam.c @@ -251,7 +251,7 @@ if (*spamd_address == '$') else spamd_address_work = spamd_address; -DEBUG(D_acl) debug_printf("spamd: addrlist '%s'\n", spamd_address_work); +DEBUG(D_acl) debug_printf_indent("spamd: addrlist '%s'\n", spamd_address_work); /* check if previous spamd_address was expanded and has changed. dump cached results if so */ if ( spam_ok @@ -295,7 +295,7 @@ start = time(NULL); unsigned args; uschar * s; - DEBUG(D_acl) debug_printf("spamd: addr entry '%s'\n", address); + DEBUG(D_acl) debug_printf_indent("spamd: addr entry '%s'\n", address); sd = (spamd_address_container *)store_get(sizeof(spamd_address_container)); for (sublist = address, args = 0, spamd_param_init(sd); @@ -303,7 +303,7 @@ start = time(NULL); args++ ) { - DEBUG(D_acl) debug_printf("spamd: addr parm '%s'\n", s); + DEBUG(D_acl) debug_printf_indent("spamd: addr parm '%s'\n", s); switch (args) { case 0: sd->hostspec = s; @@ -342,7 +342,7 @@ start = time(NULL); { uschar * errstr; - DEBUG(D_acl) debug_printf("spamd: trying server %s\n", sd->hostspec); + DEBUG(D_acl) debug_printf_indent("spamd: trying server %s\n", sd->hostspec); for (;;) { @@ -350,7 +350,7 @@ start = time(NULL); || sd->retry <= 0 ) break; - DEBUG(D_acl) debug_printf("spamd: server %s: retry conn\n", sd->hostspec); + DEBUG(D_acl) debug_printf_indent("spamd: server %s: retry conn\n", sd->hostspec); while (sd->retry > 0) sd->retry = sleep(sd->retry); } if (spamd_sock >= 0) diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c index aa15fd8d8..c1f5ad45a 100644 --- a/src/src/transports/smtp.c +++ b/src/src/transports/smtp.c @@ -2166,7 +2166,7 @@ writing RSET might have failed, or there may be other addresses whose hosts are specified in the transports, and therefore not visible at top level, in which case continue_more won't get set. */ -HDEBUG(D_transport|D_acl|D_v) debug_printf(" SMTP(close)>>\n"); +HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" SMTP(close)>>\n"); if (sx->send_quit) { shutdown(sx->outblock.sock, SHUT_WR); @@ -3287,7 +3287,7 @@ writing RSET might have failed, or there may be other addresses whose hosts are specified in the transports, and therefore not visible at top level, in which case continue_more won't get set. */ -HDEBUG(D_transport|D_acl|D_v) debug_printf(" SMTP(close)>>\n"); +HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" SMTP(close)>>\n"); if (sx.send_quit) { shutdown(sx.outblock.sock, SHUT_WR); diff --git a/src/src/transports/smtp_socks.c b/src/src/transports/smtp_socks.c index 33b25d1da..555843068 100644 --- a/src/src/transports/smtp_socks.c +++ b/src/src/transports/smtp_socks.c @@ -112,7 +112,7 @@ switch(method) case AUTH_NONE: return OK; case AUTH_NAME: - HDEBUG(D_transport|D_acl|D_v) debug_printf(" socks auth NAME '%s' '%s'\n", + HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" socks auth NAME '%s' '%s'\n", sob->auth_name, sob->auth_pwd); i = Ustrlen(sob->auth_name); j = Ustrlen(sob->auth_pwd); @@ -122,7 +122,7 @@ switch(method) HDEBUG(D_transport|D_acl|D_v) { int i; - debug_printf(" SOCKS>>"); + debug_printf_indent(" SOCKS>>"); for (i = 0; i> 05 01 %02x\n", sob->auth_type); +HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" SOCKS>> 05 01 %02x\n", sob->auth_type); buf[0] = 5; buf[1] = 1; buf[2] = sob->auth_type; if (send(fd, buf, 3, 0) < 0) goto snd_err; @@ -316,7 +316,7 @@ if ( !fd_ready(fd, tmo-time(NULL)) ) goto rcv_err; HDEBUG(D_transport|D_acl|D_v) - debug_printf(" SOCKS<< %02x %02x\n", buf[0], buf[1]); + debug_printf_indent(" SOCKS<< %02x %02x\n", buf[0], buf[1]); if ( buf[0] != 5 || socks_auth(fd, buf[1], sob, tmo) != OK ) @@ -351,7 +351,7 @@ state = US"connect"; HDEBUG(D_transport|D_acl|D_v) { int i; - debug_printf(" SOCKS>>"); + debug_printf_indent(" SOCKS>>"); for (i = 0; i>"); + debug_printf_indent(" SOCKS>>"); for (i = 0; i nelem(socks_errs) ? NULL : socks_errs + buf[1]; HDEBUG(D_transport|D_acl|D_v) - debug_printf(" proxy %s: %s\n", state, se ? se->reason : US"unknown error code received"); + debug_printf_indent(" proxy %s: %s\n", state, se ? se->reason : US"unknown error code received"); errno = se ? se->errcode : EPROTO; } rcv_err: - HDEBUG(D_transport|D_acl|D_v) debug_printf(" proxy rcv_err %s: %s\n", state, strerror(errno)); + HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" proxy rcv_err %s: %s\n", state, strerror(errno)); if (!errno) errno = EPROTO; else if (errno == ENOENT) errno = ECONNABORTED; return -1; diff --git a/src/src/verify.c b/src/src/verify.c index 7b136d4cc..9c4776b31 100644 --- a/src/src/verify.c +++ b/src/src/verify.c @@ -804,12 +804,12 @@ tls_retry_connection: break; HDEBUG(D_acl|D_v) - debug_printf("problem after random/rset/mfrom; reopen conn\n"); + debug_printf_indent("problem after random/rset/mfrom; reopen conn\n"); random_local_part = NULL; #ifdef SUPPORT_TLS tls_close(FALSE, TRUE); #endif - HDEBUG(D_transport|D_acl|D_v) debug_printf(" SMTP(close)>>\n"); + HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" SMTP(close)>>\n"); (void)close(sx.inblock.sock); sx.inblock.sock = sx.outblock.sock = -1; #ifndef DISABLE_EVENT @@ -889,7 +889,7 @@ tls_retry_connection: for cutthrough. But no way to handle a subsequent rcpt, so just refuse any */ cancel_cutthrough_connection("postmaster verify"); - HDEBUG(D_acl|D_v) debug_printf("Cutthrough cancelled by presence of postmaster verify\n"); + HDEBUG(D_acl|D_v) debug_printf_indent("Cutthrough cancelled by presence of postmaster verify\n"); done = smtp_write_command(&sx.outblock, FALSE, "RSET\r\n") >= 0 && smtp_read_response(&sx.inblock, sx.buffer, @@ -1017,7 +1017,7 @@ no_conn: && !sx.lmtp ) { - HDEBUG(D_acl|D_v) debug_printf("holding verify callout open for cutthrough delivery\n"); + HDEBUG(D_acl|D_v) debug_printf_indent("holding verify callout open for cutthrough delivery\n"); cutthrough.fd = sx.outblock.sock; /* We assume no buffer in use in the outblock */ cutthrough.nrcpt = 1; @@ -1054,7 +1054,7 @@ no_conn: #ifdef SUPPORT_TLS tls_close(FALSE, TRUE); #endif - HDEBUG(D_transport|D_acl|D_v) debug_printf(" SMTP(close)>>\n"); + HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" SMTP(close)>>\n"); (void)close(sx.inblock.sock); sx.inblock.sock = sx.outblock.sock = -1; #ifndef DISABLE_EVENT @@ -1131,7 +1131,7 @@ int rc; get rewritten. */ addr2 = *addr; -HDEBUG(D_acl) debug_printf("----------- %s cutthrough setup ------------\n", +HDEBUG(D_acl) debug_printf_indent("----------- %s cutthrough setup ------------\n", rcpt_count > 1 ? "more" : "start"); rc = verify_address(&addr2, NULL, vopt_is_recipient | vopt_callout_recipsender | vopt_callout_no_cache, @@ -1139,7 +1139,7 @@ rc = verify_address(&addr2, NULL, NULL, NULL, NULL); addr->message = addr2.message; addr->user_message = addr2.user_message; -HDEBUG(D_acl) debug_printf("----------- end cutthrough setup ------------\n"); +HDEBUG(D_acl) debug_printf_indent("----------- end cutthrough setup ------------\n"); return rc; } @@ -1164,7 +1164,7 @@ if( return TRUE; } -HDEBUG(D_transport|D_acl) debug_printf("cutthrough_send failed: %s\n", strerror(errno)); +HDEBUG(D_transport|D_acl) debug_printf_indent("cutthrough_send failed: %s\n", strerror(errno)); return FALSE; } @@ -1262,7 +1262,7 @@ cutthrough_predata(void) if(cutthrough.fd < 0) return FALSE; -HDEBUG(D_transport|D_acl|D_v) debug_printf(" SMTP>> DATA\n"); +HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" SMTP>> DATA\n"); cutthrough_puts(US"DATA\r\n", 6); cutthrough_flush_send(); @@ -1300,7 +1300,7 @@ if(cutthrough.fd < 0) /* We share a routine with the mainline transport to handle header add/remove/rewrites, but having a separate buffered-output function (for now) */ -HDEBUG(D_acl) debug_printf("----------- start cutthrough headers send -----------\n"); +HDEBUG(D_acl) debug_printf_indent("----------- start cutthrough headers send -----------\n"); tctx.tblock = cutthrough.addr.transport; tctx.addr = &cutthrough.addr; @@ -1311,7 +1311,7 @@ tctx.options = topt_use_crlf; if (!transport_headers_send(cutthrough.fd, &tctx, &cutthrough_write_chunk)) return FALSE; -HDEBUG(D_acl) debug_printf("----------- done cutthrough headers send ------------\n"); +HDEBUG(D_acl) debug_printf_indent("----------- done cutthrough headers send ------------\n"); return TRUE; } @@ -1326,7 +1326,7 @@ if(cutthrough.fd >= 0) conn before the final dot. */ ctblock.ptr = ctbuffer; - HDEBUG(D_transport|D_acl|D_v) debug_printf(" SMTP>> QUIT\n"); + HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" SMTP>> QUIT\n"); _cutthrough_puts(US"QUIT\r\n", 6); /* avoid recursion */ _cutthrough_flush_send(); @@ -1336,10 +1336,10 @@ if(cutthrough.fd >= 0) #ifdef SUPPORT_TLS tls_close(FALSE, TRUE); #endif - HDEBUG(D_transport|D_acl|D_v) debug_printf(" SMTP(close)>>\n"); + HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" SMTP(close)>>\n"); (void)close(cutthrough.fd); cutthrough.fd = -1; - HDEBUG(D_acl) debug_printf("----------- cutthrough shutdown (%s) ------------\n", why); + HDEBUG(D_acl) debug_printf_indent("----------- cutthrough shutdown (%s) ------------\n", why); } ctblock.ptr = ctbuffer; } @@ -1364,7 +1364,7 @@ cutthrough_finaldot(void) { uschar res; address_item * addr; -HDEBUG(D_transport|D_acl|D_v) debug_printf(" SMTP>> .\n"); +HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" SMTP>> .\n"); /* Assume data finshed with new-line */ if( !cutthrough_puts(US".", 1) diff --git a/test/stderr/0002 b/test/stderr/0002 index e7c70cfbf..281e3dcfd 100644 --- a/test/stderr/0002 +++ b/test/stderr/0002 @@ -1,164 +1,164 @@ Exim version x.yz .... configuration file is TESTSUITE/test-config admin user -considering: primary_hostname: $primary_hostname - expanding: primary_hostname: $primary_hostname - result: primary_hostname: myhost.test.ex -considering: match: ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail} -considering: abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail} - expanding: abcd - result: abcd -considering: \N^([ab]+)(\w+)$\N}{$2$1}fail} - expanding: \N^([ab]+)(\w+)$\N - result: ^([ab]+)(\w+)$ - condition: match{abcd}{\N^([ab]+)(\w+)$\N} - result: true -considering: $2$1}fail} - expanding: $2$1 - result: cdab - expanding: match: ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail} - result: match: cdab -considering: match: ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail} -considering: wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail} - expanding: wxyz - result: wxyz -considering: \N^([ab]+)(\w+)$\N}{$2$1}fail} - expanding: \N^([ab]+)(\w+)$\N - result: ^([ab]+)(\w+)$ - condition: match{wxyz}{\N^([ab]+)(\w+)$\N} - result: false - scanning: $2$1}fail} - expanding: $2$1 - result: - skipping: result is not used -failed to expand: match: ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail} - error message: "if" failed and "fail" requested -failure was forced -considering: ${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}} -considering: 1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}} - expanding: 1 - result: 1 -considering: 1}{yes}{${lookup{xx}lsearch{/non/exist}}}} - expanding: 1 - result: 1 - condition: eq {1}{1} - result: true -considering: yes}{${lookup{xx}lsearch{/non/exist}}}} - expanding: yes - result: yes - scanning: ${lookup{xx}lsearch{/non/exist}}}} - scanning: xx}lsearch{/non/exist}}}} - expanding: xx - result: xx - skipping: result is not used - scanning: /non/exist}}}} - expanding: /non/exist - result: /non/exist - skipping: result is not used - expanding: ${lookup{xx}lsearch{/non/exist}} - result: - skipping: result is not used - expanding: ${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}} - result: yes -considering: match_address: ${if match_address{a.b.c}{a.b.c}{yes}{no}} -considering: a.b.c}{a.b.c}{yes}{no}} - expanding: a.b.c - result: a.b.c -considering: a.b.c}{yes}{no}} - expanding: a.b.c - result: a.b.c + /considering: primary_hostname: $primary_hostname + |__expanding: primary_hostname: $primary_hostname + \_____result: primary_hostname: myhost.test.ex + /considering: match: ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail} + /considering: abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail} + |__expanding: abcd + \_____result: abcd + /considering: \N^([ab]+)(\w+)$\N}{$2$1}fail} + |__expanding: \N^([ab]+)(\w+)$\N + \_____result: ^([ab]+)(\w+)$ + |__condition: match{abcd}{\N^([ab]+)(\w+)$\N} + |_____result: true + /considering: $2$1}fail} + |__expanding: $2$1 + \_____result: cdab + |__expanding: match: ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail} + \_____result: match: cdab + /considering: match: ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail} + /considering: wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail} + |__expanding: wxyz + \_____result: wxyz + /considering: \N^([ab]+)(\w+)$\N}{$2$1}fail} + |__expanding: \N^([ab]+)(\w+)$\N + \_____result: ^([ab]+)(\w+)$ + |__condition: match{wxyz}{\N^([ab]+)(\w+)$\N} + |_____result: false + / scanning: $2$1}fail} + |__expanding: $2$1 + |_____result: + \___skipping: result is not used + |failed to expand: match: ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail} + |___error message: "if" failed and "fail" requested + \failure was forced + /considering: ${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}} + /considering: 1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}} + |__expanding: 1 + \_____result: 1 + /considering: 1}{yes}{${lookup{xx}lsearch{/non/exist}}}} + |__expanding: 1 + \_____result: 1 + |__condition: eq {1}{1} + |_____result: true + /considering: yes}{${lookup{xx}lsearch{/non/exist}}}} + |__expanding: yes + \_____result: yes + / scanning: ${lookup{xx}lsearch{/non/exist}}}} + / scanning: xx}lsearch{/non/exist}}}} + |__expanding: xx + |_____result: xx + \___skipping: result is not used + / scanning: /non/exist}}}} + |__expanding: /non/exist + |_____result: /non/exist + \___skipping: result is not used + |__expanding: ${lookup{xx}lsearch{/non/exist}} + |_____result: + \___skipping: result is not used + |__expanding: ${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}} + \_____result: yes + /considering: match_address: ${if match_address{a.b.c}{a.b.c}{yes}{no}} + /considering: a.b.c}{a.b.c}{yes}{no}} + |__expanding: a.b.c + \_____result: a.b.c + /considering: a.b.c}{yes}{no}} + |__expanding: a.b.c + \_____result: a.b.c LOG: MAIN PANIC no @ found in the subject of an address list match: subject="a.b.c" pattern="a.b.c" - condition: match_address{a.b.c}{a.b.c} - result: false - scanning: yes}{no}} - expanding: yes - result: yes - skipping: result is not used -considering: no}} - expanding: no - result: no - expanding: match_address: ${if match_address{a.b.c}{a.b.c}{yes}{no}} - result: match_address: no + |__condition: match_address{a.b.c}{a.b.c} + |_____result: false + / scanning: yes}{no}} + |__expanding: yes + |_____result: yes + \___skipping: result is not used + /considering: no}} + |__expanding: no + \_____result: no + |__expanding: match_address: ${if match_address{a.b.c}{a.b.c}{yes}{no}} + \_____result: match_address: no >>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>> Exim version x.yz .... configuration file is TESTSUITE/test-config admin user -considering: -oMa sender_host_address = $sender_host_address - expanding: -oMa sender_host_address = $sender_host_address - result: -oMa sender_host_address = V4NET.0.0.1 -considering: sender_host_port = $sender_host_port - expanding: sender_host_port = $sender_host_port - result: sender_host_port = 1234 -considering: -oMaa sender_host_authenticated = $sender_host_authenticated - expanding: -oMaa sender_host_authenticated = $sender_host_authenticated - result: -oMaa sender_host_authenticated = AAA -considering: -oMai authenticated_id = $authenticated_id - expanding: -oMai authenticated_id = $authenticated_id - result: -oMai authenticated_id = philip -considering: -oMas authenticated_sender = $authenticated_sender - expanding: -oMas authenticated_sender = $authenticated_sender - result: -oMas authenticated_sender = xx@yy.zz -considering: -oMi interface_address = $interface_address - expanding: -oMi interface_address = $interface_address - result: -oMi interface_address = 1.1.1.1 -considering: interface_port = $interface_port - expanding: interface_port = $interface_port - result: interface_port = 99 -considering: -oMr received_protocol = $received_protocol - expanding: -oMr received_protocol = $received_protocol - result: -oMr received_protocol = special -considering: -oMt sender_ident = $sender_ident - expanding: -oMt sender_ident = $sender_ident - result: -oMt sender_ident = me + /considering: -oMa sender_host_address = $sender_host_address + |__expanding: -oMa sender_host_address = $sender_host_address + \_____result: -oMa sender_host_address = V4NET.0.0.1 + /considering: sender_host_port = $sender_host_port + |__expanding: sender_host_port = $sender_host_port + \_____result: sender_host_port = 1234 + /considering: -oMaa sender_host_authenticated = $sender_host_authenticated + |__expanding: -oMaa sender_host_authenticated = $sender_host_authenticated + \_____result: -oMaa sender_host_authenticated = AAA + /considering: -oMai authenticated_id = $authenticated_id + |__expanding: -oMai authenticated_id = $authenticated_id + \_____result: -oMai authenticated_id = philip + /considering: -oMas authenticated_sender = $authenticated_sender + |__expanding: -oMas authenticated_sender = $authenticated_sender + \_____result: -oMas authenticated_sender = xx@yy.zz + /considering: -oMi interface_address = $interface_address + |__expanding: -oMi interface_address = $interface_address + \_____result: -oMi interface_address = 1.1.1.1 + /considering: interface_port = $interface_port + |__expanding: interface_port = $interface_port + \_____result: interface_port = 99 + /considering: -oMr received_protocol = $received_protocol + |__expanding: -oMr received_protocol = $received_protocol + \_____result: -oMr received_protocol = special + /considering: -oMt sender_ident = $sender_ident + |__expanding: -oMt sender_ident = $sender_ident + \_____result: -oMt sender_ident = me >>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>> 1999-03-02 09:44:33 no host name found for IP address V4NET.11.12.13 Exim version x.yz .... configuration file is TESTSUITE/test-config admin user -considering: -oMa sender_host_address = $sender_host_address - expanding: -oMa sender_host_address = $sender_host_address - result: -oMa sender_host_address = V4NET.0.0.1 -considering: sender_host_port = $sender_host_port - expanding: sender_host_port = $sender_host_port - result: sender_host_port = 1234 -considering: -oMaa sender_host_authenticated = $sender_host_authenticated - expanding: -oMaa sender_host_authenticated = $sender_host_authenticated - result: -oMaa sender_host_authenticated = AAA -considering: -oMai authenticated_id = $authenticated_id - expanding: -oMai authenticated_id = $authenticated_id - result: -oMai authenticated_id = philip -considering: -oMas authenticated_sender = $authenticated_sender - expanding: -oMas authenticated_sender = $authenticated_sender - result: -oMas authenticated_sender = xx@yy.zz -considering: -oMi interface_address = $interface_address - expanding: -oMi interface_address = $interface_address - result: -oMi interface_address = 1.1.1.1 -considering: interface_port = $interface_port - expanding: interface_port = $interface_port - result: interface_port = 99 -considering: -oMr received_protocol = $received_protocol - expanding: -oMr received_protocol = $received_protocol - result: -oMr received_protocol = special -considering: ----> No lookup yet: ${if eq{black}{white}{$sender_host_name}{No}} -considering: black}{white}{$sender_host_name}{No}} - expanding: black - result: black -considering: white}{$sender_host_name}{No}} - expanding: white - result: white - condition: eq{black}{white} - result: false - scanning: $sender_host_name}{No}} - expanding: $sender_host_name - result: - skipping: result is not used -considering: No}} - expanding: No - result: No - expanding: ----> No lookup yet: ${if eq{black}{white}{$sender_host_name}{No}} - result: ----> No lookup yet: No -considering: -oMs sender_host_name = $sender_host_name + /considering: -oMa sender_host_address = $sender_host_address + |__expanding: -oMa sender_host_address = $sender_host_address + \_____result: -oMa sender_host_address = V4NET.0.0.1 + /considering: sender_host_port = $sender_host_port + |__expanding: sender_host_port = $sender_host_port + \_____result: sender_host_port = 1234 + /considering: -oMaa sender_host_authenticated = $sender_host_authenticated + |__expanding: -oMaa sender_host_authenticated = $sender_host_authenticated + \_____result: -oMaa sender_host_authenticated = AAA + /considering: -oMai authenticated_id = $authenticated_id + |__expanding: -oMai authenticated_id = $authenticated_id + \_____result: -oMai authenticated_id = philip + /considering: -oMas authenticated_sender = $authenticated_sender + |__expanding: -oMas authenticated_sender = $authenticated_sender + \_____result: -oMas authenticated_sender = xx@yy.zz + /considering: -oMi interface_address = $interface_address + |__expanding: -oMi interface_address = $interface_address + \_____result: -oMi interface_address = 1.1.1.1 + /considering: interface_port = $interface_port + |__expanding: interface_port = $interface_port + \_____result: interface_port = 99 + /considering: -oMr received_protocol = $received_protocol + |__expanding: -oMr received_protocol = $received_protocol + \_____result: -oMr received_protocol = special + /considering: ----> No lookup yet: ${if eq{black}{white}{$sender_host_name}{No}} + /considering: black}{white}{$sender_host_name}{No}} + |__expanding: black + \_____result: black + /considering: white}{$sender_host_name}{No}} + |__expanding: white + \_____result: white + |__condition: eq{black}{white} + |_____result: false + / scanning: $sender_host_name}{No}} + |__expanding: $sender_host_name + |_____result: + \___skipping: result is not used + /considering: No}} + |__expanding: No + \_____result: No + |__expanding: ----> No lookup yet: ${if eq{black}{white}{$sender_host_name}{No}} + \_____result: ----> No lookup yet: No + /considering: -oMs sender_host_name = $sender_host_name looking up host name for V4NET.0.0.1 IP address lookup yielded "ten-1.test.ex" ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx @@ -166,11 +166,11 @@ checking addresses for ten-1.test.ex V4NET.0.0.1 OK sender_fullhost = ten-1.test.ex [V4NET.0.0.1] sender_rcvhost = ten-1.test.ex ([V4NET.0.0.1] ident=me) - expanding: -oMs sender_host_name = $sender_host_name - result: -oMs sender_host_name = ten-1.test.ex -considering: -oMt sender_ident = $sender_ident - expanding: -oMt sender_ident = $sender_ident - result: -oMt sender_ident = me + |__expanding: -oMs sender_host_name = $sender_host_name + \_____result: -oMs sender_host_name = ten-1.test.ex + /considering: -oMt sender_ident = $sender_ident + |__expanding: -oMt sender_ident = $sender_ident + \_____result: -oMt sender_ident = me >>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>> Exim version x.yz .... changed uid/gid: forcing real = effective diff --git a/test/stderr/0022 b/test/stderr/0022 index bcafb8589..1b4622617 100644 --- a/test/stderr/0022 +++ b/test/stderr/0022 @@ -361,11 +361,11 @@ LOG: SMTP connection from [V4NET.9.8.7] >>> using ACL "nested_drop" >>> processing "accept" >>> check acl = drop ->>> using ACL "drop" ->>> processing "drop" ->>> message: forcibly dropped ->>> drop: condition test succeeded in ACL "drop" ->>> end of ACL "drop": DROP + >>> using ACL "drop" + >>> processing "drop" + >>> message: forcibly dropped + >>> drop: condition test succeeded in ACL "drop" + >>> end of ACL "drop": DROP >>> accept: condition test yielded "drop" in ACL "nested_drop" >>> accept: endpass encountered - denying access LOG: H=[V4NET.9.8.7] F= rejected RCPT : forcibly dropped @@ -382,11 +382,11 @@ LOG: SMTP connection from [V4NET.9.8.7] >>> using ACL "nested_drop_require" >>> processing "require" >>> check acl = drop ->>> using ACL "drop" ->>> processing "drop" ->>> message: forcibly dropped ->>> drop: condition test succeeded in ACL "drop" ->>> end of ACL "drop": DROP + >>> using ACL "drop" + >>> processing "drop" + >>> message: forcibly dropped + >>> drop: condition test succeeded in ACL "drop" + >>> end of ACL "drop": DROP >>> require: condition test yielded "drop" in ACL "nested_drop_require" >>> end of ACL "nested_drop_require": not OK LOG: H=[V4NET.9.8.7] F= rejected RCPT : forcibly dropped diff --git a/test/stderr/0023 b/test/stderr/0023 index 068962377..fa60320fe 100644 --- a/test/stderr/0023 +++ b/test/stderr/0023 @@ -451,12 +451,12 @@ LOG: H=[5.6.11.1] F= rejected RCPT : "local part of wrong type >>> host in "5.6.12.1"? yes (matched "5.6.12.1") >>> message: failed nested acl >>> check acl = acl_5_6_12A ->>> using ACL "acl_5_6_12A" ->>> processing "accept" ->>> check domains = ok + >>> using ACL "acl_5_6_12A" + >>> processing "accept" + >>> check domains = ok >>> ok in "ok"? yes (matched "ok") ->>> accept: condition test succeeded in ACL "acl_5_6_12A" ->>> end of ACL "acl_5_6_12A": ACCEPT + >>> accept: condition test succeeded in ACL "acl_5_6_12A" + >>> end of ACL "acl_5_6_12A": ACCEPT >>> accept: condition test succeeded in ACL "acl_5_6_12" >>> end of ACL "acl_5_6_12": ACCEPT >>> using ACL "acl_5_6_12" @@ -465,12 +465,12 @@ LOG: H=[5.6.11.1] F= rejected RCPT : "local part of wrong type >>> host in "5.6.12.1"? yes (matched "5.6.12.1") >>> message: failed nested acl >>> check acl = acl_5_6_12A ->>> using ACL "acl_5_6_12A" ->>> processing "accept" ->>> check domains = ok + >>> using ACL "acl_5_6_12A" + >>> processing "accept" + >>> check domains = ok >>> y in "ok"? no (end of list) ->>> accept: condition test failed in ACL "acl_5_6_12A" ->>> end of ACL "acl_5_6_12A": implicit DENY + >>> accept: condition test failed in ACL "acl_5_6_12A" + >>> end of ACL "acl_5_6_12A": implicit DENY >>> accept: condition test failed in ACL "acl_5_6_12" >>> accept: endpass encountered - denying access LOG: H=[5.6.12.1] F= rejected RCPT : failed nested acl @@ -509,86 +509,86 @@ LOG: H=[5.6.12.1] F= rejected RCPT : failed nested acl >>> using ACL "acl_8_8_8" >>> processing "accept" >>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> using ACL "acl_8_8_8" ->>> processing "accept" ->>> check acl = acl_8_8_8 ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" ->>> accept: condition test error in ACL "acl_8_8_8" + >>> using ACL "acl_8_8_8" + >>> processing "accept" + >>> check acl = acl_8_8_8 + >>> using ACL "acl_8_8_8" + >>> processing "accept" + >>> check acl = acl_8_8_8 + >>> using ACL "acl_8_8_8" + >>> processing "accept" + >>> check acl = acl_8_8_8 + .>>> using ACL "acl_8_8_8" + .>>> processing "accept" + .>>> check acl = acl_8_8_8 + . >>> using ACL "acl_8_8_8" + . >>> processing "accept" + . >>> check acl = acl_8_8_8 + . >>> using ACL "acl_8_8_8" + . >>> processing "accept" + . >>> check acl = acl_8_8_8 + . >>> using ACL "acl_8_8_8" + . >>> processing "accept" + . >>> check acl = acl_8_8_8 + . .>>> using ACL "acl_8_8_8" + . .>>> processing "accept" + . .>>> check acl = acl_8_8_8 + . . >>> using ACL "acl_8_8_8" + . . >>> processing "accept" + . . >>> check acl = acl_8_8_8 + . . >>> using ACL "acl_8_8_8" + . . >>> processing "accept" + . . >>> check acl = acl_8_8_8 + . . >>> using ACL "acl_8_8_8" + . . >>> processing "accept" + . . >>> check acl = acl_8_8_8 + . . .>>> using ACL "acl_8_8_8" + . . .>>> processing "accept" + . . .>>> check acl = acl_8_8_8 + . . . >>> using ACL "acl_8_8_8" + . . . >>> processing "accept" + . . . >>> check acl = acl_8_8_8 + . . . >>> using ACL "acl_8_8_8" + . . . >>> processing "accept" + . . . >>> check acl = acl_8_8_8 + . . . >>> using ACL "acl_8_8_8" + . . . >>> processing "accept" + . . . >>> check acl = acl_8_8_8 + . . . .>>> using ACL "acl_8_8_8" + . . . .>>> processing "accept" + . . . .>>> check acl = acl_8_8_8 + . . . . >>> using ACL "acl_8_8_8" + . . . . >>> processing "accept" + . . . . >>> check acl = acl_8_8_8 + . . . . >>> using ACL "acl_8_8_8" + . . . . >>> processing "accept" + . . . . >>> check acl = acl_8_8_8 + . . . . >>> using ACL "acl_8_8_8" + . . . . >>> processing "accept" + . . . . >>> check acl = acl_8_8_8 + . . . . .>>> using ACL "acl_8_8_8" + . . . . .>>> processing "accept" + . . . . .>>> check acl = acl_8_8_8 + . . . . .>>> accept: condition test error in ACL "acl_8_8_8" + . . . . >>> accept: condition test error in ACL "acl_8_8_8" + . . . . >>> accept: condition test error in ACL "acl_8_8_8" + . . . . >>> accept: condition test error in ACL "acl_8_8_8" + . . . .>>> accept: condition test error in ACL "acl_8_8_8" + . . . >>> accept: condition test error in ACL "acl_8_8_8" + . . . >>> accept: condition test error in ACL "acl_8_8_8" + . . . >>> accept: condition test error in ACL "acl_8_8_8" + . . .>>> accept: condition test error in ACL "acl_8_8_8" + . . >>> accept: condition test error in ACL "acl_8_8_8" + . . >>> accept: condition test error in ACL "acl_8_8_8" + . . >>> accept: condition test error in ACL "acl_8_8_8" + . .>>> accept: condition test error in ACL "acl_8_8_8" + . >>> accept: condition test error in ACL "acl_8_8_8" + . >>> accept: condition test error in ACL "acl_8_8_8" + . >>> accept: condition test error in ACL "acl_8_8_8" + .>>> accept: condition test error in ACL "acl_8_8_8" + >>> accept: condition test error in ACL "acl_8_8_8" + >>> accept: condition test error in ACL "acl_8_8_8" + >>> accept: condition test error in ACL "acl_8_8_8" >>> accept: condition test error in ACL "acl_8_8_8" LOG: H=[8.8.8.8] F= temporarily rejected RCPT : ACL nested too deep: possible loop >>> host in hosts_connection_nolog? no (option unset) @@ -602,41 +602,41 @@ LOG: H=[8.8.8.8] F= temporarily rejected RCPT : ACL nested too deep: p >>> using ACL "acl_5_6_13" >>> processing "accept" >>> check acl = TESTSUITE/aux-fixed/0023.acl1 ->>> read ACL from file TESTSUITE/aux-fixed/0023.acl1 ->>> processing "accept" ->>> check domains = y + >>> read ACL from file TESTSUITE/aux-fixed/0023.acl1 + >>> processing "accept" + >>> check domains = y >>> y in "y"? yes (matched "y") ->>> check local_parts = x + >>> check local_parts = x >>> x in "x"? yes (matched "x") ->>> accept: condition test succeeded in ACL "TESTSUITE/aux-fixed/0023.acl1" ->>> end of ACL "TESTSUITE/aux-fixed/0023.acl1": ACCEPT + >>> accept: condition test succeeded in ACL "TESTSUITE/aux-fixed/0023.acl1" + >>> end of ACL "TESTSUITE/aux-fixed/0023.acl1": ACCEPT >>> accept: condition test succeeded in ACL "acl_5_6_13" >>> end of ACL "acl_5_6_13": ACCEPT >>> using ACL "acl_5_6_13" >>> processing "accept" >>> check acl = TESTSUITE/aux-fixed/0023.acl1 ->>> using ACL "TESTSUITE/aux-fixed/0023.acl1" ->>> processing "accept" ->>> check domains = y + >>> using ACL "TESTSUITE/aux-fixed/0023.acl1" + >>> processing "accept" + >>> check domains = y >>> y in "y"? yes (matched "y") ->>> check local_parts = x + >>> check local_parts = x >>> x1 in "x"? no (end of list) ->>> accept: condition test failed in ACL "TESTSUITE/aux-fixed/0023.acl1" ->>> end of ACL "TESTSUITE/aux-fixed/0023.acl1": implicit DENY + >>> accept: condition test failed in ACL "TESTSUITE/aux-fixed/0023.acl1" + >>> end of ACL "TESTSUITE/aux-fixed/0023.acl1": implicit DENY >>> accept: condition test failed in ACL "acl_5_6_13" >>> end of ACL "acl_5_6_13": implicit DENY LOG: H=[5.6.13.1] F= rejected RCPT >>> using ACL "acl_5_6_13" >>> processing "accept" >>> check acl = TESTSUITE/aux-fixed/0023.acl1 ->>> using ACL "TESTSUITE/aux-fixed/0023.acl1" ->>> processing "accept" ->>> check domains = y + >>> using ACL "TESTSUITE/aux-fixed/0023.acl1" + >>> processing "accept" + >>> check domains = y >>> y in "y"? yes (matched "y") ->>> check local_parts = x + >>> check local_parts = x >>> x2 in "x"? no (end of list) ->>> accept: condition test failed in ACL "TESTSUITE/aux-fixed/0023.acl1" ->>> end of ACL "TESTSUITE/aux-fixed/0023.acl1": implicit DENY + >>> accept: condition test failed in ACL "TESTSUITE/aux-fixed/0023.acl1" + >>> end of ACL "TESTSUITE/aux-fixed/0023.acl1": implicit DENY >>> accept: condition test failed in ACL "acl_5_6_13" >>> end of ACL "acl_5_6_13": implicit DENY LOG: H=[5.6.13.1] F= rejected RCPT @@ -1335,25 +1335,25 @@ LOG: H=[44.44.44.1] Warning: ACL "warn" statement skipped: condition test deferr >>> using ACL "acl_60_60_60" >>> processing "accept" >>> check !acl = TESTSUITE/aux-fixed/0023.acl2 ->>> read ACL from file TESTSUITE/aux-fixed/0023.acl2 ->>> processing "accept" ->>> check domains = b + >>> read ACL from file TESTSUITE/aux-fixed/0023.acl2 + >>> processing "accept" + >>> check domains = b >>> y in "b"? no (end of list) ->>> accept: condition test failed in ACL "TESTSUITE/aux-fixed/0023.acl2" ->>> end of ACL "TESTSUITE/aux-fixed/0023.acl2": implicit DENY + >>> accept: condition test failed in ACL "TESTSUITE/aux-fixed/0023.acl2" + >>> end of ACL "TESTSUITE/aux-fixed/0023.acl2": implicit DENY >>> accept: condition test succeeded in ACL "acl_60_60_60" >>> end of ACL "acl_60_60_60": ACCEPT >>> using ACL "acl_60_60_60" >>> processing "accept" >>> check !acl = TESTSUITE/aux-fixed/0023.acl2 ->>> using ACL "TESTSUITE/aux-fixed/0023.acl2" ->>> processing "accept" ->>> check domains = b + >>> using ACL "TESTSUITE/aux-fixed/0023.acl2" + >>> processing "accept" + >>> check domains = b >>> b in "b"? yes (matched "b") ->>> check local_parts = a + >>> check local_parts = a >>> a in "a"? yes (matched "a") ->>> accept: condition test succeeded in ACL "TESTSUITE/aux-fixed/0023.acl2" ->>> end of ACL "TESTSUITE/aux-fixed/0023.acl2": ACCEPT + >>> accept: condition test succeeded in ACL "TESTSUITE/aux-fixed/0023.acl2" + >>> end of ACL "TESTSUITE/aux-fixed/0023.acl2": ACCEPT >>> accept: condition test failed in ACL "acl_60_60_60" >>> end of ACL "acl_60_60_60": implicit DENY LOG: H=[60.60.60.60] F= rejected RCPT diff --git a/test/stderr/0092 b/test/stderr/0092 index 93f70e59c..3be640671 100644 --- a/test/stderr/0092 +++ b/test/stderr/0092 @@ -50,33 +50,33 @@ LOG: smtp_connection MAIN SMTP connection from [V4NET.0.0.1] host in host_lookup? no (option unset) set_process_info: pppp handling incoming connection from [V4NET.0.0.1] -considering: ${if eq {V4NET.0.0.1} {$sender_host_address} {2} {30}}s -considering: V4NET.0.0.1} {$sender_host_address} {2} {30}}s - expanding: V4NET.0.0.1 - result: V4NET.0.0.1 -considering: $sender_host_address} {2} {30}}s - expanding: $sender_host_address - result: V4NET.0.0.1 - condition: eq {V4NET.0.0.1} {$sender_host_address} - result: true -considering: 2} {30}}s - expanding: 2 - result: 2 - scanning: 30}}s - expanding: 30 - result: 30 - skipping: result is not used - expanding: ${if eq {V4NET.0.0.1} {$sender_host_address} {2} {30}}s - result: 2s + /considering: ${if eq {V4NET.0.0.1} {$sender_host_address} {2} {30}}s + /considering: V4NET.0.0.1} {$sender_host_address} {2} {30}}s + |__expanding: V4NET.0.0.1 + \_____result: V4NET.0.0.1 + /considering: $sender_host_address} {2} {30}}s + |__expanding: $sender_host_address + \_____result: V4NET.0.0.1 + |__condition: eq {V4NET.0.0.1} {$sender_host_address} + |_____result: true + /considering: 2} {30}}s + |__expanding: 2 + \_____result: 2 + / scanning: 30}}s + |__expanding: 30 + |_____result: 30 + \___skipping: result is not used + |__expanding: ${if eq {V4NET.0.0.1} {$sender_host_address} {2} {30}}s + \_____result: 2s host in host_reject_connection? no (option unset) host in sender_unqualified_hosts? no (option unset) host in recipient_unqualified_hosts? no (option unset) host in helo_verify_hosts? no (option unset) host in helo_try_verify_hosts? no (option unset) host in helo_accept_junk_hosts? no (option unset) -considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full - expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full - result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 + /considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full + |__expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full + \_____result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 SMTP>> 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 smtp_setup_msg entered SMTP<< mail from:userx@test.ex diff --git a/test/stderr/0402 b/test/stderr/0402 index 9aa1f596e..99b05dd21 100644 --- a/test/stderr/0402 +++ b/test/stderr/0402 @@ -41,97 +41,109 @@ F From: CALLER_NAME Data file name: TESTSUITE/spool//input//10HmaX-0005vi-00-D Data file written for message 10HmaX-0005vi-00 -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 -considering: Received: ${if def:sender_rcvhost {from $sender_rcvhost + /considering: ${tod_full} + |__expanding: ${tod_full} + \_____result: Tue, 2 Mar 1999 09:44:33 +0000 + /considering: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - condition: def:sender_rcvhost - result: false - scanning: from $sender_rcvhost + |__condition: def:sender_rcvhost + |_____result: false + / scanning: from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: from $sender_rcvhost + |__expanding: from $sender_rcvhost - result: from + |_____result: from - skipping: result is not used -considering: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + \___skipping: result is not used + /considering: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - condition: def:sender_ident - result: true -considering: from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + |__condition: def:sender_ident + |_____result: true + /considering: from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} -considering: $sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + ./considering: $sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: $sender_ident - result: CALLER - expanding: from ${quote_local_part:$sender_ident} - result: from CALLER - condition: def:sender_helo_name - result: false - scanning: (helo=$sender_helo_name) + .|__expanding: $sender_ident + .\_____result: CALLER + |__expanding: from ${quote_local_part:$sender_ident} + \_____result: from CALLER + |__condition: def:sender_helo_name + |_____result: false + / scanning: (helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: (helo=$sender_helo_name) + |__expanding: (helo=$sender_helo_name) - result: (helo=) + |_____result: (helo=) - skipping: result is not used - expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + \___skipping: result is not used + |__expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }} - result: from CALLER - condition: def:received_protocol - result: true -considering: with $received_protocol}} (Exim $version_number) + \_____result: from CALLER + |__condition: def:received_protocol + |_____result: true + /considering: with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: with $received_protocol - result: with local - condition: def:sender_address - result: true -considering: (envelope-from <$sender_address>) + |__expanding: with $received_protocol + \_____result: with local + |__condition: def:tls_cipher + |_____result: false + / scanning: ($tls_cipher) + }}(Exim $version_number) + ${if def:sender_address {(envelope-from <$sender_address>) + }}id $message_exim_id${if def:received_for { + for $received_for}} + |__expanding: ($tls_cipher) + + |_____result: () + + \___skipping: result is not used + |__condition: def:sender_address + |_____result: true + /considering: (envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: (envelope-from <$sender_address>) + |__expanding: (envelope-from <$sender_address>) - result: (envelope-from ) + \_____result: (envelope-from ) - condition: def:received_for - result: false - scanning: + |__condition: def:received_for + |_____result: false + / scanning: for $received_for}} - expanding: + |__expanding: for $received_for - result: + |_____result: for - skipping: result is not used - expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost + \___skipping: result is not used + |__expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - result: Received: from CALLER by mail.test.ex with local (Exim x.yz) + \_____result: Received: from CALLER by mail.test.ex with local (Exim x.yz) (envelope-from ) id 10HmaX-0005vi-00 >>Generated Received: header line @@ -140,9 +152,9 @@ P Received: from CALLER by mail.test.ex with local (Exim x.yz) id 10HmaX-0005vi-00; Tue, 2 Mar 1999 09:44:33 +0000 calling local_scan(); timeout=300 local_scan() returned 0 NULL -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 + /considering: ${tod_full} + |__expanding: ${tod_full} + \_____result: Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.pppp DSN: Write SPOOL :-dsn_envid NULL DSN: Write SPOOL :-dsn_ret 0 @@ -271,9 +283,9 @@ local_part=rd+usery domain=test.ex stripped prefix rd+ checking local_parts usery in "usery"? yes (matched "usery") -considering: /non-exist/$domain - expanding: /non-exist/$domain - result: /non-exist/test.ex + /considering: /non-exist/$domain + |__expanding: /non-exist/$domain + \_____result: /non-exist/test.ex calling r5 router rda_interpret (string): TESTSUITE/test-mail/junk expanded: TESTSUITE/test-mail/junk @@ -310,9 +322,9 @@ local_part=rd+CALLER domain=test.ex stripped prefix rd+ checking local_parts CALLER in "CALLER"? yes (matched "CALLER") -considering: /non-exist/$local_part - expanding: /non-exist/$local_part - result: /non-exist/CALLER + /considering: /non-exist/$local_part + |__expanding: /non-exist/$local_part + \_____result: /non-exist/CALLER calling r4 router rda_interpret (string): TESTSUITE/test-mail/junk expanded: TESTSUITE/test-mail/junk @@ -343,9 +355,9 @@ r2 router skipped: local_parts mismatch local_part=userz domain=test.ex checking local_parts userz in "userz"? yes (matched "userz") -considering: /non-exist/$domain - expanding: /non-exist/$domain - result: /non-exist/test.ex + /considering: /non-exist/$domain + |__expanding: /non-exist/$domain + \_____result: /non-exist/test.ex calling r3 router r3 router called for userz@test.ex domain = test.ex @@ -368,9 +380,9 @@ r1 router skipped: local_parts mismatch local_part=usery domain=test.ex checking local_parts usery in "usery"? yes (matched "usery") -considering: /non-exist/$domain - expanding: /non-exist/$domain - result: /non-exist/test.ex + /considering: /non-exist/$domain + |__expanding: /non-exist/$domain + \_____result: /non-exist/test.ex calling r2 router r2 router called for usery@test.ex domain = test.ex @@ -388,9 +400,9 @@ routing CALLER@test.ex local_part=CALLER domain=test.ex checking local_parts CALLER in "CALLER"? yes (matched "CALLER") -considering: /non-exist/$local_part - expanding: /non-exist/$local_part - result: /non-exist/CALLER + /considering: /non-exist/$local_part + |__expanding: /non-exist/$local_part + \_____result: /non-exist/CALLER calling r1 router r1 router called for CALLER@test.ex domain = test.ex @@ -434,18 +446,18 @@ locked TESTSUITE/spool/db/retry.lockfile EXIM_DBOPEN(TESTSUITE/spool/db/retry) returned from EXIM_DBOPEN no retry data available -considering: /non-exist/$local_part - expanding: /non-exist/$local_part - result: /non-exist/usery + /considering: /non-exist/$local_part + |__expanding: /non-exist/$local_part + \_____result: /non-exist/usery search_tidyup called changed uid/gid: local delivery to TESTSUITE/test-mail/junk transport=ft1 uid=CALLER_UID gid=CALLER_GID pid=pppp home=/non-exist/usery current=/ set_process_info: pppp delivering 10HmaX-0005vi-00 to TESTSUITE/test-mail/junk using ft1 appendfile transport entered -considering: $address_file - expanding: $address_file - result: TESTSUITE/test-mail/junk + /considering: $address_file + |__expanding: $address_file + \_____result: TESTSUITE/test-mail/junk appendfile: mode=600 notify_comsat=0 quota=0 warning=0 file=TESTSUITE/test-mail/junk format=unix message_prefix=From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox}\n @@ -457,22 +469,22 @@ hitch name: TESTSUITE/test-mail/junk.lock.test.ex.dddddddd.pppppppp lock file created mailbox TESTSUITE/test-mail/junk is locked writing to file TESTSUITE/test-mail/junk -considering: From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox} + /considering: From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox} - condition: def:return_path - result: true -considering: $return_path}{MAILER-DAEMON}} ${tod_bsdinbox} + |__condition: def:return_path + |_____result: true + /considering: $return_path}{MAILER-DAEMON}} ${tod_bsdinbox} - expanding: $return_path - result: CALLER@test.ex - scanning: MAILER-DAEMON}} ${tod_bsdinbox} + |__expanding: $return_path + \_____result: CALLER@test.ex + / scanning: MAILER-DAEMON}} ${tod_bsdinbox} - expanding: MAILER-DAEMON - result: MAILER-DAEMON - skipping: result is not used - expanding: From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox} + |__expanding: MAILER-DAEMON + |_____result: MAILER-DAEMON + \___skipping: result is not used + |__expanding: From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox} - result: From CALLER@test.ex Tue Mar 02 09:44:33 1999 + \_____result: From CALLER@test.ex Tue Mar 02 09:44:33 1999 writing data block fd=dddd size=sss timeout=0 writing data block fd=dddd size=sss timeout=0 @@ -498,9 +510,9 @@ changed uid/gid: local delivery to TESTSUITE/test-mail/junk transport=t1 uid=CALLER_UID gid=CALLER_GID pid=pppp @@ -600,9 +612,9 @@ locked TESTSUITE/spool/db/retry.lockfile EXIM_DBOPEN(TESTSUITE/spool/db/retry) returned from EXIM_DBOPEN no retry data available -considering: /$local_part - expanding: /$local_part - result: /userz + /considering: /$local_part + |__expanding: /$local_part + \_____result: /userz search_tidyup called changed uid/gid: local delivery to userz transport=t2 uid=CALLER_UID gid=CALLER_GID pid=pppp diff --git a/test/stderr/0537 b/test/stderr/0537 index c5a8b3e54..b9e20d3e8 100644 --- a/test/stderr/0537 +++ b/test/stderr/0537 @@ -9,38 +9,38 @@ >>> using ACL "connect" >>> processing "accept" >>> check acl = log ->>> using ACL "log" ->>> processing "accept" ->>> check logwrite = =========================================================== + >>> using ACL "log" + >>> processing "accept" + >>> check logwrite = =========================================================== LOG: =========================================================== ->>> check logwrite = sender_ip_address=[$sender_host_address] + >>> check logwrite = sender_ip_address=[$sender_host_address] >>> = sender_ip_address=[1.2.3.4] LOG: sender_ip_address=[1.2.3.4] ->>> check logwrite = sender_host_authenticated=$sender_host_authenticated + >>> check logwrite = sender_host_authenticated=$sender_host_authenticated >>> = sender_host_authenticated= LOG: sender_host_authenticated= ->>> check logwrite = authenticated_id=$authenticated_id + >>> check logwrite = authenticated_id=$authenticated_id >>> = authenticated_id= LOG: authenticated_id= ->>> check logwrite = authenticated_sender=$authenticated_sender + >>> check logwrite = authenticated_sender=$authenticated_sender >>> = authenticated_sender= LOG: authenticated_sender= ->>> check logwrite = interface_address=[$interface_address] + >>> check logwrite = interface_address=[$interface_address] >>> = interface_address=[] LOG: interface_address=[] ->>> check logwrite = received_protocol=$received_protocol + >>> check logwrite = received_protocol=$received_protocol >>> = received_protocol=smtp LOG: received_protocol=smtp >>> looking up host name for 1.2.3.4 LOG: no host name found for IP address 1.2.3.4 ->>> check logwrite = sender_host_name=$sender_host_name + >>> check logwrite = sender_host_name=$sender_host_name >>> = sender_host_name= LOG: sender_host_name= ->>> check logwrite = sender_ident=$sender_ident + >>> check logwrite = sender_ident=$sender_ident >>> = sender_ident= LOG: sender_ident= ->>> accept: condition test succeeded in ACL "log" ->>> end of ACL "log": ACCEPT + >>> accept: condition test succeeded in ACL "log" + >>> end of ACL "log": ACCEPT >>> accept: condition test succeeded in ACL "connect" >>> end of ACL "connect": ACCEPT >>> host in hosts_connection_nolog? no (option unset) @@ -54,36 +54,36 @@ LOG: sender_ident= >>> using ACL "connect" >>> processing "accept" >>> check acl = log ->>> using ACL "log" ->>> processing "accept" ->>> check logwrite = =========================================================== + >>> using ACL "log" + >>> processing "accept" + >>> check logwrite = =========================================================== LOG: =========================================================== ->>> check logwrite = sender_ip_address=[$sender_host_address] + >>> check logwrite = sender_ip_address=[$sender_host_address] >>> = sender_ip_address=[5.6.7.8] LOG: sender_ip_address=[5.6.7.8] ->>> check logwrite = sender_host_authenticated=$sender_host_authenticated + >>> check logwrite = sender_host_authenticated=$sender_host_authenticated >>> = sender_host_authenticated=authname LOG: sender_host_authenticated=authname ->>> check logwrite = authenticated_id=$authenticated_id + >>> check logwrite = authenticated_id=$authenticated_id >>> = authenticated_id=authid LOG: authenticated_id=authid ->>> check logwrite = authenticated_sender=$authenticated_sender + >>> check logwrite = authenticated_sender=$authenticated_sender >>> = authenticated_sender=authsender LOG: authenticated_sender=authsender ->>> check logwrite = interface_address=[$interface_address] + >>> check logwrite = interface_address=[$interface_address] >>> = interface_address=[9.10.11.12] LOG: interface_address=[9.10.11.12] ->>> check logwrite = received_protocol=$received_protocol + >>> check logwrite = received_protocol=$received_protocol >>> = received_protocol=smtp LOG: received_protocol=smtp ->>> check logwrite = sender_host_name=$sender_host_name + >>> check logwrite = sender_host_name=$sender_host_name >>> = sender_host_name=hostname LOG: sender_host_name=hostname ->>> check logwrite = sender_ident=$sender_ident + >>> check logwrite = sender_ident=$sender_ident >>> = sender_ident=ident LOG: sender_ident=ident ->>> accept: condition test succeeded in ACL "log" ->>> end of ACL "log": ACCEPT + >>> accept: condition test succeeded in ACL "log" + >>> end of ACL "log": ACCEPT >>> accept: condition test succeeded in ACL "connect" >>> end of ACL "connect": ACCEPT >>> host in dsn_advertise_hosts? no (option unset) @@ -92,88 +92,88 @@ LOG: sender_ident=ident >>> using ACL "mail" >>> processing "accept" >>> check acl = log ->>> using ACL "log" ->>> processing "accept" ->>> check logwrite = =========================================================== + >>> using ACL "log" + >>> processing "accept" + >>> check logwrite = =========================================================== LOG: =========================================================== ->>> check logwrite = sender_ip_address=[$sender_host_address] + >>> check logwrite = sender_ip_address=[$sender_host_address] >>> = sender_ip_address=[5.6.7.8] LOG: sender_ip_address=[5.6.7.8] ->>> check logwrite = sender_host_authenticated=$sender_host_authenticated + >>> check logwrite = sender_host_authenticated=$sender_host_authenticated >>> = sender_host_authenticated=authname LOG: sender_host_authenticated=authname ->>> check logwrite = authenticated_id=$authenticated_id + >>> check logwrite = authenticated_id=$authenticated_id >>> = authenticated_id=authid LOG: authenticated_id=authid ->>> check logwrite = authenticated_sender=$authenticated_sender + >>> check logwrite = authenticated_sender=$authenticated_sender >>> = authenticated_sender= LOG: authenticated_sender= ->>> check logwrite = interface_address=[$interface_address] + >>> check logwrite = interface_address=[$interface_address] >>> = interface_address=[9.10.11.12] LOG: interface_address=[9.10.11.12] ->>> check logwrite = received_protocol=$received_protocol + >>> check logwrite = received_protocol=$received_protocol >>> = received_protocol=esmtpa LOG: received_protocol=esmtpa ->>> check logwrite = sender_host_name=$sender_host_name + >>> check logwrite = sender_host_name=$sender_host_name >>> = sender_host_name=hostname LOG: sender_host_name=hostname ->>> check logwrite = sender_ident=$sender_ident + >>> check logwrite = sender_ident=$sender_ident >>> = sender_ident=ident LOG: sender_ident=ident ->>> accept: condition test succeeded in ACL "log" ->>> end of ACL "log": ACCEPT + >>> accept: condition test succeeded in ACL "log" + >>> end of ACL "log": ACCEPT >>> check acl = auth ->>> using ACL "auth" ->>> processing "accept" ->>> check authenticated = * + >>> using ACL "auth" + >>> processing "accept" + >>> check authenticated = * >>> authname in "*"? yes (matched "*") ->>> check logwrite = +++ host is authenticated +++ + >>> check logwrite = +++ host is authenticated +++ LOG: +++ host is authenticated +++ ->>> accept: condition test succeeded in ACL "auth" ->>> end of ACL "auth": ACCEPT + >>> accept: condition test succeeded in ACL "auth" + >>> end of ACL "auth": ACCEPT >>> accept: condition test succeeded in ACL "mail" >>> end of ACL "mail": ACCEPT >>> using ACL "mail" >>> processing "accept" >>> check acl = log ->>> using ACL "log" ->>> processing "accept" ->>> check logwrite = =========================================================== + >>> using ACL "log" + >>> processing "accept" + >>> check logwrite = =========================================================== LOG: =========================================================== ->>> check logwrite = sender_ip_address=[$sender_host_address] + >>> check logwrite = sender_ip_address=[$sender_host_address] >>> = sender_ip_address=[5.6.7.8] LOG: sender_ip_address=[5.6.7.8] ->>> check logwrite = sender_host_authenticated=$sender_host_authenticated + >>> check logwrite = sender_host_authenticated=$sender_host_authenticated >>> = sender_host_authenticated=authname LOG: sender_host_authenticated=authname ->>> check logwrite = authenticated_id=$authenticated_id + >>> check logwrite = authenticated_id=$authenticated_id >>> = authenticated_id=authid LOG: authenticated_id=authid ->>> check logwrite = authenticated_sender=$authenticated_sender + >>> check logwrite = authenticated_sender=$authenticated_sender >>> = authenticated_sender= LOG: authenticated_sender= ->>> check logwrite = interface_address=[$interface_address] + >>> check logwrite = interface_address=[$interface_address] >>> = interface_address=[9.10.11.12] LOG: interface_address=[9.10.11.12] ->>> check logwrite = received_protocol=$received_protocol + >>> check logwrite = received_protocol=$received_protocol >>> = received_protocol=esmtpa LOG: received_protocol=esmtpa ->>> check logwrite = sender_host_name=$sender_host_name + >>> check logwrite = sender_host_name=$sender_host_name >>> = sender_host_name=hostname LOG: sender_host_name=hostname ->>> check logwrite = sender_ident=$sender_ident + >>> check logwrite = sender_ident=$sender_ident >>> = sender_ident=ident LOG: sender_ident=ident ->>> accept: condition test succeeded in ACL "log" ->>> end of ACL "log": ACCEPT + >>> accept: condition test succeeded in ACL "log" + >>> end of ACL "log": ACCEPT >>> check acl = auth ->>> using ACL "auth" ->>> processing "accept" ->>> check authenticated = * + >>> using ACL "auth" + >>> processing "accept" + >>> check authenticated = * >>> authname in "*"? yes (matched "*") ->>> check logwrite = +++ host is authenticated +++ + >>> check logwrite = +++ host is authenticated +++ LOG: +++ host is authenticated +++ ->>> accept: condition test succeeded in ACL "auth" ->>> end of ACL "auth": ACCEPT + >>> accept: condition test succeeded in ACL "auth" + >>> end of ACL "auth": ACCEPT >>> accept: condition test succeeded in ACL "mail" >>> end of ACL "mail": ACCEPT diff --git a/test/stderr/0544 b/test/stderr/0544 index edbfb61f7..00ffeb85b 100644 --- a/test/stderr/0544 +++ b/test/stderr/0544 @@ -1,102 +1,114 @@ Exim version x.yz .... configuration file is TESTSUITE/test-config admin user -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 -considering: Received: ${if def:sender_rcvhost {from $sender_rcvhost + /considering: ${tod_full} + |__expanding: ${tod_full} + \_____result: Tue, 2 Mar 1999 09:44:33 +0000 + /considering: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - condition: def:sender_rcvhost - result: false - scanning: from $sender_rcvhost + |__condition: def:sender_rcvhost + |_____result: false + / scanning: from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: from $sender_rcvhost + |__expanding: from $sender_rcvhost - result: from + |_____result: from - skipping: result is not used -considering: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + \___skipping: result is not used + /considering: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - condition: def:sender_ident - result: true -considering: from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + |__condition: def:sender_ident + |_____result: true + /considering: from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} -considering: $sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + ./considering: $sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: $sender_ident - result: CALLER - expanding: from ${quote_local_part:$sender_ident} - result: from CALLER - condition: def:sender_helo_name - result: false - scanning: (helo=$sender_helo_name) + .|__expanding: $sender_ident + .\_____result: CALLER + |__expanding: from ${quote_local_part:$sender_ident} + \_____result: from CALLER + |__condition: def:sender_helo_name + |_____result: false + / scanning: (helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: (helo=$sender_helo_name) + |__expanding: (helo=$sender_helo_name) - result: (helo=) + |_____result: (helo=) - skipping: result is not used - expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + \___skipping: result is not used + |__expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }} - result: from CALLER - condition: def:received_protocol - result: true -considering: with $received_protocol}} (Exim $version_number) + \_____result: from CALLER + |__condition: def:received_protocol + |_____result: true + /considering: with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: with $received_protocol - result: with local - condition: def:sender_address - result: true -considering: (envelope-from <$sender_address>) + |__expanding: with $received_protocol + \_____result: with local + |__condition: def:tls_cipher + |_____result: false + / scanning: ($tls_cipher) + }}(Exim $version_number) + ${if def:sender_address {(envelope-from <$sender_address>) + }}id $message_exim_id${if def:received_for { + for $received_for}} + |__expanding: ($tls_cipher) + + |_____result: () + + \___skipping: result is not used + |__condition: def:sender_address + |_____result: true + /considering: (envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: (envelope-from <$sender_address>) + |__expanding: (envelope-from <$sender_address>) - result: (envelope-from ) + \_____result: (envelope-from ) - condition: def:received_for - result: false - scanning: + |__condition: def:received_for + |_____result: false + / scanning: for $received_for}} - expanding: + |__expanding: for $received_for - result: + |_____result: for - skipping: result is not used - expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost + \___skipping: result is not used + |__expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - result: Received: from CALLER by the.local.host.name with local (Exim x.yz) + \_____result: Received: from CALLER by the.local.host.name with local (Exim x.yz) (envelope-from ) id 10HmaX-0005vi-00 -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 + /considering: ${tod_full} + |__expanding: ${tod_full} + \_____result: Tue, 2 Mar 1999 09:44:33 +0000 LOG: MAIN <= CALLER@test.ex U=CALLER P=local S=sss created log directory TESTSUITE/spool/log @@ -104,43 +116,43 @@ Exim version x.yz .... configuration file is TESTSUITE/test-config trusted user admin user -considering: $domain - expanding: $domain - result: domain1.ex + /considering: $domain + |__expanding: $domain + \_____result: domain1.ex LOG: MAIN == userx@domain1.ex R=smarthost T=smtp defer (-1): domain matches queue_smtp_domains, or -odqs set LOG: MAIN == userx@domain2.ex R=smarthost T=smtp defer (-1): domain matches queue_smtp_domains, or -odqs set -considering: ${if or {{ !eq{$h_list-id:$h_list-post:$h_list-subscribe:}{} }{ match{$h_precedence:}{(?i)bulk|list|junk} }{ match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} }} {no}{yes}} -considering: $h_list-id:$h_list-post:$h_list-subscribe:}{} }{ match{$h_precedence:}{(?i)bulk|list|junk} }{ match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} }} {no}{yes}} - expanding: $h_list-id:$h_list-post:$h_list-subscribe: - result: -considering: } }{ match{$h_precedence:}{(?i)bulk|list|junk} }{ match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} }} {no}{yes}} - expanding: - result: -considering: $h_precedence:}{(?i)bulk|list|junk} }{ match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} }} {no}{yes}} - expanding: $h_precedence: - result: -considering: (?i)bulk|list|junk} }{ match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} }} {no}{yes}} - expanding: (?i)bulk|list|junk - result: (?i)bulk|list|junk -considering: $h_auto-submitted:}{(?i)auto-generated|auto-replied} }} {no}{yes}} - expanding: $h_auto-submitted: - result: -considering: (?i)auto-generated|auto-replied} }} {no}{yes}} - expanding: (?i)auto-generated|auto-replied - result: (?i)auto-generated|auto-replied - condition: or {{ !eq{$h_list-id:$h_list-post:$h_list-subscribe:}{} }{ match{$h_precedence:}{(?i)bulk|list|junk} }{ match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} }} - result: false - scanning: no}{yes}} - expanding: no - result: no - skipping: result is not used -considering: yes}} - expanding: yes - result: yes - expanding: ${if or {{ !eq{$h_list-id:$h_list-post:$h_list-subscribe:}{} }{ match{$h_precedence:}{(?i)bulk|list|junk} }{ match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} }} {no}{yes}} - result: yes + /considering: ${if or {{ !eq{$h_list-id:$h_list-post:$h_list-subscribe:}{} }{ match{$h_precedence:}{(?i)bulk|list|junk} }{ match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} }} {no}{yes}} + /considering: $h_list-id:$h_list-post:$h_list-subscribe:}{} }{ match{$h_precedence:}{(?i)bulk|list|junk} }{ match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} }} {no}{yes}} + |__expanding: $h_list-id:$h_list-post:$h_list-subscribe: + \_____result: + /considering: } }{ match{$h_precedence:}{(?i)bulk|list|junk} }{ match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} }} {no}{yes}} + |__expanding: + \_____result: + /considering: $h_precedence:}{(?i)bulk|list|junk} }{ match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} }} {no}{yes}} + |__expanding: $h_precedence: + \_____result: + /considering: (?i)bulk|list|junk} }{ match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} }} {no}{yes}} + |__expanding: (?i)bulk|list|junk + \_____result: (?i)bulk|list|junk + /considering: $h_auto-submitted:}{(?i)auto-generated|auto-replied} }} {no}{yes}} + |__expanding: $h_auto-submitted: + \_____result: + /considering: (?i)auto-generated|auto-replied} }} {no}{yes}} + |__expanding: (?i)auto-generated|auto-replied + \_____result: (?i)auto-generated|auto-replied + |__condition: or {{ !eq{$h_list-id:$h_list-post:$h_list-subscribe:}{} }{ match{$h_precedence:}{(?i)bulk|list|junk} }{ match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} }} + |_____result: false + / scanning: no}{yes}} + |__expanding: no + |_____result: no + \___skipping: result is not used + /considering: yes}} + |__expanding: yes + \_____result: yes + |__expanding: ${if or {{ !eq{$h_list-id:$h_list-post:$h_list-subscribe:}{} }{ match{$h_precedence:}{(?i)bulk|list|junk} }{ match{$h_auto-submitted:}{(?i)auto-generated|auto-replied} }} {no}{yes}} + \_____result: yes >>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>> Exim version x.yz .... @@ -148,32 +160,32 @@ configuration file is TESTSUITE/test-config admin user LOG: smtp_connection MAIN SMTP connection from CALLER -considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full - expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full - result: the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 -considering: ${if match_domain {$sender_helo_name}{+dlist}} -considering: $sender_helo_name}{+dlist}} - expanding: $sender_helo_name - result: ehlo.domain -considering: +dlist}} - expanding: +dlist - result: +dlist -considering: $domain - expanding: $domain - result: ehlo.domain - condition: match_domain {$sender_helo_name}{+dlist} - result: true - expanding: ${if match_domain {$sender_helo_name}{+dlist}} - result: true -considering: domain=$domain/sender_domain=$sender_address_domain - expanding: domain=$domain/sender_domain=$sender_address_domain - result: domain=/sender_domain=sender.domain -considering: domain=$domain/sender_domain=$sender_address_domain - expanding: domain=$domain/sender_domain=$sender_address_domain - result: domain=recipient.domain/sender_domain=sender.domain -considering: domain=$domain/sender_domain=$sender_address_domain - expanding: domain=$domain/sender_domain=$sender_address_domain - result: domain=recipient.domain/sender_domain=sender.domain + /considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full + |__expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full + \_____result: the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 + /considering: ${if match_domain {$sender_helo_name}{+dlist}} + /considering: $sender_helo_name}{+dlist}} + |__expanding: $sender_helo_name + \_____result: ehlo.domain + /considering: +dlist}} + |__expanding: +dlist + \_____result: +dlist + /considering: $domain + |__expanding: $domain + \_____result: ehlo.domain + |__condition: match_domain {$sender_helo_name}{+dlist} + |_____result: true + |__expanding: ${if match_domain {$sender_helo_name}{+dlist}} + \_____result: true + /considering: domain=$domain/sender_domain=$sender_address_domain + |__expanding: domain=$domain/sender_domain=$sender_address_domain + \_____result: domain=/sender_domain=sender.domain + /considering: domain=$domain/sender_domain=$sender_address_domain + |__expanding: domain=$domain/sender_domain=$sender_address_domain + \_____result: domain=recipient.domain/sender_domain=sender.domain + /considering: domain=$domain/sender_domain=$sender_address_domain + |__expanding: domain=$domain/sender_domain=$sender_address_domain + \_____result: domain=recipient.domain/sender_domain=sender.domain LOG: smtp_connection MAIN SMTP connection from CALLER closed by QUIT >>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>> diff --git a/test/stderr/3000 b/test/stderr/3000 index 6aea66ac5..b77ca8923 100644 --- a/test/stderr/3000 +++ b/test/stderr/3000 @@ -2,45 +2,45 @@ Exim version x.yz .... configuration file is TESTSUITE/test-config admin user -considering: ${perl{foo}{arg1}} -considering: foo}{arg1}} - expanding: foo - result: foo -considering: arg1}} - expanding: arg1 - result: arg1 + /considering: ${perl{foo}{arg1}} + /considering: foo}{arg1}} + |__expanding: foo + \_____result: foo + /considering: arg1}} + |__expanding: arg1 + \_____result: arg1 Starting Perl interpreter - expanding: ${perl{foo}{arg1}} - result: Subroutine foo called with args: arg1 -considering: ${perl{foo_undef}} -considering: foo_undef}} - expanding: foo_undef - result: foo_undef -failed to expand: ${perl{foo_undef}} - error message: Perl subroutine "foo_undef" returned undef to force failure -failure was forced -considering: ${perl{debug_write}{debug from Perl\n}} -considering: debug_write}{debug from Perl\n}} - expanding: debug_write - result: debug_write -considering: debug from Perl\n}} - expanding: debug from Perl\n - result: debug from Perl + |__expanding: ${perl{foo}{arg1}} + \_____result: Subroutine foo called with args: arg1 + /considering: ${perl{foo_undef}} + /considering: foo_undef}} + |__expanding: foo_undef + \_____result: foo_undef + |failed to expand: ${perl{foo_undef}} + |___error message: Perl subroutine "foo_undef" returned undef to force failure + \failure was forced + /considering: ${perl{debug_write}{debug from Perl\n}} + /considering: debug_write}{debug from Perl\n}} + |__expanding: debug_write + \_____result: debug_write + /considering: debug from Perl\n}} + |__expanding: debug from Perl\n + \_____result: debug from Perl debug from Perl - expanding: ${perl{debug_write}{debug from Perl\n}} - result: Wrote debug -considering: ${perl{log_write}{log from Perl}} -considering: log_write}{log from Perl}} - expanding: log_write - result: log_write -considering: log from Perl}} - expanding: log from Perl - result: log from Perl + |__expanding: ${perl{debug_write}{debug from Perl\n}} + \_____result: Wrote debug + /considering: ${perl{log_write}{log from Perl}} + /considering: log_write}{log from Perl}} + |__expanding: log_write + \_____result: log_write + /considering: log from Perl}} + |__expanding: log from Perl + \_____result: log from Perl LOG: MAIN log from Perl - expanding: ${perl{log_write}{log from Perl}} - result: Wrote log + |__expanding: ${perl{log_write}{log from Perl}} + \_____result: Wrote log >>>>>>>>>>>>>>>> Exim pid=pppp terminating with rc=0 >>>>>>>>>>>>>>>> LOG: smtp_connection MAIN SMTP connection from CALLER diff --git a/test/stderr/5410 b/test/stderr/5410 index acfc011cc..6c1f10e39 100644 --- a/test/stderr/5410 +++ b/test/stderr/5410 @@ -4,40 +4,40 @@ admin user in hosts_connection_nolog? no (option unset) LOG: smtp_connection MAIN SMTP connection from CALLER -considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full - expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full - result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 + /considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full + |__expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full + \_____result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 in dsn_advertise_hosts? no (option unset) in pipelining_advertise_hosts? yes (matched "*") in chunking_advertise_hosts? no (end of list) in tls_advertise_hosts? yes (matched "*") -considering: ${if eq {SERVER}{server}{queue}{cutthrough}} -considering: SERVER}{server}{queue}{cutthrough}} - expanding: SERVER - result: SERVER -considering: server}{queue}{cutthrough}} - expanding: server - result: server - condition: eq {SERVER}{server} - result: false - scanning: queue}{cutthrough}} - expanding: queue - result: queue - skipping: result is not used -considering: cutthrough}} - expanding: cutthrough - result: cutthrough - expanding: ${if eq {SERVER}{server}{queue}{cutthrough}} - result: cutthrough + /considering: ${if eq {SERVER}{server}{queue}{cutthrough}} + /considering: SERVER}{server}{queue}{cutthrough}} + |__expanding: SERVER + \_____result: SERVER + /considering: server}{queue}{cutthrough}} + |__expanding: server + \_____result: server + |__condition: eq {SERVER}{server} + |_____result: false + / scanning: queue}{cutthrough}} + |__expanding: queue + |_____result: queue + \___skipping: result is not used + /considering: cutthrough}} + |__expanding: cutthrough + \_____result: cutthrough + |__expanding: ${if eq {SERVER}{server}{queue}{cutthrough}} + \_____result: cutthrough using ACL "cutthrough" processing "accept" check control = cutthrough_delivery check verify = recipient domain.com in "test.ex : *.test.ex"? no (end of list) domain.com in "! +local_domains"? yes (end of list) -considering: $local_part - expanding: $local_part - result: userx + /considering: $local_part + |__expanding: $local_part + \_____result: userx domain.com in "*"? yes (matched "*") ----------- end verify ------------ accept: condition test succeeded in ACL "cutthrough" @@ -45,14 +45,14 @@ end of ACL "cutthrough": ACCEPT ----------- start cutthrough setup ------------ domain.com in "test.ex : *.test.ex"? no (end of list) domain.com in "! +local_domains"? yes (end of list) -considering: $local_part - expanding: $local_part - result: userx + /considering: $local_part + |__expanding: $local_part + \_____result: userx domain.com in "*"? yes (matched "*") Connecting to 127.0.0.1 [127.0.0.1]:1225 from ip4.ip4.ip4.ip4 ... connected -considering: $primary_hostname - expanding: $primary_hostname - result: myhost.test.ex + /considering: $primary_hostname + |__expanding: $primary_hostname + \_____result: myhost.test.ex SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 127.0.0.1 in hosts_avoid_esmtp? no (option unset) SMTP>> EHLO myhost.test.ex @@ -63,43 +63,43 @@ cmd buf flush ddd bytes 250-PIPELINING 250-STARTTLS 250 HELP -considering: ${if eq {$address_data}{usery}{*}{:}} -considering: $address_data}{usery}{*}{:}} - expanding: $address_data - result: userx -considering: usery}{*}{:}} - expanding: usery - result: usery - condition: eq {$address_data}{usery} - result: false - scanning: *}{:}} - expanding: * - result: * - skipping: result is not used -considering: :}} - expanding: : - result: : - expanding: ${if eq {$address_data}{usery}{*}{:}} - result: : + /considering: ${if eq {$address_data}{usery}{*}{:}} + /considering: $address_data}{usery}{*}{:}} + |__expanding: $address_data + \_____result: userx + /considering: usery}{*}{:}} + |__expanding: usery + \_____result: usery + |__condition: eq {$address_data}{usery} + |_____result: false + / scanning: *}{:}} + |__expanding: * + |_____result: * + \___skipping: result is not used + /considering: :}} + |__expanding: : + \_____result: : + |__expanding: ${if eq {$address_data}{usery}{*}{:}} + \_____result: : 127.0.0.1 in hosts_avoid_tls? no (end of list) -considering: ${if eq {$address_data}{userz}{*}{:}} -considering: $address_data}{userz}{*}{:}} - expanding: $address_data - result: userx -considering: userz}{*}{:}} - expanding: userz - result: userz - condition: eq {$address_data}{userz} - result: false - scanning: *}{:}} - expanding: * - result: * - skipping: result is not used -considering: :}} - expanding: : - result: : - expanding: ${if eq {$address_data}{userz}{*}{:}} - result: : + /considering: ${if eq {$address_data}{userz}{*}{:}} + /considering: $address_data}{userz}{*}{:}} + |__expanding: $address_data + \_____result: userx + /considering: userz}{*}{:}} + |__expanding: userz + \_____result: userz + |__condition: eq {$address_data}{userz} + |_____result: false + / scanning: *}{:}} + |__expanding: * + |_____result: * + \___skipping: result is not used + /considering: :}} + |__expanding: : + \_____result: : + |__expanding: ${if eq {$address_data}{userz}{*}{:}} + \_____result: : 127.0.0.1 in hosts_verify_avoid_tls? no (end of list) SMTP>> STARTTLS cmd buf flush ddd bytes @@ -131,105 +131,117 @@ accept: condition test succeeded in inline ACL end of inline ACL: ACCEPT SMTP>> DATA SMTP<< 354 Enter message, ending with "." on a line by itself -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 -considering: Received: ${if def:sender_rcvhost {from $sender_rcvhost + /considering: ${tod_full} + |__expanding: ${tod_full} + \_____result: Tue, 2 Mar 1999 09:44:33 +0000 + /considering: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - condition: def:sender_rcvhost - result: false - scanning: from $sender_rcvhost + |__condition: def:sender_rcvhost + |_____result: false + / scanning: from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: from $sender_rcvhost + |__expanding: from $sender_rcvhost - result: from + |_____result: from - skipping: result is not used -considering: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + \___skipping: result is not used + /considering: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - condition: def:sender_ident - result: true -considering: from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + |__condition: def:sender_ident + |_____result: true + /considering: from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} -considering: $sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + ./considering: $sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: $sender_ident - result: CALLER - expanding: from ${quote_local_part:$sender_ident} - result: from CALLER - condition: def:sender_helo_name - result: true -considering: (helo=$sender_helo_name) + .|__expanding: $sender_ident + .\_____result: CALLER + |__expanding: from ${quote_local_part:$sender_ident} + \_____result: from CALLER + |__condition: def:sender_helo_name + |_____result: true + /considering: (helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: (helo=$sender_helo_name) + |__expanding: (helo=$sender_helo_name) - result: (helo=myhost.test.ex) + \_____result: (helo=myhost.test.ex) - expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + |__expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }} - result: from CALLER (helo=myhost.test.ex) + \_____result: from CALLER (helo=myhost.test.ex) - condition: def:received_protocol - result: true -considering: with $received_protocol}} (Exim $version_number) + |__condition: def:received_protocol + |_____result: true + /considering: with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: with $received_protocol - result: with local-esmtp - condition: def:sender_address - result: true -considering: (envelope-from <$sender_address>) + |__expanding: with $received_protocol + \_____result: with local-esmtp + |__condition: def:tls_cipher + |_____result: false + / scanning: ($tls_cipher) + }}(Exim $version_number) + ${if def:sender_address {(envelope-from <$sender_address>) + }}id $message_exim_id${if def:received_for { + for $received_for}} + |__expanding: ($tls_cipher) + + |_____result: () + + \___skipping: result is not used + |__condition: def:sender_address + |_____result: true + /considering: (envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: (envelope-from <$sender_address>) + |__expanding: (envelope-from <$sender_address>) - result: (envelope-from ) + \_____result: (envelope-from ) - condition: def:received_for - result: true -considering: + |__condition: def:received_for + |_____result: true + /considering: for $received_for}} - expanding: + |__expanding: for $received_for - result: + \_____result: for userx@domain.com - expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost + |__expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - result: Received: from CALLER (helo=myhost.test.ex) + \_____result: Received: from CALLER (helo=myhost.test.ex) by myhost.test.ex with local-esmtp (Exim x.yz) (envelope-from ) id 10HmaX-0005vi-00 for userx@domain.com ----------- start cutthrough headers send ----------- ----------- done cutthrough headers send ------------ -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 + /considering: ${tod_full} + |__expanding: ${tod_full} + \_____result: Tue, 2 Mar 1999 09:44:33 +0000 SMTP>> . SMTP<< 250 OK id=10HmaY-0005vi-00 LOG: MAIN @@ -251,40 +263,40 @@ admin user in hosts_connection_nolog? no (option unset) LOG: smtp_connection MAIN SMTP connection from CALLER -considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full - expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full - result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 + /considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full + |__expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full + \_____result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 in dsn_advertise_hosts? no (option unset) in pipelining_advertise_hosts? yes (matched "*") in chunking_advertise_hosts? no (end of list) in tls_advertise_hosts? yes (matched "*") -considering: ${if eq {SERVER}{server}{queue}{cutthrough}} -considering: SERVER}{server}{queue}{cutthrough}} - expanding: SERVER - result: SERVER -considering: server}{queue}{cutthrough}} - expanding: server - result: server - condition: eq {SERVER}{server} - result: false - scanning: queue}{cutthrough}} - expanding: queue - result: queue - skipping: result is not used -considering: cutthrough}} - expanding: cutthrough - result: cutthrough - expanding: ${if eq {SERVER}{server}{queue}{cutthrough}} - result: cutthrough + /considering: ${if eq {SERVER}{server}{queue}{cutthrough}} + /considering: SERVER}{server}{queue}{cutthrough}} + |__expanding: SERVER + \_____result: SERVER + /considering: server}{queue}{cutthrough}} + |__expanding: server + \_____result: server + |__condition: eq {SERVER}{server} + |_____result: false + / scanning: queue}{cutthrough}} + |__expanding: queue + |_____result: queue + \___skipping: result is not used + /considering: cutthrough}} + |__expanding: cutthrough + \_____result: cutthrough + |__expanding: ${if eq {SERVER}{server}{queue}{cutthrough}} + \_____result: cutthrough using ACL "cutthrough" processing "accept" check control = cutthrough_delivery check verify = recipient domain.com in "test.ex : *.test.ex"? no (end of list) domain.com in "! +local_domains"? yes (end of list) -considering: $local_part - expanding: $local_part - result: usery + /considering: $local_part + |__expanding: $local_part + \_____result: usery domain.com in "*"? yes (matched "*") ----------- end verify ------------ accept: condition test succeeded in ACL "cutthrough" @@ -292,14 +304,14 @@ end of ACL "cutthrough": ACCEPT ----------- start cutthrough setup ------------ domain.com in "test.ex : *.test.ex"? no (end of list) domain.com in "! +local_domains"? yes (end of list) -considering: $local_part - expanding: $local_part - result: usery + /considering: $local_part + |__expanding: $local_part + \_____result: usery domain.com in "*"? yes (matched "*") Connecting to 127.0.0.1 [127.0.0.1]:1225 from ip4.ip4.ip4.ip4 ... connected -considering: $primary_hostname - expanding: $primary_hostname - result: myhost.test.ex + /considering: $primary_hostname + |__expanding: $primary_hostname + \_____result: myhost.test.ex SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 127.0.0.1 in hosts_avoid_esmtp? no (option unset) SMTP>> EHLO myhost.test.ex @@ -310,24 +322,24 @@ cmd buf flush ddd bytes 250-PIPELINING 250-STARTTLS 250 HELP -considering: ${if eq {$address_data}{usery}{*}{:}} -considering: $address_data}{usery}{*}{:}} - expanding: $address_data - result: usery -considering: usery}{*}{:}} - expanding: usery - result: usery - condition: eq {$address_data}{usery} - result: true -considering: *}{:}} - expanding: * - result: * - scanning: :}} - expanding: : - result: : - skipping: result is not used - expanding: ${if eq {$address_data}{usery}{*}{:}} - result: * + /considering: ${if eq {$address_data}{usery}{*}{:}} + /considering: $address_data}{usery}{*}{:}} + |__expanding: $address_data + \_____result: usery + /considering: usery}{*}{:}} + |__expanding: usery + \_____result: usery + |__condition: eq {$address_data}{usery} + |_____result: true + /considering: *}{:}} + |__expanding: * + \_____result: * + / scanning: :}} + |__expanding: : + |_____result: : + \___skipping: result is not used + |__expanding: ${if eq {$address_data}{usery}{*}{:}} + \_____result: * 127.0.0.1 in hosts_avoid_tls? yes (matched "*") 127.0.0.1 in hosts_avoid_pipelining? no (option unset) using PIPELINING @@ -345,105 +357,117 @@ accept: condition test succeeded in inline ACL end of inline ACL: ACCEPT SMTP>> DATA SMTP<< 354 Enter message, ending with "." on a line by itself -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 -considering: Received: ${if def:sender_rcvhost {from $sender_rcvhost + /considering: ${tod_full} + |__expanding: ${tod_full} + \_____result: Tue, 2 Mar 1999 09:44:33 +0000 + /considering: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - condition: def:sender_rcvhost - result: false - scanning: from $sender_rcvhost + |__condition: def:sender_rcvhost + |_____result: false + / scanning: from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: from $sender_rcvhost + |__expanding: from $sender_rcvhost - result: from + |_____result: from - skipping: result is not used -considering: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + \___skipping: result is not used + /considering: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - condition: def:sender_ident - result: true -considering: from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + |__condition: def:sender_ident + |_____result: true + /considering: from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} -considering: $sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + ./considering: $sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: $sender_ident - result: CALLER - expanding: from ${quote_local_part:$sender_ident} - result: from CALLER - condition: def:sender_helo_name - result: true -considering: (helo=$sender_helo_name) + .|__expanding: $sender_ident + .\_____result: CALLER + |__expanding: from ${quote_local_part:$sender_ident} + \_____result: from CALLER + |__condition: def:sender_helo_name + |_____result: true + /considering: (helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: (helo=$sender_helo_name) + |__expanding: (helo=$sender_helo_name) - result: (helo=myhost.test.ex) + \_____result: (helo=myhost.test.ex) - expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + |__expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }} - result: from CALLER (helo=myhost.test.ex) + \_____result: from CALLER (helo=myhost.test.ex) - condition: def:received_protocol - result: true -considering: with $received_protocol}} (Exim $version_number) + |__condition: def:received_protocol + |_____result: true + /considering: with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: with $received_protocol - result: with local-esmtp - condition: def:sender_address - result: true -considering: (envelope-from <$sender_address>) + |__expanding: with $received_protocol + \_____result: with local-esmtp + |__condition: def:tls_cipher + |_____result: false + / scanning: ($tls_cipher) + }}(Exim $version_number) + ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: (envelope-from <$sender_address>) + |__expanding: ($tls_cipher) - result: (envelope-from ) + |_____result: () - condition: def:received_for - result: true -considering: + \___skipping: result is not used + |__condition: def:sender_address + |_____result: true + /considering: (envelope-from <$sender_address>) + }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: + |__expanding: (envelope-from <$sender_address>) + + \_____result: (envelope-from ) + + |__condition: def:received_for + |_____result: true + /considering: + for $received_for}} + |__expanding: for $received_for - result: + \_____result: for usery@domain.com - expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost + |__expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - result: Received: from CALLER (helo=myhost.test.ex) + \_____result: Received: from CALLER (helo=myhost.test.ex) by myhost.test.ex with local-esmtp (Exim x.yz) (envelope-from ) id 10HmaZ-0005vi-00 for usery@domain.com ----------- start cutthrough headers send ----------- ----------- done cutthrough headers send ------------ -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 + /considering: ${tod_full} + |__expanding: ${tod_full} + \_____result: Tue, 2 Mar 1999 09:44:33 +0000 SMTP>> . SMTP<< 250 OK id=10HmbA-0005vi-00 LOG: MAIN @@ -465,40 +489,40 @@ admin user in hosts_connection_nolog? no (option unset) LOG: smtp_connection MAIN SMTP connection from CALLER -considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full - expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full - result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 + /considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full + |__expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full + \_____result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 in dsn_advertise_hosts? no (option unset) in pipelining_advertise_hosts? yes (matched "*") in chunking_advertise_hosts? no (end of list) in tls_advertise_hosts? yes (matched "*") -considering: ${if eq {SERVER}{server}{queue}{cutthrough}} -considering: SERVER}{server}{queue}{cutthrough}} - expanding: SERVER - result: SERVER -considering: server}{queue}{cutthrough}} - expanding: server - result: server - condition: eq {SERVER}{server} - result: false - scanning: queue}{cutthrough}} - expanding: queue - result: queue - skipping: result is not used -considering: cutthrough}} - expanding: cutthrough - result: cutthrough - expanding: ${if eq {SERVER}{server}{queue}{cutthrough}} - result: cutthrough + /considering: ${if eq {SERVER}{server}{queue}{cutthrough}} + /considering: SERVER}{server}{queue}{cutthrough}} + |__expanding: SERVER + \_____result: SERVER + /considering: server}{queue}{cutthrough}} + |__expanding: server + \_____result: server + |__condition: eq {SERVER}{server} + |_____result: false + / scanning: queue}{cutthrough}} + |__expanding: queue + |_____result: queue + \___skipping: result is not used + /considering: cutthrough}} + |__expanding: cutthrough + \_____result: cutthrough + |__expanding: ${if eq {SERVER}{server}{queue}{cutthrough}} + \_____result: cutthrough using ACL "cutthrough" processing "accept" check control = cutthrough_delivery check verify = recipient domain.com in "test.ex : *.test.ex"? no (end of list) domain.com in "! +local_domains"? yes (end of list) -considering: $local_part - expanding: $local_part - result: usery + /considering: $local_part + |__expanding: $local_part + \_____result: usery domain.com in "*"? yes (matched "*") ----------- end verify ------------ accept: condition test succeeded in ACL "cutthrough" @@ -506,14 +530,14 @@ end of ACL "cutthrough": ACCEPT ----------- start cutthrough setup ------------ domain.com in "test.ex : *.test.ex"? no (end of list) domain.com in "! +local_domains"? yes (end of list) -considering: $local_part - expanding: $local_part - result: usery + /considering: $local_part + |__expanding: $local_part + \_____result: usery domain.com in "*"? yes (matched "*") Connecting to 127.0.0.1 [127.0.0.1]:1225 from ip4.ip4.ip4.ip4 ... connected -considering: $primary_hostname - expanding: $primary_hostname - result: myhost.test.ex + /considering: $primary_hostname + |__expanding: $primary_hostname + \_____result: myhost.test.ex SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 127.0.0.1 in hosts_avoid_esmtp? no (option unset) SMTP>> EHLO myhost.test.ex @@ -524,24 +548,24 @@ cmd buf flush ddd bytes 250-PIPELINING 250-STARTTLS 250 HELP -considering: ${if eq {$address_data}{usery}{*}{:}} -considering: $address_data}{usery}{*}{:}} - expanding: $address_data - result: usery -considering: usery}{*}{:}} - expanding: usery - result: usery - condition: eq {$address_data}{usery} - result: true -considering: *}{:}} - expanding: * - result: * - scanning: :}} - expanding: : - result: : - skipping: result is not used - expanding: ${if eq {$address_data}{usery}{*}{:}} - result: * + /considering: ${if eq {$address_data}{usery}{*}{:}} + /considering: $address_data}{usery}{*}{:}} + |__expanding: $address_data + \_____result: usery + /considering: usery}{*}{:}} + |__expanding: usery + \_____result: usery + |__condition: eq {$address_data}{usery} + |_____result: true + /considering: *}{:}} + |__expanding: * + \_____result: * + / scanning: :}} + |__expanding: : + |_____result: : + \___skipping: result is not used + |__expanding: ${if eq {$address_data}{usery}{*}{:}} + \_____result: * 127.0.0.1 in hosts_avoid_tls? yes (matched "*") 127.0.0.1 in hosts_avoid_pipelining? no (option unset) using PIPELINING @@ -559,105 +583,117 @@ accept: condition test succeeded in inline ACL end of inline ACL: ACCEPT SMTP>> DATA SMTP<< 354 Enter message, ending with "." on a line by itself -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 -considering: Received: ${if def:sender_rcvhost {from $sender_rcvhost + /considering: ${tod_full} + |__expanding: ${tod_full} + \_____result: Tue, 2 Mar 1999 09:44:33 +0000 + /considering: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - condition: def:sender_rcvhost - result: false - scanning: from $sender_rcvhost + |__condition: def:sender_rcvhost + |_____result: false + / scanning: from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: from $sender_rcvhost + |__expanding: from $sender_rcvhost - result: from + |_____result: from - skipping: result is not used -considering: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + \___skipping: result is not used + /considering: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - condition: def:sender_ident - result: true -considering: from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + |__condition: def:sender_ident + |_____result: true + /considering: from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} -considering: $sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + ./considering: $sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: $sender_ident - result: CALLER - expanding: from ${quote_local_part:$sender_ident} - result: from CALLER - condition: def:sender_helo_name - result: true -considering: (helo=$sender_helo_name) + .|__expanding: $sender_ident + .\_____result: CALLER + |__expanding: from ${quote_local_part:$sender_ident} + \_____result: from CALLER + |__condition: def:sender_helo_name + |_____result: true + /considering: (helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: (helo=$sender_helo_name) + |__expanding: (helo=$sender_helo_name) - result: (helo=myhost.test.ex) + \_____result: (helo=myhost.test.ex) - expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + |__expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }} - result: from CALLER (helo=myhost.test.ex) + \_____result: from CALLER (helo=myhost.test.ex) - condition: def:received_protocol - result: true -considering: with $received_protocol}} (Exim $version_number) + |__condition: def:received_protocol + |_____result: true + /considering: with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: with $received_protocol - result: with local-esmtp - condition: def:sender_address - result: true -considering: (envelope-from <$sender_address>) + |__expanding: with $received_protocol + \_____result: with local-esmtp + |__condition: def:tls_cipher + |_____result: false + / scanning: ($tls_cipher) + }}(Exim $version_number) + ${if def:sender_address {(envelope-from <$sender_address>) + }}id $message_exim_id${if def:received_for { + for $received_for}} + |__expanding: ($tls_cipher) + + |_____result: () + + \___skipping: result is not used + |__condition: def:sender_address + |_____result: true + /considering: (envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: (envelope-from <$sender_address>) + |__expanding: (envelope-from <$sender_address>) - result: (envelope-from ) + \_____result: (envelope-from ) - condition: def:received_for - result: true -considering: + |__condition: def:received_for + |_____result: true + /considering: for $received_for}} - expanding: + |__expanding: for $received_for - result: + \_____result: for usery@domain.com - expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost + |__expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - result: Received: from CALLER (helo=myhost.test.ex) + \_____result: Received: from CALLER (helo=myhost.test.ex) by myhost.test.ex with local-esmtp (Exim x.yz) (envelope-from ) id 10HmbB-0005vi-00 for usery@domain.com ----------- start cutthrough headers send ----------- ----------- done cutthrough headers send ------------ -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 + /considering: ${tod_full} + |__expanding: ${tod_full} + \_____result: Tue, 2 Mar 1999 09:44:33 +0000 SMTP>> . SMTP<< 250 OK id=10HmbC-0005vi-00 LOG: MAIN diff --git a/test/stderr/5420 b/test/stderr/5420 index ff032e986..0f197afd1 100644 --- a/test/stderr/5420 +++ b/test/stderr/5420 @@ -4,40 +4,40 @@ admin user in hosts_connection_nolog? no (option unset) LOG: smtp_connection MAIN SMTP connection from CALLER -considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full - expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full - result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 + /considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full + |__expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full + \_____result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 in dsn_advertise_hosts? no (option unset) in pipelining_advertise_hosts? yes (matched "*") in chunking_advertise_hosts? no (end of list) in tls_advertise_hosts? yes (matched "*") -considering: ${if eq {SERVER}{server}{queue}{cutthrough}} -considering: SERVER}{server}{queue}{cutthrough}} - expanding: SERVER - result: SERVER -considering: server}{queue}{cutthrough}} - expanding: server - result: server - condition: eq {SERVER}{server} - result: false - scanning: queue}{cutthrough}} - expanding: queue - result: queue - skipping: result is not used -considering: cutthrough}} - expanding: cutthrough - result: cutthrough - expanding: ${if eq {SERVER}{server}{queue}{cutthrough}} - result: cutthrough + /considering: ${if eq {SERVER}{server}{queue}{cutthrough}} + /considering: SERVER}{server}{queue}{cutthrough}} + |__expanding: SERVER + \_____result: SERVER + /considering: server}{queue}{cutthrough}} + |__expanding: server + \_____result: server + |__condition: eq {SERVER}{server} + |_____result: false + / scanning: queue}{cutthrough}} + |__expanding: queue + |_____result: queue + \___skipping: result is not used + /considering: cutthrough}} + |__expanding: cutthrough + \_____result: cutthrough + |__expanding: ${if eq {SERVER}{server}{queue}{cutthrough}} + \_____result: cutthrough using ACL "cutthrough" processing "accept" check control = cutthrough_delivery check verify = recipient domain.com in "test.ex : *.test.ex"? no (end of list) domain.com in "! +local_domains"? yes (end of list) -considering: $local_part - expanding: $local_part - result: userx + /considering: $local_part + |__expanding: $local_part + \_____result: userx domain.com in "*"? yes (matched "*") ----------- end verify ------------ accept: condition test succeeded in ACL "cutthrough" @@ -45,14 +45,14 @@ end of ACL "cutthrough": ACCEPT ----------- start cutthrough setup ------------ domain.com in "test.ex : *.test.ex"? no (end of list) domain.com in "! +local_domains"? yes (end of list) -considering: $local_part - expanding: $local_part - result: userx + /considering: $local_part + |__expanding: $local_part + \_____result: userx domain.com in "*"? yes (matched "*") Connecting to 127.0.0.1 [127.0.0.1]:1225 from ip4.ip4.ip4.ip4 ... connected -considering: $primary_hostname - expanding: $primary_hostname - result: myhost.test.ex + /considering: $primary_hostname + |__expanding: $primary_hostname + \_____result: myhost.test.ex SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 127.0.0.1 in hosts_avoid_esmtp? no (option unset) SMTP>> EHLO myhost.test.ex @@ -63,43 +63,43 @@ cmd buf flush ddd bytes 250-PIPELINING 250-STARTTLS 250 HELP -considering: ${if eq {$address_data}{usery}{*}{:}} -considering: $address_data}{usery}{*}{:}} - expanding: $address_data - result: userx -considering: usery}{*}{:}} - expanding: usery - result: usery - condition: eq {$address_data}{usery} - result: false - scanning: *}{:}} - expanding: * - result: * - skipping: result is not used -considering: :}} - expanding: : - result: : - expanding: ${if eq {$address_data}{usery}{*}{:}} - result: : + /considering: ${if eq {$address_data}{usery}{*}{:}} + /considering: $address_data}{usery}{*}{:}} + |__expanding: $address_data + \_____result: userx + /considering: usery}{*}{:}} + |__expanding: usery + \_____result: usery + |__condition: eq {$address_data}{usery} + |_____result: false + / scanning: *}{:}} + |__expanding: * + |_____result: * + \___skipping: result is not used + /considering: :}} + |__expanding: : + \_____result: : + |__expanding: ${if eq {$address_data}{usery}{*}{:}} + \_____result: : 127.0.0.1 in hosts_avoid_tls? no (end of list) -considering: ${if eq {$address_data}{userz}{*}{:}} -considering: $address_data}{userz}{*}{:}} - expanding: $address_data - result: userx -considering: userz}{*}{:}} - expanding: userz - result: userz - condition: eq {$address_data}{userz} - result: false - scanning: *}{:}} - expanding: * - result: * - skipping: result is not used -considering: :}} - expanding: : - result: : - expanding: ${if eq {$address_data}{userz}{*}{:}} - result: : + /considering: ${if eq {$address_data}{userz}{*}{:}} + /considering: $address_data}{userz}{*}{:}} + |__expanding: $address_data + \_____result: userx + /considering: userz}{*}{:}} + |__expanding: userz + \_____result: userz + |__condition: eq {$address_data}{userz} + |_____result: false + / scanning: *}{:}} + |__expanding: * + |_____result: * + \___skipping: result is not used + /considering: :}} + |__expanding: : + \_____result: : + |__expanding: ${if eq {$address_data}{userz}{*}{:}} + \_____result: : 127.0.0.1 in hosts_verify_avoid_tls? no (end of list) SMTP>> STARTTLS cmd buf flush ddd bytes @@ -130,105 +130,117 @@ accept: condition test succeeded in inline ACL end of inline ACL: ACCEPT SMTP>> DATA SMTP<< 354 Enter message, ending with "." on a line by itself -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 -considering: Received: ${if def:sender_rcvhost {from $sender_rcvhost + /considering: ${tod_full} + |__expanding: ${tod_full} + \_____result: Tue, 2 Mar 1999 09:44:33 +0000 + /considering: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - condition: def:sender_rcvhost - result: false - scanning: from $sender_rcvhost + |__condition: def:sender_rcvhost + |_____result: false + / scanning: from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: from $sender_rcvhost + |__expanding: from $sender_rcvhost - result: from + |_____result: from - skipping: result is not used -considering: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + \___skipping: result is not used + /considering: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - condition: def:sender_ident - result: true -considering: from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + |__condition: def:sender_ident + |_____result: true + /considering: from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} -considering: $sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + ./considering: $sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: $sender_ident - result: CALLER - expanding: from ${quote_local_part:$sender_ident} - result: from CALLER - condition: def:sender_helo_name - result: true -considering: (helo=$sender_helo_name) + .|__expanding: $sender_ident + .\_____result: CALLER + |__expanding: from ${quote_local_part:$sender_ident} + \_____result: from CALLER + |__condition: def:sender_helo_name + |_____result: true + /considering: (helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: (helo=$sender_helo_name) + |__expanding: (helo=$sender_helo_name) - result: (helo=myhost.test.ex) + \_____result: (helo=myhost.test.ex) - expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + |__expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }} - result: from CALLER (helo=myhost.test.ex) + \_____result: from CALLER (helo=myhost.test.ex) - condition: def:received_protocol - result: true -considering: with $received_protocol}} (Exim $version_number) + |__condition: def:received_protocol + |_____result: true + /considering: with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: with $received_protocol - result: with local-esmtp - condition: def:sender_address - result: true -considering: (envelope-from <$sender_address>) + |__expanding: with $received_protocol + \_____result: with local-esmtp + |__condition: def:tls_cipher + |_____result: false + / scanning: ($tls_cipher) + }}(Exim $version_number) + ${if def:sender_address {(envelope-from <$sender_address>) + }}id $message_exim_id${if def:received_for { + for $received_for}} + |__expanding: ($tls_cipher) + + |_____result: () + + \___skipping: result is not used + |__condition: def:sender_address + |_____result: true + /considering: (envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: (envelope-from <$sender_address>) + |__expanding: (envelope-from <$sender_address>) - result: (envelope-from ) + \_____result: (envelope-from ) - condition: def:received_for - result: true -considering: + |__condition: def:received_for + |_____result: true + /considering: for $received_for}} - expanding: + |__expanding: for $received_for - result: + \_____result: for userx@domain.com - expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost + |__expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - result: Received: from CALLER (helo=myhost.test.ex) + \_____result: Received: from CALLER (helo=myhost.test.ex) by myhost.test.ex with local-esmtp (Exim x.yz) (envelope-from ) id 10HmaX-0005vi-00 for userx@domain.com ----------- start cutthrough headers send ----------- ----------- done cutthrough headers send ------------ -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 + /considering: ${tod_full} + |__expanding: ${tod_full} + \_____result: Tue, 2 Mar 1999 09:44:33 +0000 SMTP>> . SMTP<< 250 OK id=10HmaY-0005vi-00 LOG: MAIN @@ -250,40 +262,40 @@ admin user in hosts_connection_nolog? no (option unset) LOG: smtp_connection MAIN SMTP connection from CALLER -considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full - expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full - result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 + /considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full + |__expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full + \_____result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 in dsn_advertise_hosts? no (option unset) in pipelining_advertise_hosts? yes (matched "*") in chunking_advertise_hosts? no (end of list) in tls_advertise_hosts? yes (matched "*") -considering: ${if eq {SERVER}{server}{queue}{cutthrough}} -considering: SERVER}{server}{queue}{cutthrough}} - expanding: SERVER - result: SERVER -considering: server}{queue}{cutthrough}} - expanding: server - result: server - condition: eq {SERVER}{server} - result: false - scanning: queue}{cutthrough}} - expanding: queue - result: queue - skipping: result is not used -considering: cutthrough}} - expanding: cutthrough - result: cutthrough - expanding: ${if eq {SERVER}{server}{queue}{cutthrough}} - result: cutthrough + /considering: ${if eq {SERVER}{server}{queue}{cutthrough}} + /considering: SERVER}{server}{queue}{cutthrough}} + |__expanding: SERVER + \_____result: SERVER + /considering: server}{queue}{cutthrough}} + |__expanding: server + \_____result: server + |__condition: eq {SERVER}{server} + |_____result: false + / scanning: queue}{cutthrough}} + |__expanding: queue + |_____result: queue + \___skipping: result is not used + /considering: cutthrough}} + |__expanding: cutthrough + \_____result: cutthrough + |__expanding: ${if eq {SERVER}{server}{queue}{cutthrough}} + \_____result: cutthrough using ACL "cutthrough" processing "accept" check control = cutthrough_delivery check verify = recipient domain.com in "test.ex : *.test.ex"? no (end of list) domain.com in "! +local_domains"? yes (end of list) -considering: $local_part - expanding: $local_part - result: usery + /considering: $local_part + |__expanding: $local_part + \_____result: usery domain.com in "*"? yes (matched "*") ----------- end verify ------------ accept: condition test succeeded in ACL "cutthrough" @@ -291,14 +303,14 @@ end of ACL "cutthrough": ACCEPT ----------- start cutthrough setup ------------ domain.com in "test.ex : *.test.ex"? no (end of list) domain.com in "! +local_domains"? yes (end of list) -considering: $local_part - expanding: $local_part - result: usery + /considering: $local_part + |__expanding: $local_part + \_____result: usery domain.com in "*"? yes (matched "*") Connecting to 127.0.0.1 [127.0.0.1]:1225 from ip4.ip4.ip4.ip4 ... connected -considering: $primary_hostname - expanding: $primary_hostname - result: myhost.test.ex + /considering: $primary_hostname + |__expanding: $primary_hostname + \_____result: myhost.test.ex SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 127.0.0.1 in hosts_avoid_esmtp? no (option unset) SMTP>> EHLO myhost.test.ex @@ -309,24 +321,24 @@ cmd buf flush ddd bytes 250-PIPELINING 250-STARTTLS 250 HELP -considering: ${if eq {$address_data}{usery}{*}{:}} -considering: $address_data}{usery}{*}{:}} - expanding: $address_data - result: usery -considering: usery}{*}{:}} - expanding: usery - result: usery - condition: eq {$address_data}{usery} - result: true -considering: *}{:}} - expanding: * - result: * - scanning: :}} - expanding: : - result: : - skipping: result is not used - expanding: ${if eq {$address_data}{usery}{*}{:}} - result: * + /considering: ${if eq {$address_data}{usery}{*}{:}} + /considering: $address_data}{usery}{*}{:}} + |__expanding: $address_data + \_____result: usery + /considering: usery}{*}{:}} + |__expanding: usery + \_____result: usery + |__condition: eq {$address_data}{usery} + |_____result: true + /considering: *}{:}} + |__expanding: * + \_____result: * + / scanning: :}} + |__expanding: : + |_____result: : + \___skipping: result is not used + |__expanding: ${if eq {$address_data}{usery}{*}{:}} + \_____result: * 127.0.0.1 in hosts_avoid_tls? yes (matched "*") 127.0.0.1 in hosts_avoid_pipelining? no (option unset) using PIPELINING @@ -344,105 +356,117 @@ accept: condition test succeeded in inline ACL end of inline ACL: ACCEPT SMTP>> DATA SMTP<< 354 Enter message, ending with "." on a line by itself -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 -considering: Received: ${if def:sender_rcvhost {from $sender_rcvhost + /considering: ${tod_full} + |__expanding: ${tod_full} + \_____result: Tue, 2 Mar 1999 09:44:33 +0000 + /considering: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - condition: def:sender_rcvhost - result: false - scanning: from $sender_rcvhost + |__condition: def:sender_rcvhost + |_____result: false + / scanning: from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: from $sender_rcvhost + |__expanding: from $sender_rcvhost - result: from + |_____result: from - skipping: result is not used -considering: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + \___skipping: result is not used + /considering: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - condition: def:sender_ident - result: true -considering: from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + |__condition: def:sender_ident + |_____result: true + /considering: from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} -considering: $sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + ./considering: $sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: $sender_ident - result: CALLER - expanding: from ${quote_local_part:$sender_ident} - result: from CALLER - condition: def:sender_helo_name - result: true -considering: (helo=$sender_helo_name) + .|__expanding: $sender_ident + .\_____result: CALLER + |__expanding: from ${quote_local_part:$sender_ident} + \_____result: from CALLER + |__condition: def:sender_helo_name + |_____result: true + /considering: (helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: (helo=$sender_helo_name) + |__expanding: (helo=$sender_helo_name) - result: (helo=myhost.test.ex) + \_____result: (helo=myhost.test.ex) - expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + |__expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }} - result: from CALLER (helo=myhost.test.ex) + \_____result: from CALLER (helo=myhost.test.ex) - condition: def:received_protocol - result: true -considering: with $received_protocol}} (Exim $version_number) + |__condition: def:received_protocol + |_____result: true + /considering: with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: with $received_protocol - result: with local-esmtp - condition: def:sender_address - result: true -considering: (envelope-from <$sender_address>) + |__expanding: with $received_protocol + \_____result: with local-esmtp + |__condition: def:tls_cipher + |_____result: false + / scanning: ($tls_cipher) + }}(Exim $version_number) + ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: (envelope-from <$sender_address>) + |__expanding: ($tls_cipher) - result: (envelope-from ) + |_____result: () - condition: def:received_for - result: true -considering: + \___skipping: result is not used + |__condition: def:sender_address + |_____result: true + /considering: (envelope-from <$sender_address>) + }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: + |__expanding: (envelope-from <$sender_address>) + + \_____result: (envelope-from ) + + |__condition: def:received_for + |_____result: true + /considering: + for $received_for}} + |__expanding: for $received_for - result: + \_____result: for usery@domain.com - expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost + |__expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - result: Received: from CALLER (helo=myhost.test.ex) + \_____result: Received: from CALLER (helo=myhost.test.ex) by myhost.test.ex with local-esmtp (Exim x.yz) (envelope-from ) id 10HmaZ-0005vi-00 for usery@domain.com ----------- start cutthrough headers send ----------- ----------- done cutthrough headers send ------------ -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 + /considering: ${tod_full} + |__expanding: ${tod_full} + \_____result: Tue, 2 Mar 1999 09:44:33 +0000 SMTP>> . SMTP<< 250 OK id=10HmbA-0005vi-00 LOG: MAIN @@ -464,40 +488,40 @@ admin user in hosts_connection_nolog? no (option unset) LOG: smtp_connection MAIN SMTP connection from CALLER -considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full - expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full - result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 + /considering: $smtp_active_hostname ESMTP Exim $version_number $tod_full + |__expanding: $smtp_active_hostname ESMTP Exim $version_number $tod_full + \_____result: myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 in dsn_advertise_hosts? no (option unset) in pipelining_advertise_hosts? yes (matched "*") in chunking_advertise_hosts? no (end of list) in tls_advertise_hosts? yes (matched "*") -considering: ${if eq {SERVER}{server}{queue}{cutthrough}} -considering: SERVER}{server}{queue}{cutthrough}} - expanding: SERVER - result: SERVER -considering: server}{queue}{cutthrough}} - expanding: server - result: server - condition: eq {SERVER}{server} - result: false - scanning: queue}{cutthrough}} - expanding: queue - result: queue - skipping: result is not used -considering: cutthrough}} - expanding: cutthrough - result: cutthrough - expanding: ${if eq {SERVER}{server}{queue}{cutthrough}} - result: cutthrough + /considering: ${if eq {SERVER}{server}{queue}{cutthrough}} + /considering: SERVER}{server}{queue}{cutthrough}} + |__expanding: SERVER + \_____result: SERVER + /considering: server}{queue}{cutthrough}} + |__expanding: server + \_____result: server + |__condition: eq {SERVER}{server} + |_____result: false + / scanning: queue}{cutthrough}} + |__expanding: queue + |_____result: queue + \___skipping: result is not used + /considering: cutthrough}} + |__expanding: cutthrough + \_____result: cutthrough + |__expanding: ${if eq {SERVER}{server}{queue}{cutthrough}} + \_____result: cutthrough using ACL "cutthrough" processing "accept" check control = cutthrough_delivery check verify = recipient domain.com in "test.ex : *.test.ex"? no (end of list) domain.com in "! +local_domains"? yes (end of list) -considering: $local_part - expanding: $local_part - result: usery + /considering: $local_part + |__expanding: $local_part + \_____result: usery domain.com in "*"? yes (matched "*") ----------- end verify ------------ accept: condition test succeeded in ACL "cutthrough" @@ -505,14 +529,14 @@ end of ACL "cutthrough": ACCEPT ----------- start cutthrough setup ------------ domain.com in "test.ex : *.test.ex"? no (end of list) domain.com in "! +local_domains"? yes (end of list) -considering: $local_part - expanding: $local_part - result: usery + /considering: $local_part + |__expanding: $local_part + \_____result: usery domain.com in "*"? yes (matched "*") Connecting to 127.0.0.1 [127.0.0.1]:1225 from ip4.ip4.ip4.ip4 ... connected -considering: $primary_hostname - expanding: $primary_hostname - result: myhost.test.ex + /considering: $primary_hostname + |__expanding: $primary_hostname + \_____result: myhost.test.ex SMTP<< 220 myhost.test.ex ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000 127.0.0.1 in hosts_avoid_esmtp? no (option unset) SMTP>> EHLO myhost.test.ex @@ -523,24 +547,24 @@ cmd buf flush ddd bytes 250-PIPELINING 250-STARTTLS 250 HELP -considering: ${if eq {$address_data}{usery}{*}{:}} -considering: $address_data}{usery}{*}{:}} - expanding: $address_data - result: usery -considering: usery}{*}{:}} - expanding: usery - result: usery - condition: eq {$address_data}{usery} - result: true -considering: *}{:}} - expanding: * - result: * - scanning: :}} - expanding: : - result: : - skipping: result is not used - expanding: ${if eq {$address_data}{usery}{*}{:}} - result: * + /considering: ${if eq {$address_data}{usery}{*}{:}} + /considering: $address_data}{usery}{*}{:}} + |__expanding: $address_data + \_____result: usery + /considering: usery}{*}{:}} + |__expanding: usery + \_____result: usery + |__condition: eq {$address_data}{usery} + |_____result: true + /considering: *}{:}} + |__expanding: * + \_____result: * + / scanning: :}} + |__expanding: : + |_____result: : + \___skipping: result is not used + |__expanding: ${if eq {$address_data}{usery}{*}{:}} + \_____result: * 127.0.0.1 in hosts_avoid_tls? yes (matched "*") 127.0.0.1 in hosts_avoid_pipelining? no (option unset) using PIPELINING @@ -558,105 +582,117 @@ accept: condition test succeeded in inline ACL end of inline ACL: ACCEPT SMTP>> DATA SMTP<< 354 Enter message, ending with "." on a line by itself -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 -considering: Received: ${if def:sender_rcvhost {from $sender_rcvhost + /considering: ${tod_full} + |__expanding: ${tod_full} + \_____result: Tue, 2 Mar 1999 09:44:33 +0000 + /considering: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - condition: def:sender_rcvhost - result: false - scanning: from $sender_rcvhost + |__condition: def:sender_rcvhost + |_____result: false + / scanning: from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: from $sender_rcvhost + |__expanding: from $sender_rcvhost - result: from + |_____result: from - skipping: result is not used -considering: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + \___skipping: result is not used + /considering: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - condition: def:sender_ident - result: true -considering: from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + |__condition: def:sender_ident + |_____result: true + /considering: from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} -considering: $sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + ./considering: $sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: $sender_ident - result: CALLER - expanding: from ${quote_local_part:$sender_ident} - result: from CALLER - condition: def:sender_helo_name - result: true -considering: (helo=$sender_helo_name) + .|__expanding: $sender_ident + .\_____result: CALLER + |__expanding: from ${quote_local_part:$sender_ident} + \_____result: from CALLER + |__condition: def:sender_helo_name + |_____result: true + /considering: (helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: (helo=$sender_helo_name) + |__expanding: (helo=$sender_helo_name) - result: (helo=myhost.test.ex) + \_____result: (helo=myhost.test.ex) - expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) + |__expanding: ${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }} - result: from CALLER (helo=myhost.test.ex) + \_____result: from CALLER (helo=myhost.test.ex) - condition: def:received_protocol - result: true -considering: with $received_protocol}} (Exim $version_number) + |__condition: def:received_protocol + |_____result: true + /considering: with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: with $received_protocol - result: with local-esmtp - condition: def:sender_address - result: true -considering: (envelope-from <$sender_address>) + |__expanding: with $received_protocol + \_____result: with local-esmtp + |__condition: def:tls_cipher + |_____result: false + / scanning: ($tls_cipher) + }}(Exim $version_number) + ${if def:sender_address {(envelope-from <$sender_address>) + }}id $message_exim_id${if def:received_for { + for $received_for}} + |__expanding: ($tls_cipher) + + |_____result: () + + \___skipping: result is not used + |__condition: def:sender_address + |_____result: true + /considering: (envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - expanding: (envelope-from <$sender_address>) + |__expanding: (envelope-from <$sender_address>) - result: (envelope-from ) + \_____result: (envelope-from ) - condition: def:received_for - result: true -considering: + |__condition: def:received_for + |_____result: true + /considering: for $received_for}} - expanding: + |__expanding: for $received_for - result: + \_____result: for usery@domain.com - expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost + |__expanding: Received: ${if def:sender_rcvhost {from $sender_rcvhost }{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name) }}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} (Exim $version_number) ${if def:sender_address {(envelope-from <$sender_address>) }}id $message_exim_id${if def:received_for { for $received_for}} - result: Received: from CALLER (helo=myhost.test.ex) + \_____result: Received: from CALLER (helo=myhost.test.ex) by myhost.test.ex with local-esmtp (Exim x.yz) (envelope-from ) id 10HmbB-0005vi-00 for usery@domain.com ----------- start cutthrough headers send ----------- ----------- done cutthrough headers send ------------ -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 + /considering: ${tod_full} + |__expanding: ${tod_full} + \_____result: Tue, 2 Mar 1999 09:44:33 +0000 SMTP>> . SMTP<< 250 OK id=10HmbC-0005vi-00 LOG: MAIN diff --git a/test/stdout/0574 b/test/stdout/0574 index 08aacb17c..d32dfea42 100644 --- a/test/stdout/0574 +++ b/test/stdout/0574 @@ -35,9 +35,9 @@ accept: condition test succeeded in ACL "chk_data" end of ACL "chk_data": ACCEPT calling local_scan(); timeout=300 local_scan() returned 0 NULL -considering: ${tod_full} - expanding: ${tod_full} - result: Tue, 2 Mar 1999 09:44:33 +0000 + 16:20:24 28641 /considering: ${tod_full} + 16:20:24 28641 |__expanding: ${tod_full} + 16:20:24 28641 \_____result: Tue, 2 Mar 1999 09:44:33 +0000 Writing spool header file: TESTSUITE/spool//input//hdr.pppp DSN: Write SPOOL :-dsn_envid NULL DSN: Write SPOOL :-dsn_ret 0 -- cgit v1.2.3