Section: Maintenance Commands (8)Updated: Harold TayLocal indexUp
NAME
snsend - distribute articles
snstore - store articles locally
SYNOPSIS
snsend
[-rvcna]
snstore
[-rvcna]
DESCRIPTION
snsend
reads articles from descriptor 0 and distributes each one
into each newsgroup they are posted to, like
inews.
snstore
does the same but stores them all locally.
The input articles are expected to be in wire format (lines end with CRLF,
leading dots are doubled, and articles are terminated with a lone
dot).
Control messages are not treated specially.
The newsgroups list is taken from the
X-sn-Newsgroups
field if it exists; otherwise it is taken from the
Newsgroups
field, which must exist or the article will be
junked.
All fields whose names begin with
X-sn-
(case insensitive) are always removed.
If
Date
or
Message-ID
are not present, these are created.
The local hosts name is prepended to the
Path
field.
If an article is to be
junked,
it is sent to the junk newsgroup if
it exists, otherwise it is discarded.
ROUTING
This applies only to
snsend.
snstore
does not route; it treats all
news.groups
as though they were local (see
Nonexistent newsgroup
and
Local newsgroup
below).
If any of the following fails,
snsend
aborts:
For each
news.group
an article is (cross-) posted to,
snsend
routes the article as follows, aborting if any action fails:
Nonexistent newsgroup
If
/var/spool/sn/news.group
is not a directory,
snsend
ignores this
news.group.
If all
news.groups
are thus ignored, the article is
junked.
Global newsgroup
If
/var/spool/sn/news.group/.outgoing
is a (symlink to a) directory,
snsend
stores the article into a file in that directory, if the same
article does not already exist there (so
news.group's
upstream feed doesn't get multiple copies of the same article.)
Such in-transit article files are given names that begin with a
$
sign.
Local processing via script
Otherwise if
/var/spool/sn/news.group/.outgoing
is a regular file, it is taken to be a script or program and is run
with the article available on its input. See
/var/spool/sn/dot-outgoing.ex.
Local processing via fifo
Otherwise if
/var/spool/sn/news.group/.outgoing
is a fifo, the article is written into it. It is an error if
nothing is reading the fifo.
Local newsgroup
Otherwise if
/var/spool/sn/news.group/.outgoing
does not exist, the article is stored into
news.group.
OPTIONS
Options apply to
snsend
and
snstore
equally.
-r
The article stream is in rnews batch format, rather than wire
format. Only the
#! rnews
form is understood.
-c
If an article already exists in the local newsgroup it is destined
for, don't store it there. For
snsend,
this option has no effect on newsgroups
that are not local.
-a
(Aliases not allowed.)
When storing to multiple local newsgroups, do not alias subsequent
copies to the first, instead, make a copy. Aliasing saves disk
space, but when the original expires, so do all aliases to it.
This option has no effect on newsgroups that
are not local.
-n
Don't actually do anything with the article, just dump it back onto
descriptor 1.
-v
For each article stored in each newsgroup, output a line to
descriptor 1 similar to what
snscan
would emit, except that for non-local newsgroups the serial number
will always be 0.
FILES
/var/spool/sn/news.group.name/
This includes
/var/spool/sn/=junk
newsgroup if it exists.
Each such directory represents the newsgroup of the same name, and
articles are stored in files
1,
2,
3,
etc. beneath it. Each such file contains 1 or more articles.
This is contrary to the traditional form of
/var/spool/sn/news/group/name.
news.group.name.
/var/spool/sn/news.group/.outgoing
See also
ROUTING
above. The presence of this directory indicates that
news.group
is global, and articles posted to
news.group
end up here in files named
$*.
These files are linked in already complete, so all such files are
ready to be uploaded.
/var/spool/sn/news.group/.compress
If this file exists, articles stored in
news.group
are candidates for compression. The content of the file is a number
representing a minimum article body size below which compression
won't be applied. If the file is empty this threshold defaults to
1024 bytes.
/var/spool/sn/.me
If this file exists, it's contents are taken to be the local hosts
name for purposes of the
Path
field. Otherwise the name is obtained from
gethostname(2).
ENVIRONMENT VARIABLES
See also
/usr/sbin/dot-outgoing.ex
for other variables exported when
snsend
invokes a .outgoing program.
SNROOT
If this is set, its value is used in place of /var/spool/sn.
EXIT CODES
snsend
and
snstore
exit 0 on success, 1 on usage error, 2 on system error, 3 on
article format error, and 9 if
/var/spool/sn/news.group/.outgoing
(snsend
only) exits with other than 0.