a set of configurable boot scripts.
Version: | qboot-devel | ||
---|---|---|---|
Released: | |
||
Download: | |
||
Checksum: | |
The boot scripts will be discussed on the openqmail mailing list.
The common use case to run *qmail is under daemontools. eQmail refuses to do so for several reasons which are outside the scope here.
$ make $ make install
Now files are installed in  etc/bootctrl/ 
- beware of the relative path - and provides a good starting point for
Change into folder  etc/bootctrl/ 
and do
$ ln -s tcprules-default.cdb tcprules-smtp.cdb $ ln -s qmail-tcpd qmail-smtp.rc
As the common place for init scripts is  /etc/init.d/ 
do
$ cd /etc/init.d $ ln -s /usr/local/qmail/etc/eqmaild qmaild $ cd $OLDPWD $ /etc/init.d/eqmaild start Starting qmail-send ... OK Starting qmail-smtp ... OK
Now eQmail should run at localhost and port 25. Test it:
$ telnet localhost 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 <hostname> ESMTP quit 221 <hostname> Connection closed by foreign host. $
If until here all works fine, lets start another service listen on submission port. As you maybe have realized already there is a file  qmail-subm.env 
. More detailled explanation will be follow below. At the moment it is important to know that this file is used to define the port for submission service (default: 587).
$ ln -s tcprules-default.cdb tcprules-subm.cdb $ ln -s qmail-tcpd qmail-subm.rc $ /etc/init.d/qmaild restart Stopping qmail-send ... OK Starting qmail-send ... OK Stopping qmail-subm ... FAILED --> logic ;-) Starting qmail-subm ... OK
Test it with  openssl s_client -connect 127.0.0.1:587 
. This works similar with any other service: qmail-qmtp or smtps.
To give a bit more clarification:
 eqmaild 
is a simple wrapper which handles files with suffix  .rc 
in in good old UNIX tradition of boot scripts with parameters  start | stop | restart | status 
. qmail-init.rc 
handles the heart of *qmail:  qmail-send 
. Fortunately there is no further configuration required. qmail-tcpd 
handles different services to listen on network through symbolic linksLets go a bit more in detail with
 qmail-tcpd 
executes  qmail-tcpsrv 
- which itself is a tcpserver. Refer to qmail-tcpsrv.1 and tcprules.1 to learn more about tcpserver. There are 3 files required to start a service. Lets use the submission service:
 qmail-tcpd –> qmail-subm.rc 
The red marked part is the link between the files, means  qmail-subm.rc 
looks for a cdb and a env file with the corresponding subm.
 qmail-tcpd 
has some build in defaults to listen on port 25 and all ip addresses!
 qmail-tcpsrv 
read the its configuration (tcprules) from a cdb. A cdb will be build by  mktcprules 
from a corresponding text file: tcprules-default.txt –> tcprules.default.cdb. If a link exists with the same name like a text file it will be replaced by the new cdb.
If different services using the same rules set, a symbolic link can be used. Thus there are no duplicate rule sets to maintain. An alternative cdb with independant naming conventions can be defined in the env file (see below).
Simple make a copy of an existing one if an env file for a service doesn't exists:
$ cp qmail-subm.env qmail-smtp.env
After changes the related services have to be restarted.
The first section will be used to set/overwrite basic options. The most common requirement to have an env file is to define a port for a service. To override port 25 (default) do
PORT=587
Define another tcprules cdb
RULES=/etc/tcprules/tcp.smtp.cdb
In section Extended Startup Options you can configure plugins which will be executed before and/or after  qmail-smtpd 
. Typical ones are spamdyke as PRE plugin or tool for authentication as POST plugins. It is allowed to define additional vars and combine them. The boot script uses PRESMTPD and POSTSMTPD only.
The section Environment Vars lets you define - what surprise - environment vars. They have to be defined in format of  setenv 
:
setenv NORESULT 1
This for example suppress the output of OK/FAILED of the boot script (useful for better system integration).
Beware that  setenv 
doesn't require a '=' (equal sign)! Surround values of env vars with quotation marks if they include spaces!