I am using exim (4.82) together with mailscanner. Exim is setup to defer messages so that mailscanner can scan the messages. After mailscanner has scanned the message and if the message passes as clean, mailscanner calls exim to sent the message to the backend smtp server (exchange).
Now the message defer is actually stored into the retry database as a failure:
exinext mydomain.com
Route: mydomain.com error -1: queued for message checks
first failed: 30-Mar-2014 12:59:22
last tried: 30-Mar-2014 12:59:22
next try at: 30-Mar-2014 13:14:22
after 14 days any deliveries to mydomain.com will generate an NDR with a permanent error:
queued for message checks: retry timeout exceeded
Now the obvious question is why are message defers for content scanning being reported as error in the retry db ?
The obvious fix is to simply delete the retry database on say a daily basis, but I am wondering if there is another way. After the message defer and after scanning the message does get delivered, but without updating the retry database.