Deprecated - please use the new SmtpEvt daemon instead!
This is an experiment with the new event daemon type that was presented in the recently released Daemon Developer Kit for Mercury. An event daemon has the ability to interact closely with various Mercury modules, in this case the SMTP server module, and change the way a message is processed.
In most cases it's probably a good strategy to leave the option "Accept mail for invalid local addresses" unchecked in MercuryS configuration and have the SMTP server refuse deliveries for non-existent local mailboxes. Still there may be circumstances where you prefer to receive mail even if for instance the recipients address has been slightly misspelled (which is why the option exists, obviously). To avoid bouncing a lot of spam to (usually faked) sender addresses GrayWall is a great tool. Blacklists like Spamhaus, however, that normally are good spam fighting tools, won't help much in this case if set for tagging rather than rejecting (which is the most secure way to use them).
The RCPT Event Daemon will attempt to combine the information known in MercuryS before the message body is received to reject messages for non-existant local mailboxes that most likely are junk. It will check for X-Blocked headers added by blacklists, it will check for sending characteristics often used by spam bots, and will see if the message is a notification (delivery failure notifications to non-existent mailboxes are presumably never worth receiving). If no such indication is found and the RCPT is accepted the daemon will still increment the failed RCPT count for the transaction so the compliance check of failed RCPTs can be performed for multi-RCPT messages. Any action taken by the daemon can be seen in the MercuryS console window and log file.
Some testing has shown that this actually works surprisingly well. The daemon itself is very small and should not increase system load noticably. Still, I would not recommend using it in production unless you have first verified that it behaves satisfactorily in your environment. It requires Mercury 4.5 or higher version.
To install it, copy RcptEvt.dll to the Mercury directory and add the following line to the [Daemons] section of DAEMON.INI:
RcptEvent = rcptevt.dll