如果你常常上新聞組的話, 有沒有興趣搭建自己的news服務器呢, 下面介紹在Linux中搭建news服務器.
一、硬件需要
對硬盤的要求當然是越大越好了, 雖然linuxHowto說至少10M, 但是根據經驗來說, 至少要200M吧. 作為服務器, 內存至少應該有32M.
二、下載
或者
三、安裝與配置Cnews
目前在網絡上流行的是Cnews, Cnews 主要的好處是它的成熟度。您會發現它可以在各種的 unix 系統執行,目前在全世界已有數以千計的系統是使用 Cnews 的. 對于一個新的 USENET 管理者首先最好是選擇使用 Cnews。因為它是如此的穩定,有良好的文件及好幾千個有經驗的管理者可以回答您的問題。
安裝 Cnews Cleanup Release 絕對是非常單純的工作;只要取得原始程序,解開它們,然后按照指示去作就好了。在 newspak 內的 quiz.def 是當您第一次執行 quiz 時所產生的。而您只要查看在 /usr/include 內的檔案就可以得到正確的答案。您需要最近版本的 bash 才可以使 Cnews 通過自我測試。您可以利用@#bash -version@#來知道您現在使用的 bash 的版本。
至少您需要去編輯或是看一下底下的一些檔案,它們都放在: /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 的部份如下:
# talke the compressed batches that came in from other systems
# also, post (locally) articles that originated here 20 * * * * /us.net/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/news/bin/newswatch
# turn processing of incoming news batches off 6:30AM - 4.00 PM 30 6 * * * /usenet/sw/news/bin/input/newsrunning off 0 16 * * * /usenet/sw/news/bin/input/newsrunning on
四、安裝與配置InterNetNews (INN)
INN由于它的完整性使得它獲得歡迎。它主要的好處是它的速度奇快以及包含了完整的 nntp 的包裝。它需要有個守護進程(daemon)一直在執行(innd)及再加上一個 overchan 的 daemon 去處理線程(threading)。
INN 需要一個良好的 /bin/sh, 通常用bash比較好. 基本上只要您按照安裝文件,就可以把它順利安裝完成。這里是一些必須要做的摘要。
◇ 在 config.data,確定您已將 HAVE_UNIX_DOMAIN 設定成 DONT。(注:在使用新的 kernel及 inn-*.*unoff4 時,您可以設定成 DO)
◇ 您運行innd 的那臺主機名稱加入 hosts.nntp,如果您只使用 uucp 的話,就填入您的sitename。
◇ 確定您的 /etc/inetd.conf 內那行 nntp 已經用"#"號將它注釋掉了。
◇ 如果您有安裝 Taylor UUCP的話,則還要將 config.data 內的 HAVE_UUSTAT 設成 DO。如果您在此設定錯誤的話,會導致沒有辦法將 news 送出。
◇ 如果您運行 INN,您務必記得要去修改 syslog.conf,這對您有很大很大的幫助。INN 有個很特別的 FAQ,每個月都會定期的張貼到 news.software.nntp, news.software.b,news.answers。
維護 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則 < /dev/null 就不需要了)
1.我在slackware6.0上的安裝過程
利用pkgtool 解開源程序; 確定您的系統內有個用戶及組名稱叫 news 的。
/etc/passwd : (GID 13 UID 9)
/etc/group (GID 13)
因為有一些 script 會寄信給 usenet,所以必須設定一個 mail 的 alias, 把它放在 /etc/aliases。內容如下: /etc/aliases: news: root usenet: root 然后再利用 newaliases 命令重建 alias 的數據庫。 到/etc/rc.d/rc.local 加入 inn 起動的 script "rc.news" # start inn /usr/lib/news/etc/rc.news 將在 /usr/lib/news/tools.里面有個叫做 crontab-news 的文件復制到 /usr/spool/cron/crontabs/news去,并且將它做適當的修改。將它里面有個名 字改成發送網絡新聞給您的主機名稱。
您現在的 news LIBDIR 是在 /usr/lib/news。但因為有很多的新聞讀取程序會到 /usr/local/lib/news 去讀取相關的設定,因此您需要做一個符號的連結: ln -s /usr/lib/news /usr/local/lib/news
如果您在以前曾經安裝過Cnews 的話,那就已經存在個 /usr/local/lib/news了,因此您需要先利用 rm 將它刪掉!
news 的 spool 目錄在 /var/spool/news。如果在您的系統內已經有在不同目錄下的 news 文章時,而您又已經有 /var/spool/news 的目錄時,先刪除/var/spool/news 目錄,然后再將您的 news spool 目錄做個符號連結(例如說,如果您原有的在 /news 的話) ln -s /news /var/spool/news
修改在 /usr/lib/news 下的 config 文件:在以下的內容里面如果有看到 manlobbi ,這表示是個新聞服務器主機,而knobel 是我的網絡新聞組客戶端。您必須去瀏覽在 /usr/lib/news 內的以下文件。 expire.ctl hosts.nntp inn.conf moderators newsfeeds 和 nnrp.aclearcase/" target="_blank" >ccess nntpsend.ctl passwd.nntp
以上一定要修改的有 inn.conf, hosts.nntp, newsfeeds, nnrp.access 其他的就看著辦好了。如果您是用 nntpsend 的話,那您就需要去改nntpsend.ctl. 建立一個空的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} 以 root 的身份執行 makedirs.sh
利用 man news-recovery 去讀 news-recovery 。它包含當您已將您的 news系統升級到 INN 時如何去回復它.
確認您的 uucp permission file 允許 uux 去運行 rnews 及 grnews.在 /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 。
修改 /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。
利用下述的命令起動 innd,記得要以 root 的身份! /usr/lib/news/etc/rc.news
另外, 在 /usr/lib/news/etc/rc.news 內有一行是用來設定innwatch 是否要起動的,default 值是 false 建議改成 true ;如果您定成 true的話,在起動 innd 的同時,它也會起動 innwatch。而innwatch 的功能就是監視innd 是不是死掉了啦?。╥nnd 也是會死掉的,并且是莫名其妙的死掉,而且還是死得無聲無息的,您都不知道呢?。┤绻?innwatch 的話,他會寄封信給 root。還有就是系統的負載太高啦,或是硬盤的空間不夠了,它會把 innd 先停?。ㄒ苍S您需要去調整 innwatch.