Gitweb:
https://git.exim.org/exim.git/commitdiff/ea7b1f162ff084a655dc0a5de87038b542f721f5
Commit: ea7b1f162ff084a655dc0a5de87038b542f721f5
Parent: 08bd2689bdeceb41f161a7d54fc1af4abcbbb8c1
Author: Jeremy Harris <jgh146exb@???>
AuthorDate: Wed Apr 25 22:30:31 2018 +0100
Committer: Jeremy Harris <jgh146exb@???>
CommitDate: Wed Apr 25 22:30:31 2018 +0100
ARC: add $arc_oldest_pass variable, for verify
---
doc/doc-txt/ChangeLog | 4 ++
doc/doc-txt/experimental-spec.txt | 1 +
src/src/arc.c | 35 +++++++-----
src/src/expand.c | 1 +
test/confs/4560 | 7 ++-
test/confs/4562 | 7 ++-
test/log/4560 | 113 ++++++++++++++++++++++----------------
test/log/4561 | 7 ++-
test/log/4562 | 8 ++-
test/mail/4560.a | 20 +++----
test/mail/4561.a | 2 +-
11 files changed, 124 insertions(+), 81 deletions(-)
diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index 3e19066..b2d4314 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -18,6 +18,10 @@ JH/03 Bug 2269: When presented with a received message having a stupidly large
number of DKIM-Signature headers, disable DKIM verification to avoid
a resource-consumption attack. The limit is set at twenty.
+JH/04 Add variables $arc_domains, $arc_oldest_pass for ARC verify. Fix the
+ report of oldest_pass in ${authres } in consequence, and separate out
+ some descriptions of reasons for verification fail.
+
Exim version 4.91
-----------------
diff --git a/doc/doc-txt/experimental-spec.txt b/doc/doc-txt/experimental-spec.txt
index 481af1a..ac3f1cc 100644
--- a/doc/doc-txt/experimental-spec.txt
+++ b/doc/doc-txt/experimental-spec.txt
@@ -799,6 +799,7 @@ There are three new variables: $arc_state, $arc_state_reason, $arc_domains:
$arc_state_reason (if fail, why)
$arc_domains colon-sep list of ARC chain domains, in chain order.
problematic elements may have empty list elements
+ $arc_oldest_pass lowest passing instance number of chain
Receive log lines for an ARC pass will be tagged "ARC".
diff --git a/src/src/arc.c b/src/src/arc.c
index 9d8f7d5..7374ba4 100644
--- a/src/src/arc.c
+++ b/src/src/arc.c
@@ -770,22 +770,25 @@ arc_set * as;
int inst;
BOOL ams_fail_found = FALSE;
-if (!(as = ctx->arcset_chain))
+if (!(as = ctx->arcset_chain_last))
return US"none";
-for(inst = 0; as; as = as->next)
+for(inst = as->instance; as; as = as->prev, inst--)
{
- if ( as->instance != ++inst
- || !as->hdr_aar || !as->hdr_ams || !as->hdr_as
- || arc_cv_match(as->hdr_as, US"fail")
- )
- {
- arc_state_reason = string_sprintf("i=%d"
- " (cv, sequence or missing header)", as->instance);
- DEBUG(D_acl) debug_printf("ARC chain fail at %s\n", arc_state_reason);
- return US"fail";
- }
+ if (as->instance != inst)
+ arc_state_reason = string_sprintf("i=%d (sequence; expected %d)",
+ as->instance, inst);
+ else if (!as->hdr_aar || !as->hdr_ams || !as->hdr_as)
+ arc_state_reason = string_sprintf("i=%d (missing header)", as->instance);
+ else if (arc_cv_match(as->hdr_as, US"fail"))
+ arc_state_reason = string_sprintf("i=%d (cv)", as->instance);
+ else
+ goto good;
+ DEBUG(D_acl) debug_printf("ARC chain fail at %s\n", arc_state_reason);
+ return US"fail";
+
+ good:
/* Evaluate the oldest-pass AMS validation while we're here.
It does not affect the AS chain validation but is reported as
auxilary info. */
@@ -797,9 +800,15 @@ for(inst = 0; as; as = as->next)
arc_oldest_pass = inst;
arc_state_reason = NULL;
}
+if (inst != 0)
+ {
+ arc_state_reason = string_sprintf("(sequence; expected i=%d)", inst);
+ DEBUG(D_acl) debug_printf("ARC chain fail %s\n", arc_state_reason);
+ return US"fail";
+ }
arc_received = ctx->arcset_chain_last;
-arc_received_instance = inst;
+arc_received_instance = arc_received->instance;
/* We can skip the latest-AMS validation, if we already did it. */
diff --git a/src/src/expand.c b/src/src/expand.c
index 42a5a5d..d9ce07e 100644
--- a/src/src/expand.c
+++ b/src/src/expand.c
@@ -463,6 +463,7 @@ static var_entry var_table[] = {
{ "address_pipe", vtype_stringptr, &address_pipe },
#ifdef EXPERIMENTAL_ARC
{ "arc_domains", vtype_string_func, &fn_arc_domains },
+ { "arc_oldest_pass", vtype_int, &arc_oldest_pass },
{ "arc_state", vtype_stringptr, &arc_state },
{ "arc_state_reason", vtype_stringptr, &arc_state_reason },
#endif
diff --git a/test/confs/4560 b/test/confs/4560
index 10ead1c..3c31539 100644
--- a/test/confs/4560
+++ b/test/confs/4560
@@ -23,10 +23,11 @@ check_data:
warn !verify = arc VALUE
INSERT
- warn logwrite = arc_state: <$arc_state>
- logwrite = domains: <$arc_domains>
+ warn logwrite = arc_state: <$arc_state>
+ logwrite = domains: <$arc_domains>
+ logwrite = arc_oldest_pass <$arc_oldest_pass>
condition = ${if def:arc_state_reason}
- logwrite = reason: <$arc_state_reason>
+ logwrite = reason: <$arc_state_reason>
.ifdef OPTION
accept
diff --git a/test/confs/4562 b/test/confs/4562
index bc7415c..4360554 100644
--- a/test/confs/4562
+++ b/test/confs/4562
@@ -23,10 +23,11 @@ check_data:
warn !verify = arc VALUE
INSERT
- warn logwrite = arc_state: <$arc_state>
+ warn logwrite = arc_state: <$arc_state>
+ logwrite = arc_oldest_pass <$arc_oldest_pass>
+ logwrite = domains: <$arc_domains>
condition = ${if def:arc_state_reason}
- logwrite = reason: <$arc_state_reason>
- logwrite = domains: <$arc_domains>
+ logwrite = reason: <$arc_state_reason>
.ifdef OPTION
accept
diff --git a/test/log/4560 b/test/log/4560
index c94ef10..97677d4 100644
--- a/test/log/4560
+++ b/test/log/4560
@@ -1,19 +1,22 @@
******** SERVER ********
1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
-1999-03-02 09:44:33 10HmaX-0005vi-00 arc_state: <pass>
-1999-03-02 09:44:33 10HmaX-0005vi-00 domains: <test.ex>
+1999-03-02 09:44:33 10HmaX-0005vi-00 arc_state: <pass>
+1999-03-02 09:44:33 10HmaX-0005vi-00 domains: <test.ex>
+1999-03-02 09:44:33 10HmaX-0005vi-00 arc_oldest_pass <1>
1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@??? H=(xxx) [127.0.0.1] P=smtp S=sss ARC id=qwerty1234@??? for a@???
1999-03-02 09:44:33 Start queue run: pid=pppp
1999-03-02 09:44:33 10HmaX-0005vi-00 => a <a@???> R=d1 T=tfile
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp
-1999-03-02 09:44:33 10HmaY-0005vi-00 arc_state: <none>
-1999-03-02 09:44:33 10HmaY-0005vi-00 domains: <>
+1999-03-02 09:44:33 10HmaY-0005vi-00 arc_state: <none>
+1999-03-02 09:44:33 10HmaY-0005vi-00 domains: <>
+1999-03-02 09:44:33 10HmaY-0005vi-00 arc_oldest_pass <0>
1999-03-02 09:44:33 10HmaY-0005vi-00 <= CALLER@??? H=(xxx) [127.0.0.1] P=smtp S=sss for za@???
1999-03-02 09:44:33 Start queue run: pid=pppp
-1999-03-02 09:44:33 10HmaZ-0005vi-00 arc_state: <pass>
-1999-03-02 09:44:33 10HmaZ-0005vi-00 domains: <test.ex>
+1999-03-02 09:44:33 10HmaZ-0005vi-00 arc_state: <pass>
+1999-03-02 09:44:33 10HmaZ-0005vi-00 domains: <test.ex>
+1999-03-02 09:44:33 10HmaZ-0005vi-00 arc_oldest_pass <1>
1999-03-02 09:44:33 10HmaZ-0005vi-00 <= CALLER@??? H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss ARC for a@???
1999-03-02 09:44:33 10HmaY-0005vi-00 => a@??? <za@???> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmaZ-0005vi-00"
1999-03-02 09:44:33 10HmaY-0005vi-00 Completed
@@ -22,19 +25,22 @@
1999-03-02 09:44:33 10HmaZ-0005vi-00 => a <a@???> R=d1 T=tfile
1999-03-02 09:44:33 10HmaZ-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp
-1999-03-02 09:44:33 10HmbA-0005vi-00 arc_state: <none>
-1999-03-02 09:44:33 10HmbA-0005vi-00 domains: <>
+1999-03-02 09:44:33 10HmbA-0005vi-00 arc_state: <none>
+1999-03-02 09:44:33 10HmbA-0005vi-00 domains: <>
+1999-03-02 09:44:33 10HmbA-0005vi-00 arc_oldest_pass <0>
1999-03-02 09:44:33 10HmbA-0005vi-00 <= CALLER@??? H=(xxx) [127.0.0.1] P=smtp S=sss for zza@???
1999-03-02 09:44:33 Start queue run: pid=pppp
-1999-03-02 09:44:33 10HmbB-0005vi-00 arc_state: <pass>
-1999-03-02 09:44:33 10HmbB-0005vi-00 domains: <test.ex>
+1999-03-02 09:44:33 10HmbB-0005vi-00 arc_state: <pass>
+1999-03-02 09:44:33 10HmbB-0005vi-00 domains: <test.ex>
+1999-03-02 09:44:33 10HmbB-0005vi-00 arc_oldest_pass <1>
1999-03-02 09:44:33 10HmbB-0005vi-00 <= CALLER@??? H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss ARC for za@???
1999-03-02 09:44:33 10HmbA-0005vi-00 => za@??? <zza@???> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbB-0005vi-00"
1999-03-02 09:44:33 10HmbA-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp
1999-03-02 09:44:33 Start queue run: pid=pppp
-1999-03-02 09:44:33 10HmbC-0005vi-00 arc_state: <pass>
-1999-03-02 09:44:33 10HmbC-0005vi-00 domains: <test.ex:test.ex>
+1999-03-02 09:44:33 10HmbC-0005vi-00 arc_state: <pass>
+1999-03-02 09:44:33 10HmbC-0005vi-00 domains: <test.ex:test.ex>
+1999-03-02 09:44:33 10HmbC-0005vi-00 arc_oldest_pass <1>
1999-03-02 09:44:33 10HmbC-0005vi-00 <= CALLER@??? H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss ARC for a@???
1999-03-02 09:44:33 10HmbB-0005vi-00 => a@??? <za@???> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbC-0005vi-00"
1999-03-02 09:44:33 10HmbB-0005vi-00 Completed
@@ -43,26 +49,30 @@
1999-03-02 09:44:33 10HmbC-0005vi-00 => a <a@???> R=d1 T=tfile
1999-03-02 09:44:33 10HmbC-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp
-1999-03-02 09:44:33 10HmbD-0005vi-00 arc_state: <none>
-1999-03-02 09:44:33 10HmbD-0005vi-00 domains: <>
+1999-03-02 09:44:33 10HmbD-0005vi-00 arc_state: <none>
+1999-03-02 09:44:33 10HmbD-0005vi-00 domains: <>
+1999-03-02 09:44:33 10HmbD-0005vi-00 arc_oldest_pass <0>
1999-03-02 09:44:33 10HmbD-0005vi-00 <= CALLER@??? H=(xxx) [127.0.0.1] P=smtp S=sss for zmza@???
1999-03-02 09:44:33 Start queue run: pid=pppp
-1999-03-02 09:44:33 10HmbE-0005vi-00 arc_state: <pass>
-1999-03-02 09:44:33 10HmbE-0005vi-00 domains: <test.ex>
+1999-03-02 09:44:33 10HmbE-0005vi-00 arc_state: <pass>
+1999-03-02 09:44:33 10HmbE-0005vi-00 domains: <test.ex>
+1999-03-02 09:44:33 10HmbE-0005vi-00 arc_oldest_pass <1>
1999-03-02 09:44:33 10HmbE-0005vi-00 <= CALLER@??? H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss ARC for mza@???
1999-03-02 09:44:33 10HmbD-0005vi-00 => mza@??? <zmza@???> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbE-0005vi-00"
1999-03-02 09:44:33 10HmbD-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp
1999-03-02 09:44:33 Start queue run: pid=pppp
-1999-03-02 09:44:33 10HmbF-0005vi-00 arc_state: <pass>
-1999-03-02 09:44:33 10HmbF-0005vi-00 domains: <test.ex:test.ex>
+1999-03-02 09:44:33 10HmbF-0005vi-00 arc_state: <pass>
+1999-03-02 09:44:33 10HmbF-0005vi-00 domains: <test.ex:test.ex>
+1999-03-02 09:44:33 10HmbF-0005vi-00 arc_oldest_pass <2>
1999-03-02 09:44:33 10HmbF-0005vi-00 <= CALLER@??? H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss ARC for za@???
1999-03-02 09:44:33 10HmbE-0005vi-00 => za@??? <mza@???> R=mlist T=tmlist H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbF-0005vi-00"
1999-03-02 09:44:33 10HmbE-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp
1999-03-02 09:44:33 Start queue run: pid=pppp
-1999-03-02 09:44:33 10HmbG-0005vi-00 arc_state: <pass>
-1999-03-02 09:44:33 10HmbG-0005vi-00 domains: <test.ex:test.ex:test.ex>
+1999-03-02 09:44:33 10HmbG-0005vi-00 arc_state: <pass>
+1999-03-02 09:44:33 10HmbG-0005vi-00 domains: <test.ex:test.ex:test.ex>
+1999-03-02 09:44:33 10HmbG-0005vi-00 arc_oldest_pass <2>
1999-03-02 09:44:33 10HmbG-0005vi-00 <= CALLER@??? H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss ARC for a@???
1999-03-02 09:44:33 10HmbF-0005vi-00 => a@??? <za@???> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbG-0005vi-00"
1999-03-02 09:44:33 10HmbF-0005vi-00 Completed
@@ -71,35 +81,40 @@
1999-03-02 09:44:33 10HmbG-0005vi-00 => a <a@???> R=d1 T=tfile
1999-03-02 09:44:33 10HmbG-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp
-1999-03-02 09:44:33 10HmbH-0005vi-00 arc_state: <none>
-1999-03-02 09:44:33 10HmbH-0005vi-00 domains: <>
+1999-03-02 09:44:33 10HmbH-0005vi-00 arc_state: <none>
+1999-03-02 09:44:33 10HmbH-0005vi-00 domains: <>
+1999-03-02 09:44:33 10HmbH-0005vi-00 arc_oldest_pass <0>
1999-03-02 09:44:33 10HmbH-0005vi-00 <= CALLER@??? H=(xxx) [127.0.0.1] P=smtp S=sss for zzmza@???
1999-03-02 09:44:33 Start queue run: pid=pppp
-1999-03-02 09:44:33 10HmbI-0005vi-00 arc_state: <pass>
-1999-03-02 09:44:33 10HmbI-0005vi-00 domains: <test.ex>
+1999-03-02 09:44:33 10HmbI-0005vi-00 arc_state: <pass>
+1999-03-02 09:44:33 10HmbI-0005vi-00 domains: <test.ex>
+1999-03-02 09:44:33 10HmbI-0005vi-00 arc_oldest_pass <1>
1999-03-02 09:44:33 10HmbI-0005vi-00 <= CALLER@??? H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss ARC for zmza@???
1999-03-02 09:44:33 10HmbH-0005vi-00 => zmza@??? <zzmza@???> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbI-0005vi-00"
1999-03-02 09:44:33 10HmbH-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp
1999-03-02 09:44:33 Start queue run: pid=pppp
-1999-03-02 09:44:33 10HmbJ-0005vi-00 arc_state: <pass>
-1999-03-02 09:44:33 10HmbJ-0005vi-00 domains: <test.ex:test.ex>
+1999-03-02 09:44:33 10HmbJ-0005vi-00 arc_state: <pass>
+1999-03-02 09:44:33 10HmbJ-0005vi-00 domains: <test.ex:test.ex>
+1999-03-02 09:44:33 10HmbJ-0005vi-00 arc_oldest_pass <1>
1999-03-02 09:44:33 10HmbJ-0005vi-00 <= CALLER@??? H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss ARC for mza@???
1999-03-02 09:44:33 10HmbI-0005vi-00 => mza@??? <zmza@???> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbJ-0005vi-00"
1999-03-02 09:44:33 10HmbI-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp
1999-03-02 09:44:33 Start queue run: pid=pppp
-1999-03-02 09:44:33 10HmbK-0005vi-00 arc_state: <fail>
-1999-03-02 09:44:33 10HmbK-0005vi-00 domains: <test.ex:test.ex>
-1999-03-02 09:44:33 10HmbK-0005vi-00 reason: <AMS body hash miscompare>
+1999-03-02 09:44:33 10HmbK-0005vi-00 arc_state: <fail>
+1999-03-02 09:44:33 10HmbK-0005vi-00 domains: <test.ex:test.ex>
+1999-03-02 09:44:33 10HmbK-0005vi-00 arc_oldest_pass <0>
+1999-03-02 09:44:33 10HmbK-0005vi-00 reason: <AMS body hash miscompare>
1999-03-02 09:44:33 10HmbK-0005vi-00 <= CALLER@??? H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss for za@???
1999-03-02 09:44:33 10HmbJ-0005vi-00 => za@??? <mza@???> R=mlist T=tmlist H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbK-0005vi-00"
1999-03-02 09:44:33 10HmbJ-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp
1999-03-02 09:44:33 Start queue run: pid=pppp
-1999-03-02 09:44:33 10HmbL-0005vi-00 arc_state: <fail>
-1999-03-02 09:44:33 10HmbL-0005vi-00 domains: <test.ex:test.ex:test.ex>
-1999-03-02 09:44:33 10HmbL-0005vi-00 reason: <i=3 (cv, sequence or missing header)>
+1999-03-02 09:44:33 10HmbL-0005vi-00 arc_state: <fail>
+1999-03-02 09:44:33 10HmbL-0005vi-00 domains: <test.ex:test.ex:test.ex>
+1999-03-02 09:44:33 10HmbL-0005vi-00 arc_oldest_pass <0>
+1999-03-02 09:44:33 10HmbL-0005vi-00 reason: <i=3 (cv)>
1999-03-02 09:44:33 10HmbL-0005vi-00 <= CALLER@??? H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss for a@???
1999-03-02 09:44:33 10HmbK-0005vi-00 => a@??? <za@???> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbL-0005vi-00"
1999-03-02 09:44:33 10HmbK-0005vi-00 Completed
@@ -108,19 +123,22 @@
1999-03-02 09:44:33 10HmbL-0005vi-00 => a <a@???> R=d1 T=tfile
1999-03-02 09:44:33 10HmbL-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp
-1999-03-02 09:44:33 10HmbM-0005vi-00 arc_state: <none>
-1999-03-02 09:44:33 10HmbM-0005vi-00 domains: <>
+1999-03-02 09:44:33 10HmbM-0005vi-00 arc_state: <none>
+1999-03-02 09:44:33 10HmbM-0005vi-00 domains: <>
+1999-03-02 09:44:33 10HmbM-0005vi-00 arc_oldest_pass <0>
1999-03-02 09:44:33 10HmbM-0005vi-00 <= CALLER@??? H=(xxx) [127.0.0.1] P=smtp S=sss for zza@???
1999-03-02 09:44:33 Start queue run: pid=pppp
-1999-03-02 09:44:33 10HmbN-0005vi-00 arc_state: <pass>
-1999-03-02 09:44:33 10HmbN-0005vi-00 domains: <test.ex>
+1999-03-02 09:44:33 10HmbN-0005vi-00 arc_state: <pass>
+1999-03-02 09:44:33 10HmbN-0005vi-00 domains: <test.ex>
+1999-03-02 09:44:33 10HmbN-0005vi-00 arc_oldest_pass <1>
1999-03-02 09:44:33 10HmbN-0005vi-00 <= CALLER@??? H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss ARC for za@???
1999-03-02 09:44:33 10HmbM-0005vi-00 => za@??? <zza@???> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbN-0005vi-00"
1999-03-02 09:44:33 10HmbM-0005vi-00 Completed
1999-03-02 09:44:33 End queue run: pid=pppp
1999-03-02 09:44:33 Start queue run: pid=pppp
-1999-03-02 09:44:33 10HmbO-0005vi-00 arc_state: <pass>
-1999-03-02 09:44:33 10HmbO-0005vi-00 domains: <test.ex>
+1999-03-02 09:44:33 10HmbO-0005vi-00 arc_state: <pass>
+1999-03-02 09:44:33 10HmbO-0005vi-00 domains: <test.ex>
+1999-03-02 09:44:33 10HmbO-0005vi-00 arc_oldest_pass <1>
1999-03-02 09:44:33 10HmbO-0005vi-00 <= CALLER@??? H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss ARC for a@???
1999-03-02 09:44:33 10HmbN-0005vi-00 => a@??? <za@???> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbO-0005vi-00"
1999-03-02 09:44:33 10HmbN-0005vi-00 Completed
@@ -131,16 +149,18 @@
1999-03-02 09:44:33 End queue run: pid=pppp
1999-03-02 09:44:33 10HmbP-0005vi-00 DKIM: d=dmarc.org s=clochette c=simple/simple a=rsa-sha256 b=1024 t=1517535263 [verification succeeded]
1999-03-02 09:44:33 10HmbP-0005vi-00 DKIM: d=convivian.com s=default c=simple/simple a=rsa-sha256 b=1024 t=1517535248 [verification failed - body hash mismatch (body probably modified in transit)]
-1999-03-02 09:44:33 10HmbP-0005vi-00 arc_state: <fail>
-1999-03-02 09:44:33 10HmbP-0005vi-00 domains: <convivian.com>
-1999-03-02 09:44:33 10HmbP-0005vi-00 reason: <AMS body hash miscompare>
+1999-03-02 09:44:33 10HmbP-0005vi-00 arc_state: <fail>
+1999-03-02 09:44:33 10HmbP-0005vi-00 domains: <convivian.com>
+1999-03-02 09:44:33 10HmbP-0005vi-00 arc_oldest_pass <0>
+1999-03-02 09:44:33 10HmbP-0005vi-00 reason: <AMS body hash miscompare>
1999-03-02 09:44:33 10HmbP-0005vi-00 <= CALLER@??? H=(xxx) [127.0.0.1] P=smtp S=sss DKIM=dmarc.org id=1426665656.110316.1517535248039.JavaMail.zimbra@??? for za@???
1999-03-02 09:44:33 Start queue run: pid=pppp
1999-03-02 09:44:33 10HmbQ-0005vi-00 DKIM: d=dmarc.org s=clochette c=simple/simple a=rsa-sha256 b=1024 t=1517535263 [verification succeeded]
1999-03-02 09:44:33 10HmbQ-0005vi-00 DKIM: d=convivian.com s=default c=simple/simple a=rsa-sha256 b=1024 t=1517535248 [verification failed - body hash mismatch (body probably modified in transit)]
-1999-03-02 09:44:33 10HmbQ-0005vi-00 arc_state: <fail>
-1999-03-02 09:44:33 10HmbQ-0005vi-00 domains: <convivian.com:test.ex>
-1999-03-02 09:44:33 10HmbQ-0005vi-00 reason: <i=2 (cv, sequence or missing header)>
+1999-03-02 09:44:33 10HmbQ-0005vi-00 arc_state: <fail>
+1999-03-02 09:44:33 10HmbQ-0005vi-00 domains: <convivian.com:test.ex>
+1999-03-02 09:44:33 10HmbQ-0005vi-00 arc_oldest_pass <0>
+1999-03-02 09:44:33 10HmbQ-0005vi-00 reason: <i=2 (cv)>
1999-03-02 09:44:33 10HmbQ-0005vi-00 <= CALLER@??? H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss DKIM=dmarc.org id=1426665656.110316.1517535248039.JavaMail.zimbra@??? for a@???
1999-03-02 09:44:33 10HmbP-0005vi-00 => a@??? <za@???> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmbQ-0005vi-00"
1999-03-02 09:44:33 10HmbP-0005vi-00 Completed
@@ -151,6 +171,7 @@
1999-03-02 09:44:33 End queue run: pid=pppp
1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
1999-03-02 09:44:33 10HmbR-0005vi-00 H=(xxx) [127.0.0.1] Warning: ARC-FAIL
-1999-03-02 09:44:33 10HmbR-0005vi-00 arc_state: <none>
-1999-03-02 09:44:33 10HmbR-0005vi-00 domains: <>
+1999-03-02 09:44:33 10HmbR-0005vi-00 arc_state: <none>
+1999-03-02 09:44:33 10HmbR-0005vi-00 domains: <>
+1999-03-02 09:44:33 10HmbR-0005vi-00 arc_oldest_pass <0>
1999-03-02 09:44:33 10HmbR-0005vi-00 <= CALLER@??? H=(xxx) [127.0.0.1] P=smtp S=sss for a@???
diff --git a/test/log/4561 b/test/log/4561
index 59c644f..3770b2d 100644
--- a/test/log/4561
+++ b/test/log/4561
@@ -1,9 +1,10 @@
******** SERVER ********
1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
-1999-03-02 09:44:33 10HmaX-0005vi-00 arc_state: <fail>
-1999-03-02 09:44:33 10HmaX-0005vi-00 domains: <::test.ex>
-1999-03-02 09:44:33 10HmaX-0005vi-00 reason: <i=2 (cv, sequence or missing header)>
+1999-03-02 09:44:33 10HmaX-0005vi-00 arc_state: <fail>
+1999-03-02 09:44:33 10HmaX-0005vi-00 domains: <::test.ex>
+1999-03-02 09:44:33 10HmaX-0005vi-00 arc_oldest_pass <0>
+1999-03-02 09:44:33 10HmaX-0005vi-00 reason: <(sequence; expected i=1)>
1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@??? H=(xxx) [127.0.0.1] P=smtp S=sss id=3885245d-3bae-66a2-7a1e-0dbceae2fb50@??? for a@???
1999-03-02 09:44:33 Start queue run: pid=pppp
1999-03-02 09:44:33 10HmaX-0005vi-00 => a <a@???> R=d1 T=tfile
diff --git a/test/log/4562 b/test/log/4562
index bfb1d9e..2dfa9e4 100644
--- a/test/log/4562
+++ b/test/log/4562
@@ -2,12 +2,16 @@
******** SERVER ********
1999-03-02 09:44:33 exim x.yz daemon started: pid=pppp, no queue runs, listening for SMTP on port 1225
1999-03-02 09:44:33 10HmaX-0005vi-00 DKIM: d=example.com s=sel c=relaxed/relaxed a=rsa-sha256 b=2048 [verification failed - body hash mismatch (body probably modified in transit)]
-1999-03-02 09:44:33 10HmaX-0005vi-00 arc_state: <none>
+1999-03-02 09:44:33 10HmaX-0005vi-00 arc_state: <none>
+1999-03-02 09:44:33 10HmaX-0005vi-00 arc_oldest_pass <0>
+1999-03-02 09:44:33 10HmaX-0005vi-00 domains: <>
1999-03-02 09:44:33 10HmaX-0005vi-00 <= CALLER@??? H=(xxx) [127.0.0.1] P=smtp S=sss id=qwerty1234@??? for za@???
1999-03-02 09:44:33 Start queue run: pid=pppp
1999-03-02 09:44:33 10HmaY-0005vi-00 DKIM: d=test.ex s=sel c=relaxed/relaxed a=rsa-sha256 b=1024 [verification succeeded]
1999-03-02 09:44:33 10HmaY-0005vi-00 DKIM: d=example.com s=sel c=relaxed/relaxed a=rsa-sha256 b=2048 [verification failed - body hash mismatch (body probably modified in transit)]
-1999-03-02 09:44:33 10HmaY-0005vi-00 arc_state: <pass>
+1999-03-02 09:44:33 10HmaY-0005vi-00 arc_state: <pass>
+1999-03-02 09:44:33 10HmaY-0005vi-00 arc_oldest_pass <1>
+1999-03-02 09:44:33 10HmaY-0005vi-00 domains: <test.ex>
1999-03-02 09:44:33 10HmaY-0005vi-00 <= CALLER@??? H=localhost (test.ex) [127.0.0.1] P=esmtp S=sss DKIM=test.ex ARC id=qwerty1234@??? for a@???
1999-03-02 09:44:33 10HmaX-0005vi-00 => a@??? <za@???> R=fwd T=tsmtp H=127.0.0.1 [127.0.0.1] C="250 OK id=10HmaY-0005vi-00"
1999-03-02 09:44:33 10HmaX-0005vi-00 Completed
diff --git a/test/mail/4560.a b/test/mail/4560.a
index dcc30df..63b4327 100644
--- a/test/mail/4560.a
+++ b/test/mail/4560.a
@@ -61,7 +61,7 @@ This is a test body.
From CALLER@??? Tue Mar 02 09:44:33 1999
Authentication-Results: test.ex;
iprev=pass (localhost) smtp.client-ip=127.0.0.1;
- arc=pass (i=2) header.s=sel arc.oldest-pass=2 smtp.client-ip=127.0.0.1
+ arc=pass (i=2) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1
Received: from localhost ([127.0.0.1] helo=test.ex)
by test.ex with esmtp (Exim x.yz)
(envelope-from <CALLER@???>)
@@ -114,19 +114,19 @@ This is a test body.
From CALLER@??? Tue Mar 02 09:44:33 1999
Authentication-Results: test.ex;
iprev=pass (localhost) smtp.client-ip=127.0.0.1;
- arc=pass (i=3) header.s=sel arc.oldest-pass=0 smtp.client-ip=127.0.0.1
+ arc=pass (i=3) header.s=sel arc.oldest-pass=2 smtp.client-ip=127.0.0.1
Received: from localhost ([127.0.0.1] helo=test.ex)
by test.ex with esmtp (Exim x.yz)
(envelope-from <CALLER@???>)
id 10HmbG-0005vi-00
for a@???; Tue, 2 Mar 1999 09:44:33 +0000
ARC-Seal: i=3; cv=pass; a=rsa-sha256; d=test.ex; s=sel;
- b=toV+uStte4whonmLSQreJpbH4aVVPtd+7SRqSC37YAIQugpQMe3V3RL+ThxRfxQHvAeGn5K9sh
- pRpkAdOrY38izcXtYx9aJw/kkSjsRHQURUFeIb5hk5RiqiKnQSPP17k5b+50IYVL1K7wGxWFza
- 4a1dn6ILHMTRyax7sxgeCrs=;
+ b=e7M+4ujsfzQumNrl/4TxXorL9CZosw/g881Ds0GRE5adcIum+IP7QubcIOVCPvUBUqypYDiLRp
+ MROYzmkSCE2GIWuzaQP/3K5qLPyScqHJvS7IfRhccWQt1TsG7HVsAnHZnLQqtRqOH7txQMtjpy
+ vtwBO70hk9GxKl9D/+cJ41k=;
ARC-Authentication-Results: i=3; test.ex;
iprev=pass (localhost) smtp.client-ip=127.0.0.1;
- arc=pass (i=2) header.s=sel arc.oldest-pass=0 smtp.client-ip=127.0.0.1
+ arc=pass (i=2) header.s=sel arc.oldest-pass=2 smtp.client-ip=127.0.0.1
ARC-Message-Signature: i=3; a=rsa-sha256; c=relaxed; d=test.ex; s=sel;
bh=31zA4VNQZ2yhHUh+7vWASIL9kKqo6pSym1QghgPyUkM=;
h=Subject;
@@ -135,7 +135,7 @@ ARC-Message-Signature: i=3; a=rsa-sha256; c=relaxed; d=test.ex; s=sel;
Iv0EvpWIFn7dpelS30IKk78=;
Authentication-Results: test.ex;
iprev=pass (localhost) smtp.client-ip=127.0.0.1;
- arc=pass (i=2) header.s=sel arc.oldest-pass=0 smtp.client-ip=127.0.0.1
+ arc=pass (i=2) header.s=sel arc.oldest-pass=2 smtp.client-ip=127.0.0.1
Received: from localhost ([127.0.0.1] helo=test.ex)
by test.ex with esmtp (Exim x.yz)
(envelope-from <CALLER@???>)
@@ -192,7 +192,7 @@ This is a generic mailinglist footer
From CALLER@??? Tue Mar 02 09:44:33 1999
Authentication-Results: test.ex;
iprev=pass (localhost) smtp.client-ip=127.0.0.1;
- arc=fail (i=3 (cv, sequence or missing header))
+ arc=fail (i=3 (cv))
Received: from localhost ([127.0.0.1] helo=test.ex)
by test.ex with esmtp (Exim x.yz)
(envelope-from <CALLER@???>)
@@ -221,7 +221,7 @@ Received: from localhost ([127.0.0.1] helo=test.ex)
for za@???; Tue, 2 Mar 1999 09:44:33 +0000
Authentication-Results: test.ex;
iprev=pass (localhost) smtp.client-ip=127.0.0.1;
- arc=pass (i=2) header.s=sel arc.oldest-pass=2 smtp.client-ip=127.0.0.1
+ arc=pass (i=2) header.s=sel arc.oldest-pass=1 smtp.client-ip=127.0.0.1
Received: from localhost ([127.0.0.1] helo=test.ex)
by test.ex with esmtp (Exim x.yz)
(envelope-from <CALLER@???>)
@@ -321,7 +321,7 @@ Authentication-Results: test.ex;
dkim=pass header.d=dmarc.org header.s=clochette header.a=rsa-sha256;
dkim=fail (body hash mismatch; body probably modified in transit)
header.d=convivian.com header.s=default header.a=rsa-sha256;
- arc=fail (i=2 (cv, sequence or missing header))
+ arc=fail (i=2 (cv))
Received: from localhost ([127.0.0.1] helo=test.ex)
by test.ex with esmtp (Exim x.yz)
(envelope-from <CALLER@???>)
diff --git a/test/mail/4561.a b/test/mail/4561.a
index 55f5673..38b81af 100644
--- a/test/mail/4561.a
+++ b/test/mail/4561.a
@@ -1,6 +1,6 @@
From CALLER@??? Tue Mar 02 09:44:33 1999
Authentication-Results: test.ex;
- arc=fail (i=2 (cv, sequence or missing header))
+ arc=fail ((sequence; expected i=1))
Received: from [127.0.0.1] (helo=xxx)
by test.ex with smtp (Exim x.yz)
(envelope-from <CALLER@???>)