Linux作NEWS服务器

发表于:2007-07-02来源:作者:点击数: 标签:
如果你常常上新闻组的话, 有没有兴趣搭建自己的news 服务器 呢, 下面介绍在Linux中搭建news服务器. 一、硬件需要 对硬盘的要求当然是越大越好了, 虽然 linux Howto说至少10M, 但是根据经验来说, 至少要200M吧. 作为服务器, 内存至少应该有32M. 二、下载 或者

    如果你常常上新闻组的话, 有没有兴趣搭建自己的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 是不是死掉了啦!(innd 也是会死掉的,并且是莫名其妙的死掉,而且还是死得无声无息的,您都不知道呢!)如果有 innwatch 的话,他会寄封信给 root。还有就是系统的负载太高啦,或是硬盘的空间不够了,它会把 innd 先停住(也许您需要去调整 innwatch.

原文转自:http://www.ltesting.net