https://bugs.exim.org/show_bug.cgi?id=2789
Bug ID: 2789
Summary: PRDR ACL return code of ERROR is not handled correctly
Product: Exim
Version: 4.94
Hardware: x86
OS: Linux
Status: NEW
Severity: bug
Priority: medium
Component: ACLs
Assignee: jgh146exb@???
Reporter: bugzilla.exim.simon@???
CC: exim-dev@???
I was using something that is not valid in the PRDR ACL, so it returns ERROR.
The PRDR process in receive_msg() only handles OK/DEFER/FAIL correctly.
If ERROR is returned then this is handled as the default cause of FAIL and 550
is returned. It should be handled like DEFER and return 450.
The all_fail check decides that all of the recipients have failed because FAIL
is 2 and ERROR is 3, so "all_fail = FAIL; all_fail &= rc;" results in "all_fail
== FAIL".
Updating of "all_pass" and "all_fail" should be moved into the "rc" switch
statement instead of trying to handle return codes that are not really bit
flags.
To make the problem worse, the Exim client (based on 4.90) somehow skipped the
PRDR responses per address and only reports the overall response:
2021-07-13T17:13:03.004+01:00 1m3L1n-0000LI-VV ** a@??? P=<b@???>
R=dnslookup_ipv4 T=remote_smtp H=c.example [192.0.2.1]:25
X=TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256 CV=yes DN="CN=c.example": SMTP error
from remote mail server after end of data: 550 id=1m3L1p-0000JE-VS message
rejected for all recipients
--
You are receiving this mail because:
You are on the CC list for the bug.