21.3. sys 文件

sys文件,位于/etc/news, 控制您接收和转发到其他站点的层级结构。尽管有一些名为 addfeeddelfeed 的维护工具,但我们认为最好手动维护此文件。

sys文件包含您将新闻转发到的每个站点的条目,以及您将接受的组的描述。第一行是描述您系统的 ME 条目。使用以下内容是一个稳妥的选择
ME:all/all::
您还必须为您向其馈送新闻的每个站点添加一行。每行看起来像这样
site[/exclusions]:grouplist[/distlist][:flags[:cmds]]

条目可以使用反斜杠 (\) 在要延续的行末尾跨多行延续。井号 (#) 表示注释。

站点

这是条目应用到的站点的名称。通常为此选择站点的 UUCP 名称。在sys文件中也必须有您站点的条目,否则您自己将不会收到任何文章。

特殊的站点名称 ME 表示您的站点。ME 条目定义了您愿意本地存储的所有组。与 ME 行不匹配的文章将进入 junk 组。

C 新闻拒绝任何已经通过此站点的文章,以防止循环。C 新闻通过确保本地站点名称不出现在路径文章的路径中来实现这一点。某些站点可能以多个有效名称而为人所知。例如,某些站点在此字段中使用其完全限定域名,或使用别名,如news.site.domain。为了确保循环预防机制正常工作,重要的是将所有别名添加到排除列表中,并用逗号分隔它们。

例如,对于应用于站点 moria 的条目,站点字段将包含 moria/moria.orcnet.org。如果 moria 也通过别名 news.orcnet.org 为人所知,那么我们的站点字段将包含 moria/moria.orcnet.org,news.orcnet.org

组列表

这是一个逗号分隔的订阅列表,其中包含此特定站点的组和层级结构。可以通过给出层级结构的前缀(例如 comp.os,表示名称以此前缀开头的所有组)来指定层级结构,可以选择后跟关键字 all(例如,comp.os.all)。

您可以通过在层级结构或组前面加上感叹号来将其从转发中排除。如果根据列表检查新闻组,则应用最长匹配项。例如,如果组列表包含此列表
!comp,comp.os.linux,comp.folklore.computers
除了 comp.folklore.computerscomp.os.linux 下的所有组之外,comp 层级结构中的任何组都不会馈送到该站点。

如果站点请求转发您自己收到的所有新闻,请输入 all 作为组列表.

分发列表

此值从组列表偏移,用斜杠分隔,并包含要转发的分发列表。同样,您可以通过在某些分发前面加上感叹号来排除它们。所有分发都用 all 表示。省略分发列表意味着 all 的列表。

例如,您可以使用 all,!local 的分发列表来防止仅供本地使用的新闻被发送到远程站点。

通常至少有两种分发:world,当用户未指定任何分发时,它通常是默认分发,以及 local。可能还有其他适用于特定区域、州、国家等的分发。最后,C 新闻仅使用两种分发;它们是 sendmeihave,用于 sendme/ihave 协议。

分发的使用是一个有争议的话题。新闻文章中的分发字段可以任意创建,但为了使分发有效,网络中的新闻服务器必须知道它。一些行为不当的新闻阅读器通过简单地假设文章目标的顶级新闻组层级结构是一个合理的分发来创建虚假分发。例如,当发布到 comp.os.linux.networking 新闻组时,可能会假设 comp 是一个合理的分发。应用于区域的分发通常也值得怀疑,因为新闻在通过互联网发送时可能会传播到您所在区域之外。[1] 然而,应用于组织的分发非常有意义;例如,防止机密信息离开公司网络。然而,此目的通常通过创建单独的新闻组或层级结构来更好地实现。

标志

此选项描述了馈送的某些参数。它可以为空,也可以是以下各项的组合

F

此标志启用批处理。

f

这几乎与F标志相同,但允许 C 新闻更精确地计算传出批次的大小,并且可能应该优先使用。

I

此标志使 C 新闻生成适合 ihave/sendme 使用的文章列表。需要对sysbatchparms文件进行额外修改以启用 ihave/sendme。

n

这将为活动的 NNTP 传输客户端(如 nntpxmit(请参阅第 22 章))创建批处理文件。批处理文件包含文章的文件名及其消息 ID。

L

这告诉 C 新闻仅传输在您的站点发布的文章。此标志后面可以跟一个十进制数字n,这使 C 新闻仅传输在n跳数内从您的站点发布的文章。C 新闻从路径字段确定跳数。

u

这告诉 C 新闻仅批处理来自非审核组的文章。

m

这告诉 C 新闻仅批处理来自审核组的文章。

您最多可以使用以下标志之一F, f, I,或n.

cmds

此字段包含一个命令,除非您启用批处理,否则将为每篇文章执行该命令。文章将通过标准输入馈送到该命令。这应该仅用于非常小的馈送;否则,两个系统上的负载都将过高。

默认命令是
uux - -r -z remote-system!rnews

这会在远程系统上调用 rnews,并通过标准输入将文章馈送给它。

在此字段中给出的命令的默认搜索路径是/bin:/usr/bin:/usr/lib/news/batch。后一个目录包含许多名称以 via 开头的 shell 脚本;它们将在本章后面简要介绍。

如果使用以下标志之一启用批处理F, f, I,或n标志,则 C 新闻希望在此字段中找到文件名而不是命令。如果文件名不以斜杠 (/) 开头,则假定它相对于/var/spool/news/out.going。如果字段为空,则默认为remote-system/togo。该文件应与remote-system/togo文件格式相同,并包含要传输的文章列表。

在设置 C 新闻时,您很可能必须编写自己的sys文件。这是一个 vbrew.com 的示例文件,您可以从中复制您需要的内容

# We take whatever they give us.
ME:all/all::
# We send everything we receive to moria, except for local and
# brewery-related articles. We use batching.
moria/moria.orcnet.org:all,!to,to.moria/all,!local,!brewery:f:
# We mail comp.risks to jack@ponderosa.uucp
ponderosa:comp.risks/all::rmail jack@ponderosa.uucp
# swim gets a minor feed
swim/swim.twobirds.com:comp.os.linux,rec.humor.oracle/all,!local:f:
# Log mail map articles for later processing
usenet-maps:comp.mail.maps/all:F:/var/spool/uumaps/work/batch

注释

[1]

在汉堡发布的文章通过荷兰的 reston.ans.net 甚至通过美国的某个站点到达法兰克福的情况并不少见。