controlchan removes the responsibility for handling control messages
(except cancels) from innd and instead processes them from a channel
or file feed.
The two Perl modules Encode and MIME::Parser are required by
To reduce load, controlchan keeps a copy of control.ctl and
control.ctl.local in memory and checks permissions (including any required
PGP headers) before any scripts are called. These two configuration
files are automatically reloaded when controlchan notices they have
been modified. Also, the default case of an unrecognized control article
is handled internally. The drop case is handled with far less fuss.
Normally, controlchan is invoked by innd as configured in newsfeeds.
An example entry is below. Make sure that the newsgroup control.cancel
exists so that controlchan does not have to scan through cancels,
which it will not be processing anyway.
:<pathbin in inn.conf>/controlchan
controlchan can also be manually invoked with a mere path to a file
(containing a complete control article with its headers and its body)
or a token on its standard input:
echo /path/to/a/control/article | controlchan
echo @0303465234000000000000235AE000000002@ | controlchan
Note that in the (very, very unlikely) event that you need to process
ihave/sendme control messages, be sure that logipaddr is set to false
in inn.conf, because in this case controlchan needs a site name,
not an IP address.
controlchan tries to report all log messages through syslog(3),
unless connected to an interactive terminal. To enable syslog(3)ing for
versions of Perl prior to 5.6.0, you will need to have run h2ph on your system
include files at some point (this is required to make Sys::Syslog work).
If you have not done so, do this:
h2ph * sys/*
If you run FreeBSD, you will need to run the following in addition: