---
name: "snntp"
section: "1"
platform: "linux"
package: "cnews"
version: "cr.g7-31"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/snntp"
---

# snntp(1)

transmit netnews articles to a remote NNTP server

## NAME

snntp - transmit netnews articles to a remote NNTP server

## SYNOPSIS

**snntp** \[ **-a** \] \[ **-d** \] \[ **-s** \] \[ **-F** \] \[network**!**\]host\[**!**service\]

## DESCRIPTION

*Snntp* offers netnews articles \[RFC 1036\], named in a batch file (a file of filenames, in either C News **n** or **F** format; **n** is considerably faster) on standard input, to a remote NNTP (Network News Transfer Protocol \[RFC 977\]) server, transmitting those articles that the remote server indicates that it does not already have. The names of files that could not be sent are copied to standard output. The server is *host* on *network* (default **tcp**) at *service* (default **nntp**). If exactly one **!** is present, it is assumed to be *network***!***host,* with the default *service*. *Network* must provide a reliable, flow-controlled, full-duplex byte stream. The options are:

- **-s**

  Turns off reporting of transfer statistics (how many articles we offered them, how many they accepted, etc).

- **-d**

  Turns on DEBUG output on stderr. This can be used to see exactly what the two systems are saying to each other, except for the actual article text.

- **-a**

  The next queue file on the command line isn't a queue file, but is a single netnews article to be transmitted to the remote in a single operation.

-

  **NOTE:** this option causes *snntp* to exit immediately after this transfer is done (regardless of whatever else is on the command line), and to exit with a code indicating whether the articles was successfully accepted by the remote server (zero exit for success, non-zero for failure).

- **-F**

  *host* is the number of an already-open, readable and writable file descriptor (with some reliable protocol underneath) that was passed to *snntp* through a [*fork*(2)](/fork/2.md).

## THEORY OF OPERATION

*Snntp* implements an interactive ihave/sendme transmission system. Roughly, the protocol is

- 1\.

  open the article, fetch out the message-id (required on all netnews articles), and send the command IHAVE \<message-id\> to the remote.

- 2\.

  The remote will then say either \`\`I've seen it already'' or \`\`please send that article to me.''

- 3\.

  If the response was negative, *snntp* loops back to step 1 and offers the next article (until queue file EOF). Otherwise, *snntp* will send the article, using SMTP \[RFC 821\] text transmission conventions (i.e. silly CRLF line terminators, and dot escaping).

- 4\.

  *Snntp* waits for the remote to say whether the article was successfully accepted or not. If the answer is negative, *snntp* will write this article's filename to standard output.

If the communication link should fail (and *snntp* detects it through a system call error return), *snntp* will copy to standard output the article filenames of the articles that it did not transmit (that is, we don't retransmit stuff we've already successfully sent and gotten back an positive confirmation that they got it).

## HISTORY

Based on *nntpxmit* by Erik E. Fair.

## SEE ALSO

*ipc*(3), [*news*(5)](/news/5.md), [*newssys*(5)](/newssys/5.md), *relaynews*(8), [*sendnntp*(8)](/sendnntp/8.md)\

```
Internet RFC 977 - Network News Transfer Protocol (NNTP)
Internet RFC 1036 - USENET Article Format standard
Internet RFC 821 - Simple Mail Transfer Protocol (SMTP)
```

## BUGS

*Snntp* performs no locking of batch files; see *sendnntp*.
