Hi,
I've spent some part of the last week on trying to figure out whether dovecot LDA meets our requirements for a new mail server infrastructure (the IMAP and POP servers, as well as the SASL backend certainly do; thanks a lot!). The one thing that's holding me back is that we need per-user integration of SpamAssassin and some other, custom content filters, all of which are implemented as Unix pipe filters.
My conclusion is that since dovecot LDA cannot yet integrate such filters in the delivery chain, but it supports plugins, that such a plugin must be written. Conceptually, it's very simple: a configuration file option specifying the Unix pipe, and a plugin that does the proper popen() (or whatever is to be used these days) call, checking for errors and doing the right thing.
Unfortunately, I do not have much time at my hands -- basically it all boils down to Sunday evening and a little bit of Monday, and then it's got to be done. My C is rusty, but I do have a lot of experience with it, so I am confident...
... but what would really help is if someone who knows the internals of Dovecot would give me a starting point, or even some more information. How do I conceive to write such a plugin? I could not find the information online, and I'd rather not reverse engineer existing plugins, for that approach usually leads to ugly and hence unstable/insecure/unusable code.
Any feedback is thus warmly appreciated! Also, if someone is online on IRC on Sunday and Monday and wouldn't mind if I asked a question now and then, please let me know.
It goes without saying that I will happily submit my plugin (once its tested) to Dovecot upstream under the Artistic Licence, or if that doesn't work, another licence of your choosing.
Thanks,
-- martin; (greetings from the heart of the sun.) \____ echo mailto: !#^."<*>"|tr "<*> mailto:" net@madduck
spamtraps: madduck.bogus@madduck.net
"common sense is the collection of prejudices acquired by age eighteen." -- albert einstein