在RedHat 5.0中配置News Server
估計大家都看了很多中英文的News Howto,結果一般是看得稀裡糊塗
(我自己就是這樣的感受:-),一是那些文檔年代"久遠",二是針對從源代
碼編譯開始的情況,三它們不是針對Linux來講的.裝了RH5.0後我發現配
置INN(我認為C-News軟件已經"死"了)已經是很簡單的事情了,下面把我
的一些粗淺的經驗介紹給大家.歡迎指正並完善.
一,基本概念
關於UUNet,有很多文章和書籍介紹,這裡沒必要重復了.值得一提的
是,你的新聞服務器並不一定要連入UUnet,完全可以配置為一個Stand
Alone的News Server.在新聞服務器上讀,寫(post)文章的用戶稱為Reader,
Reader與Server之間是按照C/S方式來做的.當然可以把你的新聞服務器
與其他服務器相連,相互轉發文章.一個新聞服務器向另一個服務器轉發
文章,則第一個服務器被稱為feeder.所以要記住news feed的行為發生在
兩個新聞組服務器之間.
我們假定你的新聞服務器的名字為news.foo.com.cn(當然域名就應該
是foo.com.cn),在安裝RedHat 5.0時選擇了INN包並允許開機啟動innd,
這時RedHat已經自動完成了大部分配置,你根本不需要去編譯源碼,也就
找不到config.dist,Install.ms等文件.安裝完成後相關文件在以下目錄:
/usr/sbin/innd
/usr/sbin/inndstart
/etc/rc.d/rc.news
/etc/news/*
/etc/crontab
/etc/syslog.conf.inn
/usr/bin/inews
/usr/bin/rnews
/usr/lib/news/*
/usr/lib/news/bin/*
/var/lib/news/
/var/lib/news/send-nntp
/var/lib/news/send-uUCp
/var/spool/news/
/var/log/news/
/usr/doc/inn-1.7/
/usr/doc/inn-1.7/Install.*
/usr/doc/inn-1.7/FAQ/
在配置innd之前,應確保網絡已被正確配置,一般來說在你的網絡裡還需
要有DNS服務器,某些情況下還需要配置sendmail. 用hostname命令檢查主機
名應該是全稱名(如news.foo.com.cn而不是簡單的news),用dnsdomainname
查看域名.順便提一下,重新啟動innd不必重新啟動整個系統,只需到
/etc/rc.d/init.d下運行innd這個腳本,共有四個參數: start,stop,restart
和status.建議先運行./innd status看看innd是否已經啟動,因為如果網絡沒
有配置好的話,innd是沒有啟動的,雖然innwatch可能已經啟動了.這個方法對
其他一些配置同樣有效,比如修改了網絡參數,可以簡單地再運行一遍network
這個腳本,望新手們舉一反三.
二, 先把news.foo.com.cn配置為單獨的新聞服務器
首先要提醒一點,凡是owner是news.news的文件,你要切換成news身份
去操作(RH5.0已經給你建立了news組和用戶,你可以去看一下/etc/group
和/etc/passwd文件)---發出su news命令即可.其實對於/etc/news/下的
文件可以用root身份直接編輯(我用jstar編輯沒有問題).
1 配置/etc/news/inn.conf
如果你安裝時正確地配置了網絡,這一步可以省去,缺省如下:
## inn.conf -- inn configuration ....
## ......
domain: foo.com.cn
organization: foo company news site
server: localhost
這樣一般就可以了,若要了解細節,用"man inn.conf"看一下,照貓畫虎
是個好方法.注意domain這一項應與dnsdomainname返回的結果一致.
2 配置/etc/news/nnrp.Access
事實上INN包是一組程序來完成News的工作,而不是innd一個人做所有的
事,但innd總攬全局,除了send-nntp/send-uucp由cron帶動以外,其他的工作都
由innd完成或發起,nnrpd就是一例. 當客戶登陸進來的時候,innd啟動nnrpd進程,
nnrpd完成news readers的服務.它的配置文件是/etc/news/nnrp.access,控制哪
些站點可以訪問,是否帶密碼訪問這個新聞服務器.缺省值如下:
# Default to no access
*:: -no- : -no- :!*
#allow access from localhost
localhost:Read Post:::*
這時你添加幾行,允許更多的人訪問你的站點,如加入:
stdin:Read Post:::*
*.foo.com.cn:Read Post:::*
也可以簡單的把整個文件改為
*:Read Post:::*
注意每一行最後應沒有空格.用"man nnrp.access"了解更詳細的情況.配
置完以後用"/usr/lib/news/bin/inncheck nnrp.access"檢查你的配置是否正
確:出錯則有提示,正確反而什麼都沒有.修改這個文件無須重新啟動innd,因為
如前所述,nnrpd是動態調用的.
3 添加新聞組
站點上有哪些新聞組由/var/lib/news/active文件確定.你可以手工編輯
這個文件來添加新聞組(不要忘了切換到news身份喲),active文件的格式用"man active"
去看吧.推薦的方法是用"ctlinnd newgroup chinese.comp.XXX(or whatever)"
ctlinnd這個命令很有用,後面可能還會介紹.比如你手工該了active文件,你就
需要用ctlinnd reload active "modify active"通知innd更新新聞組條目.
注意有些組是系統默認的,不能刪除,如control,junk等.
4 監管某個新聞組
在active配置文件裡,最後一項可以是y,n,m,j,x,=XXX.XXX,當它是m時,
就表示此新聞組受到監管.監管的意思就是news reader發表到這個組的文章
先發到監管人的Email信箱,監管人審查後再把它貼到新聞組上去.它的配置文
件是/etc/news/moderators,這個功能用得比較少,用man看一下就行了(一路
man下去,配置就完成了:-).
5 配置其它參數
有些不太重要的配置文件如overview.fmt,innwatch.ctl等無須修改,
使用缺省配置就可以了。不過eXPire.ctl這個文件要仔細看看,它控制文件
或文章在站點上保存多久。
6 啟動innd
負責啟動innd的是/etc/rc.d/rc.news,但RH5.0已經把innd啟動,所以
這時你無須做任何事,你的news站點基本正常運行了,用/usr/lib/news/bin/inncheck -v
看一下,應該沒有錯誤.現在要做的就是配置客戶端(reader)軟件來測試一下.
配置netscape沒什麼好講的,如果用tin來讀文章,需要注意幾點:
a,如果以本地方式讀,需要增加一個連接
ln -s /var/lib/news/active /usr/lib/news/active
b,如果以nntp方式讀(tin -r),需要設定一個環境變量,如
export NNTPSERVER=news.foo.com.cn
或生成文件/etc/nntpserver,加入news服務器的名字就行了.
c,tin的資源文件有$HOME/.newsrc,$HOME/.tin/tinrc等,用ls -a看.
d,在nnrp.access裡應打開stdin的權限.
也可以用telnet news.foo.com.cn 119來測試,輸入help命令看看能做什麼.
如果成功地貼(post)上了文章,可以到/var/spool/news/下找到.
如果你只是做一個獨立的news server,到此打住,無須再配置news feed了,否則配了又不通,
會在/var/log/news/errors裡出現starinndfeeds的錯誤!
三 與其他的news站點相互"灌水"
例如與news.freesoft.cei.gov.cn.為了簡化說明,我們假定只能由freesoft向
news.foo.com.cn站點feed文章,即freesoft是你的上級(當你的News服務器可以向
freesoft發文章時,你們的關系是對等的,無所謂上級下級).進行這樣的配置首先
要上級同意你的請求(否則他不修改他的配置:-).
1 獲取上級的active和newsgroups
su news #切換為news身份
1) telnet news.freesoft.cei.gov.cn nntp > /tmp/newsgroups
list newsgroups
quit
2) telnet news.freesoft.cei.gov.cn nntp > /tmp/active
list active
quit
3) 編輯這兩個文件,把你所想要的加入到你的/var/lib/news/active或
newsgroups文件中. 然後用ctlinnd reload active "modify"更新.
(用inncheck active先檢查一下是好習慣).
2 允許上級站點feed文章到你的站點
修改配置文件/etc/news/hosts.nntp,加入一行
news.freesoft.cei.gov.cn:
即可,用man hosts.nntp了解細節.相關文件hosts.nntp.nolimit,passwd.nntp等
視情況作出修改(如需要密碼等).
發命令ctlinnd reload hosts.nntp "modify hosts.nntp"通知innd更新.
相應地,在news.freesoft.cei.gov.cn上也要加入news.foo.com.cn
更新innd:ctlinnd reload hosts.nntp "modify hosts.nntp"
3 配置/etc/news/newsfeeds
這個配置文件是最復雜的了,參數很多,好多我也沒搞清楚(沒耐性仔細看完man newsfeeds:-).
它主要管news server之間feed的方式及distribution.
feed的方式一般有三種: 實時的nntplink,send-nntp以及send-uucp.
nntplink又有logfile/channel/stdin幾種方式,
不過我在我的機器上居然沒有找到nntplink這個程序!
我對uucp不了解,估計現在用得也不太多. nntp的傳送方式又有幾種:
1) 常規方式:pipe
2) xbatch,
類似於uucp的傳送方式,batch->compress->transmission->uncompress->unbatch
3) streaming NNTP(streaming vs pipeline)
看來配置newsfeeds真是煩死了,不過我們還是用簡單的方式來做,復雜的情況留到以後再說.
2) telnet news.freesoft.cei.gov.cn nntp > /tmp/active
list active
quit
3) 編輯這兩個文件,把你所想要的加入到你的/var/lib/news/active或
newsgroups文件中. 然後用ctlinnd reload active "modify"更新.
(用inncheck active先檢查一下是好習慣).
2 允許上級站點feed文章到你的站點
修改配置文件/etc/news/hosts.nntp,加入一行
news.freesoft.cei.gov.cn:
即可,用man hosts.nntp了解細節.相關文件hosts.nntp.nolimit,passwd.nntp等
視情況作出修改(如需要密碼等).
發命令ctlinnd reload hosts.nntp "modify hosts.nntp"通知innd更新.
相應地,在news.freesoft.cei.gov.cn上也要加入news.foo.com.cn
更新innd:ctlinnd reload hosts.nntp "modify hosts.nntp"
3 配置/etc/news/newsfeeds
這個配置文件是最復雜的了,參數很多,好多我也沒搞清楚(沒耐性仔細看完man newsfeeds:-).
它主要管news server之間feed的方式及distribution.
feed的方式一般有三種: 實時的nntplink,send-nntp以及send-uucp.
nntplink又有logfile/channel/stdin幾種方式,
不過我在我的機器上居然沒有找到nntplink這個程序!
我對uucp不了解,估計現在用得也不太多. nntp的傳送方式又有幾種:
1) 常規方式:pipe
2) xbatch,
類似於uucp的傳送方式,batch->compress->transmission->uncompress->unbatch
3) streaming NNTP(streaming vs pipeline)
看來配置newsfeeds真是煩死了,不過我們還是用簡單的方式來做,復雜的情況留到以後再說.