50、INN新闻服务器与新闻阅读器配置指南

INN新闻服务器与新闻阅读器配置指南

1. 文章过期设置

在新闻服务器中,文章过期设置是一项重要的管理任务。通过 purge 字段,我们可以指定带有 Expires 头的文章在过期前的最长保留时间,其编码方式与 keep 字段相同。

默认情况下,所有新闻组中的文章将保留14天,而带有 Expires 头的文章将保留7到21天。对于内部新闻组 rec.crafts.brewing.private ,我们不希望其中的文章过期,因此可以在 expire.ctl 文件中进行如下配置:

# expire.ctl file for the Virtual Brewery
# Expire all articles in 14 days by default, 7-21 days for those with
# Expires: headers
*:A:7:14:21
# This is a special internal newsgroup, which we will never expire.
rec.crafts.brewing.private:A:never:never:never

此外,在 /etc/news/expires.ctl 文件中,还可以使用 /remember/:days 这样的特殊条目来指定文章在历史文件中被记录的最短天数,这有助于防止上游服务器重复发送已过期的文章。

2. 控制消息处理

INN可以自动处理控制消息,通过 control.ctl 文件可以配置针对不同控制消息的操作。该文件的结构较为简单,语法规则与其他INN配置文件类似,以 # 开头的行将被忽略,行可以使用 / 续行,字段之间用 : 分隔。

当收到控制消息时,会依次与文件中的规则进行匹配,最后匹配的规则将被使用。因此,通用规则应放在文件开头,更具体的规则放在文件末尾。 control.ctl 文件的一般语法为:

message:from:newsgroups:action

各字段的含义如下:
| 字段 | 含义 |
| — | — |
| message | 控制消息的名称,常见的控制消息包括 checkgroups newgroup rmgroup sendsys version all 等 |
| from | 发送消息的人的电子邮件地址的shell风格模式,比较前会将电子邮件地址转换为小写 |
| newsgroups | 如果控制消息是 newgroup rmgroup ,该字段是匹配创建或删除的新闻组的shell风格模式 |
| action | 对于匹配规则的消息要执行的操作,常见操作包括 doit doit=file doifarg drop log log=file mail verify-* 等 |

以下是一个简单的 control.ctl 文件示例:

## Sample /etc/news/control.ctl
##
## Warning: You should not use this file, it is illustrative only.
##
Control Message Handling
all:*:*:mail
checkgroups:*:*:mail
ihave:*:*:drop
sendme:*:*:drop
sendsys:*:*:log=sendsys
senduuname:*:*:log=senduuname
version:*:*:log=version
newgroup:*:*:mail
rmgroup:*:*:mail
##
Handle control messages for the eight most important news heirarchies
##
COMP, HUMANITIES, MISC, NEWS, REC, SCI, SOC, TALK
check-
groups:*:comp.*|humanities.*|misc.*|news.*|rec.*|sci.*|soc.*|talk.*:drop
newgroup:*:comp.*|humanities.*|misc.*|news.*|rec.*|sci.*|soc.*|talk.*:drop
rmgroup:*:comp.*|humanities.*|misc.*|news.*|rec.*|sci.*|soc.*|talk.*:drop
checkgroups:group-admin@isc.org:*:verify-news.announce.newgroups
newgroup:group-admin@isc.org:comp.*|misc.*|news.*:verify-
news.announce.newgroups
newgroup:group-admin@isc.org:rec.*|sci.*|soc.*:verify-
news.announce.newgroups
newgroup:group-admin@isc.org:talk.*|humanities.*:verify-
news.announce.newgroups
rmgroup:group-admin@isc.org:comp.*|misc.*|news.*:verify-
news.announce.newgroups
rmgroup:group-admin@isc.org:rec.*|sci.*|soc.*:verify-
news.announce.newgroups
rmgroup:group-admin@isc.org:talk.*|humanities.*:verify-
news.announce.newgroups
## GNU ( Free Software Foundation )
newgroup:gnu@prep.ai.mit.edu:gnu.*:doit
newgroup:news@*ai.mit.edu:gnu.*:doit
rmgroup:gnu@prep.ai.mit.edu:gnu.*:doit
rmgroup:news@*ai.mit.edu:gnu.*:doit
## LINUX (Newsfeed from news.lameter.com)
checkgroups:christoph@lameter.com:linux.*:doit
newgroup:christoph@lameter.com:linux.*:doit
rmgroup:christoph@lameter.com:linux.*:doit
3. 运行INN

INN源包提供了一个在启动时启动INN的脚本,通常为 /usr/lib/news/bin/rc.news 。该脚本从另一个脚本 /usr/lib/news/innshellvars 读取参数,该脚本包含INN定位所需组件的文件名和文件路径的定义。

为了确保INN在启动时启动,需要检查 /usr/lib/news/innshellvars 是否配置正确,然后在启动脚本中调用 /usr/lib/news/bin/rc.news

此外,还需要定期执行一些管理任务,这些任务通常通过 cron 命令配置。可以将相应的命令添加到 /etc/crontab 文件中,或者更好的做法是,如果系统支持,在 /etc/cron.d 目录下创建一个文件。以下是一个示例:

# Example /etc/cron.d/inn file, as used in the Debian distribution.
#
SHELL=/bin/sh
PATH=/usr/lib/news/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Expire old news and overview entries nightly, generate reports.
15 0 * * *
news
news.daily expireover lowmark delayrm
# Every hour, run an rnews -U. This is not only for UUCP sites, but
# also to process queued up articles put there by in.nnrpd in case
# innd wasn't accepting any articles.
10 * * * *
news
rnews -U

这些命令将确保每天自动过期旧新闻,并每小时处理排队的文章。

4. 管理INN:ctlinnd命令

INN新闻服务器提供了 ctlinnd 命令来管理其日常操作,该命令可以用于操作新闻组和新闻组源、获取服务器状态以及重新加载、停止和启动服务器。

以下是 ctlinnd 命令的一些重要用法:
- 添加新组

ctlinnd newgroup group rest creator

参数说明:
- group :要创建的组的名称。
- rest :该参数的编码方式与 active 文件的标志字段相同,默认为 y
- creator :创建组的人的名称,如果名称中有空格,需要用引号括起来。

  • 更改组
ctlinnd changegroup group rest

参数说明:
- group :要更改的组的名称。
- rest :该参数的编码方式与 active 文件的标志字段相同,此命令可用于更改组的审核状态。

  • 删除组
ctlinnd rmgroup group

参数说明:
- group :要删除的组的名称,该命令将从 active 文件中删除指定的新闻组,但不会影响新闻池,池中的所有文章将按常规方式过期,不再接受新文章。

  • 重新编号组
ctlinnd renumber group

参数说明:
- group :要重新编号的组的名称,如果组名为空字符串,则对所有组进行重新编号,该命令将更新指定组的低水位标记。

  • 允许/禁止新闻阅读器
ctlinnd readers flag text

参数说明:
- flag :指定 n 将禁止所有新闻阅读器连接,指定 y 将允许新闻阅读器连接。
- text :提供给尝试连接的新闻阅读器的文本,通常描述禁用新闻阅读器访问的原因,重新启用时,该字段必须为空字符串或与禁用时提供的文本相同,此命令不影响传入的新闻源,仅控制新闻阅读器的连接。

  • 拒绝新闻源连接
ctlinnd reject reason

参数说明:
- reason :解释拒绝传入 innd 连接的原因,此命令不影响传递给 nnrpd 的连接(即新闻阅读器),仅影响直接由 innd 处理的连接,如远程新闻源。

  • 允许新闻源连接
ctlinnd allow reason

参数说明:
- reason :提供的文本必须与之前 reject 命令提供的文本相同或为空字符串,此命令将反转 reject 命令的效果。

  • 禁用新闻服务器
ctlinnd throttle reason

参数说明:
- reason :限制服务器的原因,此命令相当于同时执行 newsreaders no reject ,在对新闻数据库进行紧急工作时很有用,可确保在工作时没有任何操作尝试更新它。

  • 重启新闻服务器
ctlinnd go reason

参数说明:
- reason :停止服务器时给出的原因,如果该字段为空字符串,服务器将无条件重新启用,如果给出原因,只有使用与提供的文本匹配的原因禁用的功能才会重新启动,此命令用于在 throttle pause reject 命令后重新启动服务器功能。

  • 显示新闻源状态
ctlinnd feedinfo site

参数说明:
- site :要显示新闻源状态的站点名称(取自 newsfeeds 文件)。

  • 删除新闻源
ctlinnd drop site

参数说明:
- site :要删除新闻源的站点名称(取自 newsfeeds 文件),如果该字段为空字符串,将删除所有活动的新闻源,删除到某个站点的新闻源将停止对该站点的任何活动新闻源,这不是永久性更改,在修改了某个站点的新闻源详细信息且该站点的新闻源处于活动状态时很有用。

  • 开始新闻源
ctlinnd begin site

参数说明:
- site :要开始新闻源的站点名称(取自 newsfeeds 文件),如果到该站点的新闻源已经处于活动状态,将自动先执行 drop 命令,此命令将使服务器重新读取 newsfeeds 文件,定位匹配的条目,并使用找到的详细信息开始向指定站点发送新闻源,可用于在添加或修改 newsfeeds 文件中的条目后测试新的新闻源。

  • 取消文章
ctlinnd cancel Message-Id

参数说明:
- Message-ID :要取消的文章的ID,此命令将从服务器中删除指定的文章,但不会生成取消消息。

5. 新闻阅读器配置

新闻阅读器是用户用于查看、存储和创建新闻文章的程序,有几种新闻阅读器已被移植到Linux上,下面将介绍三种最流行的新闻阅读器 tin trn nn 的基本设置。

在新闻组级别,大多数新闻阅读器会显示文章列表,显示文章的主题行和作者。在大型新闻组中,用户很难跟踪相关文章,不过可以通过文章的主题前缀 Re: References 头行中的消息ID来识别回复文章。按这两个标准对文章进行排序会生成小的文章簇,称为线程。编写新闻阅读器的任务之一就是设计一种有效的线程处理方案。

5.1 tin配置

tin 是一种在处理线程方面非常通用的新闻阅读器,它由Iain Lea编写,大致基于较旧的新闻阅读器 tass 。当用户进入新闻组时, tin 会进行线程处理,除非通过NNTP获取帖子,否则速度相当快。

在486DX50上,直接从磁盘读取时,对1000篇文章进行线程处理大约需要30秒,而通过NNTP连接到负载较重的新闻服务器则需要超过5分钟。可以通过定期使用 -u 选项调用 tin 来更新索引文件,以提高速度,这样下次启动 tin 读取新闻时线程已经存在。或者,可以使用 -U 选项调用 tin ,这样 tin 会在后台启动一个进程来构建索引文件,同时用户可以阅读新闻。

通常, tin 会将其线程数据库转储到用户主目录下的 .tin/index 中,但这可能会消耗较多资源,因此可以将它们集中存储在一个位置。例如,可以将 tin 设置为 setuid news ,这样 tin 将把所有线程数据库保存在 /var/spool/news/.index 下,对于任何文件访问或shell转义,它将把有效用户ID重置为调用它的用户的真实用户ID。

一些Linux发行版中包含的 tin 版本在编译时可能没有支持NNTP,但现在大多数都支持了。当以 rtin 或使用 -r 选项调用时, tin 会尝试连接到 /etc/nntpserver 文件或 NNTPSERVER 环境变量中指定的NNTP服务器, nntpserver 文件只包含服务器名称的一行内容。

以下是 tin 配置的操作步骤总结:
1. 定期使用 -u 选项调用 tin 更新索引文件:

tin -u
  1. 使用 -U 选项调用 tin 在后台构建索引文件:
tin -U
  1. 设置 tin setuid news 以集中存储线程数据库:
chmod u+s /usr/bin/tin
  1. 配置NNTP服务器:
    编辑 /etc/nntpserver 文件,添加服务器名称:
nntp.example.com

或者设置 NNTPSERVER 环境变量:

export NNTPSERVER=nntp.example.com

通过以上配置和操作,可以更好地使用INN新闻服务器和新闻阅读器,提高新闻管理和阅读的效率。

INN新闻服务器与新闻阅读器配置指南(下半部分)

5.2 trn配置

trn 也是一款在Linux系统中颇受欢迎的新闻阅读器。它在处理新闻文章和线程方面有着自己的特点。

trn 的配置主要涉及到几个关键文件和参数设置。首先, trn 的配置文件通常位于用户主目录下的 .trn 目录中。在这个目录里, trn 会读取一些配置文件来确定其行为。

以下是一些常见的 trn 配置操作:
- 设置新闻服务器
可以通过编辑 .trn/trnrc 文件来指定新闻服务器。在文件中添加如下内容:

nntpserver nntp.example.com

这里的 nntp.example.com 是你要连接的新闻服务器地址。

  • 自定义显示格式
    .trn/trnrc 文件中,还可以自定义文章的显示格式。例如,设置显示文章的主题、作者和日期:
article-format "%s %a %d"

其中 %s 表示主题, %a 表示作者, %d 表示日期。

  • 线程处理
    trn 会自动对文章进行线程处理,将相关的文章组织在一起。可以通过一些参数来调整线程处理的方式。例如,设置线程排序的方式:
thread-sort subject

这将按照文章的主题对线程进行排序。

5.3 nn配置

nn 是另一款经典的新闻阅读器,它具有简洁易用的特点。

nn 的配置相对简单,主要通过环境变量和配置文件来完成。

  • 设置新闻服务器
    可以通过设置 NNTPSERVER 环境变量来指定新闻服务器。例如:
export NNTPSERVER=nntp.example.com

也可以在 ~/.nn 目录下的 nndb 文件中进行配置。在文件中添加如下内容:

server nntp.example.com
  • 自定义快捷键
    nn 允许用户自定义快捷键来执行各种操作。可以在 ~/.nn 目录下的 nnenv 文件中进行配置。例如,将 j 键设置为向下移动文章:
bind j next-article
6. 新闻阅读器的线程处理原理

新闻阅读器的线程处理是将相关的文章组织在一起,形成一个逻辑上的树状结构,方便用户跟踪文章之间的关系。下面是线程处理的基本原理和流程:

graph TD;
    A[获取文章列表] --> B[解析文章头信息];
    B --> C[提取主题和References头];
    C --> D[判断文章关系];
    D --> E{是否为回复文章};
    E -- 是 --> F[将文章添加到对应线程];
    E -- 否 --> G[创建新线程];
    F --> H[更新线程结构];
    G --> H;
    H --> I[显示线程化文章列表];

具体步骤如下:
1. 获取文章列表 :新闻阅读器从新闻服务器获取指定新闻组中的文章列表。
2. 解析文章头信息 :对每篇文章的头信息进行解析,提取关键信息,如主题和 References 头。
3. 提取主题和References头 :主题用于识别文章的主要内容, References 头包含了文章所回复的原始文章的消息ID。
4. 判断文章关系 :根据主题和 References 头,判断文章是否为回复文章。
5. 处理回复文章 :如果是回复文章,将其添加到对应的线程中;如果不是,则创建一个新的线程。
6. 更新线程结构 :对线程结构进行更新,确保文章之间的关系正确显示。
7. 显示线程化文章列表 :将线程化后的文章列表显示给用户。

7. 新闻服务器与新闻阅读器的协同工作

新闻服务器和新闻阅读器是一个协同工作的整体,它们之间的交互流程如下:

graph LR;
    A[新闻阅读器] --> B[连接新闻服务器];
    B --> C[请求新闻组列表];
    C --> D[新闻服务器返回新闻组列表];
    D --> E[新闻阅读器选择新闻组];
    E --> F[请求新闻组文章列表];
    F --> G[新闻服务器返回文章列表];
    G --> H[新闻阅读器请求文章内容];
    H --> I[新闻服务器返回文章内容];
    I --> J[新闻阅读器显示文章];
    J --> K[用户操作新闻阅读器];
    K --> L[新闻阅读器发送操作请求];
    L --> M[新闻服务器处理请求];
    M --> N[新闻服务器返回处理结果];
    N --> A;

具体流程如下:
1. 连接新闻服务器 :新闻阅读器通过网络连接到新闻服务器。
2. 请求新闻组列表 :新闻阅读器向新闻服务器请求可用的新闻组列表。
3. 返回新闻组列表 :新闻服务器将可用的新闻组列表返回给新闻阅读器。
4. 选择新闻组 :用户在新闻阅读器中选择要查看的新闻组。
5. 请求文章列表 :新闻阅读器向新闻服务器请求所选新闻组中的文章列表。
6. 返回文章列表 :新闻服务器将文章列表返回给新闻阅读器。
7. 请求文章内容 :新闻阅读器根据用户的选择,向新闻服务器请求具体文章的内容。
8. 返回文章内容 :新闻服务器将文章内容返回给新闻阅读器。
9. 显示文章 :新闻阅读器将文章显示给用户。
10. 用户操作 :用户在新闻阅读器中进行各种操作,如阅读文章、回复文章等。
11. 发送操作请求 :新闻阅读器将用户的操作请求发送给新闻服务器。
12. 处理请求 :新闻服务器处理新闻阅读器发送的请求。
13. 返回处理结果 :新闻服务器将处理结果返回给新闻阅读器。

通过以上的配置和协同工作,新闻服务器和新闻阅读器可以为用户提供高效、便捷的新闻阅读体验。同时,合理的文章过期设置、控制消息处理以及新闻组管理等操作,也有助于维护新闻服务器的稳定运行。

下载前可以先看下教程 https://pan.quark.cn/s/16a53f4bd595 小天才电话手表刷机教程 — 基础篇 我们将为您简单的介绍小天才电话手表新机型的简单刷机以及玩法,如adb工具的使用,magisk的刷入等等。 我们会确保您看完此教程后能够对Android系统有一个最基本的认识,以及能够成功通过magisk root您的手表,并安装您需要的第三方软件。 ADB Android Debug Bridge,简称,在android developer的adb文档中是这么描述它的: 是一种多功能命令行工具,可让您设备进行通信。 该命令有助于各种设备操作,例如安装和调试应用程序。 提供对 Unix shell 的访问,您可以使用它在设备上运行各种命令。 它是一个客户端-服务器程序。 这听起来有些难以理解,因为您也没有必要去理解它,如果您对本文中的任何关键名词产生疑惑或兴趣,您都可以在搜索引擎中去搜索它,当然,我们会对其进行简单的解释:是一款在命令行中运行的,用于对Android设备进行调试的工具,并拥有比一般用户以及程序更高的权限,所以,我们可以使用它对Android设备进行最基本的调试操作。 而在小天才电话手表上启用它,您只需要这么做: - 打开拨号盘; - 输入; - 点按打开adb调试选项。 其次是电脑上的Android SDK Platform-Tools的安装,此工具是 Android SDK 的组件。 它包括 Android 平台交互的工具,主要由和构成,如果您接触过Android开发,必然会使用到它,因为它包含在Android Studio等IDE中,当然,您可以独立下载,在下方选择对应的版本即可: - Download SDK Platform...
已经博主授权,源码转载自 https://pan.quark.cn/s/b24469074755 SmartDNS English SmartDNS SmartDNS 是一个运行在本地的 DNS 服务器,它接受来自本地客户端的 DNS 查询请求,然后从多个上游 DNS 服务器获取 DNS 查询结果,并将访问速度最快的结果返回给客户端,以此提高网络访问速度。 SmartDNS 同时支持指定特定域名 IP 地址,并高性匹配,可达到过滤广告的效果; 支持DOT,DOH,DOQ,DOH3,更好的保护隐私。 DNSmasq 的 all-servers 不同,SmartDNS 返回的是访问速度最快的解析结果。 支持树莓派、OpenWrt、华硕路由器原生固件和 Windows 系统等。 使用指导 SmartDNS官网:https://pymumu..io/smartdns 软件效果展示 仪表盘 SmartDNS-WebUI 速度对比 阿里 DNS 使用阿里 DNS 查询百度IP,并检测结果。 SmartDNS 使用 SmartDNS 查询百度 IP,并检测结果。 从对比看出,SmartDNS 找到了访问 最快的 IP 地址,比阿里 DNS 速度快了 5 倍。 特性 多虚拟DNS服务器 支持多个虚拟DNS服务器,不同虚拟DNS服务器不同的端口,规则,客户端。 多 DNS 上游服务器 支持配置多个上游 DNS 服务器,并同时进行查询,即使其中有 DNS 服务器异常,也不会影响查询。 支持每个客户端独立控制 支持基于MAC,IP地址控制客户端使用不同查询规则,可实现家长控制等功能。 返回最快 IP 地址 支持从域名所属 IP 地址列表中查找到访问速度最快的 IP 地址,并返回给客户端,提高...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值