Very often I need a catch-all mailbox when testing Exchange applications. I have a nice collection of sample emails addressed to various recipients. A catch-all enables me to avoid having to create hundreds of mailboxes when configuring test scenarios. Some use a catch-all to route all domain emails to a single mailbox. These would then be downloaded and distributed through POP3. Others want a catch-all to ensure no email is lost in case of mistyped addresses. Thus it would trap all emails to unresolved recipients.
No matter why you need it, this functionality is not available unless you install some form of Exchange extension. The closest thing available from Exchange is the ability to route all unresolved recipients to a single host. This is configurable from the Exchange System Manager at the SMTP Virtual Server properties:
Of course this is not a catch-all mailbox. To transform it we need to follow KB315631 HOW TO: Forward Mail with Unresolved Recipients to a Single Mailbox. This involves setting up a new SMTP Virtual Server that acts as the target host. It also requires the creation of a VB 6 ActiveX DLL that forces all email to a single mailbox. Once ready, emails with unresolved addresses will land into this mailbox and the sender is emailed a non-delivery report NDR.
The generation of NDRs is an important issue with the solution provided by KB315631. If our intent is that of handling mistyped addresses then an NDR might be ok. The sender would thus be able to correct his error. Otherwise NDRs can be eliminated through one of the following script based catch-all solutions.
Microsoft provides a primitive catch-all VB script in KB324021 How to create a "catchall" mailbox sink for Exchange 2000. The script simply moves all emails addressed to a particular domain to one mailbox. Even if the address is valid and a mailbox for it is available, the email is still routed to the central mailbox. Thus its usefulness is very limited.
A much better script is available from Neil Hobson's blog Exchange & Catch-all Mailboxes. I used this script myself and worked well. The script adds the necessary recipient verification and only routes emails whose destination address is not resolved.
With these options you should be able to find the one that best satisfies your requirements. But before proceeding, a final important factor should be considered. A catch-all creates an unlimited set of addresses. This is dangerous if the domain is the target of a Directory Harvesting attack. Here the attacker tries to discover valid addresses through trial and error. Thus you risk to be flooded by spam. At worst this could lead to Denial of Service. So if using a catch-all in a live environment, make sure to carefully limit the mailbox size.
References
HOW TO: Forward Mail with Unresolved Recipients to a Single Mailbox
How to create a "catchall" mailbox sink for Exchange 2000
Exchange & Catch-all Mailboxes