On Thu, Dec 30, 2010 at 02:09:57PM -0600, michael.lar...@wellsfargo.com wrote:

> Perhaps I misunderstood, but you said:
> 
> > With this all mail is discarded unless *all* (my emphasis) the conditions 
> > below are met:
> > 
> >     - From an allowed SMTP client (IP address CIDR table)
> >     - From an allowed envelope sender (indexed via postmap lookup table)
> >     - To an allowed envelope recipient (indexed via postmap lookup 
> > table)
> 
> Which isn't what I want. For hosts in client_access, I don't want any
> sender/recipient evaluation - I just want it to flow through - all of
> it. For hosts not in client_access, I want it assumed they're allowed,
> but the sender/recipient restrictions asserted.

In that case change the client restrictions to "OR", but keep sender
and recipient as "AND".

    main.cf:

        indexed = ${default_database_type}:${config_directory}/
        cidr = cidr:${config_directory}/

        smtpd_restriction_classes = discard_all
        discard_all = static:discard

        smtpd_sender_restrictions =
            check_sender_access ${indexed}allowed-senders
            check_client_access ${cidr}allowed-clients,

        smtpd_recipient_restrictions =
            check_recipient_access ${indexed}allowed-recipients,
            check_client_access ${cidr}allowed-clients,
                #
                # Required to appease validation logic, in-practice,
                # allowed-clients will perimit all IPs, some to deliver
                # and the rest to discard.
                #
            reject

    allowed-clients:
        192.0.2.1       permit
        0.0.0.0/0       discard_all, permit

-- 
        Viktor.

Reply via email to