Fellow Exim users,
I have just released a snapshot of "libspawner", a library that
implements the MTA side of Sendmail's Milter protocol. This library
can be used within other MTAs (or any software that handles mail) to
delegate policy decisions to external daemons that built around
Sendmail's libmilter. The source code can be found at
<
http://developer.berlios.de/projects/libspawner>.
libspawner is part of a student research project at the University of
Karlsruhe on which I am working. I am planning to provide sensible
integration into Exim.
As a proof of concept, a local_scan() function is included that
communicates with such an extermal mail filter. This has the advantage
that all the features of the Milter protocol can be used at that
stage. However, since Milter is a protocol that corresponds to the
typical stages of the SMTP transaction, it would be desirable to hook
more tightly into Exim's ACL mechanisms.
So far, I see two possible ways of approaching this task:
(1) Contact the mail filter before each corresponding ACL is processed
and store the result in one or more variables that can then be
evaluated by the ACLs.
(2) Implement the Milter queries as conditions that may be used by
ACLs. Responses are made available through status variables, also.
Which approach would be preferable from an administrator's point of
view in your opinion?
Currently, I don't see a clean way to explicitly use of some mail
modification actions of the Milter protocol that usually take place
just before the MTA accepts (or rejects) a message's DATA. Those are
* changing or removing headers
* adding or removing recipients
* replacing the body
Would it be feasible to implement these as part of the ACL system?
I am looking forward to any questions or suggestions you might have.
Thanks for your time and bandwidth.
Cheers,
-Hilko