Allen 2010-05-21 13:19:12 20336 0 0 0 0

 

一直以来,对于新闻组特别感兴趣,找到一篇在Linux下搭建新闻组的介绍,记录一下,以备不时之需…… 

 
 
 
 
  搭建Linux新闻组服务器
 
  服务器应用:搭建Linux新闻组服务器  新闻组服务是Internet上与WWW(HTTP)、E-Mail(SMTP、POP3)与FTP(FTP)齐名的四大网络信息服务系统之一,其对应的英文名称是Newsgroups,该服务使用的网络协议是NNTP(Network News Transfer Protocol),逻辑端口号为119。新闻组服务的作用是向网络用户提供分类的专题讨论组,供人们在网络上就自己关心的问题进行交流、讨论,相关讨论专题包括人类社会中的政治、经济、军事、科技、艺术、教育、生活、休闲等各类话题。
  简单的说新闻组是一个可以离线浏览的论坛,当在线时候可以把新闻组里面的帖子先接收到自己的电脑中,断线后仍旧可以阅读。新闻组出现于1980年美国北卡罗来纳州。它是一个基于网络的计算机的组合,这些计算机就是新闻服务器,新闻组用户通过新闻组客户端软件就可以连接到新闻服务器上,下载阅读其他人发上去的帖子并可以进行回复和讨论。它和我们现在使用的论坛差不多,不过它是不需要进行注册的,是任何一个网络用户都能进行相互交流的平台。
  新闻组服务器与客户端程序是采用NNTP网络新闻传送协议(Network News Transfer Protocol),使用的端口号是119。新闻组服客户端程序是按分类组织各个新闻分组的,接收由用户直接发送到服务器上的帖子,发送的帖子可以带有背景图案或音频,还可以附加各类文档、程序,以及图形、图像和多媒体内容等。新闻组还可以周期性地与相邻的其他新闻组服务器交换内容,采用这种接力传送的方法就可以获得各个新闻组服务器上的内容,再将所获得的内容定期保存于相应的新闻分组中,过期的帖子则由系统自动删除掉。在国外,该技术被广泛用于提供免费资源,中国通过该技术提供收费资源则相对较少。NNTP需要设置一台或多台中心新闻服务器,用来保留所有的新闻文章,服务器端可以设置不同的新闻组对新闻信息加以分类,用户端根据所订阅的新闻组与服务器端进行数据同步,接收到的稿件根据新闻组的分类规则对所属信息进行层次化展示,便于信息查找。多数ISP限制,只有他们的客户才能访问他们的新闻组服务器。打开新闻组服务器将允许发/读任何人的帖子,访问被限制的新闻组服务器,匿名发帖或发送SPAM。
  新闻组的实时性没有 bbs论坛好,但是客户端不必登录到服务器,安全性相对要好; 新闻组和电子邮件相比:Email 保存在客户端,只有收件人能够查看和保存,而 新闻组存储在服务器端,可以随时查阅。新闻组和文档相比,新闻组的优越性在于时效性和便于沟通,文档的优越性在于条理性和归档保存。
  在 RFC 中和 新闻组相关的信息标准如下:NNTP : Network to Network Transfer Protocol (RFC 977),Standard for Interchange of USENET Messages (RFC 1036)。
 
  1. 查看新闻组文章流程 
 
 
图1新闻组应用流程
 
  1) 客户端使用新闻组软件通过TCP 119端口向服务器组服务器发送请求,要求提供新闻组文章列表。
  2)新闻组服务器对客户端用户进行身份认证,确定客户端是否有阅读新闻组文章列表权限。
  3)通过身份认证后客户端就可以登录新闻组服务器。
  4)新闻组服务器向客户端转送新闻组文章列表。
  5)客户端使用新闻组软件通过TCP 119端口向服务器组服务器发送请求,从新闻组文章列表中列出希望查看的文章。
  6)新闻组服务器对客户端用户进行二次身份认证,确定客户端是否有阅读文章的权限。
  7)通过身份认证后客户端就可以登录新闻组服务器。
  8)新闻组服务器向客户端转送允许阅读新闻组文章。
 
  2.发布新闻组文章流程 
 
 
图2新闻组发布流程
 
  1)客户端使用新闻组软件通过TCP 119端口向服务器组服务器发送请求,要求发布新闻组文章列表。
  2)新闻组服务器对客户端用户进行身份认证,确定客户端是否有发布新闻组文章权限。
  3) 通过身份认证后客户端就可以登录新闻组服务器。
  4)新闻组服务器的新闻发布控制端检查文章,新闻发布控制端拒绝的文章将丢弃,新闻发布控制端接受的文章将发布和存储。
 
  服务器端有四种存储方法可供选择。 
 
  tradspool :在INN 2.0之前就已经使用的存储方式。文章以单独的文件存储,并分布在基于新闻组名的目录中。这种存储方式非常简单,并且很多第三方的INN插件依赖这种存储方式。缺点是效率不高。 
  timehash :文章也是以单独的文件存储,但是目录名依据文章的时间而确定。这就保障了一个目录下不会存在有过多的文件。缺点是依旧没有解决过多文件操作造成的效率地下,而且文件的存储方式决定了难以像 tradspool 方式那样确定某个新闻组的文章数量和手工修改之。 
  timecaf :类似于 timehash,文章根据时间分类。不同点是,不再每篇文章一个文件,取而代之的是使用一个文件来存储。缺点是更难以理解和手工修改服务器端的存储结构,而且作为一种新的存储方式,并没有被广泛使用和测试。 
  cnfs :文章存储在预先定义好的文件缓冲区中,循环使用文件缓冲区,缓冲区满则覆盖前面的文章,因而对于 cnfs 存储方式,文章的过期设置比较特殊,且没有那么重要。
 
  本文介绍的INN(InterNetNews)新闻组服务系统诞生于1990年底,是由Rich Salz([email protected])等27位网络高手联合研制、开发并不断完善和维护的,可运行于Linux操作系统与UNIX操作系统中,目前该软件的最高版本为inn-2.3.5-6。有关INN新闻组服务系统的详细背景资料,可参阅INN系统的官方网站http://www.isc.org/inn.html。下面介绍在Linux系统中建立INN(InterNetNews)新闻组服务系统的方法。
 
  1. 安装软件
  可以通过Rat Het Enterprise Linux图形界面下的“添加/删除应用程序”工具进行安装。具体方法是,选择“主选单”→“系统设置”→“添加/删除应用程序”,在弹出的界面中选中“服务器”→“新闻组服务器”→“标准软件包”,见图3。
图3 INN及其相关软件包的安装
  2. 服务器系统配置
  (1) 设置 news 用户帐号 
  确认系统中包含 news 用户和 news 组,如果没有,需要添加: 
  $ groupadd news
  $ useradd -g news -d /usr/local/news
 
  (2) 创建news用户密码
  使用passwd命令为news用户建立密码,操作如下:
  # passwd
  Changing password for user news.
  Changing password for news
  (current) UNIX password:
  New UNIX password:
  Retype new UNIX password:
  passwd: all authentication tokens updated successfully.
 
  (3) 检测修改配置文件
  首先使用login out 命令注销,然后使用news用户重新登录系统,使用inncheck命令检测配置文件,操作见图4:
 
图4 检测结果
 
  inncheck 检查的文件有: active、control.ctl、expire.ctl、incoming.conf、inn.conf、moderators、newsfeeds
  overview.fmt、nntpsend.ctl、passwd.nntp。请根据检测结果的提示修改文件权限:
  $ chmod 664 /var/lib/news/active
 
  (3)建立相关文件
  重新以超级用户权限登录系统,在/var/lib/news目录下产生历史(history)的文件,
  #/usr/lib/news/bin/makehistory 
  在/var/lib/news目录下建立history.dir history.hash history.index
  #/usr/lib/news/bin/makedbz -i -o
  说明:-o 选项指生成新的 overview 数据库。如果使用了buffindexed方式的数据库,在调用 makehistory -O 重新生成 overview 前,先清除现有的 overview 数据。注意只有需要提供客户端服务的新闻组服务器才有必要建立 overview 数据库,对于只提供新闻中转的,无需建立和维护 overview 数据库。 
  把下面的三个目录及所有的文件和目录的属主改为news
  # chown -R news.news /var/lib/news /etc/news /var/spool/news
 
  (4)使用命令启动INN新闻组服务器:
  #server innd start
 
  (5)检查INN新闻组服务器允许情况,和端口使用情况:
  分别使用netstat和ps命令检查INN新闻组服务器允许情况,和端口使用情况,见图5。
 
图5检查INN新闻组服务器允许情况,和端口使用情况
  (6)使用 telnet 连接服务器 nntp(119) 端口:
  通常使用telnet连接INN服务器本地端口119查看其运行情况,见图6。
 
图6 使用telnet连接INN服务器本地端口119
  可以用 Ping 程序来验证与 新闻组服务器的网络连接性。可以验证域名系统 (DNS) 是否能够将计算机名正确解析为 Internet 协议 (IP) 地址。注意一些网络路由器会始终阻塞 Ping 消息。如果 Ping 未能连接,请尝试用 Telnet 连接。通常使用telnet连接INN服务器本地端口119查看其运行情况,测试INN新闻组服务器是否正常启动。如果出现ready 的情况,则表示设定正确。
 
  (7)如果希望INN服务器每次启动都能自动运行,可以用ntsysv设置。以root权限运行命令:#ntsysv
 
图7 启动INN服务器自动加载
 
  打开如图7所示的窗口,在innd服务选项加上*(用空格键),然后重新启动系统,这样系统会启动innd服务。
 
  这里INN新闻组服务器设定就完成了,下面将介绍服务器主要配置文件和新闻组管理。
PS:
  好象没有完涅……晕!  又搜了一个,补全一下:
 
  二、INN新闻组的管理: 
 
  1.关闭INN服务器
  以root身份登录,运行"service innd stop"命令。
  或者使用命令:
  ctlinnd shutdown "the reason for stop innd"
 
  2.添加讨论组
  以news身份登录,运行"ctlinnd newgroup 讨论组名称"命令。
 
  3.删除讨论组
  以news身份登录,运行"ctlinnd rmgroup 讨论组名称"命令。
 
  4.从INN服务器上删除某一篇帖子
  在管理人员认为需要的情况,可以手工删除服务器上的任何指定帖子,具体操作步骤如下:
  使用NNTP客户端软件(如Outlook Express、Netscape等)登录INN服务器,复制该需要被删除帖子的身份号(message-id);
  以news身份登录INN服务器,运行"ctlinnd cancel 该message-id"命令,即可将该帖子删除。
 
  5.新增新闻群组:ctlinnd newgroup exam.nica 
 
  6. 暂停inn 服务器不再接收讨论信件,但不中断已联机使用者:
  ctlinnd pause "the reason for pause innd" 
 
  7.暂停后继续:
  ctlinnd go "the reason for pause innd" 
 
  8.重新加载配置文件:
  ctlinnd reload active "the reason for reload the active config file of innd"
 
  9.备份
  如果想做备份就要备份以下目录
  /etc/news
  /path/to/bin
  /var/spool/news
  /var/lib/news
 
  10. 检查新闻组日志文件
  新闻日志文件在/var/log/news 目录下。这些日志文件路径的定义在/etc/syslog.conf的档案中。重要的错误记录在/var/log/news/news.crit 中,非重要的错误储存在news.err 文件中,一般活动的讯息则记录在news.notice 文件中。
 
  三、新闻组的命名规则
 
  新闻组在命名、分类上有其约定俗成的规则。新闻组由许多特定的集中区域构成,组与组之间成树状结构,这些集中区域就被称之为类别。目前,在新闻组中主要有以下几种类别:
  Comp:关于计算机专业及业余爱好者的主题。包括计算机科学、软件资源、硬件资源和软件信息等。
  sci:关于科学研究、应用或相关的主题,但一般情况下不包括计算机。
  soc:关于社会科学的主题。
  talk:一些辩论或人们长期争论的主题。
  news:关于新闻组本身的主题,如新闻网络、新闻组维护等。
  rec:关于休闲、娱乐的主题。
  alt:比较杂乱、无政府的主题,任何言论在这里都可能被发表。
  biz:关于商业或与之相关的主题。
  misc:其余的主题。在新闻组里,所有无法明确分类的东西都称之为misc。
 
  新闻组在命名时以句点上间隔,通过上面的主题分类,我们可以一眼看出新闻组的主要内容,如comp.dcom.fax,我们即可看出这是一组关于传真机、调制解调器的新闻组。另外一个新闻组服务系统是DNEWSNewsServer(简称DNEWS)是一个功能完整的新闻服务器,它具有新闻服务器的所有功能,而且,还提供了图形配置界面,简化了新闻服务器的配置和管理。在此基础上DNEWS提供了基于web页面的配置管理方式,管理员可以远程对服务器进行管理和配置。Dnews可以安装在Linux /BSD/Unix/Windows系统中,有关DNEWS新闻组服务系统的详细背景资料,可参阅系统的官方网站。
 
  四、Linux新闻组客户端应用
 
  1. 新闻组客户端的功能
  新闻组的组成结构呈树状等级结构,通常是根据讨论的主题或类型分类的。比如说,Linux新闻组通常被安排在alt.os、comp.os.linux或者linux主题下。可以看出,关于Linux 操作系统的一些诸如设置、硬件或者X 11 等讨论问题都被安排在计算机—操作系统—Linux的主题下。还会发现许多其他的讨论问题也是按照这个方法组织安排的。虽然没有什么可以保证能够准确地找到正想查找的讨论问题,但是在大多数情况下你还是可以很容易地找到一个讨论你感兴趣的问题的新闻组的。目前已经出现有几十种不同的新闻组客户端软件传输程序和新闻阅读器程序,还有超过十万个不同的新闻组。
  所有新闻阅读器程序都能够提供下列这些基本的功能:
  订阅或停止订阅某个新闻组。
  浏览消息并阅读后续消息(线索)。
  直接向消息的作者回复一个邮件消息。
  针对某个新闻组上的消息发布后续评论。
  保存某个消息的内容(通常保存在用户子目录中名为News的子目录中)。
 
  2. KDE新闻组客户端软件使用方法
  KDE 系统自身的桌面环境下的新闻组客户端软件是knode,在互联网子选单下。使用前进行简单设置即可。图5是设置界面,这里我们主要输入新闻组服务器名称以及自己的账户和使用端口号即可。
图5 knode设置界面
  除了必备的新闻阅读功能外,knode可以使用监视功能时你需要根据你感兴趣的关键字建立相应的监视项目,这样knode便会开始帮助你对新闻标题或描述进行扫描,只要与提供的关键字有关的文章,监视器都会将其提取到相应监视项目。knode工作界面6。
图6 knode工作界面
  另外KDE环境还内置了一个新闻组客户端Knewsticker。图7是Knewsticker设置界面,它已经内置了许多热门新闻组地址,也可以自己添加。
图7 Knewsticker设置界面
  除了必备的新闻阅读功能外,Knewsticker可以使用监视功能时你需要根据你感兴趣的关键字建立相应的监视项目,这样Knewsticker便会开始帮助你对新闻标题或描述进行扫描,只要与提供的关键字有关的文章,监视器都会将其提取到相应监视项目。可以说,这个功能就像是一个帮你整理资料的贴心小秘书一般好使。
 
  3.其他Linux 新闻组客户端软件
  新闻组客户端应用软件的另一种存在形态就是以组件形式整合在浏览器中,例如mozilla和opera浏览器,都包含新闻组浏览功能。在邮件客户端集成新闻组客户端也成了一种流行趋势。thunderbird“雷鸟”和Evolution是自带新闻组客户端阅读的邮件客户端。另外slrn和tin都是设计基于命令行的Linux新闻组客户端应用软件,目前已经出现有几十种不同新闻阅读器程序,由于Linux下新闻组软件非常多,限于篇幅这里提供一些主要软件的相关软件琏接:
  Slrn:http://slrn.sourceforge.net/
  Evolution:http://www.gnome.org/projects/evolution/
  Emacs:http://www.gnu.org/software/emacs/ 。
  NewsReader:http://www.newsreaders.com/
  Pan:http://pan.rebelbase.com/
  Pine:http://www.washington.edu/pine/getpine/linux.html
  Tin:http://www.linux-tin.org/
  Knode:http://knode.sourceforge.net/
  opera:http://www.opera.com/
  krn:http://kent.dl.sourceforge.net/sourceforge/krn/
 
  总结:新闻组是一个使用T C P协议的简单协议。客户发出ASCII命令(服务器支持超过2 0种不同的命令),服务器的响应先是响应码,然后跟着一行或多行的应答,最后以只包含句号的行结束(如果响应是可变长度)。类似其他的互联网协议,NNTP协议本身已多年没有变化。到此为止我们对于Linux、windows下新闻组服务器和客户端的使用方法基本结束了。

 

 


Tag: Linux Linux应用 网络技巧 网站工具 TTTBLOG
我也要发一个   ·   返回首页   ·   返回[Linux]   ·   前一个   ·   下一个
欢迎评论
未登录,
请先 [ 注册 ] or [ 登录 ]
(一分钟即可完成注册!)
返回首页     ·   返回[Linux]   ·   返回顶部