c-nocem project is a program for the easy and efficient application of the NoCeM protocol on the news spool. Which means, articles for which a NoCeM with "action=hide" is accepted, will be deleted from your news system as if they had been cancelled. With the installation described below, these will be processed as fast as possible and should work like real cancels.
Unlike the standard implementation of NoCeM, this version is optimized for the most common case of "spam cancels". In fact, it can do nothing else. It can not be run by a normal user, it does not need or manipulate state like .newsrc files, it processes only "hide" actions, and that only by actually deleting the articles.
c-nocem is designed for easy setup and fast run and needs no maintenance.
· Perl version 4 or 5.
· PGP version MIT 2.6 or 2.6i, or GnuPG version 0.9.1 or later.
· A running news system, and knowledge on how to configure it. This program supports C News and INN.
· The compiled source code for the news system. c-nocem needs the libraries and configuration files used for building the news system.
· A customized PGP public keyring containing the keys of all people from whom you accept NoCeM notices.
Run the configure script. Give it the --with-cnews=dir or --with-inn=dir options to point to the top of the news system's source tree. Run make install. Copy ncmperm into the right place. Create ncmgroups there if needed, see below. Look at the top of c-nocem and correct any wrong parameters.
Make sure the programs created by the make, as well as pgp are in the news system's PATH (configure usually gets that right). Create a temp directory as indicated in c-nocem, if you don't have it already. Do not use /tmp or any other globally writable directory for this purpose - that would be a serious security problem.
Note for users of previous versions: The programs are now installed in the main news binary directory. Make sure to correct any wrong paths. For INN 2.0 and newer, the configuration files like ncmperm belong into the etc directory.
Configuration consists of the permissions file and the public key ring. Every NoCeM notice is checked for a PGP signature with the NoCeM key ring (usually $NEWSLIB/ncmring.pgp). If no known and valid signature is found, the notice is ignored entirely. If the signature is good, the NCM headers are checked:
· Version: must be 0.9 or 0.9x (for any x)
· Action: must be "hide"
· Type and Issuer: must be allowed by the permissions file.
How it works
c-nocem does its work in two stages: first, it reads the NoCeM notices and checks the permissions as described above. It collects all Message-IDs mentioned in the accepted notices, (if the associated newsgroups list matches active and ncmgroups if that check is requested), into a batch file (tmp/nocem). In the second stage, these IDs are processed: for each Message-ID, if the article is on the system, the article is deleted. If it is not there, a history entry is generated which prevents later arrival. A log file entry is emitted for each of these entries. The result is like that from a regular cancel.
When getting end-of-input in channel mode (i.e. after a flush or shutdown) c-nocem writes a batch file tmp/nocem.input of all unprocessed input lines (NoCeM notice file names/tokens) and quits immediately. The next invocation of c-nocem will pick up this batch file, a la "innfeed".