On Thursday 27 October 2011 20:59:47 Fred Kilbourn wrote:
> I have a virtual mailbox environment and mailboxes are mapped into
> postfix from mysql with the following map:
> 
>       virtual_mailbox_maps =
> proxy:mysql:.../mysql_virtual_mailbox_maps.cf
> 
> The map queries the database as such:
> 
>       SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
> 
> Right now, when a user is disabled (by setting active = 0), the
> mailbox is not given to postfix and a 5.1.1 / unknown user in
> virtual mailbox table rejection occurs.  Can someone help or point
> me in the right direction to figure out how to check for these
> disabled boxes and instead send a 4.2.1 or 5.2.1 mailbox disabled
> reply instead?

Remove the "AND active = '1'" condition from the virtual_mailbox_maps 
query. Add check_recipient_access to smtpd_recipient_restrictions to 
return the lookup address where active is 0. Something like:

main.cf ::
   smtpd_recipient_restrictions = [ ... ] reject_unauth_destination,
       check_recipient_access mysql:/path/to/disabled-user-query[,
       ... ]

/path/to/disabled-user-query ::
   query = SELECT username FROM mailbox WHERE username='%s'
           AND active = '0'
   result_format = 'reject %s Mailbox disabled'

Look up the appropriate SMTP code in RFC 5321, and DSN in RFC 3463 if 
desired. I think it would be '550 5.2.1 %s Mailbox disabled'.
-- 
    Offlist mail to this address is discarded unless
    "/dev/rob0" or "not-spam" is in Subject: header

Reply via email to