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: jgh146...@wizmail.org Reporter: bugzilla.exim.si...@arlott.org CC: exim-dev@exim.org 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@a.example P=<b@b.example> 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. -- ## List details at https://lists.exim.org/mailman/listinfo/exim-dev Exim details at http://www.exim.org/ ##