C�mo Intentar configurar un servidor de news con INN+SUCK
 Autor: Pedro P. F�brega Mart�nez, [email protected]
 Versi�n 1.1 Fecha 8-98

 Este documento explica como configurar un servidor de news en su
 m�quina Linux. Est� enfocado para las personas que usan Linux en casa
 y les gustar�a tener un peque�o servidor local. Tambi�n para quien
 quiera dar servicio de noticias a una red local con direcciones pri�
 vadas. Este documento no va dirigido a quienes quieren ejecutar un
 servidor de news en una gran red, aunque la mayor�a de las cosas las
 podr�a aplicar tambi�n. Por �ltimo, se supone que quien pretende
 instalar inn+suck tiene ya ciertos conocimientos no elementales.
 ______________________________________________________________________

 �ndice General:

 1.      Descargo

 2.      Introducci�n

 2.1.    Descripci�n

 2.1.1.  inn

 2.1.2.  suck

 2.2.    �D�nde puedo conseguirlos ?

 3.      M�todo

 3.1.    configuraci�n de INN

 3.1.1.  inn.conf

 3.1.2.  newsfeeds

 3.1.3.  nnrp.access

 3.1.4.  hosts.nntp

 3.1.5.  active

 3.2.    Verificaciones

 3.3.    Estaciones cliente

 3.4.    Instalar suck

 3.4.1.  get.news.innxmit

 3.4.2.  Ejecutar suck

 4.      Comentarios

 4.1.    sucknewsrc

 4.2.    Caducidad de los mensajes:

 4.3.    Espacio en disco

 4.4.    Otras cosas

 4.5.    Autor

 4.6.    Derechos de Autor

 5.      Anexo: El INSFLUG
 ______________________________________________________________________

 1.  Descargo

 Antes de comenzar, indicar que esto me funciona, con RedHat 5.0, puede
 que las configuraciones sean mejorables, pero estas satisfacen mis
 necesidades actuales, de dar servicio de news a una red local de
 varios equipos con unos 10 grupos de news de internet y algunos
 locales.

 Adem�s no se asume ning�n tipo de responsabilidad de ning�n da�o
 ocasionado por estas instrucciones.

 Por ejemplo, si te cabreas porque no sale, pegas un pu�etazo, este
 hace saltar por la ventana un bol�grafo, que al darle al operario de
 tel�fonos se le cae la escalera, esta golpea unos cables de alta
 tensi�n, se produce un sobrecarga de la l�nea, la sobrecarga calienta
 el sistema de refrigeraci�n de la central nuclear y se produce una
 explosi�n termonuclear, yo, no quiero saber nada, que quede claro.

 2.  Introducci�n

 2.1.  Descripci�n

 Para instalar un servidor de news en su equipo Linux, usando este
 m�todo, va a necesitar dos paquetes, INN y suck.

 2.1.1.  inn

 INN (InterNetNews) es un systema completo de Usenet para las Noticias
 de InterNet. Dispone de un demonio innd que gestiona entradas y
 salidas y otro demonio nnrpd que gestiona las lecturas. Dispone
 tambi�n de una serie de utilidades, a alguna de las cuales haremos
 referencia en este documento. Adem�s, mantiene por separado los hosts
 que leen noticias de aquellos que nos las proporcionan, un detalle a
 tener en cuenta a la hora de la configuraci�n.

 2.1.2.  suck

 Para realizar la comunicaci�n de nuestro servidor local y el servidor
 remoto utilizaremos otro programa llamado suck, en particular yo lo he
 hecho con el suck-3.9.2. En el momento de confeccioonar este documetno
 era la �ltima versi�n y no hab�a intenciones de sacar ninguna nueva.

 Este paquete dispone de todo lo que es necesario para obtener news de
 un servidor NNTP remoto, y enviar art�culos de tu servidor al servidor
 remoto.

 El principal uso de suck es dar noticias a un servidor local INN o
 CNEWS, sin necesidad de que el servidor remoto NNTP te tenga
 configurado como "feed". NO est� dise�ado para alimentarse de 10,000
 grupos y 3GB de art�culos al d�a.

 2.2.  �D�nde puedo conseguirlos ?

 INN forma parte de pr�cticamente todas las distribuciones de Linux.
 S�lo tiene que seleccionarlo como uno m�s de los componentes de la
 instalaci�n o instalarlo con la utilidad de paquetes que tenga su
 distribuci�n si no lo hizo en su mom ento.

 Si de todas formas le interesan las fuentes de INN, para actualizarse
 o cualquier otra cosa, las puede encontrar en

   ftp://ftp.vix.com/pub/inn

 o en r�plicas que puede encontrar en http://www.isc.org/inn.html. Por
 ejemplo :

 ftp://ftp.xlink.net/pub/mirror.inn/

 La versi�n INN1.5.1 tiene algunos problemas de seguridad. Hay un
 parche para solucionar esto en http://miquels.www.cistron.nl/inn/

 Si quiere obtener utilidades adicionales para INN puede mirar en
 tp://ftp.isc.org/isc/inn/unoff-contrib

 Suck se puede encontrar en:

 ftp://tsx-11.mit.edu/pub/linux/sources/sbin/suck-3.9.2.tar.gz

 ftp://sunsite.unc.edu/pub/Linux/system/news/transport o en cualquier
 r�plica de Sunsite.

 3.  M�todo

 3.1.  configuraci�n de INN

 Una vez que INN est� instalado necesitamos los ficheros de
 configuraci�n de INN. Estos ficheros de configuraci�n est�n
 normalmente en /usr/lib/news, pero esto puede depender de la
 distribuci�n. En mi caso

 # ls -la /usr/lib/news

 drwxrwxr-x   3 news     news         1024 May 19 21:38 .
 drwxr-xr-x  63 root     root         8192 Jun 17 15:39 ..
 drwxrwxr-x   5 news     news         1024 May 19 21:38 bin
 -r--r-----   1 news     news         5206 Oct 20  1997 innshellvars
 -r--r-----   1 news     news         6816 Oct 20  1997 innshellvars.csh
 -r--r-----   1 news     news         6452 Oct 20  1997 innshellvars.pl
 -r--r-----   1 news     news         7098 Oct 20  1997 innshellvars.tcl
 -r-xr-x---   1 news     news         4728 Oct 20  1997 parsecontrol
 -rwxr-xr-x   1 news     news        18040 Oct 20  1997 rnews

 # ls -la /etc/news

 drwxrwxr-x   2 news     news         1024 Jun 15 01:53 .
 drwxr-xr-x  28 root     root         4096 Jul 26 12:21 ..
 -r--r-----   1 news     news          265 Oct 20  1997 actsync.cfg
 -r--r-----   1 news     news          371 Oct 20  1997 actsync.ign
 -r--r-----   1 news     news        26879 Oct 20  1997 control.ctl
 -r--r--r--   1 news     news          491 Oct 20  1997 distrib.pats
 -r--r-----   1 news     news         1537 Oct 20  1997 expire.ctl
 -r--r-----   1 news     news          260 May 22 18:22 hosts.nntp
 -r--r-----   1 news     news          161 Oct 20  1997 hosts.nntp.nolimit
 -r--r--r--   1 news     news          831 May 24 22:05 inn.conf
 -r--r-----   1 news     news         2978 Oct 20  1997 innwatch.ctl
 -r--r--r--   1 news     news          633 Oct 20  1997 moderators
 -r--r--r--   1 news     news         3843 Jun 15 01:53 newsfeeds
 -r--r-----   1 news     news          114 May 20 15:37 nnrp.access
 -r--r-----   1 news     news          583 Oct 20  1997 nntpsend.ctl
 -r--r--r--   1 news     news          388 Oct 20  1997 overview.fmt
 -r--r-----   1 news     news          596 Oct 20  1997 passwd.nntp

 Observe que los ficheros son propiedad de news. Compru�belo en su
 caso, y tambi�n que existan el usuario news y el grupo news.

 A continuaci�n vemos los ficheros que necesitan alguna modificaci�n:

 3.1.1.  inn.conf

 Voy a poner un listado de mi inn.conf, que adem�s resulta
 autoexplicativo.

 $ cat /etc/news/inn.conf

 ##  $Revision: 1.6 $
 ##  inn.conf -- inn configuration data
 ##  Formato:
 ##      <parametro>:<espacio><valor>
 ##  Usados por varios programas y libinn. Se definen los siguientes
 ##                                                       parametros:
 ##      domain          Dominio local, sin punto inicial.
 ##      fromhost        Que poner en la linea From ; por defecto es FQDN
 ##                      del host local.
 ##      moderatormailer Donde enviar los post moderados, si no lo encuentra
 ##                      en el fichero de moderadores; vea moderators(5).
 ##      pathhost        Que poner en las cabeceras Path y Xref headers; por
 ##                      defecto es el FQDN del host local.
 ##      organization    Si $ORGANIZATION no existe. Lo que pone en
 ##                      la cabecera Organization si esta en blanco.
 ##      server          Si $NNTPSERVER no existe. Host servidor NNTP local
 ##                      al que conectarse.

 organization:   Servidor en mired.es

 server:         localhost

 domain: mired.es

 ## tengo un alias del localhost CNAME news.mired.es

 pathhost: news.mired.es

 3.1.2.  newsfeeds

 ##  $Revision: 1.17 $

 ##  newsfeeds - determine where Usenet articles get sent
 ##  Formato:
 ##      site[/excluido,excluido...]\
 ##              :modelo,modelo...[/distrib,distrib...]\
 ##              :flag,flag...\
 ##              :param
 ## Lista de flags:
 ##      <size           El articulo debe ser menor de size bytes.
 ##      Aitems          Comprobacion de articulo -- d (necesita la
 ##                      cabecera Distribution)
 ##                      p (no verifica los sitios de la cabecera Path).
 ##      Bhigh/low       Tamanio interno del bufferr antes de escribir a la
 ##                      salida.
 ##      H[count]        El articulo debe tener menos de count saltos; 1 por
 ##                      defecto.
 ##      Isize           Tamanio interno del buffer (si nos suministra un
 ##                      fichero)
 ##      Nm              Solo grupos moderados que verifican el modelo
 ##      Nu              Solo grupos no moderados que verifican el modelo
 ##      Ssize           Inicia spooling si la cola tiene mas de size bytes.
 ##      Ttype           Tipo de suministro -- f (fichero) m (embudo; los
 ##                      nombres de parametro indican la entrada real )
 ##                      p (pipe a programa) c (envio a stdin
 ##                      de los sub-prcesos del parametro); x (como c, pero
 ##                      maneja comandos en stdin).
 ##      Witems          Que escribir -- b (tamanio en bytes del articulo)
 ##                      f (rutas completas )
 ##                      g (primer newsgroup) m (Message-ID) n (path relativo)
 ##                      s (sitio que suministra el articulo) t (hora recibida)
 ##                      * (nombres de embudos o sitios que obtienen el articulo
 ##                      N (Cabecera Newsgroups ) D (Cabecera Distribution
 ##                      H (todas las cabeceras) O (overview data)
 ##                      R (replicado de datos).

 ## Los campos de parametro dependen del flag T. Para Tf, las rutas
 ## relativas son del directorio .Para Tp y Tc, es ejecutar un comando de
 ## shell.

 ## Si un Tm se refiere a esta entrada (que tendra su propio parametro T )
 ## entonces "*" se expande a todos los sitios embudo lanzados por este.

 ## Este fichero es complicado -- vea newsfeeds.5!

 ##  Este es el sitio local.
 ##  El campo modelo da la lista de suscripcion para todos los otros
 ##  sitios.
 ##  Le puede interesar poner !control,!junk,!<local>.* alli. El subcampo
 ##  distrib limita los articulos entrantes.
 ##
 ##  Puede tener tambien ME/mal.site: para rehusar articulos de un sitio
 ##  particular (que verifique la entrada Path: ). Se pueden poner aqui
 ##  pseudo-sitios para REHUSAR ciertos tipos de mensajes cancelados.
 ##  (Vea la "Cancel FAQ" news.admin.net-abuse.misc):

 ##      cyberspam       Cancela Spam, post binarios
 ##      spewcancel      just munged articles from runaway gateways
 ##      bincancel       Cancela post binarios a grupos no binarios
 ##

 ##  Observe que rehusar articulos significa que no los ofrece a los sitios
 ##  a los que el servidor les suministra

 ## Por defecto todo a todos salvo para junk, control, cualquiera con "local"
 ## como el prefijo de grupo de noticias (i.e. verifica "localhost.loquesea") o
 ## grupos bajo foo. Los articulos posteados a cualquier grupo bajo
 ## alt.binaries.warez no se propagaran, incluso si son cross posted.

 ME\

         :*,@alt.binaries.warez.*,!junk,!control*,!local*,!foo.*\
                 /world,usa,na,gnu,bionet,pubnet,u3b,eunet,vmsnet,inet,ddn,k12\
 ::

 ## Crea los enlaces para los artss posted
 crosspost:*:Tc,Ap,WR:/usr/lib/news/bin/crosspost -s -

 ##  News overview
 overview!:*:Tc,WO:/usr/lib/news/bin/overchan

 # Suministra todos los post origen moderados a un archivo.
 #source-archive!:!*,*sources*,!*wanted*,!*.d\

 #       :Tc,Wn:/usr/news/bin/archive -f -i /usr/spool/news.archive/INDEX

 # Suministra todos los post no internos a nearnet; los envia off-line via
 # nntpsend o send-nntp.
 #nic.near.net\
 #       :!junk/!foo\
 #       :Tf,Wnm:nic.near.net

 # Un enlace que suministra en tiempo real
 #uunet\
 #       :/!foo\
 #       :Tc,Wnm:/usr/news/bin/nntplink -i stdin news.uu.net

 # Capture all Foo, Incorporated, postings
 #capture\
 #       :*/foo\
 #       :Tp,H2:/usr/news/local/capture %s

 news.servidor-isp.es\
 :!junk,!control:Tf,Wnm:news.servidor-isp.es

 #foros.euskaltel.es/news.euskaltel.es\
 #:*,!control,!junk,!fido.*,!subnet.*/!local\
 #:Tf,Wnm:foros.euskaltel.es

 Vamos a ver si aclaramos algo esto. Por ejemplo la siguiente entrada:

      noticias.servidor-isp.es/news.servidor-isp.es\
      :*,!mios.*/!mios\
      :Tf,Wnm:

 Para ser sincero parece complejo, pero vamos a aclararlo:

 noticias.servidor-isp.es es el nombre del equipo suministrador.
 /news.servidor-isp.es es un alias del anterior.

 Esto es importante ya que INN usa la cabecera "Path" para asegurarse
 de que los art�culos no se env�an m�s de una vez al mismo sitio. De
 esta forma cualquier art�culo que tenga noticias.servidor-isp.es o
 news.servidor-isp.es no se enviar�n. Como son dominios registrados,
 estamos seguros de que ning�n otro sitio inserta estas cabeceras.

 La segunda l�nea indica qu� art�culos se enviar�n a este sitio
 *,!mios.* quiere decir que se enviar�n a news.servidor-isp.es todos
 los salvo los de aquellos grupos que empiezan por mios.. El segundo
 /!mios significa que los art�culos con una cabecera Distribution de
 ``mios'' tampoco se enviar�n a nes.servidor-isp.es.

 El �ltimo campo especifica exactamente el tipo de suministro.  Tf
 quiere decir que es un fichero. Salvo casos muy especiales, que uno ya
 debe saber lo que hace, siempre pondremos esto. Wnm significa que el
 path relativo y el Message-ID del art�culo se escribir�n en este
 fichero. La n significa nombre de path relativo, la m es el Message-ID
 del art�culo.

 Ahora en nuestro servidor, cada art�culo destinado a news.servidor-
 isp.es tendr� su nombre de fichero y su Message-ID en el fichero
 /var/spool/news/out.going/noticias.servidor-isp.es..

 3.1.3.  nnrp.access

 En este fichero necesita especificar a qu� equipos se les permite
 enviar y recibir noticias desde su equipo. Para que el sistema
 funcione puede poner permisos globales de lectura y env�o a los
 distintos hosts a�adiendo unas simples l�neas como las siguientes (ojo
 esto no son los permisos de fichero, lea m�s abajo).

 ## hosts:permiso:username:password:modelos

 ## hosts: Direccion de red o nombre de hosts

 ## permiso:
 ##              R    El cliente puede leer articulos
 ##              P    El cliente puede enviar articulos

 ## username:clave este campo especifica que clave tiene que utilizar el usuario
 ## para enviar articulos.

 ## modelos: este campo indica a que grupos puede acceder el usuario
 ##

 ## Por defecto no permitiriamos el acceso a nadie.
 ## Puede depender de la instalacion

 ## *:: -no- : -no- :!*

 ##  host:perm:user:pass:groups

 ##  los hosts mired no tiene password, cualquiera puede leer.
 ## *.mired.es:Read Post:::*

 ##  Una determinada estacion no puede accedor a los grupos es.alt.
 ## pardillo.mired.es:RP:usuario:hdys:*,!es.alt.*

 # Permitir el acceso a localhost
 localhost:Read Post:::*

 # Permitimos el acceso a todo el mundo
 *:Read Post:::*

 Para las pretensiones de este documento no necesitamos m�s, en
 consecuencia ponemos un comentario al resto de las l�neas (usando un #
 al principio de l�nea).

 Otro detalle. Si el fichero contiene claves no deber�a tener permiso
 de lectura a otros.

 3.1.4.  hosts.nntp

 En este fichero especificamos los lugares que nos suministran
 noticias, matizando, los sitios que suministran noticias a INN.

 El proceso que seguiremos ser� usar suck para transferir los art�culos
 de los grupos selecconados hacia nuestro host. Una vez en nuestro host
 estos art�culos se le env�an a INN.

 Como somos nosotros mismos los que proporcionamos las noticias,
 tenemos que especificar nuestro propio host como el sitio que nos
 suministra las noticias. Por ejemplo, si su host se llama
 news.mired.es, tendr�a que poner:

 ##  $Revision: 1.7 $

 ##  hosts.nntp - nombres y direcciones que nos suministran noticias

 ##  Formato
 ##      <host>:
 ##      <host>:<password>

 ##  <host> puede ser una IP o nombre.; no admite plantilla.
 ##  Cualquier host no incluido aqui no es gestionado por nnrpd.

 news.mired.es:

 localhost:

 3.1.5.  active

 Este archivo contiene informaci�n sobre los grupos de noticias que
 gestiona este host. Por defecto viene con una lista de miles de
 posibles grupos de noticias. Suele estar ubicado en /var/lib/news.

 Se organiza en l�neas de cuatro campos.

 �  El primer campo es el nombre del grupo de noticias. Los grupos que
    comienzan por "to." (vea innd(8)).

 �  El segundo campo es el n�mero de art�culo m�s alto que se ha usado
    en el grupo.

 �  El tercero es el n�mero de art�culo bajo del grupo.

 �  El cuarto campo puede ser uno de los siguientes indicadores

       y        Se permiten los post locales
       n        Solo se permiten post remotos, no locales
       m        El grupo es moderado
       j        Los art se mantienen. se pasan.
       x        No se pueden postear articulos a este grupo
      =fict.bar Los articulos van localmente al grupo ``fict.bar''

 Notas: si el n�mero de art�culo m�s bajo es mayor que el m�s alto,
 entonces no hay art�culos en el grupo. Para facilitar el trabajo, los
 campos num�ricos tienen una longitud fija, a�adi�ndosele ceros. Este
 fichero, aunque se puede editar, es mejor gestionarlo con ctlinnd.

 Cuando instalamos el servidor necesitamos estas cuatro l�neas. M�s
 tarde veremos como a�adir m�s grupos.

          general 0000000000 0000000001 y
          control 0000000001 0000000001 y
          junk 0000000000 0000000001 y
          to 0000000000 0000000001 y

 Disponemos de un programa llamado makeactive que nos puede ser �til
 (man makeactive).

 3.2.  Verificaciones

 Ahora debemos ejecutar un programa llamado inncheck que comprobar� si
 la configuraci�n es correcta.

 Como puede que las distintas distribuciones usen cada una de ellas su
 propia ubicaci�n, podemos poner

      type inncheck

 o

      find /usr -name inncheck

 Cuando haya hecho todo esto, puede iniciar su servidor INN (si no lo
 est� ya) ejecutando el programa

 que puede encontrar en /usr/lib/news/etc o en /usr/libexec/inn (o bien
 /etc/rc.d/news start, o bien /etc/rc.d/innit.d/inn start, o bien ...)

 En mi caso

      $ ls /usr/lib/news/bin/

      actmerge        ctlinnd         inncheck        newsrequeue     sendxbatches
      actsync         ctlrun          innconfval      nntpget         shlock
      actsyncd        cvtbatch        innstat         nntpsend        shrinkfile
      archive         expire          innwatch        overchan        tally.control
      auth.dir        expireover      innxbatch       pgpverify       tally.unwanted
      batcher         expirerm        innxmit         prunehistory    writelog
      buffchan        fastrm          makeactive      rnews
      control         filechan        makegroup       scanlogs
      convdate        getlist         makehistory     scanspool
      crosspost       grephistory     news.daily      sendbatch

 Si todo va bien, inn esta en ejecuci�n. Ahora tiene que a�adir grupos
 de noticias. Los grupos de noticias se a�aden con ctlinnd, que a�adir�
 una entrada al fichero active. No intente a�adir grupos manualmente.

 Para un s�lo grupo podemos hacer:

      ctlinnd newgroup es.comp.os.linux

 y para crear grupos exclusivos de nuestra red local podemos hacer

      ctlinnd newgroup local.primero.linux

 Tenga en cuenta que nuestro ISP no conoce el grupo
 local.primero.linux, por lo que no debiera de llegarle. Esto ya lo
 hicimos en /etc/news/newsfeeds con

      ME\
              :*,@alt.binaries.warez.*,!junk,!control*,!local*,!foo.*\
                      /world,usa,na,gnu,bionet,pubnet,u3b,eunet,vmsnet,inet,ddn,k12\
      ::

 Si vamos a dar de alta muchos grupos en un sistema en funcionamiento
 conviene detener el servidor ctlinnd pause. Vea man ctlinnd, es de
 suma importancia.

 Tambi�n podemos eliminar grupos de nuestro servidor:

      ctlinnd rmgroup es.comp.os.mswindows

 3.3.  Estaciones cliente

 Ahora ya est� disponible inn como servidor de news. En el equipo
 servidor podemos acceder a �l como localhost. En equipos clientes se
 pone nuestro equipo servidor como su servidor de noticias. Si no
 tenemos un servidor DNS ni archivos hosts adecuados en los clientes
 tendremos que poner directamente la direcci�n del equipo servidor como
 servidor de noticias en cada equipo cliente.

 3.4.  Instalar suck

 Una vez descomprimidas las fuentes tenemos el directorio suck-3.9.2/ y
 nos vamos a �l.
 C�mo instalarlo

 1. Ejecutamos el script ./configure

 2. Modifique suck_config.h - hay un mont�n de cosas configurables

 3. Comp�lelo:  (make , make install)

 4. Defina un sucknewsrc con los grupos que quiera cargar del servidor
    (Si ya est� INN en funcionamiento use la opci�n -A -hl localhost y
    se generar� el sucknewsrc). En comentarios se especifica algo m�s.

 5. Edite el fichero sample/get.news.innxmit, ponga su servidor de
    noticias y aseg�rese de que los path son correctos. La ejecuci�n de
    suck para bajar art�culos del servidor y el env�o de los art�culos
    locales se hacen mediante este script. C�pielo en en el path de
    ejecuci�n para mayor comodidad y haga

         chown news.news get.news.innxmit
         chmod o-x get.news.innxmit
         chmod ug+x get.news.innxmit

 6. make install_sman para instalar la documentaci�n en castellano.

 3.4.1.  get.news.innxmit

 Este es el programa que va a gestionar nuestras transferencias con el
 ISP

 #!/bin/sh
 #
 #ANTES DE USAR - compruebe que todos los paths definidos son correctos

 REMOTE_HOST=news.servidor-isp.es
 LOCAL_HOST=localhost
 SPOOLDIR=/var/spool/news                # directorio base para artteados
 NEWSDIR=/usr/lib/news/                  # directorio base para binarios de news
 BASEDIR=/var/lib/news/                  # directorio base para scripts y ficheros de datos
 CTLINND=${NEWSDIR}/bin/ctlinnd          # ubicacion
 SHLOCK=${NEWSDIR}/bin/shlock            # location of binary
 TMPDIR=${BASEDIR}                       # ubicacion ficheros de suck
 MSGDIR=${BASEDIR}/Msgs                  # donde poner mensajes multifichero
 SITE=news.servidor-isp.es               # nombre del sitio que nos suministra

 OUTGOING=${SPOOLDIR}/out.going/${SITE}  # articulos para enviar
 OUTGOINGNEW=${OUTGOING}.new             # fichero de lista temporal
 OUTGOINGFAIL=${OUTGOINGNEW}.fail        # fichero con indicaciones de fallos
 SCRIPT=${BASEDIR}/put.news              # filtro para rpost
 OUTFILE=/tmp/news/tmp$$                 # usado por rpost como articulo tras el filtrado
 LOCKFILE=${BASEDIR}/getnews.lock        # fichero de bloqueo para prevenir instancias
 NEWSGROUP=news                          # que grupo posee los ficheros de
                                         # out.going
 TESTHOST=/usr/local/bin/testhost
 RPOST=/usr/local/bin/rpost
 SUCK=/usr/local/bin/suck

 # Si ya estamos en ejecucion, abortar

 trap 'rm -f ${LOCKFILE} ; echo "Abortando" ; exit 1' 1 2 3 15
 ${SHLOCK} -p $$ -f ${LOCKFILE}

 if [ $? -ne 0 ]; then
         echo "Ya estoy en ejecucion, no puedo ejecutarme mas de una vez"
         exit
 fi

 # Esta el host local funcionando para que podamos enviar los mensajes que
 # cargamos?

 ${TESTHOST} ${LOCAL_HOST} -s
 LOCAL_RESULT=$?

 # esta el host remoto listo para bajarnos mensajes?

 ${TESTHOST} ${REMOTE_HOST} -s
 REMOTE_RESULT=$?

 if [ ${REMOTE_RESULT} -eq 0 -a ${LOCAL_RESULT} -eq 0 ]; then

 # bajar mensajes

 ${SUCK} ${REMOTE_HOST} -c -A -bp -hl ${LOCAL_HOST} -dt ${TMPDIR} -dm ${MSGDIR} -dd ${BASEDIR}
         SUCK_STATUS=$?

         if [ ${SUCK_STATUS} -eq 0 ]; then
                 echo "Articulos Bajados"

        elif [ ${SUCK_STATUS} -eq 1 ]; then
                 echo "No hay articulos para bajar"

        elif [ ${SUCK_STATUS} -eq 2 ]; then
                 echo "Respuesta inesperada del servidor remoto a un comando"

        elif [ ${SUCK_STATUS} -eq 4 ]; then
                 echo "No puedo hacer una autorizacion NNTP "

        elif [ ${SUCK_STATUS} -eq -1 ]; then
                 echo "General failure"
         fi

 # Ahora nos bajamos los mensajes

         if [ -s ${OUTGOING}  -o -s ${OUTGOINGNEW} ]; then
                 ${TESTHOST} ${REMOTE_HOST} -s
                 if [ $? -ne 0 ]; then
                         echo "El host remoto no respponde al post"
                 else

 # esto es necesario por INND para que el fichero outgoing sea
 # vaciado adecuadamente y tengamos uno en blanco para seguir trabajando
 # cuando terminemos

                         if [ ! -s ${OUTGOINGNEW} ]; then
                                 mv ${OUTGOING} ${OUTGOINGNEW}
                                 ${CTLINND} flush ${SITE}
                         fi

 # mensajes de outgoing para postear

 ${RPOST} ${REMOTE_HOST} -d -b ${OUTGOINGNEW} -p ${SPOOLDIR} -f \$\$o=${OUTFILE} ${SCRIPT} \$\$i ${OUTFILE}

            ERRLEV=$?

                 if [ ${ERRLEV} -eq 0 ]; then
                      echo "Articulos posteados remotamente"
                      rm ${OUTFILE}

                 elif [ ${ERRLEV} -eq 1 ]; then
                      echo "Error posteando un mensaje"

                 elif [ ${ERRLEV} -eq 2 ]; then
                      echo "No puedo obtener autorizacion NNTP con el servidor remoto"

                 elif [ ${ERRLEV} -eq 3 ]; then
                    echo "Respuesta inesperada del servidor a un comando en la autorizacion NNTP"

                 elif [ ${ERRLEV} -eq -1 ]; then
                    echo "Error Fatal "
                         fi

             if [ -f ${OUTGOINGFAIL} ]; then
                   mv ${OUTGOINGFAIL} ${OUTGOINGNEW}       # so we can re do it
                   chown news.${NEWSGROUP} ${OUTGOINGNEW}
                   chmod 664 ${OUTGOINGNEW}
                         fi
                 fi
         fi

         echo "Ya puede colgar el modem"

 fi

 rm -f ${LOCKFILE}

 3.4.2.  Ejecutar suck

 Simplemente ejecute como root

      su -c get.news.innxmit news

 y primero bajar� los grupos de noticias indicados en sucknewsrc y
 enviar� los art�culos posteados localmente.

 4.  Comentarios

 4.1.  sucknewsrc

 Este fichero contiene informaci�n sobre qu� grupos de noticias se
 deben transferir desde el servidor remoto de noticias + el mensaje m�s
 alto que se ha bajado, v.g.

      control 236
      junk 970
      test 1
      to 116
      es.comp.os.linux 16149
      es.comp.lenguajes.c 1235
      es.comp.lenguajes.c++ 1631
      es.comp.lenguajes.java 1819
      esp.comp.so.linux 1715

 4.2.  Caducidad de los mensajes:

 Es importante estar seguro de que los art�culos caducan, que expiran.
 De esto se encarga script news.daily. El fichero expire.ctl describe
 la duraci�n de los art�culos. Veamos algunos ejemplos de este fichero:

      /remember/:20

 Esta l�nea le dice a expire que mantenga las entradas de los art�culos
 en history al menos 20 d�as.

      *:A:1:7:21

 Esta es la l�nea por defecto. Indica que por defecto, un articulo se
 tenga un m�nimo de un d�a, la expiraci�n es 7 d�as (se aplica si no
 hay cabecera Expires), y el m�ximo que es mantenido el art�culo que
 son 21 d�as.

      local.*:A:1:14:28

 Esta l�nea s�lo se aplica a los grupos local. Por defecto los
 art�culos permanecer�n 14 d�as, 28 como m�ximo.

 Tiene que tener en cuenta que las l�nea de expire.ctl deben tener las
 entradas mes primero y las m�s espec�ficas al final.

 En mi RedHat 5.0 tengo

      # ls -la /etc/cron.daily/

      total 12

      drwxr-xr-x   2 root     root         1024 Jun 12 17:41 .
      drwxr-xr-x  28 root     root         4096 Jul 26 12:21 ..
      -rwxr-xr-x   1 root     root           54 Oct 20  1997 inn-cron-expire
      -rwxr-xr--   1 root     root          732 Jun 12 17:40 internet
      -rwxr-xr-x   1 root     root           51 Oct 21  1997 logrotate

 y

      cat /etc/cron.daily/inn-cron-expire

      #!/bin/sh
      su - news -c "/usr/lib/news/bin/news.daily"

 Si por alguna circunstancia no queremos ejecutar news.daily mediante
 cron deberemos hacerlo a mano. Si no se ejecuta este programa se le
 notificar� al administrador mediante mail.

 4.3.  Espacio en disco

 Normalmente los art�culos se guardan en /var/spool/news. Debe prever
 espacio de almacenamiento. Esto habr� que estudiarlo para cada caso en
 particular. Si va a bajar s�lo unos pocos grupos entonces puede que no
 haya problemas. Si quiere dar acceso a una red local con muchos grupos
 de noticias puede que tenga que dedicar una partici�n a /var/spool

 4.4.  Otras cosas

 Todo se ejecuta como usuario news salvo lanzar y detener el servicio
 con rc.news.

 En caso de que aparezca el mensaje :

      inndstart: inndstart cant bind Address already in use

 puede que o bien innd est� ya en uso o que el puerto est� ocupado. En
 este �ltimo caso habr� que comentar la l�nea corresppondiente a nntp
 en /etc/inetd.conf y reiniciar inetd con la se�al HUP ( kill -HUP
 pid_de_inetd)

 Hay muchas cosas que quedan por configurar, pero para esto habr� que
 recurrir a

      man suck
      man innd
      man inn.conf

 etc�tera.

 4.5.  Autor

 El autor de este mini-como es Pedro Pablo F�brega Mart�nez
 ([email protected])

 Este mini-como una recopilaci�n de documentos disponibles en internet
 y de mi propia experiencia.

 Tambi�n indicar que existen unas FAQ de innd:

 ftp://ftp.blank.org/pub/innfaq/

 y en Europa:

 ftp://ftp.xlink.net/pub/news/docs/

 Se admiten comentarios para mejorar este documento.

 Los insultos y groser�as pueden redirigirse directamente a /dev/null

 4.6.  Derechos de Autor

 Este documento est� a disposici�n de cualquiera bajo los t�rminos
 indicados en la licencia p�blica GNU. En resumen, puede copiar y usar
 este documento sin restricciones siempre que no se apropie
 intelectualmente de �l o de parte e imponer restricciones adicionales
 a su distribuci�n.

 Hay partes que son de otros autores y estos son, en consecuencia,
 propietarios intelectuales de su obra. Yo me reservo la propiedad de
 mis aportaciones.

 5.  Anexo: El INSFLUG

 El INSFLUG forma parte del grupo internacional Linux Documentation
 Project, encarg�ndose de las traducciones al castellano de los Howtos
 (Comos), as� como la producci�n de documentos originales en aquellos
 casos en los que no existe an�logo en ingl�s.

 En el INSFLUG se orienta preferentemente a la traducci�n de documentos
 breves, como los COMOs y PUFs (Preguntas de Uso Frecuente, las FAQs.
 :) ), etc.

 Dir�jase a la sede del INSFLUG para m�s informaci�n al respecto.

 En la sede del INSFLUG encontrar� siempre las �ltimas versiones de las
 traducciones:  www.insflug.org. Aseg�rese de comprobar cu�l es la
 �ltima versi�n disponible en el Insflug antes de bajar un documento de
 un servidor r�plica.

 Se proporciona tambi�n una lista de los servidores r�plica (mirror)
 del Insflug m�s cercanos a Vd., e informaci�n relativa a otros
 recursos en castellano.

 Francisco Jos� Montilla, [email protected].