Re: [exim] Taint checking and exim 4.96rc0

Top Page
Delete this message
Reply to this message
Author: Slavko
Date:  
To: exim-users
Subject: Re: [exim] Taint checking and exim 4.96rc0
Hi,

Dňa Sat, 30 Apr 2022 10:10:08 +0100 Jeremy Harris via Exim-users
<exim-users@???> napísal:

> On 30/04/2022 00:54, Slavko (tblt) via Exim-users wrote:
> > Yes, as i wrote the same already some time ago, some generic
> > ${detaint:...} expansion is missing.
>
> That would be instantly abused.


I understand, but IMO exim's dev have not take responsibility behind
stupid admins... But, please, how ${detaint:...} differs eg. from:

    ${lookup{...} lsearch*,ret=key{file_with_*_only}}


The only differences i see are length of expansion to type and to be
less effective (lookup will be done twice).

> > verify recipients from my MX to my other MTA (where local DB are
> > stored) by callout. But that doey not detaint recipient address nor
> > domain,
>
> That's worthy of consideration; thank you for the idea.
> Essentially, it would be treating a backend MTA as a trusted DB
> for lookup.


Nice, and please, can you consider in that "trusted DB" something,
which can interpret deffer responses?

I mean real 4xx responses, not eg. temporary network problem or so. For
now i do not use this feature, as i cannot distinguish these two
(network problem vs. response) states. But returning deffer from
remote MTA is wanted, eg. for quotas.

> Volunteers to work on any aspect, including redis support, are
> always welcome. It really needs someone who uses it and finds
> a facility lacking (meaning: not me).


I do not afraid to help, but my C knowledge is less even than basic,
and i feel too old (and not healthy) to start learn it now, especially
when i evade C for years ;-)

I do not consider itself as redis expert, but i use redis with MTA/MSA.
I have to build own exim, to i can test these build-in redis lookups,
but i stop to test it, when i realize, that boolean responses are not
usable. There are relative simple workarounds eg. for EXISTS, where one
can try to fetch key's value. But this prevents to test multiple keys
at once and with more "complex" commands, e.g. SISMEMBER this can be
more hard, as redis sets can be large, and fetching whole set (to check
if something is in it) is not ideal and i use these sets eg. for per
user country BL/WL on MSA shared with IMAP. These are not too large,
but anyway.

I feed redis's streams with some logging details, and (while not
directly from exim) i use redis to limit/count access by its HLL
with sliding window and some lua help. And i use its PUBSUB to
distribute fail2ban blocks over multiple machines... Thus i consider
redis as very useful to share state across multiple machines.

Thus, if someone can do things in C, i can provide examples and
test them and we can together get some results, from which can profit
all.

regards

--
Slavko
https://www.slavino.sk