I have been playing with qpsmtpd in more unusual configurations on
personal domains belonging to myself and some friends. I noticed
recently that one of the domains has been getting 30-40 spams per SECOND
to invalid mailboxes. I am guessing this is from having run qmail
before, where qmail-smtpd always accepted an incoming message and if
spammers don't check for bounces, will always assume a valid mailbox
(one of the main reasons I switched to postfix + qpsmtpd).
Anyway, this particular configuration also runs postfixadmin, a virtual
mailbox manager based on MySQL. That is only relevant in that user
lookups is somewhat expensive due to SQL query so I would prefer to
minimize that.
I was using qpsmtpd as a proxy using smtp-forward and I just discovered
that it doesn't actually return the error messages returned from
Postfix, at least in my installation. I always get the following if
sending e-mail to an invalid mailbox:
451 Unable to queue message ()
Now, postfix actually returned this:
550 <[EMAIL PROTECTED]>: Recipient address rejected: User unknown in
virtual mailbox table
It looks like smtp-forward doesn't bother to look at the return code and
always return DECLINED, which I will assume is the 451. I am curious as
to why the $! error message never shows up though - is this an issue
with Net::SMTP or ? If I could get to the postfix error message, maybe
I can modify smtp-forward to just pass-through the Postfix error message
(or is that a bad idea?).
Next, I tried postfix-queue (took me awhile to figure out I needed the
MASK_EXTERNAL flag). Now, the behavior goes back to what qmail does,
which is to allow all recipients and send a bounce later (and then
double bounces - yuck). I am going to leave it at this configuration
for now.
So the question is, is there a way for me to return 5xx on these
messages at the SMTP level given my configuration? I seems to me that
if I can get smtp-forward to pass-through the returned error codes it
would be ideal, but I am hardly an SMTP guru so your help is much
appreciated.
Thanks!
Tim