On 08/05/2019 00:57, Jeremy Harris via Exim-users wrote:
On 08/05/2019 00:39, Mike Tubby via Exim-users wrote:
user_filter:
driver = forwardfile
data = ${lookup mysql{SELECT rule FROM users LEFT JOIN domains \
ON domains.id=users.domain_id LEFT JOIN filters \
ON users.id=filters.user_id WHERE
domains.domain='${quote_mysql:$domain}' \
AND users.username='${quote_mysql:$local_part}' \
AND domains.active=1 \
AND users.active=1 \
AND filters.active=1}}
no_verify
no_expn
check_ancestor
Where's your rule ordering? And what on earth is "forwardfile" ?
erm, that's something left over from an Exim 3.x config file which I
used to create the above example - my bad ;-(
Am I going to need to arrange for the database result set to start with
'# Exim Filter' each time or is their a boolean to force this?
If there isn't a boolean to force it, then it would be good to have a
'is_filter' boolean ;-)
No, there's not enough call for that; it's your problem :)
It's only a string; just glom it on before the result
of the DB lookup expansion.
I can do but I cannot obviously see how to do string concatenation in to
'data =' (have you tried lloking up how to do this string concat in the
Exim documentation?)
data = "# Exim Filter \n\n" ${lookup mysql{SELECT rule FROM users LEFT JOIN
domains \
ON domains.id=users.domain_id LEFT JOIN filters \
ON users.id=filters.user_id WHERE
domains.domain='${quote_mysql:$domain}' \
AND users.username='${quote_mysql:$local_part}' \
AND domains.active=1 \
AND users.active=1 \
AND filters.active=1 ORDER BY filters.id ASC LIMIT 100}}
Fixing the order of the filters and a sensible maximum is trivial with a
bit of SQL.
As far as memory utilisation goes, won't Exim discard any memory it
allocated for the result set at the end of the delivery?
Yes. I wasn't meaning permanent.
Good ;-)
--
## List details at https://lists.exim.org/mailman/listinfo/exim-users
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/