Next Previous Contents

4. 新闻传送软体

在现在,UNIX 系统下有两大新闻传送软体,一个是 Cnews 以及 INN。 而旧版的 Bnews 已正式的宣布「死亡」了, 而且原作者也不再对其支援了。

在这里所说的新闻传送软体是指其在幕後处理, 以使得张贴的文章得以传递及使得新闻阅读软体可以去存取的软体。

您可以设定您的路□到任何您喜欢的地方, 只要 UUCP 的绝对路径可以抓到 rnew 的许可档(Permission file), 以及您设定了您的网路新闻阅读软体, 使得它可以去找到 "inews" 及 "mail"。 (译注:目前在台湾使用 UUCP 最具代表性的大概是曾瑞源先生当年建立的 UUserv 了! 谢谢 cthuang@UUserv.NET.tw 所提供以下的讯息!

>您在 <4p3h97$8jj@ish.chna.edu.tw> 文章内提到: >: 可以去找到 "inews" 及 "mail"。 (译注:现在还有人在用 UUCP吗) >当然有呀。UUserv 社区网路是台湾少数提供 UUCP 的地方喔。 >而且也是台湾最大的 UUCP 集散中心呢。 um...注完了 )

注意:如果您尝试同时安装 Cnews 及 INN ,那您一定是在自寻苦恼; 只能选这个或是另外一个。可以加入 NNTP 的 "reference Release" 到 Cnews , 因为本来它们就打算「你侬我侬」的。

4.1 Cnews Cleanup Release

目前在网路新闻上标准的版本应该是 Cnews 了。 它已经出来好多年了,我是在1988年第一次看到它的。 目前的版本叫做 Cnews Cleanup Release, 它是由 CR.G 做补丁的。

Cnews 主要的好处是它的成熟度。您会发现它可以在各种的 *nix 系统执行, 目前在全世界已有数以千计的系统是使用 Cnews 的。

它主要的缺点则是它好像是要给那些利用 uucp 及 modem 连接两点之间所使用的。 因此在管理网际网路及时系统的□送及读取时, 需要额外的 NNTP 软体。

尽管如此,对於一个新的 USENET 管理者首先最好是选择使用 Cnews。 因为它是如此的稳定, 有良好的文件及好几千个有经验的管理者可以回答您的问题。

'Cleanup Release'表示了包含了对 Overview 的支援, 而且比过去的还要快。 结果呢就是您现在可以直接使用 Cnews NOV 所提供的功能, 而不需另外再利用其他的软体来支援网路新闻读取程式如 nn、 tin、及 trn。

我并没有完整的说明如何去安装及设定这个软体, 原因是我在家里好久以前就转换到 INN了。 如果有任何人要提供我此方面的线索, 请送个电子邮件给我。

在 sunsite 的 newspak 含有在 Linux 系统上跑 Cnews Cleanup Release 的设定档。 而您如果要使用 bash1.12 的话则您需要做一些补丁的工作。

基本上您跑新的 'quiz' 脚本并且采用预设值。 您必须参考您的 /usr/include 来回答一连串的问题, 但是您也不必担心,那些都是很明确的。

安装 Cnews

安装 Cnews Cleanup Release 绝对是非常单纯的工作; 只要取得原始程式,解开它们, 然後按照指示去作就好了。

在 newspak 内的 quiz.def 是当您第一次执行 quiz 时所产生的。 而您只要查看在 /usr/include 内的档案就可以得到正确的答案。

您需要最近版本的 bash 才可以使 Cnews 通过自我测试。 您可以利用 'bash -version'来知道您现在使用的 bash 的版本。 1.14.2 的版本绝对是不怎麽的高明。 在我写这个文件的时候,看起来 1.14.5 好像有比较好些。

Steve Robbins 已确定最近的版本之 'Cnews Cleanup Release' 发现与 GNU 的shellutils-1.9 结合时有一只□! 我记得 Steve 有将其补丁放到 sunsite。

设定 Cnews

至少您需要去编辑或是看一下底下的一些档案, 它们都放在 /usr/local/lib/news。

active             - active 档案。(译注:就是存放您要收的网路新闻讨论群的名字)
batchparms         - 批次作业的参数。
explist            - 设定文章存活的时间。
mailname           - mail replies 时在 header 的名字。
mailpaths          - 要张贴文章到 moderated 时 mail 的路□。
organization       - 您的公司名称。
sys                - 控制那些是您要接收或是□送的。
whoami             - 在 Path: 那行您的主机名称。

维护 Cnews

首先,最重要的原则就是不要手动去弄乱那些本来有公用程式去设定的档案。 特别是不要手动去设定 newsfeed (您可以跑 addfeed)及弄乱您的 active 档案 (您可以跑 addgroup)。 当您有疑问的时候,读...再读附在原始程式内的文件。

每件事都可以利用 cron 来做。 我的 crontab 内有关於 news 的部份如下:

        # take the compressed batches that came in from other systems
        # also, post (locally) articles that originated here
        20 *       * * * /usenet/sw/news/bin/input/newsrun  

        # batch 'em up to go out
        0 *        * * * /usenet/sw/news/bin/batch/sendbatches myfeedsite

        # expire C-news 
        59 0       * * * /usenet/sw/news/bin/expire/doexpire 

        # monitor stuff and report if needed
        10 5       * * * /usenet/sw/news/bin/newsdaily 
        00 5       * * * /usenet/sw/new/bin/newswatch 

        # turn processing of incoming news batches off 6:30AM - 4:00 PM
        30 6       * * * /usenet/sw/news/bin/input/newsrunning off 
        00 16      * * * /usenet/sw/news/bin/input/newsrunning on 

4.2 InterNetNews (INN)

INN 是新跃上舞台者,但是由於它的完整性使得它获得欢迎。 它主要的好处是它的 速度以及包含了完整的 nntp 的包装。 它主要的缺点是它是属於比较新而尚未在许多标准的 *nix 系统上安装及没有瑕疵的跑过。 另外,它需要有个守护神(daemon)一直在执行(innd) 及再加上一个 overchan 的 daemon 去处理线绪(threading)。 它的标帜看来就是可观的记忆体及较快的速度。

我曾经在一台 8MB 386-33(没有跑 Xwindows) 的主机上用 INN 以 UUCP 的形式透过14.4 kb modem 而有过一个晚上最高 5 MB 新闻□送量的记录, 并且没有任何的问题。

尽管它在 Linux 下是快速而且相当的稳定, 但是由於它对於刚开始的新闻伺服器管理者而言并没有完整的文件 (虽然真实的情形是如果您□解以後,跑它是相当的容易的)。 所以新的 USENET管理者最好是先用 Bnews 或是 Cnews , 直到您对网路新闻有了相当的程度後再去使用 INN。 (译注:别听他的, 在台湾是一百台新闻伺服器主机至少有九十五台是安装 INN 的, 文件少是真的,不过在 Linux 上安装并不是很困难, 文件现在有 News FAQ part 1-9以及相当完整的manual page, 只是您所需要的只是多做点功课就是啦! 尤其是有位 C.S.Chen ;免惊啦)

INN 的 permission 是很特别的,别把它们弄混了。

INN 对於标准的 TCP/IP 的要求也很特殊, Linux 在这方面并不是很合乎条件, 因此您最好是去一般 Linux 的 archie site 抓特定给 Linux 用的 INN 来用可能比较妥当。 (译注:这一方面在 Linux 1.3.67 以上的版本其 TCP/IP 己经符合其要求了, 目前最 smart 的是kernel 1.3.70以上再加上 inn1.4unoff4 um...据说 unoff5 都出来了! 使用 redhat 3.0.3 的可以到他们公司的 ftp site 下载 newspak-unoff3 5.rpm 违是一个 binary distribution)

安装 INN

( 以下来自 Arjan de Vet - devet@info.win.tue.nl )

我为了要使 INN 1.4 可以在 Linux 上跑, 於是做了必要补丁及设定档, 您可以在以下的地方取得它:

ftp.win.tue.nl:/pub/linux/ports/inn-1.4-linux.tar.gz

INN 需要一个良好的 /bin/sh。我使用 bash 1.13 beta版 (您可以在各个 ftp site 找到它)。 bash 1.12 有一些小问题, 有些网路新闻群它并不能正确的掌控 (也许还有其他的问题,不过我不记得了)。

设定 INN

基本上只要您按照 Arjan's 的指引, 就可以把它设定完成。 这里是一些须要做些什麽的摘要。

INN 有个很特别的 FAQ,每个月都会定期的张贴到 news.software.nntp, news.software.b,news.answers。 您也可以在 rtfm.mit.edu:/pub/usenet-by-hierarchy/news 下取得。 您将会很高兴您做了!

维护 INN

我发现 Linux 的 INN site 除了设定一些 cron 外, 它几乎不须什麽照顾的。 基本上您需要一些像以下的 crontab:

        # daily maint, also expire the .overview database and articles
        1 0 * * * /usenet/sw/inn/bin/news.daily expireover delayrm < /dev/null

        # send 'em out
        5 * * * * /usenet/sw/inn/lib/send-uucp

(如果您已经改用 bash 1.13 则 "< /dev/null" 就不需要了)

4.3 一些其他的网路新闻传送软体

以下列出一些在 Linux 上确认也可以跑的网路新闻传送软体:

4.4 译者的话

翻译了老半天,结果是愈翻愈火大。 还好是当初我在安装 INN 的时候, 还没有看到这个HOWTO, 否则看了老半天,能不能安装的起来, 我看还是个大问题! 以下是利用 Slackware Linux (我忘了那一个版本了啦!但不是 3.0 的喔 :-( 照样来段声明: 如果您要利用 3.0以上的版本来安装, 发生一切意外,其後果由您自行承担, 不过我很怀疑难道 Slackware 的安装会改了吗? 如果您利用 3.0 安装後有了结果, 请 email 告诉我)

首先呢就是您要有 Slackware Linux 啦, 要怎麽取得您就自己设法吧! 看是要用 hopenet 的光碟, 还是要利用网路安装, 或是要买正式版本的 Slackware 我都没有意见啦!

您可以利用 pkgtool 来安装 N 系列里面的 innd。 它会帮您安装的差不多; 但是,只是差不多而已喔, 并不是帮您安装的好好的呢! 您还是需要再去做一些设定的啦!

有一点要提醒各位的是, Slackware 的 inn 是安装到 /usr/lib/news 去, 而不是一般的/usr/local/lib/news 喔。

然後您就 cd /usr/lib/news/tools.linux , 这个里面有好多的宝藏呢, 首先您先把有个叫INSTALL.linux 的给印了出来, 然後您就按照上面的步骤一步一步的做下去大概就接近完成了。 我在下边所附的是从那儿翻译过来的文件, 但还是强烈的建议您最好还是看原始的。

--------------------------------------------------------------------- 系统需求:

安装步骤:

  1. 利用您套装的工具解开程式组, 在 Slackware Linux 则是利用其公用程式 pkgtool。
  2. 确定您的系统内有个使用者及群组名称叫 news 的。
        /etc/passwd
                     news:*:9:13:news:/usr/lib/news:
                          | |  |____ GID 13 !
                          | |_______ UID 9 !
                          |_________ 这个原文写错了,如果您是用news::9:13
        的话,任何人都可以使用 news 的身份并且不需要 password 就可以 login 
        了,如果您们是这样子设定,请告诉我,那天去坐坐.....    ^_^ 
    
        /etc/group
                     news::13:news
                            |_______GID 13!
    
  3. 因为有一些 script 会寄信给 usenet,所以必须设定一个 mail 的 alias, 把它放在 /etc/aliases。内容如下:
        /etc/aliases:
                      news: root
                      usenet: root
    
    然後再利用 newaliases 命令重建 alias 的资料库。
  4. 到 /etc/rc.d/rc.local 加入 inn 起动的 script "rc.news"
        # start inn
        /usr/lib/news/etc/rc.news
    
  5. 将在 /usr/lib/news/tools. 里面有个叫做 crontab-news 的档案复制到 /usr/spool/cron/crontabs/news去, 并且将它做适当的修改。 将它里面有个名字改成□送网路新闻给您的主机名称。
  6. 您现在的 news LIBDIR 是在 /usr/lib/news。 但因为有很多的新闻读取程式会到 /usr/local/lib/news 去读取相关的设定, 因此您需要做一个符号的连结:
        ln -s /usr/lib/news /usr/local/lib/news
    
    如果您在以前曾经安装过 Cnews 的话, 那就已经存在个 /usr/local/lib/news了, 因此您需要先利用 rm 将它拿掉!
  7. news 的 spool 目录在 /var/spool/news。 如果在您的系统内已经有在不同目录下的 news 文章时, 而您又已经有 /var/spool/news 的目录时, 先移除/var/spool/news 目录, 然後再将您的 news spool 目录做个符号连结 (例如说,如果您原有的在 /news 的话)

        ln -s /news /var/spool/news
    
  8. 修改在 /usr/lib/news 下的 config 档: 在以下的档案内容里面如果有看到 manlobbi , 这表示是个新闻伺服器主机, 而 knobel 是我的网路新闻器客户端。 您必须去浏览在 /usr/lib/news 内的以下档案。

        
        expire.ctl hosts.nntp inn.conf moderators newsfeeds
        nnrp.access nntpsend.ctl passwd.nntp
    

    以上一定要修改的有 inn.conf, hosts.nntp, newsfeeds, nnrp.access 其他的 ... um.. 就看著办好了。 如果您是用 nntpsend 的话, 那您就需要去改 nntpsend.ctl

  9. 建立一个空的history database 及 log

        :>/usr/lib/news/history
        :>/usr/lib/news/history.dir
        :>/usr/lib/news/history.pag
        :>/usr/lib/news/errlog
        :>/usr/lib/news/log
        chmod 664 /usr/lib/news/{history*,log,errlog}
        chown news.news /usr/lib/news/{history*,log,errlog}
    

  10. 以 root 的身份执行 makedirs.sh
  11. 利用 man news-recovery 去读 news-recovery。 它包含当您已将您的 news 系统升级到 INN 时如何去回复它。
  12. 确认您的 uucp permission file 允许 uux 去跑 rnews 及 grnews。 um... 懒得再翻下去了, 这个真得是国情不同, 你要用 uucp 吗? 顺便提一下, 如果您对外的频宽低於 28.8k 的话, 那我看就算了, 不要再装什麽 news server 了; 前些日子□得无聊算了一下下, 如果只接tw.bbs.*的话, 一天会吃掉一条 14.4k 的频宽。
  13. 这条有点儿问题, 如果没有记错的话, 在 News FAQ 里面建议的改法可能会好一些!

        就是在 /etc/syslog.conf 内加入
    
        *.=info;*.=notice;news.none   /usr/adm/messages
                         ^^^^^^^^^^
                          加上去 
        news.crit                     /var/log/news/news.crit
        news.err                      /var/log/news/news.err
        news.notice;news.info         /var/log/news/news.notice
    

    这三个档,news.daily 在每天执行的时候, 会将它们压缩起来, 然後放到/var/log/news/OLD 里面去, 预设值是存七天, 名字好像就是 news.err.gz.1这种样子, 直到 .7 为止代表七天前的一些 log 。

    我曾经看过很多人的都是放到 /usr/adm/messages 及 /usr/adm/syslog 里面去,这样子做的缺点是 messages 会一直长大, 而 news.daily 并不会去处理 messages 这个档, 到了有一天,您也没有什麽工具程式可以看它或是去编辑它, 就只有把它给删除掉这一条路而已。 可是您知道那样子可能有些重要的讯息就被您给...了。

    um...果然是年纪大了,常常忘东忘西的, 您还要利用 ps 找到 syslogd 的 pid, 然後利用 kill -HUP pid 重新起动它才有用喔!

  14. 修改 /etc/inetd.conf 的内容。 将里面有一行 nntp 的把它给删除掉! 或是在那行的前面加上一个 "#" 号。 这个目的是在 Cnews 里面是利用 inetd 去监听 port 119 如果有 connect 到这个 port 的话, inetd 就叫用 nntp 啦。 但是 INN 的作法不太一样, 它是利用 innd 这个 daemon 去监听这个 port 的, 所以如果这个 port 被使用了, innd 被不能再利用它了。 对了, 先利用 ps ax 查看 inetd 的 pid , 然後利用 kill -HUP pid 重新起动 inetd。
  15. 利用下述的命令起动 innd, 记得要以 root 的身份喔!

       
        /usr/lib/news/etc/rc.news
    

---------------------------------------------------------------------

现在您的 innd 应该已经起动了, 您可以利用 ps 的指令看到它。 如果没有看到的话大概是去报到了, 到 /var/log/news 看一下 news.err 及 news.crit 吧! 看看错误讯息是什麽! 然後就去翻 NEWS FAQ part 3:Reasons why INN isn't start。 看看您的情况是不是在 FAQ里面有提到; 如果没有提到的话, 再翻 NEWS FAQ part 5:Other error messages and what they mean。 如果还是没有的话, 就只好 NEWS FAQ 由part 1到 part 9 都看一次了! 看看有没有什麽灵感,如果还是没有的话, 建议您再看一次;如果仍没有的话, 再读一次,顺便把它成中文。 真的,我不是开玩笑的, 您读了,与动手去把它翻成中文这中间, 认知上的意境还是有相当程度的差别的。 如果连这样都还是有问题, 那您可以找同意□送资料给您的 news server 管理者, 我相信他们都会拨个空帮您看看的, 可能有那个地方有问题, 也许这个问题会危及与您互相□送的 news server 也说不定。 如果连他也没有办法解决的话, 将您的问题 post 到 tw.bbs.netnews, 或是您要 smart 一下 post 到 news.software.nntp 也不错啦! 不过 post 之前再想一下, 如果能私下解决的问题, 就私下解决吧! 同样是把问题解决了, 可是 tw.bbs.netnews 上有好几位 news 的管理者也在看呢! 所以太那个的问题, 有时还会被拿去当教材说! 另外就是其他人也会觉得怕怕的, 因为 news 的特点就是 server 与 server 相连的, 今天多了一个不是很称职的管理者就算我都会耽心, 那天就这样被摆了一下子也说不定呢!

对了,忘记提一点,在 /usr/lib/news/etc/rc.news 内有一行是用来设定 innwatch 是否要起动的, default 值是 false 建议改成 true ; 如果您定成 true 的话, 在起动 innd 的同时, 它也会起动 innwatch。 而 innwatch 的功能就是监视 innd 是不是死掉了啦! (innd 也是会死掉的, 并且是莫名其妙的死掉, 而且还是死得无声无息的, 您都不知道咧! 不过话说回来, 如果死的有声有色的话, 那可实在太可怕了啦!) 如果有 innwatch 的话, 他会寄封信给 root。 还有就是系统的 load 太高啦, 或是硬碟的空间不够了, 它会把 innd 先停住 (有时您还会气的想把它给停掉呢! 明明没怎麽嘛! 这时候您需要去调整 innwatch.ctl 里面的一些参数值)。 尤其是硬碟的空间如果用光的话, 再接著下来, 您要是能够无伤的重新起动 innd 的话, 那还真的是您的造化呢。

另外记得一点, 以後要修改设定啦, 或是加入新的 feed site , 还是新的 newsgroup 等等, 反正除了起动 rc.news 之外的一切与 news 相关的, 您都要用 news 的身份去作(su news)。

在开始网路传送之前, 您可以先看 INN FAQ Part 4: The debugging tutorial (setup of feeds etc.)。 并参照上面的建议, 先试试看您的设定是否都是正确的。 如果这一关您也通过了的话, 再执行个 /usr/lib/news/bin/inncheck -v, 看看有没有错误的讯息, 如果也没有的话, 这时候应该就可以通知您的feeder 开始□送相关的网路新闻讨论群给您了!


Next Previous Contents