oliver@??? said:
} To answer this and then try and get back to the original question;
} Perl 5 is designed to be integratable, so you could actually hijack
} perl5 and write your own main() for it, which opened port 25 as a
} listening port if neccessary, gave away permissions, ran your C
} initialisation and then handed over to Perl.
Hmm... could do things this way I guess...
My preference is leaning more and more towards having an additional thing
that goes in the same place as the system filter does right now. It
starts a new interpreter (probably using a script that was pre-compiled on
startup - saves overall time), and runs that at that point, probably with
the same permissions as the system filter runs right now. The API built
round it would give it read-only access to basically the set of variables
that exim defines for filters.
It would be able to return:-
- a list of recipients (unmodified, modified or empty)
- an instruction (freeze, drop, bounce or "send-directly-to-transport(x)"
} The main issues with embedding perl into exim are security (you could
} embed taintperl, but that wouldn't help much)
run in same way as the current filter - same security worries (but more
powerful language)
} and garbage collection.
Need to look what happens right now - I guess the filter actually runs in
another process (need to look), in which case that process dies and gets
taken out with the trash (oh dear, how american - maybe I mean collected
by the dustbin lorry).
} How many perl scripts open files, create strings and arrays, and then
} just exit, with no cleanup?
The perl stuff itself should garbage collect - if you destroy the
interpreter.
Nigel.
--
[ Nigel.Metheringham@??? - Systems Software Engineer ]
[ Tel : +44 113 251 6012 Fax : +44 113 234 6065 ]
[ Real life is but a pale imitation of a Dilbert strip ]
--
*** Exim information can be found at
http://www.exim.org/ ***