I assume your SMTP solution is going to deliver all mail to a "smart host", and isn't going to do MX resolving itself, and deliver the mail to one of the servers returned. In that case, if you get a "relaying denied" error, you have a serious problem - it basically means all you may be able to do send mail to local users. Your error message should have been "this solution is never ever going to work".
If the user gets a "connection refused" message, he'll be pissed. He doesn't want a "connection refused" message from an MTA. He wants the MTA to queue the mail and retry again. That's the task of the MTA - not the task of the user. This problem was solved more than 30 years ago.
If you just fill in a correct return address errors, not only the error message will be send to the user, the mail as sent will be returned as well, even if there's a problem (like 'relaying denied') further down the line.
Snippets of code should be wrapped in
<code> tags not<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor