Capítulo 22. NNTP y elDemonio nntpd

Tabla de contenidos
22.1. El Protocolo NNTP
22.2. Instalar el servidor NNTP
22.3. Restringir el acceso con NNTP
22.4. Autorización NNTP
22.5. Interacción de nntpd con C News

El Protocolo para la Transferencia de Noticias en Red (NNTP) ofrece un acercamiento al intercambio de noticias muy diferente al de C News y al de otros nuevos servidores sin soporte nativo para NNTP. Antes que confiar en una tecnología por lotes como UUCP para transferir los artículos entre máquinas, permite intercambiar los artículos mediante una conexión de red interactiva. NNTP no es un paquete de software en particular, sino un estándar de Internet descrito en el RFC-977. Está basado en conexiones continuas, normalmente sobre TCP, entre un cliente en cualquier parte de una red y un servidor en una máquina que almacena las noticias en disco. Una conexión de este tipo permite que cliente y servidor negocien de manera interactiva la transferencia de artículos sin apenas retrasos manteniendo al mismo tiempo el número de artículos duplicados muy bajo. Junto con las altas tasas de transferencia de Internet, esto conforma una nueva manera de transportar noticias que supera con creces a las redes UUCP originales. Mientras hace algunos años no era extraño que un artículo tardase dos semanas o más en llegar al último rincón de Usenet; ahora lo hace a menudo en menos de dos días. En cuanto a Internet en sí, eso implica un plazo de apenas unos minutos.

Varias órdenes permiten a los clientes descargar, enviar y publicar artículos. La diferencia entre enviar y publicar es que lo último puede afectar a artículos con información incompleta en las cabeceras; esto significa generalmente que el usuario acaba de escribir el artículo. [1] La descarga de artículos pueden llevarla a cabo tanto los clientes de transferencia de noticias como los lectores de noticias. Esto hace de NNTP una excelente herramienta para dotar de acceso a las noticias a muchos clientes de una red local sin tener que pasar por las complicaciones de usar NFS.

NNTP también proporciona un método activo y otro pasivo de transferir noticias, conocidos coloquialmente como “empujar”(pushing) y “tirar”(pulling). Pushing es básicamente lo mismo que el protocolo ihave/sendme que usa C News (descrito en Capítulo 21). El cliente ofrece un artículo al servidor mediante la orden IHAVE msgid, y el servidor devuelve un código de respuesta que indica si quiere el artículo o si ya lo tiene. Si el servidor quiere el artículo, el cliente se lo envía haciéndolo acabar con un punto en una línea aparte.

Empujar noticias tiene la única desventaja que supone una gran carga para el sistema servidor, al tener éste que buscar en la base de datos de su historial cada artículo de manera individual.

La técnica opuesta es seleccionar noticias, en la que el cliente solicita una lista con todos los artículos (disponibles) de un grupo que hayan llegado tras una fecha especificada. Esta petición la realiza la orden NEWNEWS. De los IDs de los mensajes de la lista devuelta, el cliente elige aquellos artículos que aún no tenga usando la orden ARTICLE para cada uno de ellos.

Seleccionar noticias necesita de un estricto control por parte del servidor en lo que se refiere a qué grupos y distribuciones se permite solicitar a un cliente. Por ejemplo, tiene que asegurarse de no enviar material confidencial de un grupo de noticias local a clientes no autorizados.

Hay algunas órdenes convenientes para los lectores de noticias que les permiten descargar las cabeceras y los cuerpos de los artículos de manera separada, o incluso líneas sueltas de las cabeceras de un determinado rango de artículos. Esto le permite mantener todas las noticias en una máquina central, con todos los usuarios de la red (presumiblemente local) usando clientes basados en NNTP para leer y publicar. Esto es una alternativa a exportar los directorios de noticias mediante NFS, tal y como se describe en Capítulo 21.

Un problema global de NNTP es que permite a una persona conocida insertar artículos en el flujo de noticias con las especificaciones del remitente falseadas. A esto se lo conoce como falsear noticias o spoofing.[2] Una extensión de NNTP le permite requerir una autentificación al usuario para ciertas órdenes, ofreciendo algunas medidas de protección contra la gente que pueda abusar de esta manera de su servidor de noticias.

Existen diferentes paquetes NNTP. Uno de los más conocidos es el demonio NNTP, también conocido como la implementación de referencia. Lo escribieron originalmente Stan Barber y Phil Lapsley para ilustrar los detalles del RFC-977. Como la mayoría del software de calidad disponible hoy en día, puede encontrarlo empaquetado para su distribución de Linux, o puede obtener las fuentes para compilarlo usted mismo. Si elige compilarlo usted mismo, necesitará estar familiarizado con su distribución para poder asegurarse de que configura todas las rutas de ficheros de manera correcta.

El paquete nntpd tiene un servidor, dos clientes para empujar y seleccionar noticias, y un sustituto de inews. Habitan un entorno B News, pero con unos pocos retoques también se contentarán con C News. De todos modos, si piensa usar NNTP para algo más que ofrecer acceso de los clientes de noticias al servidor, la implementación de referencia realmente no es una opción. Sólo discutiremos aquí el demonio NNTP que contiene el paquete nntpd prescindiendo de los clientes.

Si piensa poner en marcha un sitio de noticias de gran tamaño, debería echar un vistazo al paquete InterNet News o INN, que escribió Rich Salz. Proporciona transporte de noticias basado tanto en NNTP como en UUCP. El transporte de noticias es definitivamente mejor que nntpd. Discutiremos INN en detalle en Capítulo 23.

Notas

[1]

Cuando se publica un artículo por NNTP, el servidor siempre añade al menos un campo a la cabecera, NNTP-Posting-Host:. El campo contiene el nombre de la máquina del cliente.

[2]

Existe el mismo problema con el Protocolo para la Transferencia Sencilla de Correo (SMTP), aunque muchos agentes transportadores de correo ya ofrecen mecanismos para prevenir el "spoofing".