Matt Brookings wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Christopher Chan wrote:
Is this at all possible?
Right now I use postfix and I only have a qmail queue just for vpopmail
to install but qmail is otherwise not at all involved.
We'd love to see vpopmail work with Postfix, but I just don't have enough
with Postfix to do this. It would be nice for vpopmail to have a 'forward-end'
for working with different MTAs, but as I said, my Postfix experience is rather
Is there anyone with sufficient Postfix experience, and development experience,
interested in working on this?
I've never used Postfix, and I haven't looked at how you modularized the
back ends, but here is what I'd do...
o Search through vpopmail code for anything that interacts directly with
qmail. Move the code into mta_qmail.[ch] or some such, and put it
into a function. Comment well! Replace the code in the original
location with a function call. Test.
o Take qmail.[ch] and comment out all the qmail specific code, leaving
in the comments and any logic that fits in the MTA back-end creating
o Copy mta_skeleton.[ch] to mta_postfix.[ch] and fill out the functions
as needed by Postfix. <This is the only part that takes a Postfix expert.>
o Adjust the build system so you can select the MTA back end the same
way you select the authentication back end.
Nothing to it... but time. :)
p.s. Sorry I don't have time to look at it right now, but I have
thought about the problem quite a bit.
. For the search, try replacing the include of qmail.h (or what ever
it is called) with mta_qmail.h and only include the qmail headers in the
MTA back end. You should now get compile errors everywhere you need to
work. I think you will find most (all?) of the qmail related code in
the areas that manage domains.
. You should be creating functions like mta_add_domain(),
mta_del_domain() and mta_get_domain info(). Nice high level functions
with as much of the code from libvpopmail grouped into the smallest
number of functions possible.
If you find a situation where a program like qmail is calling a function
that resides in an authentication back end, you should move the function
to vpopmail.c and change the name in the back end. Move the qmail
related code to the MTA back end, and call the back end functions as
needed from vpopmail.c.
It should end up like this:
libvpopmail (in vpopmail.c)
auth back mta back