RELAYNEWS(8)

NAME
relaynews - store and forward netnews articles

SYNOPSIS
/usr/lib/newsbin/relay/relaynews [ -ginrsu ] [ -a dupsite ] [ -b xrefsite ] [ -d fhlmt ] [ -o days ] [ -x excluded-site ]

DESCRIPTION
Relaynews installs locally and broadcasts (network) news articles read from its standard input. Typically the articles will be in a batch (see news(5)), which must not be compressed (see compress(1)). Articles are usually queued for transmission to one's netnews neighbours via newsbatch(8) and thence via uux(1) or mail(1).

-d turns on debugging of filing, headers, locking, matching, transmission. -r redirects stdout and stderr to /usr/lib/news/log and /usr/lib/news/errlog. -i redirects stdout only to /usr/lib/news/log. -n enables ``NNTP mode'' in which history entries are generated as articles are rejected. -s makes discarding an article a serious matter, justifying a non-zero exit status (for the benefit of inews). -u unlinks (removes) any filename arguments after successful processing and if the filenames contain no slashes and if relaynews was invoked in /usr/spool/news/in.coming. -o causes articles with dates (in Date: headers) more than days old to be dropped (usually to stop accidentally-retransmitted old articles). -x excludes excluded-site from the list of netnews neighbours to receive article(s).

-g causes relaynews to always generate an Xref: header per article; -b causes relaynews to not update active and file articles received directly from xrefsite under the groups and article numbers found in incoming Xref: headers. These two options provide the basis for a news mirroring facility. -a similarly causes active to not be updated and duplicate articles received directly from dupsite to be accepted, but filed under the filenames found in their existing history entries. It may be used to recover a news spool, given recent active and history files.

Control messages, recognised by their Control: headers (or for backward compatibility ONLY a Newsgroups: header containing a single newsgroup ending in .ctl), are filed under the control pseudo-group only, but are forwarded as usual, by examining their Newsgroups: and Distribution: headers. Note that posting to the control pseudo-group will not cause a message to be treated as a control message; control is not a real newsgroup.

An article which contains an Also-Control: header is treated normally except that the contents of the header are executed as if they were the contents of a Control: header. Such an article is a form of hybrid message since it functions as an ordinary article yet also causes control functions to be executed. The Supersedes: header is a special case and is rewritten internally only to Also-Control: cancel.

Articles which contain no locally-known (to the active file) newsgroups yet accepted by the local subscription list are filed exactly once, in the junk pseudo-group, and forwarded as usual. If all newsgroups in the article are refused by the local subscription list or are refused by an x in active file entries, then the article will be discarded and not filed in junk.

Locally-generated articles need not be permitted by the local subscription list but are otherwise processed normally; this is for backward compatibility and perhaps to keep the local subscription list short by not requiring general and the like to be named.

EXAMPLES
cd /usr/spool/news/in.coming; relaynews -nru -o 7 nntp.*
File and forward articles in batches that arrived by NNTP, and remove each batch upon successfully processing it. Discard any articles more than a week old.

FILES
/usr/spool/news
    netnews article tree
/usr/spool/news/comp/unix/wizards
    example newsgroup directory (for comp.unix.wizards); such directories and their ancestor directories will be created automatically as needed
/usr/spool/news/comp/unix/wizards/12564
    example article file name
/usr/spool/news/out.going/system/togo
    default sys file F, f and I flags batch file name (N.B.: /usr/spool/news/out.going/system will not be automatically created as needed)
/usr/lib/news/sys
    determines who receives broadcast netnews articles, which ones, and how they are to be sent articles
/usr/lib/news/active
    contains locally-legal newsgroups and (un)moderated flag
/usr/lib/news/history
    record of articles received and mapping of message-ids to file names
/usr/lib/news/history.{dir,pag}
    dbm(3) index into history by message-ids
/usr/lib/news/whoami
    if present, contains news system's site name, overriding any other host names
/usr/lib/news/log
    log of incoming articles
/usr/lib/news/errlog
    log of errors, should be empty
/usr/lib/news/bin
    system-specific directory of programs to override /usr/lib/newsbin and its subdirectories
/usr/lib/newsbin/ctl
    directory of programs to implement control messages
/usr/lib/newsbin/relay/relaynews
    the lean, mean news-relayin' machine
/usr/lib/newsbin/newsreply
    generates a return address from article headers

SEE ALSO
compress(1), mail(1), uux(1), dbm(3), news(5), newsbatch(8)
ARPA Internet RFCs 1036 and 850

DIAGNOSTICS
Usually found in /usr/lib/news/errlog.
Relaynews's exit status is a bit vector of status bits; see news/include/news.h for the bit definitions.
If relaynews cannot establish safe standard file descriptors and standardise its environment (notably PATH, SHELL and IFS), probably due to failure of malloc(3), it will exit with status of 1 and without writing any complaints on standard error (errlog), as a security precaution.

HISTORY
Written by Geoff Collyer at the University of Toronto as part of the C news project.

BUGS
An article with a header that does not fit entirely in a static buffer and on a machine without real links (e.g. something like Eunice but on a PDP-11) will be filed incorrectly: any symbolic links under /usr/spool/news will point at a non-existent filename.

A control message which cannot be filed in the control pseudo-group and which cannot be filed in the junk pseudo-group because junk is not in the active file will generate an error message which refers to the groups in its Newsgroups: header instead of referring to the control pseudo-group.

Relaynews could run faster in some circumstances and would be simpler if Control: were required to be the first header, if present, and if Newsgroups: were required to be the next.

The whole control message and hybrid message situation is a festering bug. Either control messages should be eliminated, or all forms of backward compatibility should be dropped (including Control: and Supersedes:) and only Also-Control: should be supported.

Use of the = active file flag can result in a cross-posted article being filed multiple times in the same group, though with the Xref: header set appropriately so that newsreaders should suppress showing the redundant links.