.Ch "Control Message Implementation in C News" .Ix implementation "control messages" .Ix "control messages implementation" .SH Introduction .PP Netnews .I "control messages" are ordinary-looking netnews articles which contain the special header .B "Control:" . .Ix Control: Such articles are filed in the pseudo-newsgroup .I control and cause related actions by the local news system, such as mailing a file to the poster of the control message. .SH Built-ins .PP .B ihave , .Ix "control messages" ihave .Ix "control messages" sendme .B sendme , and .B cancel .Ix "control messages" cancel are handled internally by .I relaynews , .Ix relaynews because processes cannot share open .I dbm (3) databases, there is no standard way to close them, and these control messages read or write the .I history .Ix history .Ix files history files, including the .I dbm files. .I Ihave and .I sendme are also permitted to have message-id arguments containing .B < and .B > , both of which are rejected by .I relaynews in arguments to externally-implemented control messages, since they are shell metacharacters (\c .B / and .B .. are also bounced) and could be indicative of an attempt to do something nasty. .SH Normal Control Messages .PP Most control messages are implemented by .I relaynews by executing the command line following .B Control: with a search path of .I $NEWSCTL/bin:$NEWSBIN/ctl and with standard input set to the control message article. The command inherits the standard news search path and .I relaynews 's user and group ids, typically .I news ; this can be important to gain access rights to control files. The news system will be locked .Ix "news system lock" (by .I $NEWSCTL /lock) while the command runs, because this is often important for manipulating control files from the command, and because the news system is locked while .I relaynews runs. If that command returns non-zero exit status, mail is sent to .I $NEWSMASTER (usually .B usenet ). Standard output and standard error often are redirected to .I $NEWSCTL /log .Ix log .Ix files log and .I $NEWSCTL /errlog .Ix errlog .Ix files errlog respectively; invocations of .I relaynews by .I inews are exceptions.