当 nntpd 接收到一篇文章时,它必须将其传递给新闻子系统。根据它是作为 IHAVE 或 POST 命令的结果接收的,文章将分别交给 rnews 或 inews。除了调用 rnews,您还可以配置它(在编译时)来批处理传入的文章并将生成的批处理文件移动到/var/spool/news/in.coming,它们被留在那里供 relaynews 在下次队列运行时拾取。
nntpd 必须有权访问history文件,以便能够正确执行 ihave/sendme 协议。在编译时,您必须确保历史记录文件的路径设置正确。如果您使用 C News,请确保 C News 和 nntpd 在您的历史记录文件格式上达成一致。C News 使用dbm哈希函数来访问它;但是,library 的不同且略微不兼容的实现有很多。如果 C News 链接了不同的dbmlibrarydbm,而不是您在标准libc中拥有的 library,您也必须将 nntpd 与此 library 链接。
nntpd 和 C News 之间的不一致有时会在系统日志中产生错误消息,表明 nntpd 无法正确打开它,或者您可能会看到通过 NNTP 接收到重复的文章。测试新闻传输是否正常工作的一个好方法是从您的假脱机区域中选择一篇文章,telnet 到 nntp 端口,并将它提供给 nntpd,如下一个示例所示。当然,您必须替换msg@id为您要提供给 nntpd 的文章的消息 ID。
$ telnet localhost nntp Trying 127.0.0.1... Connected to localhost Escape characters is '^ ]'. 201 vstout NNTP[auth] server version 1.5.11t (16 November 1991) ready at Sun Feb 6 16:02:32 1194 (no posting) IHAVE msg@id 435 Got it. QUIT |
此对话显示了 nntpd 的正确反应;消息Got it告诉您它已经有了这篇文章。如果您收到消息 335 Ok,则表示在 history file 中的查找因某种原因而失败。通过键入 Ctrl-D 终止对话。您可以通过检查 system log 来检查哪里出错了;nntpd 将各种消息记录到 daemon 工具中。不兼容的dbmlibrary 通常表现为一条消息,抱怨dbminit失败。