messages were created as a result.
Find and debug help by Mateusz Krawczyk
+JH/28 Bug 3086: Fix exinext for ipv6. Change the format of keys in the retry
+ DB, wrapping transport record bare-ip "host names" and ipv6
+ "host addresses" in square-brackets. This makes the parsing that
+ exinext does more reliable.
+
Exim version 4.97
-----------------
previously_transported(address_item *addr, BOOL testing)
{
uschar * s = string_sprintf("%s/%s",
- addr->unique + (testflag(addr, af_homonym)? 3:0), addr->transport->name);
+ addr->unique + (testflag(addr, af_homonym) ? 3:0), addr->transport->name);
if (tree_search(tree_nonrecipients, s) != 0)
{
if (result == DEFER || testflag(addr2, af_lt_retry_exists))
{
int flags = result == DEFER ? 0 : rf_delete;
- uschar *retry_key = string_copy(tp->retry_use_local_part
+ uschar * retry_key = string_copy(tp->retry_use_local_part
? addr2->address_retry_key : addr2->domain_retry_key);
*retry_key = 'T';
retry_add_item(addr2, retry_key, flags);
addr->unique =
string_sprintf("%s:%s", addr->address, addr->parent->unique +
- (testflag(addr->parent, af_homonym)? 3:0));
+ (testflag(addr->parent, af_homonym) ? 3:0));
addr->address_retry_key = addr->domain_retry_key =
string_sprintf("T:%s", addr->unique);
else if (testflag(addr, af_dr_retry_exists))
{
- uschar *altkey = string_sprintf("%s:<%s>", addr->address_retry_key,
+ uschar * altkey = string_sprintf("%s:<%s>", addr->address_retry_key,
sender_address);
retry_add_item(addr, altkey, rf_delete);
retry_add_item(addr, addr->address_retry_key, rf_delete);
print_time(retry->first_failed));
printf("%s ", print_time(retry->last_try));
printf("%s %s\n", print_time(retry->next_try),
- (retry->expired)? "*" : "");
+ retry->expired ? "*" : "");
break;
case type_wait:
$printed = 1;
if (/^\s*T:[^:\s]*:/)
{
+ # We rely on non-space-containing strings, for parsing
+
($key,$error,$error2,$text) = /^\s*T:(\S+)\s+(\S+)\s+(\S+)\s*(.*)$/;
- # Parsing the keys is a nightmare because of IPv6. The design of the
- # format for the keys is a complete shambles. All my fault (PH). But
- # I don't want to change it just for this purpose. If they key
- # contains more than 3 colons, we have an IPv6 address, because
- # an IPv6 address must contain at least two colons.
-
- # Deal with IPv4 addresses (3 colons or fewer)
-
- if ($key !~ /:([^:]*?:){3}/)
- {
- ($host,$ip,$port,$msgid) = $key =~
- /^([^:]*):([^:]*)(?::([^:]*)(?::(\S*)|)|)/;
- }
-
- # Deal with IPv6 addresses; sorting out the colons is a complete
- # mess. We should be able to find the host name and IP address from
- # further in the message. That seems the easiest escape plan here. We
- # can use those to match the rest of the key.
-
- else
- {
- ($host,$ip) = $text =~ /host\s(\S+)\s\[([^]]+)\]/;
- if (defined $host)
- {
- ($port,$msgid) = $key =~
- /^$host:$ip(?::([^:]*)(?::(\S*)|)|)/;
- }
-
- # This will probably be wrong...
-
- else
- {
- ($host,$ip) = $key =~ /([^:]*):(.*)/;
- }
- }
-
- printf("Transport: %s [%s]", $host, $ip);
+ ($host,$ip,$port,$msgid) = $key =~
+ /^([^:[]*|\[[^]]*\]) # host (could be an ip)
+ :([^:[]*|\[[^]]*\]) # ip
+ (?::(\d{1,5}))? # maybe port
+ (?::(\S{23}))? # maybe msgid
+ $/x;
+
+ printf("Transport: %s %s", $host, $ip);
print ":$port" if defined $port;
print " $msgid" if defined $msgid;
print " error $error: $text\n";
extern const pcre2_code *regex_compile(const uschar *, mcs_flags, uschar **,
pcre2_compile_context *);
extern const pcre2_code *regex_must_compile(const uschar *, mcs_flags, BOOL);
-extern void retry_add_item(address_item *, uschar *, int);
+
+extern void retry_add_item(address_item *, const uschar *, int);
extern BOOL retry_check_address(const uschar *, host_item *, uschar *, BOOL,
- uschar **, uschar **);
+ const uschar **, const uschar **);
extern retry_config *retry_find_config(const uschar *, const uschar *, int, int);
-extern BOOL retry_ultimate_address_timeout(uschar *, const uschar *,
+extern const uschar *retry_host_key_build(const host_item *, BOOL,
+ const uschar *);
+extern BOOL retry_ultimate_address_timeout(const uschar *, const uschar *,
dbdata_retry *, time_t);
extern void retry_update(address_item **, address_item **, address_item **);
extern const uschar *rewrite_address(const uschar *, BOOL, BOOL, rewrite_rule *, int);
*/
BOOL
-retry_ultimate_address_timeout(uschar *retry_key, const uschar *domain,
+retry_ultimate_address_timeout(const uschar * retry_key, const uschar *domain,
dbdata_retry *retry_record, time_t now)
{
BOOL address_timeout;
+const uschar *
+retry_host_key_build(const host_item * host, BOOL incl_ip,
+ const uschar * portstring)
+{
+const uschar * s = host->name;
+gstring * g = string_is_ip_address(s, NULL)
+ ? string_fmt_append(NULL, "T:[%s]", s) /* wrap a name which is a bare ip */
+ : string_fmt_append(NULL, "T:%s", s);
+
+s = host->address;
+if (incl_ip)
+ g = Ustrchr(s, ':')
+ ? string_fmt_append(g, ":[%s]", s) /* wrap an ipv6 */
+ : string_fmt_append(g, ":%s", s);
+
+if (portstring)
+ g = string_cat(g, portstring);
+
+gstring_release_unused(g);
+return string_from_gstring(g);
+}
+
+
/*************************************************
* Set status of a host+address item *
*************************************************/
BOOL
retry_check_address(const uschar *domain, host_item *host, uschar *portstring,
- BOOL include_ip_address, uschar **retry_host_key, uschar **retry_message_key)
+ BOOL include_ip_address,
+ const uschar **retry_host_key, const uschar **retry_message_key)
{
BOOL yield = FALSE;
time_t now = time(NULL);
-uschar * host_key, * message_key;
+const uschar * host_key, * message_key;
open_db dbblock, * dbm_file;
tree_node * node;
dbdata_retry * host_retry_record, * message_retry_record;
host->status = hstatus_usable;
/* Generate the host key for the unusable tree and the retry database. Ensure
-host names are lower cased (that's what %S does). */
-
-host_key = include_ip_address
- ? string_sprintf("T:%S:%s%s", host->name, host->address, portstring)
- : string_sprintf("T:%S%s", host->name, portstring);
-
-/* Generate the message-specific key */
+host names are lower cased (that's what %S does).
+Generate the message-specific key too.
+Be sure to maintain lack-of-spaces in retry keys; exinext depends on it. */
+host_key = retry_host_key_build(host, include_ip_address, portstring);
message_key = string_sprintf("%s:%s", host_key, message_id);
/* Search the tree of unusable IP addresses. This is filled in when deliveries
*/
void
-retry_add_item(address_item *addr, uschar *key, int flags)
+retry_add_item(address_item * addr, const uschar * key, int flags)
{
retry_item * rti = store_get(sizeof(retry_item), GET_UNTAINTED);
host_item * host = addr->host_used;
*/
retry_config *
-retry_find_config(const uschar *key, const uschar *alternate, int basic_errno,
+retry_find_config(const uschar * key, const uschar * alternate, int basic_errno,
int more_errno)
{
-const uschar *colon = Ustrchr(key, ':');
-retry_config *yield;
+const uschar * colon = Ustrchr(key, ':');
+retry_config * yield;
/* If there's a colon in the key, there are two possibilities:
hostname:ip+port
- In this case, we copy the host name.
+ In this case, we copy the host name (which could be an [ip], including
+ being an [ipv6], and we drop the []).
(2) This is a key for a pipe, file, or autoreply delivery, in the format
if (colon)
key = isalnum(*key)
? string_copyn(key, colon-key) /* the hostname */
+ : *key == '['
+ ? string_copyn(key+1, Ustrchr(key, ']')-1-key) /* the ip */
: Ustrrchr(key, ':') + 1; /* Take from the last colon */
/* Sort out the keys */
}
/* End of retry.c */
+/* vi: aw ai sw=2
+*/
}
/* If a width is not specified and the precision is specified, set
- the width to the precision, or the string length if shorted. */
+ the width to the precision, or the string length if shorter. */
else if (precision >= 0)
width = precision < slen ? precision : slen;
typedef struct retry_item {
struct retry_item *next; /* for chaining */
- uschar *key; /* string identifying host/address/message */
+ const uschar *key; /* string identifying host/address/message */
int basic_errno; /* error code for this destination */
int more_errno; /* additional error information */
uschar *message; /* local error message */
if (testflag(addr, af_dr_retry_exists))
{
- uschar *altkey = string_sprintf("%s:<%s>", addr->address_retry_key,
+ uschar * altkey = string_sprintf("%s:<%s>", addr->address_retry_key,
sender_address);
retry_add_item(addr, altkey, rf_delete);
retry_add_item(addr, addr->address_retry_key, rf_delete);
else if (errno == ETIMEDOUT)
{
- uschar *message = string_sprintf("SMTP timeout after RCPT TO:<%s>",
+ uschar * message = string_sprintf("SMTP timeout after RCPT TO:<%s>",
transport_rcpt_address(addr, sx->conn_args.tblock->rcpt_include_affixes));
set_errno_nohost(sx->first_addr, ETIMEDOUT, message, DEFER, FALSE, &sx->delivery_start);
retry_add_item(addr, addr->address_retry_key, 0);
BOOL host_is_expired = FALSE, message_defer = FALSE, some_deferred = FALSE;
address_item * first_addr = NULL;
uschar * interface = NULL;
- uschar * retry_host_key = NULL, * retry_message_key = NULL;
+ const uschar * retry_host_key = NULL, * retry_message_key = NULL;
uschar * serialize_key = NULL;
/* Deal slightly better with a possible Linux kernel bug that results
ob->expand_retry_include_ip_address, &incl_ip) != OK)
incl_ip = TRUE; /* error; use most-specific retry record */
- retry_host_key = incl_ip
- ? string_sprintf("T:%S:%s%s", host->name, host->address, pistring)
- : string_sprintf("T:%S%s", host->name, pistring);
+ retry_host_key = retry_host_key_build(host, incl_ip, pistring);
}
/* If a delivery of another message over an existing SMTP connection
ob->expand_retry_include_ip_address, &incl_ip) != OK)
incl_ip = TRUE; /* error; use most-specific retry record */
- retry_message_key = incl_ip
- ? string_sprintf("T:%S:%s%s:%s", host->name, host->address, pistring,
- message_id)
- : string_sprintf("T:%S%s:%s", host->name, pistring, message_id);
+ retry_message_key = string_sprintf("%s:%s",
+ retry_host_key_build(host, incl_ip, pistring), message_id);
}
retry_add_item(addrlist, retry_message_key,
rf_message | rf_host | delete_flag);
+#ifndef COMPILE_UTILITY
/*************************************************
* Add entry to unusable addresses tree *
*************************************************/
*/
void
-tree_add_unusable(const host_item *h)
+tree_add_unusable(const host_item * h)
{
rmark rpoint = store_mark();
-tree_node *node;
-uschar s[256];
-sprintf(CS s, "T:%.200s:%s", h->name, h->address);
+tree_node * node;
+const uschar * s = retry_host_key_build(h, TRUE, NULL);
node = store_get(sizeof(tree_node) + Ustrlen(s),
is_tainted(h->name) || is_tainted(h->address) ? GET_TAINTED : GET_UNTAINTED);
Ustrcpy(node->name, s);
if (h->status == hstatus_unusable_expired) node->data.val += 256;
if (!tree_insertnode(&tree_unusable, node)) store_reset(rpoint);
}
-
+#endif
/*************************************************
s/T:(\S+)\s-22\s(\S+)\s/T:$1 -22 xxxx /;
# port numbers in dumpdb output
- s/T:([a-z.]+(:[0-9.]+)?):$parm_port_n /T:$1:PORT_N /;
+ s/T:([a-z0-9.]+(:[0-9.]+|:\[[^]]+])?):$parm_port_n /T:$1:PORT_N /;
+ s/T:([a-z0-9.[\]]+(:[0-9.]+|:\[[^]]+])?):$parm_port_s /T:$1:PORT_S /;
+ # and exinext
+ s/Transport: (?:[a-z0-9.]+|\[[^\]]+]) (?:[0-9.]+|\[[^\]]+]):\K$parm_port_s /PORT_S /;
# port numbers in stderr
s/^set_process_info: .*\]:\K$parm_port_d /PORT_D /;
# This handles "connection from" and the like, when the port is given
if (!/listening for SMTP on/ && !/Connecting to/ && !/=>/ && !/->/
- && !/\*>/&& !/==/ && !/\*\*/ && !/Connection refused/ && !/in response to/)
+ && !/\*>/&& !/==/ && !/\*\*/ && !/Connection refused/ && !/in response to/
+ && !/T(?:ransport)?:/)
{
s/\[([a-z\d:]+|\d+(?:\.\d+){3})\]:(\d+)/"[".$1."]:".new_value($2,"%s",\$next_port)/ie;
}
LOG: MAIN
H=V4NET.0.0.0 [V4NET.0.0.0] Network Error
set_process_info: pppp delivering 10HmaX-000000005vi-0000: just tried V4NET.0.0.0 [V4NET.0.0.0]:PORT_S for x@y: result DEFER
-added retry item for T:V4NET.0.0.0:V4NET.0.0.0:PORT_S: errno=dd more_errno=dd,A flags=2
+added retry item for T:[V4NET.0.0.0]:V4NET.0.0.0:PORT_S: errno=dd more_errno=dd,A flags=2
set_process_info: pppp delivering 10HmaX-000000005vi-0000: waiting for a remote delivery subprocess to finish
set_process_info: pppp delivering 10HmaX-000000005vi-0000 (just run smtp for x@y in subprocess)
search_tidyup called
-reading retry information for T:V4NET.0.0.0:V4NET.0.0.0:PORT_S from subprocess
+reading retry information for T:[V4NET.0.0.0]:V4NET.0.0.0:PORT_S from subprocess
added retry item
reading retry information for R:x@y from subprocess
added retry item
list element: *
V4NET.0.0.0 in "*"? yes (matched "*")
*@V4NET.0.0.0 in "*"? yes (matched "*")
-retry for T:V4NET.0.0.0:V4NET.0.0.0:PORT_S (y) = * 0 0
- dbfn_read: key=T:V4NET.0.0.0:V4NET.0.0.0:PORT_S
+retry for T:[V4NET.0.0.0]:V4NET.0.0.0:PORT_S (y) = * 0 0
+ dbfn_read: key=T:[V4NET.0.0.0]:V4NET.0.0.0:PORT_S
failing_interval=ttt message_age=ttt
on queue longer than maximum retry
-Writing retry data for T:V4NET.0.0.0:V4NET.0.0.0:PORT_S
+Writing retry data for T:[V4NET.0.0.0]:V4NET.0.0.0:PORT_S
first failed=dddd last try=dddd next try=+0 expired=0
errno=dd more_errno=dd,A Network Error
- dbfn_write: key=T:V4NET.0.0.0:V4NET.0.0.0:PORT_S
+ dbfn_write: key=T:[V4NET.0.0.0]:V4NET.0.0.0:PORT_S
timed out: all retries expired
LOG: MAIN
** x@y: retry timeout exceeded
Connecting to 127.0.0.1 [127.0.0.1]:PORT_D ... failed: Connection refused
LOG: MAIN
H=127.0.0.1 [127.0.0.1] Connection refused
-added retry item for T:127.0.0.1:127.0.0.1:PORT_D: errno=dd more_errno=dd,A flags=2
+added retry item for T:[127.0.0.1]:127.0.0.1:PORT_D: errno=dd more_errno=dd,A flags=2
all IP addresses skipped or deferred at least one address
updating wait-t1 database
added 10HmaX-000000005vi-0000 to queue for 127.0.0.1
Connecting to 127.0.0.1 [127.0.0.1]:PORT_D2 ... failed: Connection refused
LOG: MAIN
H=127.0.0.1 [127.0.0.1] Connection refused
-added retry item for T:127.0.0.1:127.0.0.1:PORT_D2: errno=dd more_errno=dd,A flags=2
+added retry item for T:[127.0.0.1]:127.0.0.1:PORT_D2: errno=dd more_errno=dd,A flags=2
all IP addresses skipped or deferred at least one address
updating wait-t1 database
already listed for 127.0.0.1
LOG: MAIN
H=127.0.0.1 [127.0.0.1] Connection refused
set_process_info: pppp delivering 10HmaZ-000000005vi-0000: just tried 127.0.0.1 [127.0.0.1]:PORT_S for CALLER@the.local.host.name: result DEFER
-added retry item for T:127.0.0.1:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
+added retry item for T:[127.0.0.1]:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
all IP addresses skipped or deferred at least one address
updating wait-t1 database
added 10HmaZ-000000005vi-0000 to queue for 127.0.0.1
Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ... failed: Connection refused
LOG: MAIN
H=127.0.0.1 [127.0.0.1] Connection refused
-added retry item for T:127.0.0.1:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
+added retry item for T:[127.0.0.1]:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
temporary delivery error(s) override hosts_max_try (message older than host's retry time)
Clearing TFO as not first host for message
getting address for 127.0.0.1
Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ... failed: Connection refused
LOG: MAIN
H=127.0.0.1 [127.0.0.1] Connection refused
-added retry item for T:127.0.0.1:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
+added retry item for T:[127.0.0.1]:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
temporary delivery error(s) override hosts_max_try (message older than host's retry time)
Clearing TFO as not first host for message
getting address for 127.0.0.1
Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ... failed: Connection refused
LOG: MAIN
H=127.0.0.1 [127.0.0.1] Connection refused
-added retry item for T:127.0.0.1:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
+added retry item for T:[127.0.0.1]:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
temporary delivery error(s) override hosts_max_try (message older than host's retry time)
Clearing TFO as not first host for message
getting address for 127.0.0.1
Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ... failed: Connection refused
LOG: MAIN
H=127.0.0.1 [127.0.0.1] Connection refused
-added retry item for T:127.0.0.1:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
+added retry item for T:[127.0.0.1]:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
reached transport hosts_max_try limit 1
all IP addresses skipped or deferred at least one address
updating wait-t1 database
Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ... failed: Connection refused
LOG: MAIN
H=127.0.0.1 [127.0.0.1] Connection refused
-added retry item for T:127.0.0.1:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
+added retry item for T:[127.0.0.1]:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
temporary delivery error(s) override hosts_max_try (message older than host's retry time)
Clearing TFO as not first host for message
getting address for 127.0.0.1
Connecting to 127.0.0.1 [127.0.0.1]:PORT_S ... failed: Connection refused
LOG: MAIN
H=127.0.0.1 [127.0.0.1] Connection refused
-added retry item for T:127.0.0.1:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
+added retry item for T:[127.0.0.1]:127.0.0.1:PORT_S: errno=dd more_errno=dd,A flags=2
temporary delivery error(s) override hosts_max_try (message older than host's retry time)
reached transport hosts_max_try_hardlimit limit 2
all IP addresses skipped or deferred at least one address
SMTP<< 221 Closing connection
SMTP(close)>>
cmdlog: '220:EHLO:250-:MAIL|:RCPT|:DATA:250:250:300:.:QUIT+:451:221'
-added retry item for T:127.0.0.1:127.0.0.1:PORT_D:10HmaZ-000000005vi-0000: errno=-46 more_errno=dd,A flags=6
+added retry item for T:[127.0.0.1]:127.0.0.1:PORT_D:10HmaZ-000000005vi-0000: errno=-46 more_errno=dd,A flags=6
all IP addresses skipped or deferred at least one address
Leaving send_to_server transport
LOG: MAIN
SMTP(closed)<<
SMTP(close)>>
cmdlog: '220:EHLO:250-:MAIL|:RCPT|:DATA:250:250:300:.:QUIT+'
-added retry item for T:127.0.0.1:127.0.0.1:PORT_D:10HmbB-000000005vi-0000: errno=-18 more_errno=dd,A flags=6
+added retry item for T:[127.0.0.1]:127.0.0.1:PORT_D:10HmbB-000000005vi-0000: errno=-18 more_errno=dd,A flags=6
all IP addresses skipped or deferred at least one address
Leaving send_to_server transport
LOG: MAIN
SMTP<< 221 Closing connection
SMTP(close)>>
cmdlog: '220:EHLO:250-:MAIL|:RCPT|:BDAT+:QUIT+:250:250:451:221'
-added retry item for T:127.0.0.1:127.0.0.1:PORT_D:10HmaZ-000000005vi-0000: errno=-46 more_errno=dd,A flags=6
+added retry item for T:[127.0.0.1]:127.0.0.1:PORT_D:10HmaZ-000000005vi-0000: errno=-46 more_errno=dd,A flags=6
all IP addresses skipped or deferred at least one address
Leaving send_to_server transport
LOG: MAIN
SMTP(closed)<<
SMTP(close)>>
cmdlog: '220:EHLO:250-:MAIL|:RCPT|:BDAT+:QUIT+:250:250'
-added retry item for T:127.0.0.1:127.0.0.1:PORT_D:10HmbB-000000005vi-0000: errno=-18 more_errno=dd,A flags=6
+added retry item for T:[127.0.0.1]:127.0.0.1:PORT_D:10HmbB-000000005vi-0000: errno=-18 more_errno=dd,A flags=6
all IP addresses skipped or deferred at least one address
Leaving send_to_server transport
LOG: MAIN
+++++++++++++++++++++++++++
- T:127.0.0.1:127.0.0.1:1224 -19 65 H=127.0.0.1 [127.0.0.1]: Malformed SMTP reply in response to RCPT TO:<userx@domain1>: 550 The answer is no, but I am going to make sure it is a very l
+ T:[127.0.0.1]:127.0.0.1:PORT_S -19 65 H=127.0.0.1 [127.0.0.1]: Malformed SMTP reply in response to RCPT TO:<userx@domain1>: 550 The answer is no, but I am going to make sure it is a very l
first failed = time last try = time2 next try = time2 + 3600
******** SERVER ********
+++++++++++++++++++++++++++
- T:127.0.0.1:127.0.0.1:1223 dd 65 Connection refused
+ T:[127.0.0.1]:127.0.0.1:1223 dd 65 Connection refused
first failed = time last try = time2 next try = time2 + 600
+++++++++++++++++++++++++++
- T:127.0.0.1:127.0.0.1:1223 dd 65 Connection refused
+ T:[127.0.0.1]:127.0.0.1:1223 dd 65 Connection refused
first failed = time last try = time2 next try = time2 + 600
Retry rule: * timeout_A F,1d,30s;
Retry rule: * timeout_connect_A F,1d,29s;
+++++++++++++++++++++++++++
- T:127.0.0.1:127.0.0.1:1224 dd 321 Connection timed out
+ T:[127.0.0.1]:127.0.0.1:PORT_S dd 321 Connection timed out
first failed = time last try = time2 next try = time2 + 60
+++++++++++++++++++++++++++
- T:127.0.0.1:127.0.0.1:1224 dd 321 Connection timed out
+ T:[127.0.0.1]:127.0.0.1:PORT_S dd 321 Connection timed out
first failed = time last try = time2 next try = time2 + 30
+++++++++++++++++++++++++++
- T:127.0.0.1:127.0.0.1:1224 dd 321 Connection timed out
+ T:[127.0.0.1]:127.0.0.1:PORT_S dd 321 Connection timed out
first failed = time last try = time2 next try = time2 + 30
+++++++++++++++++++++++++++
R:xx.test.again.dns -1 0 host lookup did not complete
+++++++++++++++++++++++++++
- T:127.0.0.1:127.0.0.1:1225 dd 65 Connection refused
+ T:[127.0.0.1]:127.0.0.1:1225 dd 65 Connection refused
first failed = time last try = time2 next try = time2 + 600
- T:127.0.0.1:127.0.0.1:1226 dd 65 Connection refused
+ T:[127.0.0.1]:127.0.0.1:1226 dd 65 Connection refused
first failed = time last try = time2 next try = time2 + 600
+++++++++++++++++++++++++++
- T:127.0.0.1:127.0.0.1:1224:10HmaX-000000005vi-0000 0 65 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after end of data: 850 NONSENSE
+ T:[127.0.0.1]:127.0.0.1:1224:10HmaX-000000005vi-0000 0 65 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after end of data: 850 NONSENSE
first failed = time last try = time2 next try = time2 + 10
+++++++++++++++++++++++++++
- T:127.0.0.1:127.0.0.1:1224:10HmaX-000000005vi-0000 0 65 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: 850 RUBBISH
+ T:[127.0.0.1]:127.0.0.1:1224:10HmaX-000000005vi-0000 0 65 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: 850 RUBBISH
first failed = time last try = time2 next try = time2 + 10
+++++++++++++++++++++++++++
R:abcd@xyz:<CALLER@the.local.host.name> -44 12865 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<abcd@xyz>: 850 RUBBISH
+++++++++++++++++++++++++++
- T:127.0.0.1:127.0.0.1:1224:10HmaX-000000005vi-0000 -45 13377 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after MAIL FROM:<CALLER@myhost.test.ex>: 452 temporary error
+ T:[127.0.0.1]:127.0.0.1:1224:10HmaX-000000005vi-0000 -45 13377 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after MAIL FROM:<CALLER@myhost.test.ex>: 452 temporary error
first failed = time last try = time2 next try = time2 + 0 *
+++++++++++++++++++++++++++
R:userx@x.y:<CALLER@myhost.test.ex> -44 13377 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after RCPT TO:<userx@x.y>: 452 temporary error
+++++++++++++++++++++++++++
- T:127.0.0.1:127.0.0.1:1224:10HmaX-000000005vi-0000 -45 12865 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after MAIL FROM:<CALLER@myhost.test.ex>: 450 DELAY
+ T:[127.0.0.1]:127.0.0.1:1224:10HmaX-000000005vi-0000 -45 12865 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after MAIL FROM:<CALLER@myhost.test.ex>: 450 DELAY
first failed = time last try = time2 next try = time2 + 10
******** SERVER ********
250 OK id=10HmaY-000000005vi-0000\r
221 the.local.host.name closing connection\r
+++++++++++++++++++++++++++
- T:127.0.0.1:127.0.0.1:1225/127.0.0.1 0 65 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after initial connection: 451 Temporary local problem - please try later
+ T:[127.0.0.1]:127.0.0.1:1225/127.0.0.1 0 65 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after initial connection: 451 Temporary local problem - please try later
first failed = time last try = time2 next try = time2 + 2
- T:127.0.0.1:127.0.0.1:1225/ip4.ip4.ip4.ip4 0 65 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after initial connection: 451 Temporary local problem - please try later
+ T:[127.0.0.1]:127.0.0.1:1225/ip4.ip4.ip4.ip4 0 65 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after initial connection: 451 Temporary local problem - please try later
first failed = time last try = time2 next try = time2 + 2
+++++++++++++++++++++++++++
+++++++++++++++++++++++++++
+++++++++++++++++++++++++++
- T:127.0.0.1:127.0.0.1:1224:10HmaX-000000005vi-0000 -45 12865 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: 450 Temporary error
+ T:[127.0.0.1]:127.0.0.1:1224:10HmaX-000000005vi-0000 -45 12865 H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: 450 Temporary error
first failed = time last try = time2 next try = time2 + 7200
- T:::1:::1:1224:10HmaX-000000005vi-0000 -45 12865 H=::1 [::1]: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: 450 Temporary error
+ T:[::1]:[::1]:1224:10HmaX-000000005vi-0000 -45 12865 H=::1 [::1]: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: 450 Temporary error
first failed = time last try = time2 next try = time2 + 7200
-Transport: 127.0.0.1 [127.0.0.1]:1111 10HmaX-000000005vi-0000 error -45: H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: 450 Temporary error
- first failed: 07-Mar-2000 12:21:52
- last tried: 07-Mar-2000 12:21:52
- next try at: 07-Mar-2000 12:21:52
-Transport: [:1:::1:1224:10HmaX-000000005vi-0000]:1224 10HmaX-000000005vi-0000 error -45: H=::1 [::1]: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: 450 Temporary error
+Transport: [127.0.0.1] 127.0.0.1:PORT_S 10HmaX-000000005vi-0000 error -45: H=127.0.0.1 [127.0.0.1]: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: 450 Temporary error
first failed: 07-Mar-2000 12:21:52
last tried: 07-Mar-2000 12:21:52
next try at: 07-Mar-2000 12:21:52
exinext exit code = 0
-Transport: [:1:::1:1224:10HmaX-000000005vi-0000] error -45: H=::1 [::1]: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: 450 Temporary error
+Transport: [::1] [::1]:PORT_S 10HmaX-000000005vi-0000 error -45: H=::1 [::1]: SMTP error from remote mail server after MAIL FROM:<CALLER@the.local.host.name>: 450 Temporary error
first failed: 07-Mar-2000 12:21:52
last tried: 07-Mar-2000 12:21:52
next try at: 07-Mar-2000 12:21:52