22.5. Interacción de nntpd con C News

Cuando nntpd recibe un artículo, tiene que enviárselo a un nuevo subsistema. Dependiendo de si se recibió como resultado de una orden IHAVE o POST, el artículo pasa a manejarlo rnews o inews respectivamente. En vez de invocar a rnews, también puede configurarlo (durante la compilación) para que procese por lotes los artículos entrantes y mueva los lotes resultantes a /var/spool/news/in.coming, donde se les deja para que relaynews los recoja la próxima vez que se ejecute la cola.

nntpd tiene que poder acceder al fichero history para poder ejercer de manera adecuada el protocolo ihave/sendme. Tiene que asegurarse, durante la compilación, de que la ruta a ese fichero es la correcta. Si usa C News, asegúrese de que C News y nntpd están de acuerdo en el formato a usar en el fichero history. C News usa funciones de marcado dbm para acceder a él; de todas maneras, existen implementaciones diferentes y ligeramente incompatibles de la biblioteca dbm. Si C News se ha enlazado con una biblioteca dbm diferente a la que tenga en su libc estándar, tendrá que enlazar nntpd con esa misma biblioteca.

El desacuerdo entrenntpd y C news produce a menudo mensajes de error en el fichero de registro del sistema que nntpd no puede abrir adecuadamente, o quizá vea artículos duplicados recibiéndose por NNTP. Una buena prueba para corregir errores en la transferencia de noticias es tomar un artículo de la cola, conectar por telnet al puerto nntp y ofrecérselo a nntpd como se muestra en el ejemplo siguiente. Evidentemente, tendrá que sustituir msg@idcon el ID de mensaje de un artículo con el que quiera suministrar a nntpd:

    $ 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

Esta conversación muestra la reacción adecuada de nntpd; el mensaje Got it le dice que ya tiene el artículo. Si en vez de eso obtiene el mensaje 335 Ok, la búsqueda en el fichero history falló por alguna razón. Termine la conversación con Ctrl-D. Puede mirar qué ha ido mal comprobando el fichero de registro del sistema; nntpd anota todo tipo de mensajes gracias a la propiedad daemon de syslog. Una bibliotecadbm incompatible se manifiesta normalmente en un mensaje quejándose de que dbminit falló.