/* 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 **);
/* 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)
{
{
/* 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;
}
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 */
(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;
}
*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:
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
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;
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);
}
}
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;
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;
}
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
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;
}
{
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;
}
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
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;
}
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;
}
}
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;
/* 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)
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
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;
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");
}
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;
}
}
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);
}
HDEBUG(D_acl)
- debug_printf("udpsend %d bytes\n", r);
+ debug_printf_indent("udpsend %d bytes\n", r);
return OK;
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;
}
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);
"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 "
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;
}
{
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
}
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
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
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)
*/
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;
/* 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,
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 == '/')
(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);
}
}
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;
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)
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;
}
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;
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;
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;
}
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;
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;
}
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;
}
/* 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:
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;
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];
{
address_item adb;
address_item *addr = NULL;
+int rc;
*user_msgptr = *log_msgptr = NULL;
sender_verified_failed = NULL;
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;
}
}
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,
}
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;
*************************************************/
/* 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.
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, ...)
{
}
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"<none>",
acl_narg>1 ? " +more" : "");
{
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
{
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
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 */
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",
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);
}
}
DEBUG(D_expand)
- debug_printf("considering %s: %s\n", ourname, len ? t : US"<empty>");
+ debug_printf_indent("considering %s: %s\n", ourname, len ? t : US"<empty>");
/* 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. */
"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;
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);
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"";
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;
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;
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);
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)
{
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
}
}
- 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);
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)
{
{
*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)
{
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 */
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;
/* 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",
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)
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;
}
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
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;
}
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;
}
}
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);
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);
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;
"\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;
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 */
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 */
}
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;
}
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;
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)
{
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 */
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 */
{
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 */
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);
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));
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 */
/* 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 */
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
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
* 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);
chunks, <n> 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);
/* 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);
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';
*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)
{
/* 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
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)
{
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:
/* 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;
}
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 == '"')
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;
}
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;
}
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 ; */
{
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
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"<NULL>", 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);
? 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);
{
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);
}
(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 =
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))
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;
)
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;
{
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
)
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;
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);
}
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)
{
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)
{
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:
}
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:
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:
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");
}
{
(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;
}
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. */
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 &&
{
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));
}
{
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");
{
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
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;
}
#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 */
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);
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;
}
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)
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;
}
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
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
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
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);
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;
{
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 (;;)
{
|| 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)
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);
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);
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);
HDEBUG(D_transport|D_acl|D_v)
{
int i;
- debug_printf(" SOCKS>>");
+ debug_printf_indent(" SOCKS>>");
for (i = 0; i<len; i++) debug_printf(" %02x", s[i]);
debug_printf("\n");
}
)
return FAIL;
HDEBUG(D_transport|D_acl|D_v)
- debug_printf(" SOCKS<< %02x %02x\n", s[0], s[1]);
+ debug_printf_indent(" SOCKS<< %02x %02x\n", s[0], s[1]);
if (s[0] == AUTH_NAME_VER && s[1] == 0)
{
- HDEBUG(D_transport|D_acl|D_v) debug_printf(" socks auth OK\n");
+ HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" socks auth OK\n");
return OK;
}
if ((idx = socks_get_proxy(proxies, nproxies)) < 0)
{
- HDEBUG(D_transport|D_acl|D_v) debug_printf(" no proxies left\n");
+ HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" no proxies left\n");
errno = EBUSY;
return -1;
}
/* Send method-selection */
state = US"method select";
-HDEBUG(D_transport|D_acl|D_v) debug_printf(" SOCKS>> 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;
)
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
)
HDEBUG(D_transport|D_acl|D_v)
{
int i;
- debug_printf(" SOCKS>>");
+ debug_printf_indent(" SOCKS>>");
for (i = 0; i<size; i++) debug_printf(" %02x", buf[i]);
debug_printf("\n");
}
HDEBUG(D_transport|D_acl|D_v)
{
int i;
- debug_printf(" SOCKS>>");
+ debug_printf_indent(" SOCKS>>");
for (i = 0; i<size; i++) debug_printf(" %02x", buf[i]);
debug_printf("\n");
}
proxy_session = TRUE;
HDEBUG(D_transport|D_acl|D_v)
- debug_printf(" proxy farside: [%s]:%d\n", proxy_external_address, proxy_external_port);
+ debug_printf_indent(" proxy farside: [%s]:%d\n", proxy_external_address, proxy_external_port);
return fd;
snd_err:
- HDEBUG(D_transport|D_acl|D_v) debug_printf(" proxy snd_err %s: %s\n", state, strerror(errno));
+ HDEBUG(D_transport|D_acl|D_v) debug_printf_indent(" proxy snd_err %s: %s\n", state, strerror(errno));
return -1;
proxy_err:
struct socks_err * se =
buf[1] > 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;
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
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,
&& !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;
#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
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,
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;
}
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;
}
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();
/* 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;
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;
}
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();
#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;
}
{
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)
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
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
>>> 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=<x@y> rejected RCPT <nested_drop@y>: forcibly dropped
>>> 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=<x@y> rejected RCPT <nested_drop_require@y>: forcibly dropped
>>> 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"
>>> 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=<x@y> rejected RCPT <x@y>: 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=<x@y> temporarily rejected RCPT <x@y>: ACL nested too deep: possible loop
>>> host in hosts_connection_nolog? no (option unset)
>>> 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=<x@y> rejected RCPT <x1@y>
>>> 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=<x@y> rejected RCPT <x2@y>
>>> 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=<x@y> rejected RCPT <a@b>
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
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 <CALLER@test.ex>)
+ \_____result: (envelope-from <CALLER@test.ex>)
- 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 <CALLER@test.ex>)
id 10HmaX-0005vi-00
>>Generated Received: header line
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
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
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
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
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
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
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 <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
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
home=/non-exist/CALLER 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
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
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 usery <usery@test.ex> transport=t1
uid=CALLER_UID gid=CALLER_GID pid=pppp
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 <userz@test.ex> transport=t2
uid=CALLER_UID gid=CALLER_GID pid=pppp
>>> 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)
>>> 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)
>>> 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=<asender@a.domain>
LOG: authenticated_sender=<asender@a.domain>
->>> 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
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 <CALLER@test.ex>)
+ \_____result: (envelope-from <CALLER@test.ex>)
- 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 <CALLER@test.ex>)
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
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 ....
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 >>>>>>>>>>>>>>>>
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
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"
----------- 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
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
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 <CALLER@myhost.test.ex>)
+ \_____result: (envelope-from <CALLER@myhost.test.ex>)
- 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 <CALLER@myhost.test.ex>)
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
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"
----------- 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
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
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 <CALLER@myhost.test.ex>)
+ |_____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 <CALLER@myhost.test.ex>)
+
+ |__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 <CALLER@myhost.test.ex>)
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
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"
----------- 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
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
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 <CALLER@myhost.test.ex>)
+ \_____result: (envelope-from <CALLER@myhost.test.ex>)
- 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 <CALLER@myhost.test.ex>)
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
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"
----------- 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
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
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 <CALLER@myhost.test.ex>)
+ \_____result: (envelope-from <CALLER@myhost.test.ex>)
- 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 <CALLER@myhost.test.ex>)
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
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"
----------- 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
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
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 <CALLER@myhost.test.ex>)
+ |_____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 <CALLER@myhost.test.ex>)
+
+ |__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 <CALLER@myhost.test.ex>)
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
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"
----------- 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
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
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 <CALLER@myhost.test.ex>)
+ \_____result: (envelope-from <CALLER@myhost.test.ex>)
- 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 <CALLER@myhost.test.ex>)
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
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