  Cmo Intentar configurar un servidor de news con INN+SUCK
  Autor: Pedro P. Fbrega Martnez, pfabrega@arrakis.es
  Versin 1.1 Fecha 8-98

  Este documento explica como configurar un servidor de news en su
  mquina Linux. Est enfocado para las personas que usan Linux en casa
  y les gustara tener un pequeo servidor local. Tambin 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 mayora de las cosas las
  podra aplicar tambin. Por ltimo, se supone que quien pretende
  instalar inn+suck tiene ya ciertos conocimientos no elementales.
  ______________________________________________________________________

  ndice General:

  1.      Descargo

  2.      Introduccin

  2.1.    Descripcin

  2.1.1.  inn

  2.1.2.  suck

  2.2.    Dnde puedo conseguirlos ?

  3.      Mtodo

  3.1.    configuracin 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.

  Adems no se asume ningn tipo de responsabilidad de ningn dao
  ocasionado por estas instrucciones.

  Por ejemplo, si te cabreas porque no sale, pegas un puetazo, este
  hace saltar por la ventana un bolgrafo, que al darle al operario de
  telfonos se le cae la escalera, esta golpea unos cables de alta
  tensin, se produce un sobrecarga de la lnea, la sobrecarga calienta
  el sistema de refrigeracin de la central nuclear y se produce una
  explosin termonuclear, yo, no quiero saber nada, que quede claro.

  2.  Introduccin

  2.1.  Descripcin

  Para instalar un servidor de news en su equipo Linux, usando este
  mtodo, 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
  tambin de una serie de utilidades, a alguna de las cuales haremos
  referencia en este documento. Adems, 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 configuracin.

  2.1.2.  suck

  Para realizar la comunicacin 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 versin y no haba intenciones de sacar ninguna nueva.

  Este paquete dispone de todo lo que es necesario para obtener news de
  un servidor NNTP remoto, y enviar artculos 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 diseado para alimentarse de 10,000
  grupos y 3GB de artculos al da.

  2.2.  Dnde puedo conseguirlos ?

  INN forma parte de prcticamente todas las distribuciones de Linux.
  Slo tiene que seleccionarlo como uno ms de los componentes de la
  instalacin o instalarlo con la utilidad de paquetes que tenga su
  distribucin 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 rplicas que puede encontrar en http://www.isc.org/inn.html. Por
  ejemplo :

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

  La versin 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
  rplica de Sunsite.

  3.  Mtodo

  3.1.  configuracin de INN

  Una vez que INN est instalado necesitamos los ficheros de
  configuracin de INN. Estos ficheros de configuracin estn
  normalmente en /usr/lib/news, pero esto puede depender de la
  distribucin. 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. Comprubelo en su
  caso, y tambin que existan el usuario news y el grupo news.

  A continuacin vemos los ficheros que necesitan alguna modificacin:

  3.1.1.  inn.conf

  Voy a poner un listado de mi inn.conf, que adems 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 artculos no se envan ms de una vez al mismo sitio. De
  esta forma cualquier artculo que tenga noticias.servidor-isp.es o
  news.servidor-isp.es no se enviarn. Como son dominios registrados,
  estamos seguros de que ningn otro sitio inserta estas cabeceras.

  La segunda lnea indica qu artculos se enviarn a este sitio
  *,!mios.* quiere decir que se enviarn a news.servidor-isp.es todos
  los salvo los de aquellos grupos que empiezan por mios.. El segundo
  /!mios significa que los artculos con una cabecera Distribution de
  ``mios'' tampoco se enviarn 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 artculo se escribirn en este
  fichero. La n significa nombre de path relativo, la m es el Message-ID
  del artculo.

  Ahora en nuestro servidor, cada artculo 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 envo a los
  distintos hosts aadiendo unas simples lneas como las siguientes (ojo
  esto no son los permisos de fichero, lea ms 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 ms, en
  consecuencia ponemos un comentario al resto de las lneas (usando un #
  al principio de lnea).

  Otro detalle. Si el fichero contiene claves no debera 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 artculos
  de los grupos selecconados hacia nuestro host. Una vez en nuestro host
  estos artculos se le envan 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, tendra 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 informacin 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 lneas 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 nmero de artculo ms alto que se ha usado
     en el grupo.

    El tercero es el nmero de artculo 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 nmero de artculo ms bajo es mayor que el ms alto,
  entonces no hay artculos en el grupo. Para facilitar el trabajo, los
  campos numricos tienen una longitud fija, aadindosele ceros. Este
  fichero, aunque se puede editar, es mejor gestionarlo con ctlinnd.

  Cuando instalamos el servidor necesitamos estas cuatro lneas. Ms
  tarde veremos como aadir ms 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 configuracin es correcta.

  Como puede que las distintas distribuciones usen cada una de ellas su
  propia ubicacin, 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 ejecucin. Ahora tiene que aadir grupos
  de noticias. Los grupos de noticias se aaden con ctlinnd, que aadir
  una entrada al fichero active. No intente aadir grupos manualmente.

  Para un slo 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.

  Tambin 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 direccin 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.
  Cmo instalarlo

  1. Ejecutamos el script ./configure

  2. Modifique suck_config.h - hay un montn de cosas configurables

  3. Complelo:  (make , make install)

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

  5. Edite el fichero sample/get.news.innxmit, ponga su servidor de
     noticias y asegrese de que los path son correctos. La ejecucin de
     suck para bajar artculos del servidor y el envo de los artculos
     locales se hacen mediante este script. Cpielo en en el path de
     ejecucin 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 documentacin 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 artculos posteados localmente.

  4.  Comentarios

  4.1.  sucknewsrc

  Este fichero contiene informacin sobre qu grupos de noticias se
  deben transferir desde el servidor remoto de noticias + el mensaje ms
  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 artculos caducan, que expiran.
  De esto se encarga script news.daily. El fichero expire.ctl describe
  la duracin de los artculos. Veamos algunos ejemplos de este fichero:

       /remember/:20

  Esta lnea le dice a expire que mantenga las entradas de los artculos
  en history al menos 20 das.

       *:A:1:7:21

  Esta es la lnea por defecto. Indica que por defecto, un articulo se
  tenga un mnimo de un da, la expiracin es 7 das (se aplica si no
  hay cabecera Expires), y el mximo que es mantenido el artculo que
  son 21 das.

       local.*:A:1:14:28

  Esta lnea slo se aplica a los grupos local. Por defecto los
  artculos permanecern 14 das, 28 como mximo.

  Tiene que tener en cuenta que las lnea de expire.ctl deben tener las
  entradas mes primero y las ms especficas 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 artculos se guardan en /var/spool/news. Debe prever
  espacio de almacenamiento. Esto habr que estudiarlo para cada caso en
  particular. Si va a bajar slo 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 particin 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 lnea corresppondiente a nntp
  en /etc/inetd.conf y reiniciar inetd con la seal 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

  etctera.

  4.5.  Autor

  El autor de este mini-como es Pedro Pablo Fbrega Martnez
  (pfabrega@arrakis.es)

  Este mini-como una recopilacin de documentos disponibles en internet
  y de mi propia experiencia.

  Tambin 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 groseras pueden redirigirse directamente a /dev/null

  4.6.  Derechos de Autor

  Este documento est a disposicin de cualquiera bajo los trminos
  indicados en la licencia pblica 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 distribucin.

  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, encargndose de las traducciones al castellano de los Howtos
  (Comos), as como la produccin de documentos originales en aquellos
  casos en los que no existe anlogo en ingls.

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

  Dirjase a la sede del INSFLUG para ms informacin al respecto.

  En la sede del INSFLUG encontrar siempre las ltimas versiones de las
  traducciones:  www.insflug.org. Asegrese de comprobar cul es la
  ltima versin disponible en el Insflug antes de bajar un documento de
  un servidor rplica.

  Se proporciona tambin una lista de los servidores rplica (mirror)
  del Insflug ms cercanos a Vd., e informacin relativa a otros
  recursos en castellano.

  Francisco Jos Montilla, pacopepe@insflug.org.

