Re: [Exim] Exim 4 Planning - some comments.

Página superior
Eliminar este mensaje
Responder a este mensaje
Autor: Kevin P. Fleming
Fecha:  
Cc: exim-users
Asunto: Re: [Exim] Exim 4 Planning - some comments.
I prefer the "running filter" approach (ACL isn't really the right term),
and putting it into a separate section of the config file so it isn't a
"multiple-use option" makes sense as well. It make the process Exim must go
through to accept/deny a message very clear and understandable, IMHO. Of
course, I'm a programmer as well, so my opinion may be biased, but it's
still far better than the current conglomeration of options that
conflict/override each other.

----- Original Message -----
From: "Philip Hazel" <ph10@???>
To: "John Sloan" <sloanj@???>
Cc: <exim-users@???>
Sent: Wednesday, January 03, 2001 3:48 AM
Subject: Re: [Exim] Exim 4 Planning - some comments.


> On Tue, 2 Jan 2001, John Sloan wrote:
>
> > Hmm. I'm uncomfortable with this proposed syntax. An alternative might
> > be to go with an ACL type format, such as that used by some routers and
> > programs such as squid (my primary source for this idea). Multiple

lines
> > which terminate on the first match. Such a format might look like:
> >
> > accept_recipient accept (address = +local_domains) verify sender_verify
> > accept_recipient accept (address = +relay_domains) sender_verify
> > accept_recipient deny all
>
> What do other people feel about this proposal?
>
> I can see the attraction, but I have two worries:
>
> (A) Multiple option settings aren't used for anything else in Exim. I'd
> rather not introduce one thing that is special. The more "natural" way
> to do this would be to invent a new section of the configuration file
> (like the rewrite, retry sections) to contain the recipient ACL.
>
> (B) The more substantive point: I fear that too much repetition will be
> needed because of the lack of parentheses. Your example above already has
> to repeat sender_verify, which is trivial, but what about this example:
>
> Accept a recipient if it comes from a certain list of hosts, and
> either the SMTP session is authenticated, or the host is not in an RBL
> list.
>
> Assume ACL items separated by colons (so I've doubled the colons in the
> host list, but alternatively you could change separators):
>
> accept host = 192.168.10.3 :: 10.3.4.0/24 : authenticated
> accept host = 192.168.10.3 :: 10.3.4.0/24 : notlisted =

dul.maps.vix.com
>
> With my proposed syntax, this is
>
>   accept_recipient = host = 192.168.10.3 : 10.2.4.0/24   \
>                      AND                                 \
>                        (                                 \
>                        authenticated                     \
>                        OR                                \
>                        notlisted = dul.mapx.vix.com      \
>                        )

>
> My worry is that in complicated situations, this kind of repetition will
> be necessary rather often. Perhaps it doesn't matter too much from a
> conceptual point of view, but it makes it a *lot* harder to optimise
> testing by caching. Let me explain some more:
>
> Using my scheme, if a message has several recipients, the host test will
> be done for the first one, and Exim will remember that "the first test
> succeeded" (or failed, as the case may be). If the list involves
> database lookups, the test might be quite expensive to perform. When the
> second recipient is being checked, the test need not be done again.
>
> Using ACLs, it isn't obvious that the second host test is identical to
> the first one. (Well, this example is obvious to a human, but what if
> the spacing were different, or the items were in another order, or some
> other minor change. Checking for "the same test" isn't trivial.)
>
>
> Hmm... <thinks> ...
>
> Maybe I'm just inexperienced in writing ACLs. I guess it could be
> written without repetition like this:
>
>   deny    host = ! 192.168.10.3 :: ! 10.3.4.0/24
>   accept  authenticated
>   accept  notlisted = dul.maps.vix.com

>
> Let me have a go at writing the big example from my document:
>
> accept_recipient = address = postmaster@??? OR \
>                    sender = !bad@??? AND \
>                    ( \
>                     address = +local_domains AND verify OR \
>                     authenticated OR \
>                     address = +relay_domains OR \
>                     host = 192.168.23.0/24 \
>                    ) \
>                    AND notlisted = dul.maps.vix.com \
>                    AND sender_verify

>
> This turns into
>
>   accept   address = postmaster@???
>   deny     sender = bad@???
>   deny     listed = dul.maps.vix.com
>   deny     no_sender_verify
>   accept   address = +local_domains : verify
>   accept   authenticated
>   accept   address = +relay_domains
>   accept   host = 192.168.23.0/24

>
> (I think an implicit "deny all" at the end should be understood.)
>
> I have to admit that that is no more complicated than my proposal, and
> it also simplifies things by not having to worry about parentheses and
> AND and OR (and messy continuation lines). Actually, both of these
> settings contain the same bug. Proving how tricky it is to write logical
> expressions, whatever the syntax. An exercise for the reader. :-] The
> mended version may even be neater in the ACL syntax.
>
>
> SO... What do people think? Votes, please.
>
>
> --
> Philip Hazel            University of Cambridge Computing Service,
> ph10@???      Cambridge, England. Phone: +44 1223 334714.

>
>
> --
> ## List details at http://www.exim.org/mailman/listinfo/exim-users Exim

details at http://www.exim.org/ ##
>



Shop Safely Online Without a Credit Card
http://www.rocketcash.com