Matt Brookings wrote:
Hash: SHA1

Christopher Chan wrote:
Hello all,

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, 
who is
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.[1] Move the code into mta_qmail.[ch] or some such, and put it into a function.[2] 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 mta_skeleton.[ch].

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.

[1]. 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.

[2]. 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
     end           end


Reply via email to