---
name: "relaynews"
section: "8cn"
platform: "linux"
package: "cnews"
version: "cr.g7-40.4"
release: "Debian 5.0 (Lenny)"
platforms: ["linux"]
url: "https://new.carta.tech/relaynews"
---

# relaynews(8cn)

store and forward netnews articles

## NAME

relaynews - store and forward netnews articles

## SYNOPSIS

**/usr/lib/news/relay/relaynews** \[ **-hsux** \] \[ **-a** dupsite \] \[ **-b** xrefsite \] \[ **-c** currdir \] \[ **-d** **fhlmt** \] \[ **-o** days \] \[ **-n** notefile \]

## 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)](/news/5.md)), which must *not* be compressed (see [*compress*(1)](/compress/1.md)). Articles are usually queued for transmission to one's netnews neighbours via *newsbatch*(8CN) and thence via [*uux*(1)](/uux/1.md) or [*snntp*(1)](/snntp/1.md).

**-d** turns on debugging of **f**iling, **h**eaders, **l**ocking, **m**atching, **t**ransmission. **-h** prevents generation of history entries for rejected articles; the default behaviour generates larger history files that allow NNTP receivers to more efficiently reject offered articles. **-s** makes discarding an article a serious matter, justifying a non-zero exit status (for the benefit of *inews*). **-c** is an optimisation: *currdir* is assumed to be the current directory; in the absence of this option, **pwd** is invoked. **-u** unlinks (removes) any filename arguments after successful processing; they are assumed to be relative to *currdir* (**\`pwd\`** if none). **-o** causes articles with dates (in **Date:** headers) more than *days* old to be dropped (usually to stop accidentally-retransmitted old articles). **-n** causes the current time (as decimal ASCII) to be written into the *notefile* (which should be an absolute pathname) once if *relaynews* finds it necessary to use symbolic links when filing articles.

**-x** prevents generation of **Xref:** headers in articles filed in exactly one newsgroup; use of this option will interfere with generation of news overview data and mirroring via **-b**. **-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. **-b** provides 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 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 /var/spool/news/in.coming
relaynews -uc /var/spool/news/in.coming -o 7 nntp.* >>/var/lib/news/log 2>>/var/lib/news/errlog"
```

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

- **/var/spool/news**

  netnews article tree

- **/var/spool/news/comp/unix/wizards**

  example newsgroup directory (for **comp.unix.wizards**); such directories and their ancestor directories will be created automatically as needed

- **/var/spool/news/comp/unix/wizards/12564**

  example article file name

- **/var/spool/news/out.going/***system***/togo**

  default **sys** file **F**, **f**, **n** and **I** flags batch file name (N.B.: **/var/spool/news/out.going/***system* will *not* be automatically created as needed)

- **/var/lib/news/sys**

  determines who receives broadcast netnews articles, which ones, and how they are to be sent articles

- **/var/lib/news/active**

  contains locally-legal newsgroups and (un)moderated flag

- **/var/lib/news/history**

  record of articles received and mapping of message-ids to file names

- **/var/lib/news/history.{dir,pag}**

  *dbm*(3Z) index into **history** by message-ids

- **/var/lib/news/whoami**

  if present, contains news system's site name, overriding any other host names

- **/var/lib/news/log**

  conventional log of incoming articles

- **/var/lib/news/errlog**

  conventional log of errors, should be empty

- **/var/lib/news/headers**

  article headers of the last *relaynews* invocation; consumed to generate overview data

- **/var/lib/news/bin**

  system-specific directory of programs to override **/usr/lib/news** and its subdirectories

- **/usr/lib/news/ctl**

  directory of programs to implement control messages

- **/usr/lib/news/relay/relaynews**

  the lean, mean news-relayin' machine

- **/usr/lib/news/newsreply**

  generates a return address from article headers **/var/lib/news/replyusepath** tells *newsreply* to use the Path header rather than the From header for the return address

## SEE ALSO

[compress(1)](/compress/1.md), [snntp(1)](/snntp/1.md), [uux(1)](/uux/1.md), dbm(3Z), [news(5)](/news/5.md), [newsdb(5)](/newsdb/5.md), newsbatch(8CN), rnews(8CN)\
 ARPA Internet RFCs 1036 and 850

## DIAGNOSTICS

Usually found in **/var/lib/news/errlog**.\
 *Relaynews*'s exit status is 0 for successful completion, 1 if at least one batch was bad and worth manual inspection, and 2 if the news system needs human attention.\
 If *relaynews* cannot establish safe standard file descriptors and standardise its environment (notably PATH, SHELL and IFS), probably due to failure of [*malloc*(3)](/malloc/3.md), it will exit with status of 1 and without writing any complaints on standard error (**errlog**), as a (possibly-obsolete) security precaution.

## HISTORY

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

## BUGS

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.
