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.
SEE ALSO¶
/usr/sbin/dot-outgoing.ex, snscan(1)