-------- Original-Nachricht --------
> Datum: Tue, 4 Aug 2009 13:01:12 -0500
> Von: "/dev/rob0" <r...@gmx.co.uk>
> An: postfix-users@postfix.org
> Betreff: Re: Question regarding Restriction Classes

> On Tuesday 04 August 2009 07:48:12 Steve wrote:
> > I have a problem with restriction classes that I can't solve. I have a
> > bunch of restriction classes. In order to simplify this mail I am only
> > using two. One for SPF checking and the other for Greylisting. Now I
> would
> > like to have for each of the restriction classes a bunch of conditions
> to
> > whitelist by client ip, sender name or recipient name and that twice.
> Once
> > on a map per policy service and one global.
> >
> > Basically something like that here (simplified example):
> > -------
> > /etc/postfix/main.cf:
> >     smtpd_restriction_classes =
> >             spf_policy
> >             greylist_policy
> >
> >     spf_policy =
> >         check_client_access
> > pcre:${config_directory}/lookups/pcre/spf_client_whitelist.cf
> > check_sender_access
> > pcre:${config_directory}/lookups/pcre/spf_sender_whitelist.cf
> > check_recipient_access
> > pcre:${config_directory}/lookups/pcre/spf_recipient_whitelist.cf
> > check_client_access
> > pcre:${config_directory}/lookups/pcre/global_client_whitelist.cf
> > check_sender_access
> > pcre:${config_directory}/lookups/pcre/global_sender_whitelist.cf
> > check_recipient_access
> > pcre:${config_directory}/lookups/pcre/global_recipient_whitelist.cf
> > check_policy_service unix:private/spf-smtpd-policy
> >
> >     greylist_policy =
> >         check_client_access
> > pcre:${config_directory}/lookups/pcre/greylist_client_whitelist.cf
> > check_sender_access
> > pcre:${config_directory}/lookups/pcre/greylist_sender_whitelist.cf
> > check_recipient_access
> > pcre:${config_directory}/lookups/pcre/greylist_recipient_whitelist.cf
> > check_client_access
> > pcre:${config_directory}/lookups/pcre/global_client_whitelist.cf
> > check_sender_access
> > pcre:${config_directory}/lookups/pcre/global_sender_whitelist.cf
> > check_recipient_access
> > pcre:${config_directory}/lookups/pcre/global_recipient_whitelist.cf
> > check_policy_service inet:127.0.0.1:2501
> >
> >     smtpd_recipient_restrictions =
> >             permit_mynetworks
> >             reject_unauth_destination
> >             spf_policy
> >             greylist_policy
> >             permit
> > -------
> >
> >
> > Now my problem is that if I would add an sender/recipient/client ip to
> one
> > of the maps for SPF and return OK as action then the Greylisting policy
> > would as well be overstepped. I don't know what I can add as action to
> not
> > overstep the Greylisting policy? I have not tried DUNNO but as far as I
> > understand the DUNNO would just continue to evaluate the other maps and
> at
> > the end it would hit the check_policy_service anyway. Right?
> >
> > I was thinking in maybe adding another restriction class and branch/jump
> > there instead of giving an OK. For example:
> 
> Right ...
> 
> > instead of:
> > -------
> > /^123\.123\.123\.123$/ OK
> > -------
> >
> > use this here:
> > -------
> > /^123\.123\.123\.123$/ dunno_policy
> > -------
> >
> >
> > and then in main.cf adding dunno_policy to smtpd_restriction_classes and
> > adding something like that for the dunno_policy: -------
> > dunno_policy =
> >         check_client_access
> > pcre:${config_directory}/lookups/pcre/dunno_policy_client.cf -------
> >
> > and in dunno_policy_client.cf:
> > -------
> > /./ DUNNO
> > -------
> 
> But I don't think this is it. What you want to do is make subclasses
> that continue on into your restrictions.
> 
This statement I don't understand. Allow me to rephrase what I have understood 
from the above paragraph:

Restrictions are mubmle_restrictions (aka 
(smtpd_client|smtpd_helo|smtpd_sender|smtpd_recipient|smtpd_data|smtpd_end_of_data|smtpd_etrn)_restrictions)

What are subclasses? I don't know what that is?



> > But I am unsure what happens if I branch/jump from one restriction class
> to
> > another and the other restriction class has just a DUNNO. Will then the
> > processing return back to the first restriction class and continue or is
> > the whole branching/jumping more or less like a flow of processing
> without
> > returning back there where it was originally called?
> 
> DUNNO is going to exit only that one restriction, and continue with the
> next specified restriction. It doesn't matter that you came in via a
> restriction class; DUNNO is not going to exit the class.
> 
So inside a restriction I can have multiple classes called. If in one of the 
classes I do an OK then the whole restriction is exited. Right?
If in one of the classes I do a DUNNO then the execution stays inside the class 
and continues. Right?

Much like:
RESTRICTION 1: START
  CLASS 1: START
    COMMAND 1
    COMMAND 2
    IF ACTION IS OK THEN WHOLE RESTRICTION 1 IS OK
    IF ACTION IS DUNNO THEN CONTINUE WITH NEXT COMMAND (3) IN CLASS 1
    COMMAND 3
    COMMAND 4
  CLASS 1: END
  CLASS 2: START
    COMMAND 1
    COMMAND 2
  CLASS 2: END
  CLASS 3: START
    COMMAND 1
    IF ACTION IS OK THEN WHOLE RESTRICTION 1 IS OK
    IF ACTION IS DUNNO THEN CONTINUE WITH NEXT COMMAND (2) IN CLASS 3
    COMMAND 2
    COMMAND 3
  CLASS 3: END
RESTRICTION 1: END


> restriction_classes = class_relay_ok, class_helo, class_grey, class_rbl
> class_relay_ok = permit_mynetworks, permit_sasl_authenticated
> class_helo = check_helo_access pcre:$config_directory/helo,
>       reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname
> class_grey = check_policy_service ...
> class_rbl = reject_rbl_client ...
> smtpd_recipient_restrictions = class_relay_ok, check_recipient_access
>       hash:$config_directory/rcpt_restrict, reject_unauth_destination
> 
> Add more classes and granularity as desired. Then in the rcpt_restrict
> map, call the classes you want, per recipient or per domain.
> 
> g...@example.com      class_helo, class_grey, class_rbl
> nog...@example.com    class_helo, class_rbl
> wants...@example.com  reject_unauth_destination
> 
Now that is new to me. I did not know that I can call multiple restriction 
classes in one statement. I now remember to have read about that some while ago 
but I simply have forgotten about it. Thanks! Thank you so much reminding me 
about that.


> > Does anyone know the answer? Is that somewhere described in Postfix?
> Where?
> >
> > Or does anyone know a better way in handling such a situation/problem?
> 
> Not sure. I do know that you will need lots of caffeine and analgesics
> as you develop and debug this. And then you'll never want to look at it
> again! (Don't ask how I know this!)
>
LOL! :)
But I understand now better. Your text above helped me. And I have read now 
again more about restriction classes and I think I get it. My viewpoint 
changed. I was looking at the whole topic with a "developer" eye but that's 
wrong. I see now that the way restriction classes are handled is differently 
then I expected. It's more a way of extending the processing by adding blocks 
of commands on condition then branching/jumping inside the processing flow.

> -- 
>     Offlist mail to this address is discarded unless
>     "/dev/rob0" or "not-spam" is in Subject: header

-- 
Jetzt kostenlos herunterladen: Internet Explorer 8 und Mozilla Firefox 3 -
sicherer, schneller und einfacher! http://portal.gmx.net/de/go/atbrowser

Reply via email to