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