21.8. Mensajes de Control

El protocolo de noticias Usenet reconoce artículos de una categoría especial, los cuales provocan ciertas respuestas o acciones del sistema. Estos son los llamados mensajes de control. Se reconocen por la presencia de un campo Control: en la cabecera del artículo, el cual contiene el nombre de la operación de control a realizar. Existen varios tipos, y todas ellas son manejadas por guiones del intérprete de órdenes situados en /usr/lib/news/ctl.

La mayoría de éstos realizarán su acción automáticamente en el momento en que C-News procese el artículo, sin notificar al administrador de noticias. Por omisión, sólo los mensajes checkgroups serán entregados al administrador de noticias, pero puede cambiar esto editando los guiones.

21.8.1. El mensaje cancel

El mensaje más conocido es cancel, con el cual un usuario puede cancelar un artículo enviado por él en otro momento. Esto borra el artículo de los directorios de cola, si existe. El mensaje cancel se reenvía a todos los servidores que reciben noticias de los grupos afectados, sin reparar si el artículo ha sido visto o no. Esto es para tener en cuenta la posibilidad de que el artículo original se haya retrasado sobre el mensaje de cancelación. Algunos sistemas de noticias permiten a los usuarios cancelar los mensajes de otras personas. Por supuesto esto es algo que no se debería hacer.

21.8.2. newgroup y rmgroup

Dos mensajes que se ocupan de la creación y borrado de grupos de noticias son los mensajes newgroup y rmgroup. Los grupos de noticias bajo la las jerarquías “usuales” solo pueden ser creados después de que haya mantenido una discusión y voto entre los lectores de Usenet. Las reglas aplicadas a la jerarquía alt permiten algo similar a la anarquía. Para más información, ver los mensajes regulares publicados en news.announce.newusers y en news.announce.newgroups. Nunca envíe un mensaje newgroup o rmgroup usted mismo a menos que sepa con seguridad que tiene permiso para hacerlo.

21.8.3. El Mensaje checkgroups

Los mensajes checkgroups son enviados por los administradores de noticias para hacer que todos los servidores de una red sincronicen sus ficheros active con la realidad de Usenet. Por ejemplo, los proveedores de servicio de Internet deberían mandar tal mensaje a los servidores de sus clientes. Una vez al mes, el moderador del grupo comp.announce.newgroups envía el mensaje “oficial” checkgroups para las principales jerarquías. Sin embargo, se envía como un artículo ordinario, no como un mensaje de control. Para realizar la operación checkgroups , salve este artículo en un fichero, digamos /tmp/check, borre todo hasta el principio del mismo mensaje de control, y envíelo al guión checkgroups usando la orden siguiente:
    # su news -c "/usr/lib/news/ctl/checkgroups" < /tmp/check

Esto actualizará su fichero newsgroups, añadiendo los grupos listados en localgroups. El antiguo fichero newsgroups será movido a newsgroups.bac. Note que rara vez funciona el enviar el mensaje localmente, ya que inews, rechaza un artículo tan grande.

Si C-News encuentra desigualdades entre la lista del fichero checkgroups y el fichero active, producirá una lista de órdenes que actualizaría su servidor, y lo enviará por correo al administrado de noticias.

Típicamente la salida se parece a esto:
    From news Sun Jan 30 16:18:11 1994
    Date: Sun, 30 Jan 94 16:18 MET
    From: news (News Subsystem)
    To: usenet
    Subject: Problems with your active file
    The following newsgroups are not valid and should be removed.
            alt.ascii-art
            bionet.molbio.gene-org
            comp.windows.x.intrisics
            de.answers
    You can do this by executing the commands:
             /usr/lib/news/maint/delgroup alt.ascii-art
             /usr/lib/news/maint/delgroup bionet.molbio.gene-org
             /usr/lib/news/maint/delgroup comp.windows.x.intrisics
             /usr/lib/news/maint/delgroup de.answers
    The following newsgroups were missing.
            comp.binaries.cbm
            comp.databases.rdb
            comp.os.geos
            comp.os.qnx
            comp.unix.user-friendly
            misc.legal.moderated
            news.newsites
            soc.culture.scientists
            talk.politics.crypto
            talk.politics.tibet

Cuando reciba un mensaje como éste de su sistema de noticias, no lo crea ciegamente. Dependiendo de quién envió el mensaje checkgroups, puede que carezca de unos pocos grupos e incluso jerarquías enteras; por lo tanto, debería tener cuidado al borrar cualquier grupo. Si encuentra grupos listados como no presentes que quiera tener en su servidor, tiene que añadirlos usando el guión addgroup. Salve la lista de grupos que le faltan en un fichero y páseselo al siguiente guión:
    #!/bin/sh
    #
    WHOIAM=`whoami`
    if [ "$WHOIAM" != "news" ]
    then
    	echo "Debe ejecutar $0 como usuario 'news'" >&2
    	exit 1
    fi
    #
    cd /usr/lib/news
    while read group; do
        if grep -si "^$group[[:space:]].*moderated" newsgroup; then
            mod=m
        else
            mod=y
        fi
        /usr/lib/news/maint/addgroup $group $mod
    done

21.8.4. sendsys, version, y senduuname

Finalmente, hay tres mensajes que pueden usarse para averiguar la topología de la red. Estos son sendsys, version, y senduuname. Respectivamente, hacen que C-News devuelva al remitente el fichero sys, una cadena con la versión del software, y la salida de uuname. C-News es muy lacónica con respecto a los mensajes version; ya que devuelve una simple C, sin más adornos.

Nuevamente, nunca debería distribuir tales mensajes, a menos que esté seguro de que no pueden salir de su red (regional). Las respuestas a los mensajes sendsys pueden hacer caer rápidamente a una red UUCP. [1]

Notas

[1]

Yo tampoco intentaría esto en Internet.