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)