NAME
md-mx-ctrl - Control mimedefang-multiplexor
SYNOPSIS
md-mx-ctrl [options] command
DESCRIPTION
md-mx-ctrl is a command-line tool for communicating with mimedefang-
multiplexor(8).
OPTIONS
-h Displays usage information.
-s path
Specifies the path to the mimedefang-multiplexor socket. If not
specified, defaults to /var/spool/MIMEDefang/mimedefang-
multiplexor.sock.
-i This flag causes md-mx-ctrl to sit in a loop, reading commands
on standard input and printing results to standard output. It
is intended for use by a monitoring program such as watch-
mimedefang.
COMMANDS
The following commands are available:
status Prints the status of all slave Perl processes in human-readable
format.
rawstatus
Prints the status of all slave Perl processes in a format easy
to parse by computer. The result is a single line with six
words on it. The words are separated by a single space
character.
Each character in the first word corresponds to a slave, and is
"I" for an idle slave, "B" for a busy slave, "S" for a slave
which is not running, and "K" for a slave which has been killed,
but has not yet exited. A slave is "idle" if there is a running
Perl process waiting to do work. "Busy" means the Perl process
is currently filtering a message. "S" means there is no
associated Perl process with the slave, but one can be started
if the load warrants. Finally, "K" means the slave Perl process
has been killed, but has yet to terminate.
The second word is the total number of messages processed since
the multiplexor started up. The third word is the total number
of slaves which have been activated since the multiplexor
started up. (That is, it’s a count of the number of times the
multiplexor has forked and exec’d the Perl filter.)
The fourth word is the size of the queue for request queuing,
and the fifth word is the actual number of requests in the
queue. The sixth word is the number of seconds elapsed since
the multiplexor was started.
barstatus
Prints the status of busy slaves and queued requests in a nice
"bar chart" format. This lets you keep an eye on things with a
script like this:
while true ; do
md-mx-ctrl barstatus
sleep 1
done
histo Prints a histogram showing the number of slaves that were busy
each time a request was processed. A single line is printed for
the numbers from 1 up to the maximum number of slaves. Each
line contains the count of busy slaves (1, 2, 3 up to
MX_MAXIMUM), a space, and the number of times that many slaves
were busy when a request was processed.
load Prints a table showing "load averages" for the last 10 seconds,
1 minute, 5 minutes and 10 minutes.
Each row in the table corresponds to a time interval, displayed
in the first column. The remaining columns in the table are:
Msgs: The number of messages scanned within the row’s time
interval.
Msgs/Sec: The average number of messages scanned per second
within the row’s time interval.
Avg Busy Slaves: The average number of busy slaves whenever a
message was scanned. (If you are processing any mail at all,
this number will be at least 1, because there is always 1 busy
slave when a message is scanned.)
If you have the watch(1) command on your system, you can keep an
eye on the load with this command:
watch -n 10 md-mx-ctrl load
If you do not have watch, the following shell script is a less
fancy equivalent:
#!/bin/sh
while true; do
clear
date
md-mx-ctrl load
sleep 10
done
rawload
Prints the load averages in computer-readable format. The
format consists of twenty-nine space-separated numbers:
The first four are integers representing the number of messages
scanned in the last 10 seconds, 1 minute, 5 minutes and 10
minutes.
The second four are floating-point numbers representing the
average number of busy slaves in the last 10 seconds, 1 minute,
5 minutes and 10 minutes.
The third four are floating-point numbers representing the
average time per scan in milliseconds over the last 10 seconds,
1 minute, 5 minutes and 10 minutes.
The fourth four are the number of slave activations (new slaves
started) over the last 10 seconds, 1 minute, 5 minutes and 10
minutes.
The fifth four are the number of slaves reaped (slaves that have
exited) over the last 10 seconds, 1 minute, 5 minutes and 10
minutes.
The sixth four are the number of busy, idle, stopped and killed
slaves.
The seventh four are the number of messages processed, the
number of slave activations, the size of the request queue, and
the number of requests actually on the queue.
The final number is the number of seconds since the multiplexor
was started.
load-relayok
Similar to load, but shows timings for filter_relay calls.
load-senderok
Similar to load, but shows timings for filter_sender calls.
load-recipok
Similar to load, but shows timings for filter_recipient calls.
rawload-relayok
Similar to rawload, but shows timings for filter_relay calls.
Note that the slave activation and reap statistics are present,
but always 0. They are only valid in a rawload command.
rawload-senderok
Similar to rawload, but shows timings for filter_sender calls.
Note that the slave activation and reap statistics are present,
but always 0. They are only valid in a rawload command.
rawload-recipok
Similar to rawload, but shows timings for filter_recipient
calls. Note that the slave activation and reap statistics are
present, but always 0. They are only valid in a rawload
command.
slaves Displays a list of slaves and their process IDs. Each line of
output consists of a slave number, a status (I, B, K, or S), and
for idle or busy slaves, the process-ID of the slave. For busy
slaves, the line may contain additional information about what
the slave is doing.
busyslaves
Similar to slaves, but only outputs a line for each busy slave.
slaveinfo n
Displays information about slave number n.
reread Forces mimedefang-multiplexor to kill all idle slaves, and
terminate and restart busy slaves when they become idle. This
forces a reread of filter rules.
msgs Prints the total number of messages scanned since the
multiplexor started.
ADDITIONAL COMMANDS
You can supply any other command and arguments to md-mx-ctrl. It
percent-encodes each command-line argument, glues the encoded arguments
together with a single space between each, and sends the result to the
multiplexor as a command. This allows you to send arbitrary commands
to your Perl slaves. See the section "EXTENDING MIMEDEFANG" in
mimedefang-filter(5) for additional details.
PERMISSIONS
md-mx-ctrl uses the multiplexor’s socket; therefore, it probably needs
to be run as root or the same user as mimedefang-multiplexor.
AUTHOR
md-mx-ctrl was written by David F. Skoll <dfs@roaringpenguin.com>. The
mimedefang home page is http://www.mimedefang.org/.
SEE ALSO
mimedefang.pl(8), mimedefang-filter(5), mimedefang(8), mimedefang-
protocol(7), watch-mimedefang(8)