为了能够正确执行 ihave/sendme 协议,nntpd 必须能够访问历史记录文件。 因此,在编译时,您必须确保路径设置正确。 您还应该确保 C-news 和 nntpd 在历史记录文件的格式上达成一致。 C-news 使用 dbm 哈希函数来访问它; 但是,dbm 库有相当多不同的且略微不兼容的实现。 如果 C-news 链接的 dbm 库与您的标准 libc 中的库不同,则您也必须将 nntpd 与此库链接。
nntpd 和 C-news 在数据库格式上不一致的典型症状是系统日志中的错误消息,表明 nntpd 无法正确打开它,或者通过 NNTP 接收到重复的文章。 一个好的测试是从您的假脱机区域中选择一篇文章,telnet 到 nntp 端口,并像下面的示例中所示的那样将其提供给 nntpd(您的输入用这种方式标记)。 当然,您必须将 <msg@id> 替换为您要重新提供给 nntpd 的文章的 Message-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此对话显示了 nntpd 的正确反应; 消息 “Got it” 告诉您它已经有了这篇文章。 如果您收到消息 “335 Ok” 而不是 “Got it”,则历史记录文件中的查找因某种原因失败。 通过键入 Ctrl-D 终止对话。 您可以通过检查系统日志来查看哪里出错了; nntpd 将各种消息记录到 syslog 的守护进程工具。 不兼容的 dbm 库通常表现为抱怨 dbminit 失败的消息。435 Got it. QUIT