Having spent a happy few hours swearing at Cyberpromo UK, I have been
thinking about exim filters and the like.....
When it comes down to it, I basically want the ability to do arbitrary
tests on an email and have arbitrary things happen on the results. ie I
want a full programming language with interfaces back into exim. Writing
yet another programming language seems a little silly when a number of
embeddable languages already exist (tcl & perl for example).
inn can do this by using perl filters run in-line.
Would embedding perl into exim (probably not as a standard option but a
"power-user" option selected at compile time) be a possibility?
exim's process model mitigates against this a little - forking is OK
(system filter for example could be loaded early, and would survive a fork
without requiring a re-compile), but each user delivery is likely to need
the perl code recompiling. However just being able to run the system
filter in this way would be a huge win. Being able to do flash state
management stuff in-line (counting the number of messages of type X in
your spam calculations) would be hugely useful.
In theory embedding a perl is quite easy. In practice life will be more
complicated. perl will need access to exim state - basically the
expansion variables and the message. It will need to be able to modify
some things - my initial thinking is that it needs to be able to do the
same as the system filter PLUS the ability to direct messages to a
specific transport (once you can do that you can for example direct all
spam to a BSMTP mailbox which allows you to recover your mistakes).
The real problem is that you are adding a powerful programming language to
a setuid program!
Would this be a useful thing to do?
Is anyone else interested in working on this?
Is Philip horrified??
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/ ***