Qmail NMX (version 0.1.1)
Architecture Overview
Macro View
The picture below illustrates the macro process provided by Qmail NMX (also
called QNCE - Qmail NMX Cluster Environment).
As you could see the user accounts (and its respective domains) were stored
under the extern file system entity, that can be available to all servers
either by a simple file system export operation (eg. NFS) or by a specific
hardware solution (eg. disk array hardware).
Process View
The picture below illustrates how the message comes thru Qmail NMX. Note that
only host #1 and #2 are used for simplification purpose.
- the message comes through network or local modules (qmail-smtpd,
qmail-qmtpd and qmail-inject).
- the message is sent to qmail-qmqpc program.
- qmail-qmqpc requests the available host to Dispatcher program (Dispatcher
module can be hosted in host #1 or host #2, see
/var/qmail/control/dispatcher file for more information).
- Dispatcher answers the qmail-qmqpc request, giving it the ip address of
host #2 (next time it will give information about host #1, and so on).
- qmail-qmqpc delivers the message to qmail-qmtpd, using
QMQP.
- qmail-qmqpd receives the message and call qmail-queue program.
- qmail-queue enqueue the message and notifies the qmail-send by its trigger
(/var/qmail/queue/lock/trigger).
- qmail-send reads the message from queue and process it.
- if the message recipients are to be delivered to local accounts,
qmail-send sends the message thru qmail-lspawn module. Qmail-lspawn invoke
qmail-local to deliver this message under user accounts architecture (user
mailbox).
Note that the same procedure is used for the remote delivery process
(qmail-rspawn and qmail-remote modules).