For years, people have been asking me, "how can I make Exchange work just like sendmail, where it rejects invalid recipients during the SMTP protocol?" Sendmail has historically not had a directory, and so checking if a recipient was valid was just a getpwnam() call, which is quick. Of course, when Exchange accepts a user who is not in the directory, it will issue a non-delivery report later once it has done a directory lookup, so Exchange is not actually open for relay as some people might think. Accepting mail for nonexistant users in a local domain does not meet my definition for "open for relay". For three major reasons, Exchange has not had this feature:
Well enough people asked for this that we actually put this recipient lookup feature into Exchange 2003. Enough people have asked me about it, and I don't see a KB article that explains it (I'm going to mail the right people to get that solved as well), so I wanted to quickly describe how to enable it.
Enable directory lookup for recipients in the recipient filter
Enable the recipient filter on the SMTP protocol binding that accepts mail from the Internet
Now, when someone does a RCPT TO: invaliduser@localdomain, they will get a:
550 5.5.1 User unknown
Keep the questions about Exchange 2003 coming, I'll post the answers here so everyone can see them.