Qmail Control CGI
current version 0.62

qmailctl.cgi

This is just here for reference as I have not been using qmail since the oughts

johnwiggins.net
email me about:

Reference

qmail website
LifeWithQmail.org
No longer active www.qmail.org
D.J Bernstein

I got fed up with editing qmail configuration files by hand (using ssh and a text editor, i.e. vim). So I decided to write a cgi that controlled the qmail email server for me. So as I find it useful I am hoping it will make someone else's life a little easier too. It is released under the GNU GPL license. It also requires the jwCGI library (version 1.30.0 ).


It has a few mild security options by default as evident in the settings file example below. It will only accept connections from certain marked IP addressess, on a certain port. By default this will be the localhost on the normal http port. It is a setuid program, i.e. the program needs to be installed 4755 permissions and owned by the user who controls qmail. This makes it a big security risk, you have been warned. It would be best if using over an insecure channel to use a tunnel with password protection (Tunnel the Qmail Control session through a secure connection). It does however make a couple of checks. i.e.
There is one configuration file for the program, which by default is /etc/qmailctl.conf. This is a simple file with few settings of the form setting=value<newline> comments start with # on a line.
This is created on first use. e.g.
# qmailctl.cgi <ver>
#
qmaildir=/var/qmail/
qmaillockdir=/var/lock/subsys/
servicedir=/service/
relayfile=/etc/tcp.smtp
relaydb=/etc/tcp.cmtp.cdb
user=root
ip=127.0.0.1
port=80
# optional
# email=root@localhost
theme=green spleen
fontsize=85
The user line must be set to the user who can control qmail. /etc/qmailctl.conf must also be owned by this user and set to 644 permissions. e.g. if the user to control is root as above.
chown root /etc/qmailctl.conf
chown root /usr/lib/cgi-bin/qmailctl.cgi
chmod 644  /etc/qmailctl.conf
If these conditions are not met, qmailctl.cgi will just display an ACCESS DENIED message and email the web servers administrator or the email address in the configuration file with an appropriate message.

Features:
Color schemes for those that appreciate whimsy with fontsizing.






Display qmail man files in the page


Uses version 1.30.0 of jwCGI http://sourceforge.net/projects/jwcgi/
To install jwCGI
tar -xvzf jwcgi-<version>
cd jwcgi-<version>
./configure
make
make install
download Qmail Control
To unpack/compile/install:
tar -xvzf qmailctl-<version>
cd qmailctl-<version>
./configure --bindir=path to cgi-bin
   e.g.
./configure --bindir=/usr/lib/cgi-bin
If you do not use qmail-pop3d comment out the usePOP3D define near the top of the qmailctl.cpp file with a double slash "//"
i.e.    // #define usePOP3D
Now compile the program.
make
make install
make suid
If you wish the qmailctl.cgi program to actually control qmail the last make suid will have to be run. Now use your web browser to browse to http://<yourserver>/<your cgi-bin>/qmailctl.cgi
On first use qmailctl.cgi will 'try and write the file' /etc/qmailctl.conf. If this is not where you want the file just change the qmailctlconf variable in globals.h before compilation. If there is an error, e.g. the permissions are wrong on qmailctl.conf, qmailctl.cgi will report an error and try and mail the web servers admin (or the user placed in the email= setting in qmailctl.conf) an appropriate message using qmail-inject.

I set up my qmail mail server following the excellent LifeWithQmail.org website or try my instructions based on this website.
To download the awesome qmail server and its supporting programs visit D.J Bernstein's site http://cr.yp.to/qmail.html.

Why am I using qmail rather than sendmail. The configuration makes more sense (please note, not the setup of the qmail server as this is way more difficult than sendmail). What goes in the configuration files is intuative, nothing like sendmail.cf which is an 'insert expletive here'. Note for flamers (email to send flames to: [email protected] grin), I am not saying sendmail sucks I am saying that changing its settings using its command line & configuration file is nothing like as easy as qmail even with m4. Oh, did I forget to mention D.J Bernstein's security guarantee.