howdy-

i wrote the "onchange" patch which was added to vpopmail version 5.4.15. if you're not familiar with it, it allows the administrator to set up a ~vpopmail/etc/onchange script which is automatically executed whenever something changes with vpopmail's status, i.e. when a domain, mailbox, or alias is added or removed, or a password is changed.

my reason for writing this is to support the "validrcptto.cdb" patch that i wrote for qmail. it enables qmail to consult a cdb file containing every valid recipient address on the system, and reject incoming messages which are being sent to non-existent users.

        http://qmail.jms1.net/patches/validrcptto.cdb.shtml

the idea is that whenever "something" changes- mailbox, alias, whatever- the list of valid recipient addresses also changes, which means that the validrcptto.cdb file needs to be re-generated. i have a daemontools service that i call "qmail-updater", which waits for input on a named pipe and then runs a script as root. the named pipe is writable by any user. the root script re-generates the validrcptto.cdb and auth.cdb files, and then for one of my clients, pushes those files out to three other machines which pre-process the flood of incoming mail through rblsmtpd, clamav, and spamassassin, and then hand the messages to the mailbox server.

        http://qmail.jms1.net/scripts/qmail-updater.shtml
        http://qmail.jms1.net/mailhub.shtml

of course the "onchange" functionality can be used for other things- to automatically make a final backup of a mailbox before deleting it, for example.

anyway.

somebody using the vpopmail "onchange" patch, along with qmailadmin, reported that qmailadmin does not call the "onchange" function when it creates a mailing list. this makes perfect sense- qmailadmin was never patched to make it call this function, IF it was even available.

his work-around was to trigger his "qmail-updater" service via cron job every five minutes. that seemed rather ugly to me, so i looked into what it would take to make qmailadmin call the "onchange" script whenever a mailing list was added (or deleted.)

it turned out that adding the necessary code was a twenty-minute exercise, most of which involved finding the correct places to add the code, and then realizing that i needed to include vpopmail_config.h so that the compiler would know whether or not to include the onchange code in the executable.

so i'm submitting the patch to the qmailadmin developers (rick i believe) so that it can be added to a future version of qmailadmin. and in the meantime, anybody who wants to try it is free to download it. it's about halfway down on this page:

        http://qmail.jms1.net/patches/vpopmail.shtml

the page has two versions- the 1.2.9 version applies cleanly to the 1.2.10 code, while the 1.2.11 version is actually running on my own server, and has been tested- it does call the "onchange" script after adding and before removing a mailing list.

the one thing i noticed is that four error messages show up because the same constants exist in vpopmail's "vpopmail_config.h" and qmailadmin's "config.h", however this appears to me to be a non-issue because the qmailadmin file is included AFTER the vpopmail file.

----------------------------------------------------------------
| John M. Simpson    ---   KG4ZOW   ---    Programmer At Large |
| http://www.jms1.net/                         <[EMAIL PROTECTED]> |
----------------------------------------------------------------
| http://video.google.com/videoplay?docid=-4312730277175242198 |
----------------------------------------------------------------


Attachment: PGP.sig
Description: This is a digitally signed message part

Reply via email to