s/qmail:
Section: Misc. Reference Manual Pages (qmail-todo)
Updated: 8
Index
Return to Main Contents
NAME
qmail-todo - schedule state change of message for delivery
SYNOPSIS
qmail-todo
DESCRIPTION
s/qmail
with a high local and remote concurrency number
is able to deliver a tremendous amount of messages (throughput).
Depending on the provided resources however,
often this can not be achieved since
qmail-send
becomes a bottleneck on delivery.
qmail-send
preprocesses all new messages before deploying them for
local
or for
remote
delivering. In a particulur run,
qmail-send
does one 'todo' processing, but has the ability to close multiple jobs.
Due to this layout, potentially
qmail-send
can not feed all the new available (local/remote) delivery slots
and therefore, it is not possible to achieve the maximum throughput.
This is a minor problem, given
qmail-send
is able to complete this in short time; but due to
many file system calls (fsync and (un)link) a 'todo'
run is expensive and throttles the throughput.
qmail-todo
solves this 'silly qmail (queue) problem'
which is apparent only on system with high injection rates,
delegating the scheduling of 'todo' runs to a dedicated process.
COMMUNICATION
qmail-todo
interfaces with
qmail-send
on file descriptors [1,8] on sending
and [7,0] for receiving.
qmail-todo
communicates with
qmail-clean
on file descriptors [2,0] for sending
and [3,1] for receiving.
qmail-todo
and
qmail-send
share an extended and peristent message exchange format:
D[LRB]<mesgid>
Start delivery for new message with id <messid>.
The character L, R or B defines the type
of delivery: Local, Remote, or Both, respectively.
L<string>
Dump string to the logger without adding additional
'\n' or similar.
qmail-todo
sends "\0" terminated messages, whereas
qmail-send
just sends one character to
qmail-todo.
BIG PICTURE
+-------+ +-------+
| clean | | clean |
+--0-1--+ +--0-1--+ +-----------+
trigger ^ | ^ | +->0,1 lspawn |
| | v | v / +-----------+
+-------+ v +--2-3--+ +--5-6--+ /
| | | | 0<--7 1,2<-+
| queue |--+--| todo | | send |
| | | | 1-->8 3,4<-+
+-------+ +-------+ +---0---+ \
| \ +-----------+
v +->0,1 rspwan |
+---0---+ +-----------+
| logger|
+-------+
EXIT CODES
qmail-todo
exits
0
if the messages have been processed successfully.
It exits
1
in case there is a communication problem with
qmail-send.
The exit code
111
together with a diagnostic message is facilitated by
qmail-todo
in case it failes reading the required control files.
DIAGNOSTICS
qmail-todo
provides additional diagnostic messages to
qmail-send
to be displayed in the logs. In particular, in
case of problems creating and (un)linking files.
CREDITS
qmail-todo
included in
s/qmail
has been created by Andre Oppermann (http://www.nrg4u.com)
as part of this LDAP patch for
qmail.
This man-page uses parts of his EXTERNAL discription.
SEE ALSO
qmail-send(8),
qmail-queue(8).
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- COMMUNICATION
-
- BIG PICTURE
-
- EXIT CODES
-
- DIAGNOSTICS
-
- CREDITS
-
- SEE ALSO
-
This document was created by
man2html,
using the manual pages.
Time: 16:40:05 GMT, September 13, 2025