[Raw Msg Headers][Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: smtp-policy q-s and wishes
On Tue, Feb 13, 2001 at 07:21:34PM +0300, Eugene Crosser wrote:
> about relaying policy:
>
> > The more I think of it, I think it really begins to need a script
> > facility for this use, not only simple attributes + hardcoded logic
> > about the order of things.
>
> I always felt that attribute model is not very convenient.
> I would prefer something like this:
Hmm.. Why not, do you have spare cycles to implement it ?
I am pushing my cycles on wrestling the ZMailer Manual SGML,
now that I can produce nice printout *and* HTML properly
from same source.
This "something" needs some statements to bind dbases (e.g. what
is "localnames"?)
Syntactic details like should there be $(thing to evaluate) or
just (thing to evaluate) are matters of taste -- I prefer $(...).
How can multiple variables be set ? Are they just boolean flags,
or perhaps e.g. RBL database lookup yields text ?
Set value (as opposed to unset/0) could evaluate as:
$hostile
in test, and lead to text expansion in deny message.
Could the same machinery be extended to be message-content filter ?
(I mean these function evaluators)
> PHASE initial
> * unset relay
> PHASE connection
> [10.0.0.0]/8 deny "Connections from private networks not accepted"
> [123.45.67.0]/24 set customernet
> (checkdb custnetworks) set customernet
> [87.76.0.0]/16 set hostile
> PHASE helo
> # nothing
> PHASE mailfrom
> (! resolvable) deny "From domain must resolve"
> PHASE rcptto
> (checkdb localnames) set islocal
> (/^postmaster@/ & ?islocal) accept
> ?hostile deny "Your netblock is barred"
> ?islocal accept
> (checkdb mxrelay) accept
> ?customernet accept
> * deny "Relaying denied"
>
> (just to get an idea) - you would see which checks are performed at which
> time. Every check can either terminate session with error response or
> set/unset named flag. At later stages, these flags can be checked.
>
> Each check could match variable available at this phase against regexp,
> look it up in a database, or just see if a particular flag is set or unset.
>
> Eugene
--
/Matti Aarnio <mea@nic.funet.fi>