I've been griping about this for some time and Ken implemented a new feature
in 4.9.7 that helped alleviate the problem a little bit but because there is
no real file locking over NFS, I was still have problems with my
~vpopmail/etc/open-smtp file getting overwritten by other processes as users
simultaneously authenticated. The problem didn't become noticable until my
POP traffic started getting up to around 100 authentications per minute.
Since then it's grown progressively worse until today.

There is already a solution for the problem coded into vpopmail but
unfortunately, it's not one I can use (at this time). If you compile
vpopmail with the --use-mysql feature, it'll store all the authentication
databases AND the open smtp relay table in a MySQL database. Unfortunately,
I'm using some other software that doesn't yet support MySQL authentication
so I wanted to have only the smtp relay information stored in MySQL. 

So, with my very rudimentary knowledge of C, I delved into the source code,
figured out where the hooks are that store away the smtp relay information
and hacked up some changes to it. In a couple hours I had a working copy of
vpopmail authenticating out of cdb files and storing the smtp relay in a
MySQL table. The real fun began when I decided to implement it The Right
Way. After consulting a few primers on automake and autoconf, I made a few
changes to the configure scripts, a variety of source code tweaks, and then
finally built a patch that can be applied over a virgin 4.9.7 source tree. 

My hacks are a new configure option (--enable-roaming-users=mysql) and
hopefully they'll be integrated into the next release of vpopmail.  If you
want to play/test/make fun of it, it's available on my web site
(http://matt.simerson.net/computing/qmail.toaster.shtml) for your amusement.
Wahoo, I've got 147 entries in my relay table...I couldn't get 25 in the
open-smtp file before it would get overwritten. :-)

Matt

Reply via email to