Hi,
One approach here if it is practical to collect/maintain all of the valid recipient addresses is to build a virtuser table with a default reject for each domain the relay handles plus the list of all valid addresses. This is very efficient if you can automate the table updates or the user base is stable.
I have already written the code that updates the access file and the relay-domains file from the final delivery mail server so I think that to create a virtusertable should be simple enough, I'll check the documentation to see how to use the virtusertable in this manner - thanks for the pointer.
Another would be to use MimeDefang as the framework instead of mailscanner. It has an option to check recipient addresses via smtp to the delivery servers before accepting. You may have to write a snippet of perl to get that right for multiple domains (that's a feature...). This is less efficient but works in real time against the addresses that will be accepted for delivery.
I'm not so sure that this is an acceptable overhead - the mail scanners process 2,000,000 messages a day.
Thanks
S.