int
dbfn_delete(open_db *dbblock, const uschar *key)
{
-int klen = Ustrlen(key) + 1;
+int klen = Ustrlen(key) + 1, rc;
uschar * key_copy = store_get(klen, key);
EXIM_DATUM key_datum;
exim_datum_init(&key_datum); /* Some DBM libraries require clearing */
exim_datum_data_set(&key_datum, key_copy);
exim_datum_size_set(&key_datum, klen);
-return exim_dbdel(dbblock->dbptr, &key_datum);
+rc = exim_dbdel(dbblock->dbptr, &key_datum);
+DEBUG(D_hints_lookup) if (rc != EXIM_DBPUTB_OK)
+ debug_printf_indent(" exim_dbdel: fail\n");
+return rc;
}
"but found \"%.16s\"", s);
return -1;
}
+DEBUG(D_expand) debug_printf_indent("cond: %s\n", name);
if (opname)
*opname = string_copy(name);
static const uschar *
eval_condition(const uschar * s, BOOL * resetok, BOOL * yield)
{
-BOOL testfor = TRUE;
-BOOL tempcond, combined_cond;
+BOOL testfor = TRUE, tempcond, combined_cond;
BOOL * subcondptr;
-BOOL sub2_honour_dollar = TRUE;
-BOOL is_forany, is_json, is_jsons;
+BOOL sub2_honour_dollar = TRUE, is_forany, is_json, is_jsons;
int rc, cond_type;
int_eximarith_t num[2];
struct stat statbuf;
uschar * opname;
uschar name[256];
-const uschar * sub[10];
+const uschar * sub[10], * next;
unsigned sub_textonly = 0;
+expand_level++;
for (;;)
if (Uskip_whitespace(&s) == '!') { testfor = !testfor; s++; } else break;
if (*s != ':')
{
expand_string_message = US"\":\" expected after \"def\"";
- return NULL;
+ goto failout;
}
s = read_name(name, sizeof(name), s+1, US"_");
? string_sprintf("unknown variable \"%s\" after \"def:\"", name)
: US"variable name omitted after \"def:\"";
check_variable_error_message(name);
- return NULL;
+ goto failout;
}
if (yield) *yield = (t[0] != 0) == testfor;
}
- return s;
+ next = s; goto out;
}
case ECOND_FIRST_DELIVERY:
if (yield) *yield = f.deliver_firsttime == testfor;
- return s;
+ next = s; goto out;
/* queue_running tests for any process started by a queue runner */
case ECOND_QUEUE_RUNNING:
if (yield) *yield = (queue_run_pid != (pid_t)0) == testfor;
- return s;
+ next = s; goto out;
/* exists: tests for file existence
sub[0] = expand_string_internal(s+1,
ESI_BRACE_ENDS | ESI_HONOR_DOLLAR | (yield ? ESI_NOFLAGS : ESI_SKIPPING),
&s, resetok, &textonly);
- if (!sub[0]) return NULL;
+ if (!sub[0]) goto failout;
if (textonly) sub_textonly |= BIT(0);
}
/* {-for-text-editors */
if (*s++ != '}') goto COND_FAILED_CURLY_END;
- if (!yield) return s; /* No need to run the test if skipping */
+ if (!yield) { next = s; goto out; } /* No need to run the test if skipping */
switch(cond_type)
{
if ((expand_forbid & RDO_EXISTS) != 0)
{
expand_string_message = US"File existence tests are not permitted";
- return NULL;
+ goto failout;
}
*yield = (Ustat(sub[0], &statbuf) == 0) == testfor;
break;
#if defined(SUPPORT_PAM) || defined(RADIUS_CONFIG_FILE) || \
defined(LOOKUP_LDAP) || defined(CYRUS_PWCHECK_SOCKET)
END_AUTH:
- if (rc == ERROR || rc == DEFER) return NULL;
+ if (rc == ERROR || rc == DEFER) goto failout;
*yield = (rc == OK) == testfor;
#endif
}
- return s;
+ next = s; goto out;
/* call ACL (in a conditional context). Accept true, deny false.
case 1: expand_string_message = US"too few arguments or bracketing "
"error for acl";
case 2:
- case 3: return NULL;
+ case 3: goto failout;
}
if (yield)
default:
expand_string_message = string_sprintf("%s from acl \"%s\"",
rc_names[rc], sub[0]);
- return NULL;
+ goto failout;
}
}
- return s;
+ next = s; goto out;
}
case 1: expand_string_message = US"too few arguments or bracketing "
"error for saslauthd";
case 2:
- case 3: return NULL;
+ case 3: goto failout;
}
if (!sub[2]) sub[3] = NULL; /* realm if no service */
if (yield)
{
int rc = auth_call_saslauthd(sub[0], sub[1], sub[2], sub[3],
&expand_string_message);
- if (rc == ERROR || rc == DEFER) return NULL;
+ if (rc == ERROR || rc == DEFER) goto failout;
*yield = (rc == OK) == testfor;
}
- return s;
+ next = s; goto out;
}
#endif /* CYRUS_SASLAUTHD_SOCKET */
if (i == 0) goto COND_FAILED_CURLY_START;
expand_string_message = string_sprintf("missing 2nd string in {} "
"after \"%s\"", opname);
- return NULL;
+ goto failout;
}
if (!(sub[i] = expand_string_internal(s+1, flags, &s, resetok, &textonly)))
- return NULL;
+ goto failout;
if (textonly) sub_textonly |= BIT(i);
DEBUG(D_expand) if (i == 1 && !sub2_honour_dollar && Ustrchr(sub[1], '$'))
debug_printf_indent("WARNING: the second arg is NOT expanded,"
else
{
num[i] = expanded_string_integer(sub[i], FALSE);
- if (expand_string_message) return NULL;
+ if (expand_string_message) goto failout;
}
}
/* Result not required */
- if (!yield) return s;
+ if (!yield) { next = s; goto out; }
/* Do an appropriate comparison */
sub_textonly & BIT(1) ? MCS_CACHEABLE : MCS_NOFLAGS,
&expand_string_message, pcre_gen_cmp_ctx);
if (!re)
- return NULL;
+ goto failout;
tempcond = regex_match_and_setup(re, sub[0], 0, -1);
break;
{
expand_string_message = string_sprintf("\"%s\" is not an IP address",
sub[0]);
- return NULL;
+ goto failout;
}
else
{
case DEFER:
expand_string_message = string_sprintf("unable to complete match "
"against \"%s\": %s", sub[1], search_error_message);
- return NULL;
+ goto failout;
}
break;
{
expand_string_message = string_sprintf("unknown encryption mechanism "
"in \"%s\"", sub[1]);
- return NULL;
+ goto failout;
}
switch(which)
{
expand_string_message = string_sprintf("crypt error: %s\n",
US strerror(errno));
- return NULL;
+ goto failout;
}
}
break;
} /* Switch for comparison conditions */
*yield = tempcond == testfor;
- return s; /* End of comparison conditions */
+ next = s; goto out; /* End of comparison conditions */
/* and/or: computes logical and/or of several conditions */
{
expand_string_message = string_sprintf("each subcondition "
"inside an \"%s{...}\" condition must be in its own {}", opname);
- return NULL;
+ goto failout;
}
if (!(s = eval_condition(s+1, resetok, subcondptr)))
{
expand_string_message = string_sprintf("%s inside \"%s{...}\" condition",
expand_string_message, opname);
- return NULL;
+ goto failout;
}
Uskip_whitespace(&s);
/* {-for-text-editors */
expand_string_message = string_sprintf("missing } at end of condition "
"inside \"%s\" group", opname);
- return NULL;
+ goto failout;
}
if (yield)
}
if (yield) *yield = (combined_cond == testfor);
- return ++s;
+ next = ++s; goto out;
/* forall/forany: iterates a condition with different values */
if (!(sub[0] = expand_string_internal(s,
ESI_BRACE_ENDS | ESI_HONOR_DOLLAR | (yield ? ESI_NOFLAGS : ESI_SKIPPING),
&s, resetok, NULL)))
- return NULL;
+ goto failout;
/* {-for-text-editors */
if (*s++ != '}') goto COND_FAILED_CURLY_END;
{
expand_string_message = string_sprintf("%s inside \"%s\" condition",
expand_string_message, opname);
- return NULL;
+ goto failout;
}
Uskip_whitespace(&s);
/* {-for-text-editors */
expand_string_message = string_sprintf("missing } at end of condition "
"inside \"%s\"", opname);
- return NULL;
+ goto failout;
}
if (yield) *yield = !testfor;
string_sprintf("%s wrapping string result for extract jsons",
expand_string_message);
iterate_item = save_iterate_item;
- return NULL;
+ goto failout;
}
DEBUG(D_expand) debug_printf_indent("%s: $item = \"%s\"\n", opname, iterate_item);
expand_string_message = string_sprintf("%s inside \"%s\" condition",
expand_string_message, opname);
iterate_item = save_iterate_item;
- return NULL;
+ goto failout;
}
DEBUG(D_expand) debug_printf_indent("%s: condition evaluated to %s\n", opname,
tempcond? "true":"false");
}
iterate_item = save_iterate_item;
- return s;
+ next = s; goto out;
}
ourname);
/*FALLTHROUGH*/
case 2:
- case 3: return NULL;
+ case 3: goto failout;
}
t = sub_arg[0];
Uskip_whitespace(&t);
{
expand_string_message = string_sprintf("unrecognised boolean "
"value \"%s\"", t);
- return NULL;
+ goto failout;
}
DEBUG(D_expand) debug_printf_indent("%s: condition evaluated to %s\n", ourname,
boolvalue? "true":"false");
if (yield) *yield = (boolvalue == testfor);
- return s;
+ next = s; goto out;
}
#ifdef SUPPORT_SRS
case 1: expand_string_message = US"too few arguments or bracketing "
"error for inbound_srs";
case 2:
- case 3: return NULL;
+ case 3: goto failout;
}
/* Match the given local_part against the SRS-encoded pattern */
srs_result:
/* pcre2_match_data_free(md); gen ctx needs no free */
if (yield) *yield = (boolvalue == testfor);
- return s;
+ next = s; goto out;
}
#endif /*SUPPORT_SRS*/
default:
if (!expand_string_message || !*expand_string_message)
expand_string_message = string_sprintf("unknown condition \"%s\"", opname);
- return NULL;
+ goto failout;
} /* End switch on condition type */
/* Missing braces at start and end of data */
COND_FAILED_CURLY_START:
expand_string_message = string_sprintf("missing { after \"%s\"", opname);
-return NULL;
+goto failout;
COND_FAILED_CURLY_END:
expand_string_message = string_sprintf("missing } at end of \"%s\" condition",
opname);
-return NULL;
+goto failout;
/* A condition requires code that is not compiled */
COND_FAILED_NOT_COMPILED:
expand_string_message = string_sprintf("support for \"%s\" not compiled",
opname);
-return NULL;
+goto failout;
#endif
+
+failout:
+ next = NULL;
+out:
+ expand_level--;
+ return next;
}
DEBUG(D_transport|D_retry)
{
int letter = rti->more_errno & 255;
- debug_printf("added retry item for %s: errno=%d more_errno=", rti->key,
+ debug_printf("added retry %sitem for %s: errno=%d more_errno=",
+ flags & rf_delete ? "delete-" : "",
+ rti->key,
rti->basic_errno);
if (letter == 'A' || letter == 'M')
debug_printf("%d,%c", (rti->more_errno >> 8) & 255, letter);
╭considering: match:░░${if░match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
├───────text: match:░░
├considering: ${if░match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
- ╭considering: abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
- ├───────text: abcd
- ├considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
- ├───expanded: abcd
- ╰─────result: abcd
- ╭considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
- ├──protected: ^([ab]+)(\w+)$
- ├considering: }{$2$1}fail}
- ├───expanded: \N^([ab]+)(\w+)$\N
- ╰─────result: ^([ab]+)(\w+)$
- compiled RE '^([ab]+)(\w+)$' not found in local cache
- compiling RE '^([ab]+)(\w+)$'
- compiled RE '^([ab]+)(\w+)$' saved in local cache
+ cond: match
+ ╭considering: abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ ├───────text: abcd
+ ├considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ ├───expanded: abcd
+ ╰─────result: abcd
+ ╭considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
+ ├──protected: ^([ab]+)(\w+)$
+ ├considering: }{$2$1}fail}
+ ├───expanded: \N^([ab]+)(\w+)$\N
+ ╰─────result: ^([ab]+)(\w+)$
+ compiled RE '^([ab]+)(\w+)$' not found in local cache
+ compiling RE '^([ab]+)(\w+)$'
+ compiled RE '^([ab]+)(\w+)$' saved in local cache
├──condition: match{abcd}{\N^([ab]+)(\w+)$\N}
├─────result: true
╭considering: $2$1}fail}
╭considering: match:░░${if░match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
├───────text: match:░░
├considering: ${if░match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
- ╭considering: wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
- ├───────text: wxyz
- ├considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
- ├───expanded: wxyz
- ╰─────result: wxyz
- ╭considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
- ├──protected: ^([ab]+)(\w+)$
- ├considering: }{$2$1}fail}
- ├───expanded: \N^([ab]+)(\w+)$\N
- ╰─────result: ^([ab]+)(\w+)$
- compiled RE '^([ab]+)(\w+)$' found in local cache
+ cond: match
+ ╭considering: wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ ├───────text: wxyz
+ ├considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ ├───expanded: wxyz
+ ╰─────result: wxyz
+ ╭considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
+ ├──protected: ^([ab]+)(\w+)$
+ ├considering: }{$2$1}fail}
+ ├───expanded: \N^([ab]+)(\w+)$\N
+ ╰─────result: ^([ab]+)(\w+)$
+ compiled RE '^([ab]+)(\w+)$' found in local cache
├──condition: match{wxyz}{\N^([ab]+)(\w+)$\N}
├─────result: false
╭───scanning: $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}}}}
- ├───────text: 1
- ├considering: }{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
- ├───expanded: 1
- ╰─────result: 1
- ╭considering: 1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
- ├───────text: 1
- ├considering: }{yes}{${lookup{xx}lsearch{/non/exist}}}}
- ├───expanded: 1
- ╰─────result: 1
+ cond: eq
+ ╭considering: 1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
+ ├───────text: 1
+ ├considering: }{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
+ ├───expanded: 1
+ ╰─────result: 1
+ ╭considering: 1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
+ ├───────text: 1
+ ├considering: }{yes}{${lookup{xx}lsearch{/non/exist}}}}
+ ├───expanded: 1
+ ╰─────result: 1
├──condition: eq░{1}{1}
├─────result: true
╭considering: yes}{${lookup{xx}lsearch{/non/exist}}}}
╭considering: match_address:░░░${if░match_address{a.b.c}{a.b.c}{yes}{no}}
├───────text: match_address:░░░
├considering: ${if░match_address{a.b.c}{a.b.c}{yes}{no}}
- ╭considering: a.b.c}{a.b.c}{yes}{no}}
- ├───────text: a.b.c
- ├considering: }{a.b.c}{yes}{no}}
- ├───expanded: a.b.c
- ╰─────result: a.b.c
- ╭considering: a.b.c}{yes}{no}}
- ├───────text: a.b.c
- ├considering: }{yes}{no}}
- ├───expanded: a.b.c
- ╰─────result: a.b.c
+ cond: match_address
+ ╭considering: a.b.c}{a.b.c}{yes}{no}}
+ ├───────text: a.b.c
+ ├considering: }{a.b.c}{yes}{no}}
+ ├───expanded: a.b.c
+ ╰─────result: a.b.c
+ ╭considering: a.b.c}{yes}{no}}
+ ├───────text: a.b.c
+ ├considering: }{yes}{no}}
+ ├───expanded: 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"
- a.b.c in "a.b.c"? no (end of list)
+ a.b.c in "a.b.c"? no (end of list)
├──condition: match_address{a.b.c}{a.b.c}
├─────result: false
╭───scanning: yes}{no}}
/considering: match: ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
|-------text: match:
|considering: ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
- /considering: abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
- |-------text: abcd
- |considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
- |---expanded: abcd
- \_____result: abcd
- /considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
- |--protected: ^([ab]+)(\w+)$
- |considering: }{$2$1}fail}
- |---expanded: \N^([ab]+)(\w+)$\N
- \_____result: ^([ab]+)(\w+)$
- compiled RE '^([ab]+)(\w+)$' not found in local cache
- compiling RE '^([ab]+)(\w+)$'
- compiled RE '^([ab]+)(\w+)$' saved in local cache
+ cond: match
+ /considering: abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ |-------text: abcd
+ |considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ |---expanded: abcd
+ \_____result: abcd
+ /considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
+ |--protected: ^([ab]+)(\w+)$
+ |considering: }{$2$1}fail}
+ |---expanded: \N^([ab]+)(\w+)$\N
+ \_____result: ^([ab]+)(\w+)$
+ compiled RE '^([ab]+)(\w+)$' not found in local cache
+ compiling RE '^([ab]+)(\w+)$'
+ compiled RE '^([ab]+)(\w+)$' saved in local cache
|--condition: match{abcd}{\N^([ab]+)(\w+)$\N}
|-----result: true
/considering: $2$1}fail}
/considering: match: ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
|-------text: match:
|considering: ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
- /considering: wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
- |-------text: wxyz
- |considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
- |---expanded: wxyz
- \_____result: wxyz
- /considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
- |--protected: ^([ab]+)(\w+)$
- |considering: }{$2$1}fail}
- |---expanded: \N^([ab]+)(\w+)$\N
- \_____result: ^([ab]+)(\w+)$
- compiled RE '^([ab]+)(\w+)$' found in local cache
+ cond: match
+ /considering: wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ |-------text: wxyz
+ |considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ |---expanded: wxyz
+ \_____result: wxyz
+ /considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
+ |--protected: ^([ab]+)(\w+)$
+ |considering: }{$2$1}fail}
+ |---expanded: \N^([ab]+)(\w+)$\N
+ \_____result: ^([ab]+)(\w+)$
+ compiled RE '^([ab]+)(\w+)$' found in local cache
|--condition: match{wxyz}{\N^([ab]+)(\w+)$\N}
|-----result: false
/---scanning: $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}}}}
- |-------text: 1
- |considering: }{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
- |---expanded: 1
- \_____result: 1
- /considering: 1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
- |-------text: 1
- |considering: }{yes}{${lookup{xx}lsearch{/non/exist}}}}
- |---expanded: 1
- \_____result: 1
+ cond: eq
+ /considering: 1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
+ |-------text: 1
+ |considering: }{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
+ |---expanded: 1
+ \_____result: 1
+ /considering: 1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
+ |-------text: 1
+ |considering: }{yes}{${lookup{xx}lsearch{/non/exist}}}}
+ |---expanded: 1
+ \_____result: 1
|--condition: eq {1}{1}
|-----result: true
/considering: yes}{${lookup{xx}lsearch{/non/exist}}}}
/considering: match_address: ${if match_address{a.b.c}{a.b.c}{yes}{no}}
|-------text: match_address:
|considering: ${if match_address{a.b.c}{a.b.c}{yes}{no}}
- /considering: a.b.c}{a.b.c}{yes}{no}}
- |-------text: a.b.c
- |considering: }{a.b.c}{yes}{no}}
- |---expanded: a.b.c
- \_____result: a.b.c
- /considering: a.b.c}{yes}{no}}
- |-------text: a.b.c
- |considering: }{yes}{no}}
- |---expanded: a.b.c
- \_____result: a.b.c
+ cond: match_address
+ /considering: a.b.c}{a.b.c}{yes}{no}}
+ |-------text: a.b.c
+ |considering: }{a.b.c}{yes}{no}}
+ |---expanded: a.b.c
+ \_____result: a.b.c
+ /considering: a.b.c}{yes}{no}}
+ |-------text: a.b.c
+ |considering: }{yes}{no}}
+ |---expanded: 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"
- a.b.c in "a.b.c"? no (end of list)
+ a.b.c in "a.b.c"? no (end of list)
|--condition: match_address{a.b.c}{a.b.c}
|-----result: false
/---scanning: yes}{no}}
╭considering: ---->░No░lookup░yet:░${if░eq{black}{white}{$sender_host_name}{No}}
├───────text: ---->░No░lookup░yet:░
├considering: ${if░eq{black}{white}{$sender_host_name}{No}}
- ╭considering: black}{white}{$sender_host_name}{No}}
- ├───────text: black
- ├considering: }{white}{$sender_host_name}{No}}
- ├───expanded: black
- ╰─────result: black
- ╭considering: white}{$sender_host_name}{No}}
- ├───────text: white
- ├considering: }{$sender_host_name}{No}}
- ├───expanded: white
- ╰─────result: white
+ cond: eq
+ ╭considering: black}{white}{$sender_host_name}{No}}
+ ├───────text: black
+ ├considering: }{white}{$sender_host_name}{No}}
+ ├───expanded: black
+ ╰─────result: black
+ ╭considering: white}{$sender_host_name}{No}}
+ ├───────text: white
+ ├considering: }{$sender_host_name}{No}}
+ ├───expanded: white
+ ╰─────result: white
├──condition: eq{black}{white}
├─────result: false
╭───scanning: $sender_host_name}{No}}
dropping to exim gid; retaining priv uid
originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME
sender address = CALLER@myhost.test.ex
- 1.2.3.4 in "1.2.3"?
- list element: 1.2.3
- 1.2.3.4 in "1.2.3"? no (malformed IPv4 address or address mask: 1.2.3)
- 1.2.3.4 in "1.2.3.4/abc"?
- list element: 1.2.3.4/abc
- 1.2.3.4 in "1.2.3.4/abc"? no (malformed IPv4 address or address mask: 1.2.3.4)
- ::1 in "<; aaaa:bbbb"?
- ╎list element: aaaa:bbbb
- ╎::1 in "<; aaaa:bbbb"? no (malformed IPv6 address or address mask: aaaa:bbbb)
+ 1.2.3.4 in "1.2.3"?
+ list element: 1.2.3
+ 1.2.3.4 in "1.2.3"? no (malformed IPv4 address or address mask: 1.2.3)
+ 1.2.3.4 in "1.2.3.4/abc"?
+ ╎list element: 1.2.3.4/abc
+ ╎1.2.3.4 in "1.2.3.4/abc"? no (malformed IPv4 address or address mask: 1.2.3.4)
+ ╎::1 in "<; aaaa:bbbb"?
+ ╎ list element: aaaa:bbbb
+ ╎ ::1 in "<; aaaa:bbbb"? no (malformed IPv6 address or address mask: aaaa:bbbb)
search_tidyup called
>>>>>>>>>>>>>>>> Exim pid=p1240 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
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
- ├───────text: V4NET.0.0.1
- ├considering: }░{$sender_host_address}░{2}░{30}}s
- ├───expanded: V4NET.0.0.1
- ╰─────result: V4NET.0.0.1
- ╭considering: $sender_host_address}░{2}░{30}}s
- ├──────value: V4NET.0.0.1
- ├considering: }░{2}░{30}}s
- ├───expanded: $sender_host_address
- ╰─────result: V4NET.0.0.1
+ cond: eq
+ ╭considering: V4NET.0.0.1}░{$sender_host_address}░{2}░{30}}s
+ ├───────text: V4NET.0.0.1
+ ├considering: }░{$sender_host_address}░{2}░{30}}s
+ ├───expanded: V4NET.0.0.1
+ ╰─────result: V4NET.0.0.1
+ ╭considering: $sender_host_address}░{2}░{30}}s
+ ├──────value: V4NET.0.0.1
+ ├considering: }░{2}░{30}}s
+ ├───expanded: $sender_host_address
+ ╰─────result: V4NET.0.0.1
├──condition: eq░{V4NET.0.0.1}░{$sender_host_address}
├─────result: true
╭considering: 2}░{30}}s
appendfile yields 0 with errno=dd more_errno=dd
>>>>>>>>>>>>>>>> Exim pid=p1236 (delivery-local) terminating with rc=0 >>>>>>>>>>>>>>>>
appendfile transport returned OK for userx@myhost.test.ex
-added retry item for T:userx@myhost.test.ex: errno=dd more_errno=dd flags=1
+added retry delete-item for T:userx@myhost.test.ex: errno=dd more_errno=dd flags=1
LOG: MAIN
=> userx <userx@myhost.test.ex> R=localuser T=appendfile
LOG: MAIN
checking router retry status
no domain retry record
have address retry record; next_try = now+0
-added retry item for R:userx@test.ex:<CALLER@test.ex>: errno=-1 more_errno=dd flags=1
-added retry item for R:userx@test.ex: errno=-1 more_errno=dd flags=1
-added retry item for R:test.ex: errno=-1 more_errno=dd flags=1
+added retry delete-item for R:userx@test.ex:<CALLER@test.ex>: errno=-1 more_errno=dd flags=1
+added retry delete-item for R:userx@test.ex: errno=-1 more_errno=dd flags=1
+added retry delete-item for R:test.ex: errno=-1 more_errno=dd flags=1
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
After routing:
Local deliveries:
checking router retry status
no domain retry record
have address retry record; next_try = now+0
-added retry item for R:userx@test.ex:<CALLER@test.ex>: errno=-1 more_errno=dd flags=1
-added retry item for R:userx@test.ex: errno=-1 more_errno=dd flags=1
-added retry item for R:test.ex: errno=-1 more_errno=dd flags=1
+added retry delete-item for R:userx@test.ex:<CALLER@test.ex>: errno=-1 more_errno=dd flags=1
+added retry delete-item for R:userx@test.ex: errno=-1 more_errno=dd flags=1
+added retry delete-item for R:test.ex: errno=-1 more_errno=dd flags=1
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
After routing:
Local deliveries:
checking router retry status
no domain retry record
have address retry record; next_try = now+0
-added retry item for R:usery@test.ex:<CALLER@test.ex>: errno=-1 more_errno=dd flags=1
-added retry item for R:usery@test.ex: errno=-1 more_errno=dd flags=1
-added retry item for R:test.ex: errno=-1 more_errno=dd flags=1
-added retry item for R:userx@test.ex:<CALLER@test.ex>: errno=-1 more_errno=dd flags=1
-added retry item for R:userx@test.ex: errno=-1 more_errno=dd flags=1
-added retry item for R:test.ex: errno=-1 more_errno=dd flags=1
+added retry delete-item for R:usery@test.ex:<CALLER@test.ex>: errno=-1 more_errno=dd flags=1
+added retry delete-item for R:usery@test.ex: errno=-1 more_errno=dd flags=1
+added retry delete-item for R:test.ex: errno=-1 more_errno=dd flags=1
+added retry delete-item for R:userx@test.ex:<CALLER@test.ex>: errno=-1 more_errno=dd flags=1
+added retry delete-item for R:userx@test.ex: errno=-1 more_errno=dd flags=1
+added retry delete-item for R:test.ex: errno=-1 more_errno=dd flags=1
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
After routing:
Local deliveries:
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_rcvhost
├─────result: false
╭───scanning: from░$sender_rcvhost↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_ident
├─────result: true
╭considering: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_helo_name
├─────result: false
╭───scanning: (helo=$sender_helo_name)↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:received_protocol
├─────result: true
╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:tls_in_cipher_std
├─────result: false
╭───scanning: ░tls░$tls_in_cipher_std↩
├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_address
├─────result: true
╭considering: (envelope-from░<$sender_address>)↩
├──────value: 10HmaX-000000005vi-0000
├considering: ${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:received_for
├─────result: false
╭───scanning: ↩
├───────text: From░
├considering: ${if░def:return_path{$return_path}{MAILER-DAEMON}}░${tod_bsdinbox}↩
+ cond: def
├──condition: def:return_path
├─────result: true
╭considering: $return_path}{MAILER-DAEMON}}░${tod_bsdinbox}↩
├───────text: From░
├considering: ${if░def:return_path{$return_path}{MAILER-DAEMON}}░${tod_bsdinbox}↩
+ cond: def
├──condition: def:return_path
├─────result: true
╭considering: $return_path}{MAILER-DAEMON}}░${tod_bsdinbox}↩
data from lookup saved for cache for +anymx: key 'mxt1.test.ex' value '@mx_any'
mxt1.test.ex in domains? yes (matched "+anymx")
checking "condition" "${if match_domain{$domain}{+anymx}{yes}}"...
- mxt1.test.ex in "+anymx"?
- list element: +anymx
- start sublist anymx
- ╎mxt1.test.ex in "@mx_any"?
- ╎ list element: @mx_any
- ╎ check dnssec require list
- ╎ check dnssec request list
- ╎ DNS lookup of mxt1.test.ex (MX) using fakens
- ╎ DNS lookup of mxt1.test.ex (MX) succeeded
- ╎ DNS lookup of eximtesthost.test.ex (A) using fakens
- ╎ DNS lookup of eximtesthost.test.ex (A) succeeded
+ mxt1.test.ex in "+anymx"?
+ list element: +anymx
+ start sublist anymx
+ ╎ mxt1.test.ex in "@mx_any"?
+ ╎ list element: @mx_any
+ ╎ check dnssec require list
+ ╎ check dnssec request list
+ ╎ DNS lookup of mxt1.test.ex (MX) using fakens
+ ╎ DNS lookup of mxt1.test.ex (MX) succeeded
+ ╎ DNS lookup of eximtesthost.test.ex (A) using fakens
+ ╎ DNS lookup of eximtesthost.test.ex (A) succeeded
local host has lowest MX
- ╎ host_find_bydns yield = HOST_FOUND_LOCAL (4); returned hosts:
- ╎ eximtesthost.test.ex ip4.ip4.ip4.ip4 MX=5
- ╎ mxt1.test.ex in "@mx_any"? yes (matched "@mx_any")
- end sublist anymx
- mxt1.test.ex in "+anymx"? yes (matched "+anymx")
+ ╎ host_find_bydns yield = HOST_FOUND_LOCAL (4); returned hosts:
+ ╎ eximtesthost.test.ex ip4.ip4.ip4.ip4 MX=5
+ ╎ mxt1.test.ex in "@mx_any"? yes (matched "@mx_any")
+ end sublist anymx
+ mxt1.test.ex in "+anymx"? yes (matched "+anymx")
calling r1 router
r1 router called for ph@mxt1.test.ex
domain = mxt1.test.ex
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_rcvhost
├─────result: false
╭───scanning: from░$sender_rcvhost↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_ident
├─────result: true
╭considering: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_helo_name
├─────result: false
╭───scanning: (helo=$sender_helo_name)↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:received_protocol
├─────result: true
╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:tls_in_cipher_std
├─────result: false
╭───scanning: ░tls░$tls_in_cipher_std↩
├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_address
├─────result: true
╭considering: (envelope-from░<$sender_address>)↩
├──────value: 10HmaX-000000005vi-0000
├considering: ${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:received_for
├─────result: false
╭───scanning: ↩
== userx@domain2.ex R=smarthost T=smtp defer (-1): first-pass only routing due to -odqs, queue_smtp_domains or control=queue
try option delay_warning_condition
╭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}}
- ├considering: $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-subscribe:}{}░}{░match{$h_precedence:}{(?i)bulk|list|junk}░}{░match{$h_auto-submitted:}{(?i)auto-generated|auto-replied}░}}░{no}{yes}}
- ├considering: }{}░}{░match{$h_precedence:}{(?i)bulk|list|junk}░}{░match{$h_auto-submitted:}{(?i)auto-generated|auto-replied}░}}░{no}{yes}}
- ├───expanded: $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}}
- ├───expanded:
- ╰─────result:
- ╭considering: $h_precedence:}{(?i)bulk|list|junk}░}{░match{$h_auto-submitted:}{(?i)auto-generated|auto-replied}░}}░{no}{yes}}
- ├considering: }{(?i)bulk|list|junk}░}{░match{$h_auto-submitted:}{(?i)auto-generated|auto-replied}░}}░{no}{yes}}
- ├───expanded: $h_precedence:
- ╰─────result:
- ╭considering: (?i)bulk|list|junk}░}{░match{$h_auto-submitted:}{(?i)auto-generated|auto-replied}░}}░{no}{yes}}
- ├───────text: (?i)bulk|list|junk
- ├considering: }░}{░match{$h_auto-submitted:}{(?i)auto-generated|auto-replied}░}}░{no}{yes}}
- ├───expanded: (?i)bulk|list|junk
- ╰─────result: (?i)bulk|list|junk
- compiled RE '(?i)bulk|list|junk' not found in local cache
- compiling RE '(?i)bulk|list|junk'
- compiled RE '(?i)bulk|list|junk' saved in local cache
- ╭considering: $h_auto-submitted:}{(?i)auto-generated|auto-replied}░}}░{no}{yes}}
- ├considering: }{(?i)auto-generated|auto-replied}░}}░{no}{yes}}
- ├───expanded: $h_auto-submitted:
- ╰─────result:
- ╭considering: (?i)auto-generated|auto-replied}░}}░{no}{yes}}
- ├───────text: (?i)auto-generated|auto-replied
- ├considering: }░}}░{no}{yes}}
- ├───expanded: (?i)auto-generated|auto-replied
- ╰─────result: (?i)auto-generated|auto-replied
- compiled RE '(?i)auto-generated|auto-replied' not found in local cache
- compiling RE '(?i)auto-generated|auto-replied'
- compiled RE '(?i)auto-generated|auto-replied' saved in local cache
+ cond: or
+ cond: eq
+ ╎╭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}}
+ ╎├considering: $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-subscribe:}{}░}{░match{$h_precedence:}{(?i)bulk|list|junk}░}{░match{$h_auto-submitted:}{(?i)auto-generated|auto-replied}░}}░{no}{yes}}
+ ╎├considering: }{}░}{░match{$h_precedence:}{(?i)bulk|list|junk}░}{░match{$h_auto-submitted:}{(?i)auto-generated|auto-replied}░}}░{no}{yes}}
+ ╎├───expanded: $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}}
+ ╎├───expanded:
+ ╎╰─────result:
+ cond: match
+ ╎╭considering: $h_precedence:}{(?i)bulk|list|junk}░}{░match{$h_auto-submitted:}{(?i)auto-generated|auto-replied}░}}░{no}{yes}}
+ ╎├considering: }{(?i)bulk|list|junk}░}{░match{$h_auto-submitted:}{(?i)auto-generated|auto-replied}░}}░{no}{yes}}
+ ╎├───expanded: $h_precedence:
+ ╎╰─────result:
+ ╎╭considering: (?i)bulk|list|junk}░}{░match{$h_auto-submitted:}{(?i)auto-generated|auto-replied}░}}░{no}{yes}}
+ ╎├───────text: (?i)bulk|list|junk
+ ╎├considering: }░}{░match{$h_auto-submitted:}{(?i)auto-generated|auto-replied}░}}░{no}{yes}}
+ ╎├───expanded: (?i)bulk|list|junk
+ ╎╰─────result: (?i)bulk|list|junk
+ compiled RE '(?i)bulk|list|junk' not found in local cache
+ compiling RE '(?i)bulk|list|junk'
+ compiled RE '(?i)bulk|list|junk' saved in local cache
+ cond: match
+ ╎╭considering: $h_auto-submitted:}{(?i)auto-generated|auto-replied}░}}░{no}{yes}}
+ ╎├considering: }{(?i)auto-generated|auto-replied}░}}░{no}{yes}}
+ ╎├───expanded: $h_auto-submitted:
+ ╎╰─────result:
+ ╎╭considering: (?i)auto-generated|auto-replied}░}}░{no}{yes}}
+ ╎├───────text: (?i)auto-generated|auto-replied
+ ╎├considering: }░}}░{no}{yes}}
+ ╎├───expanded: (?i)auto-generated|auto-replied
+ ╎╰─────result: (?i)auto-generated|auto-replied
+ compiled RE '(?i)auto-generated|auto-replied' not found in local cache
+ compiling RE '(?i)auto-generated|auto-replied'
+ compiled RE '(?i)auto-generated|auto-replied' saved in local cache
├──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}}
╰─────result: the.local.host.name░ESMTP░Exim░x.yz░Tue,░2░Mar░1999░09:44:33░+0000
try option acl_smtp_helo
╭considering: ${if░match_domain░{$sender_helo_name}{+dlist}}
- ╭considering: $sender_helo_name}{+dlist}}
- ├──────value: ehlo.domain
- ╰──(tainted)
- ├considering: }{+dlist}}
- ├───expanded: $sender_helo_name
- ╰─────result: ehlo.domain
- ╰──(tainted)
- ╭considering: +dlist}}
- ├───────text: +dlist
- ├considering: }}
- ├───expanded: +dlist
- ╰─────result: +dlist
- ╭considering: $domain
- ├──────value: ehlo.domain
- ╰──(tainted)
- ├───expanded: $domain
- ╰─────result: ehlo.domain
- ╰──(tainted)
+ cond: match_domain
+ ╭considering: $sender_helo_name}{+dlist}}
+ ├──────value: ehlo.domain
+ ╰──(tainted)
+ ├considering: }{+dlist}}
+ ├───expanded: $sender_helo_name
+ ╰─────result: ehlo.domain
+ ╰──(tainted)
+ ╭considering: +dlist}}
+ ├───────text: +dlist
+ ├considering: }}
+ ├───expanded: +dlist
+ ╰─────result: +dlist
+ ╭considering: $domain
+ ├──────value: ehlo.domain
+ ╰──(tainted)
+ ├───expanded: $domain
+ ╰─────result: ehlo.domain
+ ╰──(tainted)
├──condition: match_domain░{$sender_helo_name}{+dlist}
├─────result: true
├───expanded: ${if░match_domain░{$sender_helo_name}{+dlist}}
checking router retry status
no domain retry record
have address retry record; next_try = now+0
-added retry item for R:x@y:<CALLER@myhost.test.ex>: errno=-1 more_errno=dd flags=1
-added retry item for R:x@y: errno=-1 more_errno=dd flags=1
-added retry item for R:y: errno=-1 more_errno=dd flags=1
+added retry delete-item for R:x@y:<CALLER@myhost.test.ex>: errno=-1 more_errno=dd flags=1
+added retry delete-item for R:x@y: errno=-1 more_errno=dd flags=1
+added retry delete-item for R:y: errno=-1 more_errno=dd flags=1
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
After routing:
Local deliveries:
checking retry status of 127.0.0.1
no host retry record
no message retry record
-added retry item for R:x@y:<CALLER@myhost.test.ex>: errno=dd more_errno=dd,A flags=1
-added retry item for R:x@y: errno=dd more_errno=dd,A flags=1
+added retry delete-item for R:x@y:<CALLER@myhost.test.ex>: errno=dd more_errno=dd,A flags=1
+added retry delete-item for R:x@y: errno=dd more_errno=dd,A flags=1
cmdlog: '220:EHLO:250:MAIL:250:RCPT:250:DATA:354:.:250:QUIT+:250'
>>>>>>>>>>>>>>>> Exim pid=p1237 (transport) terminating with rc=0 >>>>>>>>>>>>>>>>
reading retry information for R:x@y from subprocess
p1235 ╰─────result: TESTSUITE/spool/exim_daemon_notify
p1235 test.ex in "^nomatch_list"? no (end of list)
p1235 ╭considering: ${if░match░{a_random_string}░{static_RE}}
-p1235 ╭considering: a_random_string}░{static_RE}}
-p1235 ├───────text: a_random_string
-p1235 ├considering: }░{static_RE}}
-p1235 ├───expanded: a_random_string
-p1235 ╰─────result: a_random_string
-p1235 ╭considering: static_RE}}
-p1235 ├───────text: static_RE
-p1235 ├considering: }}
-p1235 ├───expanded: static_RE
-p1235 ╰─────result: static_RE
-p1235 compiled RE 'static_RE' not found in local cache
-p1235 compiling RE 'static_RE'
-p1235 compiled RE 'static_RE' saved in local cache
-p1235 sending RE 'static_RE' to daemon
+p1235 cond: match
+p1235 ╭considering: a_random_string}░{static_RE}}
+p1235 ├───────text: a_random_string
+p1235 ├considering: }░{static_RE}}
+p1235 ├───expanded: a_random_string
+p1235 ╰─────result: a_random_string
+p1235 ╭considering: static_RE}}
+p1235 ├───────text: static_RE
+p1235 ├considering: }}
+p1235 ├───expanded: static_RE
+p1235 ╰─────result: static_RE
+p1235 compiled RE 'static_RE' not found in local cache
+p1235 compiling RE 'static_RE'
+p1235 compiled RE 'static_RE' saved in local cache
+p1235 sending RE 'static_RE' to daemon
p1235 try option notifier_socket
-p1235 ╭considering: $spool_directory/exim_daemon_notify
-p1235 ├──────value: TESTSUITE/spool
-p1235 ├considering: /exim_daemon_notify
-p1235 ├───────text: /exim_daemon_notify
-p1235 ├───expanded: $spool_directory/exim_daemon_notify
-p1235 ╰─────result: TESTSUITE/spool/exim_daemon_notify
+p1235 ╭considering: $spool_directory/exim_daemon_notify
+p1235 ├──────value: TESTSUITE/spool
+p1235 ├considering: /exim_daemon_notify
+p1235 ├───────text: /exim_daemon_notify
+p1235 ├───expanded: $spool_directory/exim_daemon_notify
+p1235 ╰─────result: TESTSUITE/spool/exim_daemon_notify
p1235 ├──condition: match░{a_random_string}░{static_RE}
p1235 ├─────result: false
p1235 ├───expanded: ${if░match░{a_random_string}░{static_RE}}
p1235 ╰─────result:
p1235 ╭considering: ${if░match░{a_random_string}░{tricky_static_RE\$}}
-p1235 ╭considering: a_random_string}░{tricky_static_RE\$}}
-p1235 ├───────text: a_random_string
-p1235 ├considering: }░{tricky_static_RE\$}}
-p1235 ├───expanded: a_random_string
-p1235 ╰─────result: a_random_string
-p1235 ╭considering: tricky_static_RE\$}}
-p1235 ├───────text: tricky_static_RE
-p1235 ├considering: \$}}
-p1235 ├backslashed: '\$'
-p1235 ├considering: }}
-p1235 ├───expanded: tricky_static_RE\$
-p1235 ╰─────result: tricky_static_RE$
-p1235 compiled RE 'tricky_static_RE$' not found in local cache
-p1235 compiling RE 'tricky_static_RE$'
-p1235 compiled RE 'tricky_static_RE$' saved in local cache
-p1235 sending RE 'tricky_static_RE$' to daemon
+p1235 cond: match
+p1235 ╭considering: a_random_string}░{tricky_static_RE\$}}
+p1235 ├───────text: a_random_string
+p1235 ├considering: }░{tricky_static_RE\$}}
+p1235 ├───expanded: a_random_string
+p1235 ╰─────result: a_random_string
+p1235 ╭considering: tricky_static_RE\$}}
+p1235 ├───────text: tricky_static_RE
+p1235 ├considering: \$}}
+p1235 ├backslashed: '\$'
+p1235 ├considering: }}
+p1235 ├───expanded: tricky_static_RE\$
+p1235 ╰─────result: tricky_static_RE$
+p1235 compiled RE 'tricky_static_RE$' not found in local cache
+p1235 compiling RE 'tricky_static_RE$'
+p1235 compiled RE 'tricky_static_RE$' saved in local cache
+p1235 sending RE 'tricky_static_RE$' to daemon
p1235 try option notifier_socket
-p1235 ╭considering: $spool_directory/exim_daemon_notify
-p1235 ├──────value: TESTSUITE/spool
-p1235 ├considering: /exim_daemon_notify
-p1235 ├───────text: /exim_daemon_notify
-p1235 ├───expanded: $spool_directory/exim_daemon_notify
-p1235 ╰─────result: TESTSUITE/spool/exim_daemon_notify
+p1235 ╭considering: $spool_directory/exim_daemon_notify
+p1235 ├──────value: TESTSUITE/spool
+p1235 ├considering: /exim_daemon_notify
+p1235 ├───────text: /exim_daemon_notify
+p1235 ├───expanded: $spool_directory/exim_daemon_notify
+p1235 ╰─────result: TESTSUITE/spool/exim_daemon_notify
p1235 ├──condition: match░{a_random_string}░{tricky_static_RE\$}
p1235 ├─────result: false
p1235 ├───expanded: ${if░match░{a_random_string}░{tricky_static_RE\$}}
p1235 ╰─────result:
p1235 ╭considering: ${if░match░{a_random_string}░{pid=${pid}░uncacheable_RE}}
-p1235 ╭considering: a_random_string}░{pid=${pid}░uncacheable_RE}}
-p1235 ├───────text: a_random_string
-p1235 ├considering: }░{pid=${pid}░uncacheable_RE}}
-p1235 ├───expanded: a_random_string
-p1235 ╰─────result: a_random_string
-p1235 ╭considering: pid=${pid}░uncacheable_RE}}
-p1235 ├───────text: pid=
-p1235 ├considering: ${pid}░uncacheable_RE}}
-p1235 ├considering: ░uncacheable_RE}}
-p1235 ├───────text: ░uncacheable_RE
-p1235 ├considering: }}
-p1235 ├───expanded: pid=${pid}░uncacheable_RE
-p1235 ╰─────result: pid=p1235░uncacheable_RE
-p1235 compiling RE 'pid=p1235 uncacheable_RE'
+p1235 cond: match
+p1235 ╭considering: a_random_string}░{pid=${pid}░uncacheable_RE}}
+p1235 ├───────text: a_random_string
+p1235 ├considering: }░{pid=${pid}░uncacheable_RE}}
+p1235 ├───expanded: a_random_string
+p1235 ╰─────result: a_random_string
+p1235 ╭considering: pid=${pid}░uncacheable_RE}}
+p1235 ├───────text: pid=
+p1235 ├considering: ${pid}░uncacheable_RE}}
+p1235 ├considering: ░uncacheable_RE}}
+p1235 ├───────text: ░uncacheable_RE
+p1235 ├considering: }}
+p1235 ├───expanded: pid=${pid}░uncacheable_RE
+p1235 ╰─────result: pid=p1235░uncacheable_RE
+p1235 compiling RE 'pid=p1235 uncacheable_RE'
p1235 ├──condition: match░{a_random_string}░{pid=${pid}░uncacheable_RE}
p1235 ├─────result: false
p1235 ├───expanded: ${if░match░{a_random_string}░{pid=${pid}░uncacheable_RE}}
p1235 ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
p1235 ␉}}id░$message_exim_id${if░def:received_for░{↩
p1235 ␉for░$received_for}}
+p1235 cond: def
p1235 ├──condition: def:sender_rcvhost
p1235 ├─────result: true
p1235 ╭considering: from░$sender_rcvhost↩
p1235 ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
p1235 ␉}}id░$message_exim_id${if░def:received_for░{↩
p1235 ␉for░$received_for}}
+p1235 cond: def
p1235 ├──condition: def:sender_ident
p1235 ├─────result: false
p1235 ╭───scanning: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
p1235 ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
p1235 ␉}}id░$message_exim_id${if░def:received_for░{↩
p1235 ␉for░$received_for}}
+p1235 cond: def
p1235 ├──condition: def:sender_helo_name
p1235 ├─────result: false
p1235 ╭───scanning: (helo=$sender_helo_name)↩
p1235 ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
p1235 ␉}}id░$message_exim_id${if░def:received_for░{↩
p1235 ␉for░$received_for}}
+p1235 cond: def
p1235 ├──condition: def:received_protocol
p1235 ├─────result: true
p1235 ╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
p1235 ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
p1235 ␉}}id░$message_exim_id${if░def:received_for░{↩
p1235 ␉for░$received_for}}
+p1235 cond: def
p1235 ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
p1235 ␉}}id░$message_exim_id${if░def:received_for░{↩
p1235 ␉for░$received_for}}
p1235 ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
p1235 ␉}}id░$message_exim_id${if░def:received_for░{↩
p1235 ␉for░$received_for}}
+p1235 cond: def
p1235 ├──condition: def:tls_in_cipher_std
p1235 ├─────result: false
p1235 ╭───scanning: ░tls░$tls_in_cipher_std↩
p1235 ├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
p1235 ␉}}id░$message_exim_id${if░def:received_for░{↩
p1235 ␉for░$received_for}}
+p1235 cond: def
p1235 ├──condition: def:sender_address
p1235 ├─────result: true
p1235 ╭considering: (envelope-from░<$sender_address>)↩
p1235 ├──────value: 10HmaX-000000005vi-0000
p1235 ├considering: ${if░def:received_for░{↩
p1235 ␉for░$received_for}}
+p1235 cond: def
p1235 ├──condition: def:received_for
p1235 ├─────result: true
p1235 ╭considering: ↩
p1236 compiled caseless RE '^nomatch_list' found in local cache
p1236 test.ex in "^nomatch_list"? no (end of list)
p1236 ╭considering: ${if░match░{a_random_string}░{static_RE}}
-p1236 ╭considering: a_random_string}░{static_RE}}
-p1236 ├───────text: a_random_string
-p1236 ├considering: }░{static_RE}}
-p1236 ├───expanded: a_random_string
-p1236 ╰─────result: a_random_string
-p1236 ╭considering: static_RE}}
-p1236 ├───────text: static_RE
-p1236 ├considering: }}
-p1236 ├───expanded: static_RE
-p1236 ╰─────result: static_RE
-p1236 compiled RE 'static_RE' found in local cache
+p1236 cond: match
+p1236 ╭considering: a_random_string}░{static_RE}}
+p1236 ├───────text: a_random_string
+p1236 ├considering: }░{static_RE}}
+p1236 ├───expanded: a_random_string
+p1236 ╰─────result: a_random_string
+p1236 ╭considering: static_RE}}
+p1236 ├───────text: static_RE
+p1236 ├considering: }}
+p1236 ├───expanded: static_RE
+p1236 ╰─────result: static_RE
+p1236 compiled RE 'static_RE' found in local cache
p1236 ├──condition: match░{a_random_string}░{static_RE}
p1236 ├─────result: false
p1236 ├───expanded: ${if░match░{a_random_string}░{static_RE}}
p1236 ╰─────result:
p1236 ╭considering: ${if░match░{a_random_string}░{tricky_static_RE\$}}
-p1236 ╭considering: a_random_string}░{tricky_static_RE\$}}
-p1236 ├───────text: a_random_string
-p1236 ├considering: }░{tricky_static_RE\$}}
-p1236 ├───expanded: a_random_string
-p1236 ╰─────result: a_random_string
-p1236 ╭considering: tricky_static_RE\$}}
-p1236 ├───────text: tricky_static_RE
-p1236 ├considering: \$}}
-p1236 ├backslashed: '\$'
-p1236 ├considering: }}
-p1236 ├───expanded: tricky_static_RE\$
-p1236 ╰─────result: tricky_static_RE$
-p1236 compiled RE 'tricky_static_RE$' found in local cache
+p1236 cond: match
+p1236 ╭considering: a_random_string}░{tricky_static_RE\$}}
+p1236 ├───────text: a_random_string
+p1236 ├considering: }░{tricky_static_RE\$}}
+p1236 ├───expanded: a_random_string
+p1236 ╰─────result: a_random_string
+p1236 ╭considering: tricky_static_RE\$}}
+p1236 ├───────text: tricky_static_RE
+p1236 ├considering: \$}}
+p1236 ├backslashed: '\$'
+p1236 ├considering: }}
+p1236 ├───expanded: tricky_static_RE\$
+p1236 ╰─────result: tricky_static_RE$
+p1236 compiled RE 'tricky_static_RE$' found in local cache
p1236 ├──condition: match░{a_random_string}░{tricky_static_RE\$}
p1236 ├─────result: false
p1236 ├───expanded: ${if░match░{a_random_string}░{tricky_static_RE\$}}
p1236 ╰─────result:
p1236 ╭considering: ${if░match░{a_random_string}░{pid=${pid}░uncacheable_RE}}
-p1236 ╭considering: a_random_string}░{pid=${pid}░uncacheable_RE}}
-p1236 ├───────text: a_random_string
-p1236 ├considering: }░{pid=${pid}░uncacheable_RE}}
-p1236 ├───expanded: a_random_string
-p1236 ╰─────result: a_random_string
-p1236 ╭considering: pid=${pid}░uncacheable_RE}}
-p1236 ├───────text: pid=
-p1236 ├considering: ${pid}░uncacheable_RE}}
-p1236 ├considering: ░uncacheable_RE}}
-p1236 ├───────text: ░uncacheable_RE
-p1236 ├considering: }}
-p1236 ├───expanded: pid=${pid}░uncacheable_RE
-p1236 ╰─────result: pid=p1236░uncacheable_RE
-p1236 compiling RE 'pid=p1236 uncacheable_RE'
+p1236 cond: match
+p1236 ╭considering: a_random_string}░{pid=${pid}░uncacheable_RE}}
+p1236 ├───────text: a_random_string
+p1236 ├considering: }░{pid=${pid}░uncacheable_RE}}
+p1236 ├───expanded: a_random_string
+p1236 ╰─────result: a_random_string
+p1236 ╭considering: pid=${pid}░uncacheable_RE}}
+p1236 ├───────text: pid=
+p1236 ├considering: ${pid}░uncacheable_RE}}
+p1236 ├considering: ░uncacheable_RE}}
+p1236 ├───────text: ░uncacheable_RE
+p1236 ├considering: }}
+p1236 ├───expanded: pid=${pid}░uncacheable_RE
+p1236 ╰─────result: pid=p1236░uncacheable_RE
+p1236 compiling RE 'pid=p1236 uncacheable_RE'
p1236 ├──condition: match░{a_random_string}░{pid=${pid}░uncacheable_RE}
p1236 ├─────result: false
p1236 ├───expanded: ${if░match░{a_random_string}░{pid=${pid}░uncacheable_RE}}
p1236 ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
p1236 ␉}}id░$message_exim_id${if░def:received_for░{↩
p1236 ␉for░$received_for}}
+p1236 cond: def
p1236 ├──condition: def:sender_rcvhost
p1236 ├─────result: true
p1236 ╭considering: from░$sender_rcvhost↩
p1236 ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
p1236 ␉}}id░$message_exim_id${if░def:received_for░{↩
p1236 ␉for░$received_for}}
+p1236 cond: def
p1236 ├──condition: def:sender_ident
p1236 ├─────result: false
p1236 ╭───scanning: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
p1236 ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
p1236 ␉}}id░$message_exim_id${if░def:received_for░{↩
p1236 ␉for░$received_for}}
+p1236 cond: def
p1236 ├──condition: def:sender_helo_name
p1236 ├─────result: false
p1236 ╭───scanning: (helo=$sender_helo_name)↩
p1236 ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
p1236 ␉}}id░$message_exim_id${if░def:received_for░{↩
p1236 ␉for░$received_for}}
+p1236 cond: def
p1236 ├──condition: def:received_protocol
p1236 ├─────result: true
p1236 ╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
p1236 ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
p1236 ␉}}id░$message_exim_id${if░def:received_for░{↩
p1236 ␉for░$received_for}}
+p1236 cond: def
p1236 ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
p1236 ␉}}id░$message_exim_id${if░def:received_for░{↩
p1236 ␉for░$received_for}}
p1236 ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
p1236 ␉}}id░$message_exim_id${if░def:received_for░{↩
p1236 ␉for░$received_for}}
+p1236 cond: def
p1236 ├──condition: def:tls_in_cipher_std
p1236 ├─────result: false
p1236 ╭───scanning: ░tls░$tls_in_cipher_std↩
p1236 ├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
p1236 ␉}}id░$message_exim_id${if░def:received_for░{↩
p1236 ␉for░$received_for}}
+p1236 cond: def
p1236 ├──condition: def:sender_address
p1236 ├─────result: true
p1236 ╭considering: (envelope-from░<$sender_address>)↩
p1236 ├──────value: 10HmaY-000000005vi-0000
p1236 ├considering: ${if░def:received_for░{↩
p1236 ␉for░$received_for}}
+p1236 cond: def
p1236 ├──condition: def:received_for
p1236 ├─────result: true
p1236 ╭considering: ↩
$auth1 = userx secret
$1 = userx secret
+++MYLOGIN $1="userx secret" $2="" $3=""
- compiled RE '^(\S+)\s+(\S+)$' not found in local cache
- compiling RE '^(\S+)\s+(\S+)$'
- compiled RE '^(\S+)\s+(\S+)$' saved in local cache
+ compiled RE '^(\S+)\s+(\S+)$' not found in local cache
+ compiling RE '^(\S+)\s+(\S+)$'
+ compiled RE '^(\S+)\s+(\S+)$' saved in local cache
expanded string: yes
SMTP>> 235 Authentication succeeded
SMTP<< quit
try option acl_smtp_mail
try option acl_smtp_rcpt
╭considering: ${if░eq░{SERVER}{server}{queue}{cutthrough}}
- ╭considering: SERVER}{server}{queue}{cutthrough}}
- ├───────text: SERVER
- ├considering: }{server}{queue}{cutthrough}}
- ├───expanded: SERVER
- ╰─────result: SERVER
- ╭considering: server}{queue}{cutthrough}}
- ├───────text: server
- ├considering: }{queue}{cutthrough}}
- ├───expanded: server
- ╰─────result: server
+ cond: eq
+ ╭considering: SERVER}{server}{queue}{cutthrough}}
+ ├───────text: SERVER
+ ├considering: }{server}{queue}{cutthrough}}
+ ├───expanded: SERVER
+ ╰─────result: SERVER
+ ╭considering: server}{queue}{cutthrough}}
+ ├───────text: server
+ ├considering: }{queue}{cutthrough}}
+ ├───expanded: server
+ ╰─────result: server
├──condition: eq░{SERVER}{server}
├─────result: false
╭───scanning: queue}{cutthrough}}
250 HELP
try option host_name_extract
╭considering: ${if░and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ╭considering: $host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├──────value: 127.0.0.1
- ├considering: }{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: $host
- ╰─────result: 127.0.0.1
- ╭considering: .outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───────text: .outlook.com
- ├considering: \$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├backslashed: '\$'
- ├considering: }}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: .outlook.com\$
- ╰─────result: .outlook.com$
- ╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├──────value:
- ├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: $item
- ├─────result: ◀skipped▶
- ╰───skipping: result is not used
- ╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
- ├──protected: ^250-([\w.]+)\s
- ├───scanning: }}}░{$1}}
- ├───expanded: \N^250-([\w.]+)\s\N
- ├─────result: ◀skipped▶
- ╰───skipping: result is not used
+ cond: and
+ cond: match
+ ╎╭considering: $host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──────value: 127.0.0.1
+ ╎├considering: }{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: $host
+ ╎╰─────result: 127.0.0.1
+ ╎╭considering: .outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───────text: .outlook.com
+ ╎├considering: \$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├backslashed: '\$'
+ ╎├considering: }}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: .outlook.com\$
+ ╎╰─────result: .outlook.com$
+ cond: match
+ ╎╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──────value:
+ ╎├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: $item
+ ╎├─────result: ◀skipped▶
+ ╎╰───skipping: result is not used
+ ╎╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──protected: ^250-([\w.]+)\s
+ ╎├───scanning: }}}░{$1}}
+ ╎├───expanded: \N^250-([\w.]+)\s\N
+ ╎├─────result: ◀skipped▶
+ ╎╰───skipping: result is not used
├──condition: and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}
├─────result: false
╭───scanning: $1}}
├───expanded: ${if░and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
╰─────result:
╭considering: ${if░eq░{$address_data}{usery}{*}{:}}
- ╭considering: $address_data}{usery}{*}{:}}
- ├──────value: userx
- ╰──(tainted)
- ├considering: }{usery}{*}{:}}
- ├───expanded: $address_data
- ╰─────result: userx
- ╰──(tainted)
- ╭considering: usery}{*}{:}}
- ├───────text: usery
- ├considering: }{*}{:}}
- ├───expanded: usery
- ╰─────result: usery
+ cond: eq
+ ╭considering: $address_data}{usery}{*}{:}}
+ ├──────value: userx
+ ╰──(tainted)
+ ├considering: }{usery}{*}{:}}
+ ├───expanded: $address_data
+ ╰─────result: userx
+ ╰──(tainted)
+ ╭considering: usery}{*}{:}}
+ ├───────text: usery
+ ├considering: }{*}{:}}
+ ├───expanded: usery
+ ╰─────result: usery
├──condition: eq░{$address_data}{usery}
├─────result: false
╭───scanning: *}{:}}
list element:
127.0.0.1 in hosts_avoid_tls? no (end of list)
╭considering: ${if░eq░{$address_data}{userz}{*}{:}}
- ╭considering: $address_data}{userz}{*}{:}}
- ├──────value: userx
- ╰──(tainted)
- ├considering: }{userz}{*}{:}}
- ├───expanded: $address_data
- ╰─────result: userx
- ╰──(tainted)
- ╭considering: userz}{*}{:}}
- ├───────text: userz
- ├considering: }{*}{:}}
- ├───expanded: userz
- ╰─────result: userz
+ cond: eq
+ ╭considering: $address_data}{userz}{*}{:}}
+ ├──────value: userx
+ ╰──(tainted)
+ ├considering: }{userz}{*}{:}}
+ ├───expanded: $address_data
+ ╰─────result: userx
+ ╰──(tainted)
+ ╭considering: userz}{*}{:}}
+ ├───────text: userz
+ ├considering: }{*}{:}}
+ ├───expanded: userz
+ ╰─────result: userz
├──condition: eq░{$address_data}{userz}
├─────result: false
╭───scanning: *}{:}}
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_rcvhost
├─────result: false
╭───scanning: from░$sender_rcvhost↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_ident
├─────result: true
╭considering: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_helo_name
├─────result: true
╭considering: (helo=$sender_helo_name)↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:received_protocol
├─────result: true
╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:tls_in_cipher_std
├─────result: false
╭───scanning: ░tls░$tls_in_cipher_std↩
├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_address
├─────result: true
╭considering: (envelope-from░<$sender_address>)↩
├──────value: 10HmaX-000000005vi-0000
├considering: ${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:received_for
├─────result: true
╭considering: ↩
try option acl_smtp_mail
try option acl_smtp_rcpt
╭considering: ${if░eq░{SERVER}{server}{queue}{cutthrough}}
- ╭considering: SERVER}{server}{queue}{cutthrough}}
- ├───────text: SERVER
- ├considering: }{server}{queue}{cutthrough}}
- ├───expanded: SERVER
- ╰─────result: SERVER
- ╭considering: server}{queue}{cutthrough}}
- ├───────text: server
- ├considering: }{queue}{cutthrough}}
- ├───expanded: server
- ╰─────result: server
+ cond: eq
+ ╭considering: SERVER}{server}{queue}{cutthrough}}
+ ├───────text: SERVER
+ ├considering: }{server}{queue}{cutthrough}}
+ ├───expanded: SERVER
+ ╰─────result: SERVER
+ ╭considering: server}{queue}{cutthrough}}
+ ├───────text: server
+ ├considering: }{queue}{cutthrough}}
+ ├───expanded: server
+ ╰─────result: server
├──condition: eq░{SERVER}{server}
├─────result: false
╭───scanning: queue}{cutthrough}}
250 HELP
try option host_name_extract
╭considering: ${if░and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ╭considering: $host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├──────value: 127.0.0.1
- ├considering: }{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: $host
- ╰─────result: 127.0.0.1
- ╭considering: .outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───────text: .outlook.com
- ├considering: \$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├backslashed: '\$'
- ├considering: }}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: .outlook.com\$
- ╰─────result: .outlook.com$
- ╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├──────value:
- ├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: $item
- ├─────result: ◀skipped▶
- ╰───skipping: result is not used
- ╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
- ├──protected: ^250-([\w.]+)\s
- ├───scanning: }}}░{$1}}
- ├───expanded: \N^250-([\w.]+)\s\N
- ├─────result: ◀skipped▶
- ╰───skipping: result is not used
+ cond: and
+ cond: match
+ ╎╭considering: $host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──────value: 127.0.0.1
+ ╎├considering: }{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: $host
+ ╎╰─────result: 127.0.0.1
+ ╎╭considering: .outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───────text: .outlook.com
+ ╎├considering: \$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├backslashed: '\$'
+ ╎├considering: }}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: .outlook.com\$
+ ╎╰─────result: .outlook.com$
+ cond: match
+ ╎╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──────value:
+ ╎├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: $item
+ ╎├─────result: ◀skipped▶
+ ╎╰───skipping: result is not used
+ ╎╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──protected: ^250-([\w.]+)\s
+ ╎├───scanning: }}}░{$1}}
+ ╎├───expanded: \N^250-([\w.]+)\s\N
+ ╎├─────result: ◀skipped▶
+ ╎╰───skipping: result is not used
├──condition: and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}
├─────result: false
╭───scanning: $1}}
├───expanded: ${if░and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
╰─────result:
╭considering: ${if░eq░{$address_data}{usery}{*}{:}}
- ╭considering: $address_data}{usery}{*}{:}}
- ├──────value: usery
- ╰──(tainted)
- ├considering: }{usery}{*}{:}}
- ├───expanded: $address_data
- ╰─────result: usery
- ╰──(tainted)
- ╭considering: usery}{*}{:}}
- ├───────text: usery
- ├considering: }{*}{:}}
- ├───expanded: usery
- ╰─────result: usery
+ cond: eq
+ ╭considering: $address_data}{usery}{*}{:}}
+ ├──────value: usery
+ ╰──(tainted)
+ ├considering: }{usery}{*}{:}}
+ ├───expanded: $address_data
+ ╰─────result: usery
+ ╰──(tainted)
+ ╭considering: usery}{*}{:}}
+ ├───────text: usery
+ ├considering: }{*}{:}}
+ ├───expanded: usery
+ ╰─────result: usery
├──condition: eq░{$address_data}{usery}
├─────result: true
╭considering: *}{:}}
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_rcvhost
├─────result: false
╭───scanning: from░$sender_rcvhost↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_ident
├─────result: true
╭considering: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_helo_name
├─────result: true
╭considering: (helo=$sender_helo_name)↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:received_protocol
├─────result: true
╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:tls_in_cipher_std
├─────result: false
╭───scanning: ░tls░$tls_in_cipher_std↩
├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_address
├─────result: true
╭considering: (envelope-from░<$sender_address>)↩
├──────value: 10HmaZ-000000005vi-0000
├considering: ${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:received_for
├─────result: true
╭considering: ↩
try option acl_smtp_mail
try option acl_smtp_rcpt
╭considering: ${if░eq░{SERVER}{server}{queue}{cutthrough}}
- ╭considering: SERVER}{server}{queue}{cutthrough}}
- ├───────text: SERVER
- ├considering: }{server}{queue}{cutthrough}}
- ├───expanded: SERVER
- ╰─────result: SERVER
- ╭considering: server}{queue}{cutthrough}}
- ├───────text: server
- ├considering: }{queue}{cutthrough}}
- ├───expanded: server
- ╰─────result: server
+ cond: eq
+ ╭considering: SERVER}{server}{queue}{cutthrough}}
+ ├───────text: SERVER
+ ├considering: }{server}{queue}{cutthrough}}
+ ├───expanded: SERVER
+ ╰─────result: SERVER
+ ╭considering: server}{queue}{cutthrough}}
+ ├───────text: server
+ ├considering: }{queue}{cutthrough}}
+ ├───expanded: server
+ ╰─────result: server
├──condition: eq░{SERVER}{server}
├─────result: false
╭───scanning: queue}{cutthrough}}
250 HELP
try option host_name_extract
╭considering: ${if░and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ╭considering: $host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├──────value: 127.0.0.1
- ├considering: }{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: $host
- ╰─────result: 127.0.0.1
- ╭considering: .outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───────text: .outlook.com
- ├considering: \$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├backslashed: '\$'
- ├considering: }}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: .outlook.com\$
- ╰─────result: .outlook.com$
- ╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├──────value:
- ├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: $item
- ├─────result: ◀skipped▶
- ╰───skipping: result is not used
- ╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
- ├──protected: ^250-([\w.]+)\s
- ├───scanning: }}}░{$1}}
- ├───expanded: \N^250-([\w.]+)\s\N
- ├─────result: ◀skipped▶
- ╰───skipping: result is not used
+ cond: and
+ cond: match
+ ╎╭considering: $host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──────value: 127.0.0.1
+ ╎├considering: }{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: $host
+ ╎╰─────result: 127.0.0.1
+ ╎╭considering: .outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───────text: .outlook.com
+ ╎├considering: \$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├backslashed: '\$'
+ ╎├considering: }}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: .outlook.com\$
+ ╎╰─────result: .outlook.com$
+ cond: match
+ ╎╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──────value:
+ ╎├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: $item
+ ╎├─────result: ◀skipped▶
+ ╎╰───skipping: result is not used
+ ╎╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──protected: ^250-([\w.]+)\s
+ ╎├───scanning: }}}░{$1}}
+ ╎├───expanded: \N^250-([\w.]+)\s\N
+ ╎├─────result: ◀skipped▶
+ ╎╰───skipping: result is not used
├──condition: and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}
├─────result: false
╭───scanning: $1}}
├───expanded: ${if░and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
╰─────result:
╭considering: ${if░eq░{$address_data}{usery}{*}{:}}
- ╭considering: $address_data}{usery}{*}{:}}
- ├──────value: usery
- ╰──(tainted)
- ├considering: }{usery}{*}{:}}
- ├───expanded: $address_data
- ╰─────result: usery
- ╰──(tainted)
- ╭considering: usery}{*}{:}}
- ├───────text: usery
- ├considering: }{*}{:}}
- ├───expanded: usery
- ╰─────result: usery
+ cond: eq
+ ╭considering: $address_data}{usery}{*}{:}}
+ ├──────value: usery
+ ╰──(tainted)
+ ├considering: }{usery}{*}{:}}
+ ├───expanded: $address_data
+ ╰─────result: usery
+ ╰──(tainted)
+ ╭considering: usery}{*}{:}}
+ ├───────text: usery
+ ├considering: }{*}{:}}
+ ├───expanded: usery
+ ╰─────result: usery
├──condition: eq░{$address_data}{usery}
├─────result: true
╭considering: *}{:}}
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_rcvhost
├─────result: false
╭───scanning: from░$sender_rcvhost↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_ident
├─────result: true
╭considering: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_helo_name
├─────result: true
╭considering: (helo=$sender_helo_name)↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:received_protocol
├─────result: true
╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:tls_in_cipher_std
├─────result: false
╭───scanning: ░tls░$tls_in_cipher_std↩
├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_address
├─────result: true
╭considering: (envelope-from░<$sender_address>)↩
├──────value: 10HmbB-000000005vi-0000
├considering: ${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:received_for
├─────result: true
╭considering: ↩
try option acl_smtp_mail
try option acl_smtp_rcpt
╭considering: ${if░eq░{SERVER}{server}{queue}{cutthrough}}
- ╭considering: SERVER}{server}{queue}{cutthrough}}
- ├───────text: SERVER
- ├considering: }{server}{queue}{cutthrough}}
- ├───expanded: SERVER
- ╰─────result: SERVER
- ╭considering: server}{queue}{cutthrough}}
- ├───────text: server
- ├considering: }{queue}{cutthrough}}
- ├───expanded: server
- ╰─────result: server
+ cond: eq
+ ╭considering: SERVER}{server}{queue}{cutthrough}}
+ ├───────text: SERVER
+ ├considering: }{server}{queue}{cutthrough}}
+ ├───expanded: SERVER
+ ╰─────result: SERVER
+ ╭considering: server}{queue}{cutthrough}}
+ ├───────text: server
+ ├considering: }{queue}{cutthrough}}
+ ├───expanded: server
+ ╰─────result: server
├──condition: eq░{SERVER}{server}
├─────result: false
╭───scanning: queue}{cutthrough}}
250 HELP
try option host_name_extract
╭considering: ${if░and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ╭considering: $host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├──────value: 127.0.0.1
- ├considering: }{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: $host
- ╰─────result: 127.0.0.1
- ╭considering: .outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───────text: .outlook.com
- ├considering: \$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├backslashed: '\$'
- ├considering: }}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: .outlook.com\$
- ╰─────result: .outlook.com$
- ╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├──────value:
- ├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: $item
- ├─────result: ◀skipped▶
- ╰───skipping: result is not used
- ╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
- ├──protected: ^250-([\w.]+)\s
- ├───scanning: }}}░{$1}}
- ├───expanded: \N^250-([\w.]+)\s\N
- ├─────result: ◀skipped▶
- ╰───skipping: result is not used
+ cond: and
+ cond: match
+ ╎╭considering: $host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──────value: 127.0.0.1
+ ╎├considering: }{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: $host
+ ╎╰─────result: 127.0.0.1
+ ╎╭considering: .outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───────text: .outlook.com
+ ╎├considering: \$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├backslashed: '\$'
+ ╎├considering: }}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: .outlook.com\$
+ ╎╰─────result: .outlook.com$
+ cond: match
+ ╎╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──────value:
+ ╎├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: $item
+ ╎├─────result: ◀skipped▶
+ ╎╰───skipping: result is not used
+ ╎╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──protected: ^250-([\w.]+)\s
+ ╎├───scanning: }}}░{$1}}
+ ╎├───expanded: \N^250-([\w.]+)\s\N
+ ╎├─────result: ◀skipped▶
+ ╎╰───skipping: result is not used
├──condition: and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}
├─────result: false
╭───scanning: $1}}
├───expanded: ${if░and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
╰─────result:
╭considering: ${if░eq░{$address_data}{usery}{*}{:}}
- ╭considering: $address_data}{usery}{*}{:}}
- ├──────value: userx
- ╰──(tainted)
- ├considering: }{usery}{*}{:}}
- ├───expanded: $address_data
- ╰─────result: userx
- ╰──(tainted)
- ╭considering: usery}{*}{:}}
- ├───────text: usery
- ├considering: }{*}{:}}
- ├───expanded: usery
- ╰─────result: usery
+ cond: eq
+ ╭considering: $address_data}{usery}{*}{:}}
+ ├──────value: userx
+ ╰──(tainted)
+ ├considering: }{usery}{*}{:}}
+ ├───expanded: $address_data
+ ╰─────result: userx
+ ╰──(tainted)
+ ╭considering: usery}{*}{:}}
+ ├───────text: usery
+ ├considering: }{*}{:}}
+ ├───expanded: usery
+ ╰─────result: usery
├──condition: eq░{$address_data}{usery}
├─────result: false
╭───scanning: *}{:}}
list element:
127.0.0.1 in hosts_avoid_tls? no (end of list)
╭considering: ${if░eq░{$address_data}{userz}{*}{:}}
- ╭considering: $address_data}{userz}{*}{:}}
- ├──────value: userx
- ╰──(tainted)
- ├considering: }{userz}{*}{:}}
- ├───expanded: $address_data
- ╰─────result: userx
- ╰──(tainted)
- ╭considering: userz}{*}{:}}
- ├───────text: userz
- ├considering: }{*}{:}}
- ├───expanded: userz
- ╰─────result: userz
+ cond: eq
+ ╭considering: $address_data}{userz}{*}{:}}
+ ├──────value: userx
+ ╰──(tainted)
+ ├considering: }{userz}{*}{:}}
+ ├───expanded: $address_data
+ ╰─────result: userx
+ ╰──(tainted)
+ ╭considering: userz}{*}{:}}
+ ├───────text: userz
+ ├considering: }{*}{:}}
+ ├───expanded: userz
+ ╰─────result: userz
├──condition: eq░{$address_data}{userz}
├─────result: false
╭───scanning: *}{:}}
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_rcvhost
├─────result: false
╭───scanning: from░$sender_rcvhost↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_ident
├─────result: true
╭considering: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_helo_name
├─────result: true
╭considering: (helo=$sender_helo_name)↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:received_protocol
├─────result: true
╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:tls_in_cipher_std
├─────result: false
╭───scanning: ░tls░$tls_in_cipher_std↩
├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_address
├─────result: true
╭considering: (envelope-from░<$sender_address>)↩
├──────value: 10HmaX-000000005vi-0000
├considering: ${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:received_for
├─────result: true
╭considering: ↩
try option acl_smtp_mail
try option acl_smtp_rcpt
╭considering: ${if░eq░{SERVER}{server}{queue}{cutthrough}}
- ╭considering: SERVER}{server}{queue}{cutthrough}}
- ├───────text: SERVER
- ├considering: }{server}{queue}{cutthrough}}
- ├───expanded: SERVER
- ╰─────result: SERVER
- ╭considering: server}{queue}{cutthrough}}
- ├───────text: server
- ├considering: }{queue}{cutthrough}}
- ├───expanded: server
- ╰─────result: server
+ cond: eq
+ ╭considering: SERVER}{server}{queue}{cutthrough}}
+ ├───────text: SERVER
+ ├considering: }{server}{queue}{cutthrough}}
+ ├───expanded: SERVER
+ ╰─────result: SERVER
+ ╭considering: server}{queue}{cutthrough}}
+ ├───────text: server
+ ├considering: }{queue}{cutthrough}}
+ ├───expanded: server
+ ╰─────result: server
├──condition: eq░{SERVER}{server}
├─────result: false
╭───scanning: queue}{cutthrough}}
250 HELP
try option host_name_extract
╭considering: ${if░and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ╭considering: $host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├──────value: 127.0.0.1
- ├considering: }{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: $host
- ╰─────result: 127.0.0.1
- ╭considering: .outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───────text: .outlook.com
- ├considering: \$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├backslashed: '\$'
- ├considering: }}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: .outlook.com\$
- ╰─────result: .outlook.com$
- ╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├──────value:
- ├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: $item
- ├─────result: ◀skipped▶
- ╰───skipping: result is not used
- ╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
- ├──protected: ^250-([\w.]+)\s
- ├───scanning: }}}░{$1}}
- ├───expanded: \N^250-([\w.]+)\s\N
- ├─────result: ◀skipped▶
- ╰───skipping: result is not used
+ cond: and
+ cond: match
+ ╎╭considering: $host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──────value: 127.0.0.1
+ ╎├considering: }{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: $host
+ ╎╰─────result: 127.0.0.1
+ ╎╭considering: .outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───────text: .outlook.com
+ ╎├considering: \$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├backslashed: '\$'
+ ╎├considering: }}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: .outlook.com\$
+ ╎╰─────result: .outlook.com$
+ cond: match
+ ╎╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──────value:
+ ╎├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: $item
+ ╎├─────result: ◀skipped▶
+ ╎╰───skipping: result is not used
+ ╎╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──protected: ^250-([\w.]+)\s
+ ╎├───scanning: }}}░{$1}}
+ ╎├───expanded: \N^250-([\w.]+)\s\N
+ ╎├─────result: ◀skipped▶
+ ╎╰───skipping: result is not used
├──condition: and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}
├─────result: false
╭───scanning: $1}}
├───expanded: ${if░and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
╰─────result:
╭considering: ${if░eq░{$address_data}{usery}{*}{:}}
- ╭considering: $address_data}{usery}{*}{:}}
- ├──────value: usery
- ╰──(tainted)
- ├considering: }{usery}{*}{:}}
- ├───expanded: $address_data
- ╰─────result: usery
- ╰──(tainted)
- ╭considering: usery}{*}{:}}
- ├───────text: usery
- ├considering: }{*}{:}}
- ├───expanded: usery
- ╰─────result: usery
+ cond: eq
+ ╭considering: $address_data}{usery}{*}{:}}
+ ├──────value: usery
+ ╰──(tainted)
+ ├considering: }{usery}{*}{:}}
+ ├───expanded: $address_data
+ ╰─────result: usery
+ ╰──(tainted)
+ ╭considering: usery}{*}{:}}
+ ├───────text: usery
+ ├considering: }{*}{:}}
+ ├───expanded: usery
+ ╰─────result: usery
├──condition: eq░{$address_data}{usery}
├─────result: true
╭considering: *}{:}}
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_rcvhost
├─────result: false
╭───scanning: from░$sender_rcvhost↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_ident
├─────result: true
╭considering: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_helo_name
├─────result: true
╭considering: (helo=$sender_helo_name)↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:received_protocol
├─────result: true
╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:tls_in_cipher_std
├─────result: false
╭───scanning: ░tls░$tls_in_cipher_std↩
├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_address
├─────result: true
╭considering: (envelope-from░<$sender_address>)↩
├──────value: 10HmaZ-000000005vi-0000
├considering: ${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:received_for
├─────result: true
╭considering: ↩
try option acl_smtp_mail
try option acl_smtp_rcpt
╭considering: ${if░eq░{SERVER}{server}{queue}{cutthrough}}
- ╭considering: SERVER}{server}{queue}{cutthrough}}
- ├───────text: SERVER
- ├considering: }{server}{queue}{cutthrough}}
- ├───expanded: SERVER
- ╰─────result: SERVER
- ╭considering: server}{queue}{cutthrough}}
- ├───────text: server
- ├considering: }{queue}{cutthrough}}
- ├───expanded: server
- ╰─────result: server
+ cond: eq
+ ╭considering: SERVER}{server}{queue}{cutthrough}}
+ ├───────text: SERVER
+ ├considering: }{server}{queue}{cutthrough}}
+ ├───expanded: SERVER
+ ╰─────result: SERVER
+ ╭considering: server}{queue}{cutthrough}}
+ ├───────text: server
+ ├considering: }{queue}{cutthrough}}
+ ├───expanded: server
+ ╰─────result: server
├──condition: eq░{SERVER}{server}
├─────result: false
╭───scanning: queue}{cutthrough}}
250 HELP
try option host_name_extract
╭considering: ${if░and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ╭considering: $host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├──────value: 127.0.0.1
- ├considering: }{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: $host
- ╰─────result: 127.0.0.1
- ╭considering: .outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───────text: .outlook.com
- ├considering: \$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├backslashed: '\$'
- ├considering: }}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: .outlook.com\$
- ╰─────result: .outlook.com$
- ╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├──────value:
- ├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
- ├───expanded: $item
- ├─────result: ◀skipped▶
- ╰───skipping: result is not used
- ╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
- ├──protected: ^250-([\w.]+)\s
- ├───scanning: }}}░{$1}}
- ├───expanded: \N^250-([\w.]+)\s\N
- ├─────result: ◀skipped▶
- ╰───skipping: result is not used
+ cond: and
+ cond: match
+ ╎╭considering: $host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──────value: 127.0.0.1
+ ╎├considering: }{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: $host
+ ╎╰─────result: 127.0.0.1
+ ╎╭considering: .outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───────text: .outlook.com
+ ╎├considering: \$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├backslashed: '\$'
+ ╎├considering: }}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: .outlook.com\$
+ ╎╰─────result: .outlook.com$
+ cond: match
+ ╎╭───scanning: $item}{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──────value:
+ ╎├───scanning: }{\N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├───expanded: $item
+ ╎├─────result: ◀skipped▶
+ ╎╰───skipping: result is not used
+ ╎╭───scanning: \N^250-([\w.]+)\s\N}}}░{$1}}
+ ╎├──protected: ^250-([\w.]+)\s
+ ╎├───scanning: }}}░{$1}}
+ ╎├───expanded: \N^250-([\w.]+)\s\N
+ ╎├─────result: ◀skipped▶
+ ╎╰───skipping: result is not used
├──condition: and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}
├─────result: false
╭───scanning: $1}}
├───expanded: ${if░and░{{match{$host}{.outlook.com\$}}░{match{$item}{\N^250-([\w.]+)\s\N}}}░{$1}}
╰─────result:
╭considering: ${if░eq░{$address_data}{usery}{*}{:}}
- ╭considering: $address_data}{usery}{*}{:}}
- ├──────value: usery
- ╰──(tainted)
- ├considering: }{usery}{*}{:}}
- ├───expanded: $address_data
- ╰─────result: usery
- ╰──(tainted)
- ╭considering: usery}{*}{:}}
- ├───────text: usery
- ├considering: }{*}{:}}
- ├───expanded: usery
- ╰─────result: usery
+ cond: eq
+ ╭considering: $address_data}{usery}{*}{:}}
+ ├──────value: usery
+ ╰──(tainted)
+ ├considering: }{usery}{*}{:}}
+ ├───expanded: $address_data
+ ╰─────result: usery
+ ╰──(tainted)
+ ╭considering: usery}{*}{:}}
+ ├───────text: usery
+ ├considering: }{*}{:}}
+ ├───expanded: usery
+ ╰─────result: usery
├──condition: eq░{$address_data}{usery}
├─────result: true
╭considering: *}{:}}
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_rcvhost
├─────result: false
╭───scanning: from░$sender_rcvhost↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_ident
├─────result: true
╭considering: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_helo_name
├─────result: true
╭considering: (helo=$sender_helo_name)↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:received_protocol
├─────result: true
╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:tls_in_cipher_std
├─────result: false
╭───scanning: ░tls░$tls_in_cipher_std↩
├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
␉}}id░$message_exim_id${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:sender_address
├─────result: true
╭considering: (envelope-from░<$sender_address>)↩
├──────value: 10HmbB-000000005vi-0000
├considering: ${if░def:received_for░{↩
␉for░$received_for}}
+ cond: def
├──condition: def:received_for
├─────result: true
╭considering: ↩