Next Previous Contents

10. Mail/News

10.1 �Qu� es el correo electronico?

El correo electr�nico es casi probablemente el servicio m�s �til para muchos de los usuarios de Internet, permitiendo intercambio de informaci�n casi instant�neamente. Este servicio consiste, dicho de una manera sencilla, en el env�o de un bloque de informaci�n de texto (aunque puede llevar incluida informaci�n multimedia o en general cualquier otro fichero adjunto) de un remitente a un destino, de igual modo que el correo convencional. La diferencia radica en que en lugar de necesitar lapiz y papel, nuestro correo electronico (email, de electronic mail) es generado normalmente por nuestro programa de correo como un bloque de texto a enviar con el siguiente formato:

  From:     <direccion_email_del_remitente>
  To:       <direccion_destino_del_email>
  Subject:  <tema_del_que_se_habla>
  Otros:    <otros_campos_de_informacion>
  <texto_que_deseamos_enviar.>
  .
Las direcciones de email son direcciones en servidores de correo igual que las direcciones postales lo son para la localizaci�n geogr�fica (por ejemplo, mi email es [email protected], y un mensaje a dicha direccion llegar�a a mi m�quina servidora de correo de donde yo lo recoger�a para su lectura).

Un ejemplo de email seria el siguiente:

  From: [email protected]
  Date: Wed, 12 May 1999 22:19:24 +0200
  Organization: Universidad de Sevilla
  To: [email protected]
  Subject: Una pregunta sobre configuraciones...

  Hola, te queria hacer una pregunta...
  �me puedes ayudar con fetchmail?
Este bloque de texto se envia al servidor de correo de nuestro proveedor (o al nuestro, como ahora veremos) quien se encargara de moverlo por Internet hasta llegar al destinatario de nuestro mensaje. Podemos dividirlo en 2 partes: la cabecera del mensaje (todos los campos From, To, etc.), necesaria para el correcto envio del mismo, y el cuerpo del mensaje (el texto en si) que es lo que deseamos enviar.

Obviamente no tenemos que generar nosotros todo eso en un fichero de texto y despues realizar las operaciones para su envio (o recepci�n), sino que existen programas (clientes de correo) en los cuales introducimos el mensaje y �stos generan las cabeceras necesarias para los programas, permitiendonos adem�s su envio y recepci�n. Ejemplos de clientes de correo son Pine, Netscape Communicator, MailX, Kmail, etc.

10.2 �C�mo puedo leer y contestar correo con mail/mailx?

El correo electr�nico en Linux no puede considerarse como un extra al sistema operativo, sino que forma parte del mismo pues es una caracter�stica casi inherente a todo Linux. Esto quiere decir que aunque no hayamos instalado ning�n cliente de correo como Netscape o Pine, probablemente dispondremos en el sistema de herramientas ya preparadas para ello.

Dentro de casi cualquier sistema Linux disponemos de un programa b�sico de email en consola (modo texto) llamado Mailx que nos permitir� el envio, lectura y contestaci�n de mensajes de correo electr�nico. En resumen, posibilita el env�o de texto y datos dentro de una estructura coherente llamada mensaje, con su cabecera (campos: FROM (persona que env�a el mensaje), TO (persona destinataria del mismo), SUBJECT (tema del que trata el mensaje) y CC o carbon copy (lista de personas que recibir�n una copia del mismo).) y su BODY (cuerpo del mensaje), pudiendo incluir adem�s ficheros a�adidos que vienen incluidos dentro del paquete del mensaje (attach).

Para explicar el uso de mailx se va a usar un sencillo ejemplo en un m�quina con un s�lo usuario: sromero, adem�s del obligatoriamente existente root (puede obternerse la lista de usuarios presentes en el sistema y en qu� terminal est�n trabajando simplemente ejecutando la orden who). Suponga os que somos el usuario sromero y queremos enviarle un mensaje a root para testear las capacidades de envio de email. La manera m�s sencilla de enviar un mensaje a un usuario de la red es ejecutar mail :

  [sromero@localhost info]$ mail root
  Subject: Prueba de MailX.
  Esto es el cuerpo del mensaje. Es una prueba de mailx.
  Un mensaje se acaba con un punto (.) al principio de l�nea.
  .
  Cc: (intro) 
Al ejecutar mail root se nos ha preguntado el tema (subject), el cuerpo del mensaje (acabado en punto (.)), y a qui�n se le deseaba enviar copias del mismo (Cc), cosa que hubiera sido bastante �til si nuestro mensaje fuera una invitaci�n a un grupo de amigos o una informaci�n para un grupo concreto de personas. Tras escribir esto, el mensaje escrito se graba como un fichero de texto (con el mismo nombre que el destinatario del mensaje, y al que se a�adir�n m�s mensajes conforme se le vayan enviando a dicho destinatario) en el directorio /var/spool/mail, a la espera de que el usuario destino los lea y vayan siendo eliminados del mismo.

Si root est� conectado o entra m�s tarde en cualquier terminal del sistema, recibir� un mensaje de aviso indicando que el sistema ha detectado la llegada de correo para el usuario:

  You have mail.
Para realizar la lectura del correo electr�nico, simplemente se invoca al programa mail, obteniendo una lista del correo pendiente y esperando el programa a que el usuario lo lea, responda, borre o almacene para m�s tarde:
  [root@localhost /root]# mail
  Mail version 8.1 6/6/93.  Type ? for help.
  "/var/spool/mail/root": 3 messages 3 new
  >N  1 sromero   Thu Jul 30 17:04  17/55   "Prueba de MailX."
   N  2 sromero   Thu Jul 30 17:15  17/50   "Pregunta sobre adm"
   N  3 sromero   Thu Jul 30 17:16  15/44   "Felices vacaciones!"
  & _
Como puede verse, mail nos muestra los mensajes pendientes (en este caso 3) por responder, con su usuario de origen (sromero), la fecha y el tema, con el cursor virtual (>) situado sobre el primero (es decir, indicando sobre cual actuar� una orden de lectura, respuesta o borrado), y con un promtp (el car�cter &) a la espera de recepci�n de �rdenes sobre qu� hacer con dicho correo.

Estas �rdenes son:

  'n�mero' -> Listar el mensaje .
  't' -> lista el mensaje actual (el apuntado por >)
  'n' -> Pasar al siguiente mensaje y visualizarlo.
  'd' -> Borrar mensaje.
  'e' -> Editar mensaje
  'r' -> Responder mensaje.
  'q' -> Salir de mailx.
A la mayor�a de estas opciones se les puede pasar un n� de mensaje (desde 1 hasta n) para indicar sobre qu� mensaje realizar la acci�n (ejemplo 'd 3' o 'delete 3'). Otras opciones, obtenidas mediante la ayuda de mailx, son:
  & ?
  Mail Commands
  t    listar mensaje
  n    ir al mensaje especificado y listarlo.
  e    editar mensaje
  f    ver cabeceras del mensaje
  d    borrar mensaje
  s    a�adir mensajes a un fichero
  u    recuperar mensajes borrados
  R    Responder a los remitentes del mensaje
  r    Responder al remitente y a todos los destinatarios.
  pre  hacer ir los mensajes de nuevo a /usr/spool/mail
  m    enviar mensaje a los usuarios especificados.
  q    salir grabando mensajes en mbox
  h    mostrar cabeceras activas.
  !    permite ejecutar una shell o comandos de shell
En el caso de no disponer de correo en ese momento, mail nos avisa con un:
  [root@localhost root]# mail
 No mail for root
Otro fichero asociado es el fichero .signature de nuestro directorio home, utilizado como fichero de firmas y cuyo contenido es incluido al final de los emails escritos y respondidos por nosotros, pudiendo editarse y rellenarse con cualquier editor est�ndar de Linux para incluir nuestra firma personal. Este fichero es utilizado por la mayor�a de gestores de correo de Linux como fichero de firmas por defecto, tal y como hace Mail, Pine, Netscape, Kmail, etc.

10.3 Envio de correo: Sendmail basico

Una de las necesidades b�sicas en nuestros sistemas Linux es el envio de correo electr�nico o email a direcciones fuera de nuestra red local (a Internet, por ejemplo) o, en general, de nuestra propia m�quina. Cuando escribimos un email en mailx, en Netscape, o en cualquier otro cliente de news, hace falta alguien que lleve dicho mensaje hasta el servidor de correo saliente (SMTP) de nuestro proveedor de Internet para que �ste deje cada mensaje en el buz�n destino correcto. Esta es una de las tareas que sendmail puede realizar en nuestras m�quinas.

En nuestros envios de mensajes, pues, necesitamos un agente que extraiga dicho correo de /var/spool y lo envie a nuestro Proveedor de Servicios de Internet (por ejemplo, a smtp.arrakis.es). Sendmail es un programa tan completo que su estudio dispone de libros de cientos de paginas (incluso hay alguno que llega al millar de ellas) para abordar su gesti�n completa. Ya que muchos disponemos de Linux en nuestras propias m�quinas (y somos tambi�n root de ellas), vamos a exponer el m�todo m�s sencillo de configuraci�n para uso con un s�lo Proveedor de Servicios de Internet (ISP).

Lo primero es saber si lo tenemos instalado y con el daemon funcionando. Normalmente dicho paquete estar� instalado y funcionado ya que es un daemon b�sico en todas las distribuciones Linux. Para arrancar el daemon (si no lo tenemos ya funcionando) y de paso chequear si est� instalado, basta con ir a /etc/rc.d/init.d en el caso de Redhat (en otras distribuciones puede variar el directorio) y ejecutar:

  /etc/rc.d/init.d/sendmail stop
  /etc/rc.d/init.d/sendmail start
Obtendremos lo siguiente.
  [root@compiler /root]# /etc/rc.d/init.d/sendmail stop
  Shutting down sendmail: sendmail
  [root@compiler /root]# /etc/rc.d/init.d/sendmail start
  Starting sendmail: sendmail
Tambien podemos observar simplemente si durante el arranque y lanzamiento de los daemons del sistema sendmail es iniciado con lo que no har�a falta su lanzamiento manual.

Tras asegurarnos de disponer de sendmail instalado y si somos root de nuestra m�quina procederemos a la configuraci�n m�s b�sica y sencilla del mismo (tambi�n es posible contactar con el administrador o root de la misma si no lo somos), que consiste en la edici�n del fichero de configuraci�n /etc/sendmail.cf, (por ejemplo con el editor joe, emacs, jed, etc) con el fin de modificar algunas l�neas del mismo y configurar sendmail para nuestro uso:

Con estos cambios estamos forzando a que cuando se escribe un email, la direcci�n de retorno del mismo tenga el dominio correcto, cosa que se podr�a modificar de igual manera (sin el retoque de sendmail.cf) si nuestro programa para leer/contestar el correo permite hacerlo (en PINE, por ejemplo, modificamos la cabecera FROM en las opciones, en CUSTOMIZED-HEADERS). Para un usuario medio (acceso a Internet, recogida y envio de correo en un proveedor, etc.), el m�todo comentado del sendmail.cf es m�s que suficiente. Adem�s existen otros m�todos e incluso otros MTAs (agendes de correo) como qmail o smail, que pueden realizar el mismo papel de una manera m�s sencilla.

Una vez realizada la configuraci�n, supongamos que desde un usuario cualquiera enviamos un email a [email protected], mediante el comando mail [email protected]. Dicho email se grabar� en /var/spool/mqueue a la espera de ser enviado a nuestro ISP quien a su vez lo enviar� al usuario juan. Es decir, los emails que enviemos a Internet se guardar�n en el directorio del correo hasta que se realice su envio mediante sendmail en la pr�xima conexi�n a Internet, gracias al comando "sendmail -q". Los mensajes en cola de env�o se encuentran en /var/spool/mqueue (por si queremos releerlos o borrar alguno), y podemos consultarlos mediante el comando mailq.

Sendmail es un daemon o demonio, es decir, est� ejecutandose en nuestra consola continuamente tratando de enviar el correo cada X tiempo. Para evitar esto, y obligarle a que el env�o se realice manualmente por nuestra parte, debemos modificar el arranque de sendmail en el fichero /etc/rc.d/init.d/sendmail cambi�ndolo para que arranque con las siguientes opciones:

  daemon /usr/sbin/sendmail -bd -oDeliveryMode=d
Otro problema com�n es recibir una advertencia (warning) cada vez que un mensaje lleve m�s de X hroas sin ser enviado (4 por defecto). Para evitar eso tan s�lo hay que editar /etc/sendmail.cf y comentar (colocando un s�mbolo # al principio de la l�nea, y, por tanto, deshabilit�ndola) la siguiente opci�n:
  Timeout.queuewarn=4h
Otra opci�n a comentar (a�adiendo # al principio de la l�nea correspondiente en sendmail.cf) es la siguiente:
  Timeout.queuereturn=5d
Esta opci�n especifica que si el correo no ha podido ser enviado durante 5 d�as debe ser devuelto a sendmail. Esto puede ser util si estamos enviando los emails a un proveedor y se pierden, con lo que gracias a la devoluci�n podr�an ser reenviados, pero en nuestro caso no va a ser necesario pues los mensajes residiran en nuestro disco duro hasta el momento en que los enviemos.

En resumen: sendmail es un agente de transporte de correo (MTA) que recoge nuestros emails y los deja temporalmente como simples ficheros de texto que son en /var/spool/mqueue a la espera de realizar su distribucion a los destinatarios especificados. Esta entrega se puede hacer bien mediante el comando "sendmail -q" o bien esperando a que el sistema llame a sendmail (lo llama cada X tiempo, siendo este tiempo programable) para que lo distribuya. Este tiempo, as� como los restantes par�metros de configuraci�n (como el servidor SMTP, que es el lugar a donde sendmail debe enviar los mensajes, es decir, nuestro proveedor de Internet) se pueden especificar en el fichero de configuraci�n /etc/sendmail.cf .

Gracias a sendmail podremos enviar mensajes de corre electronico estando desconectados de Internet, mensajes que ser�n enviados por �l cuando se realice la pr�xima conexi�n. Esto nos permitir� responder el correo electr�nico desde nuestro cliente de correo, con el siguiente mecanismo: una vez configurado sendmail, en nuestro cliente de correo ponemos como SMTP la direccion IP de nuestra m�quina (nuestra IP de red, nuestro nombre de m�quina o bien 127.0.0.1 o localhost) de modo que cuando escribamos un mensaje en Netscape y pulsemos en Enviar, �ste ser� enviado *a nuestra propia m�quina* de tal forma que sendmail se encargar� de enviarlo durante la pr�xima conexi�n a Internet cuando se ejecute mediante "sendmail -q" o como daemon temporal. Esto nos permite contestar el correo electronico en nuestro cliente favorito, sin gasto de tel�fono por nuestra parte, y pudiendo simplemente enviar los mensajes y dejar que sendmail los distribuya al conectar a Internet.

10.4 Recogida de correo: Fetchmail

Si con programas como sendmail es posible enviar el correo a nuestra m�quina estando desconectados de Internet para su posterior distribuci�n cuando se conecte a la Red, con Fetchmail es posible hacer el proceso inverso, es decir, recoger TODO el correo de todos los servidores POP o IMAP deseados para su posterior recogida desde nuestra m�quina y lectura en modo desconectado.

Fetchmail es el daemon encargado de la recogida de correo, para posteriormente pas�rselo a sendmail, que es quien lo distribuye. La forma m�s sencilla de configurar fetchmail es creando un fichero .fetchmailrc en el directorio personal del usuario (ya sea /home/usuario o incluso /root), de forma que sea el mismo usuario quien recoja el correo y se lo pase al usuario/usuarios que deban leerlo. Dicho fichero tiene un formato como el que sigue:

  defaults
  fetchall
  flush
  pass8bits

  poll servidor_de_correo
  proto pop3
  user usuario
  pass password
  to usuario_local
(pueden haber m�s bloques poll/proto/user/pass/to si hay mas servidores de correo de donde deseemos recoger el mismo)

Las opciones incluidas en este fichero son las siguientes:

Un ejemplo de fichero .fetchmailrc para un usuario [email protected] en /home/sromero ser�a el siguiente:

  defaults
  flush
  fetchall
  pass8bits
  poll pop.arrakis.es
  proto pop3
  user sromero@arrakis
  pass mipassword
  to sromero
Adem�s, este fichero tiene que tener unos permisos de lectura/escritura concretos, debido a que posee nuestro password de correo, cosa que se realiza con la orden chmod:
  [sromerolocalhost sromero]#   chmod 0600 .fetchmailrc
La forma de recoger el correo es, estando conectado, ejecutar la orden "fetchmail".

Por �ltimo, podemos hacer que fetchmail corra en forma de demonio (el equivalente en MSDOS ser�a como un programa residente), y que recoja el correo s�lo cada X segundos, cosa muy sencilla de realizar a�adiendo la siguiente opci�n al fichero .fetchmailrc:

  set daemon X
 
  (ejemplo: set daemon 300)
Esto haria que fetchmail buscara correo nuevo cada 300 segundos sin necesidad de ser lanzado por nuestra parte con el comando "fetchmail".

Una vez recogidos los mensajes (ya sea en forma manual o como daemon), �stos son depositados por sendmail en /var/spool/mail, de manera que puedan ser accedidos por cualquier programa de correo del sistema (mailx, pine, y, como veremos ahora, Netscape). Simplemente debemos configurar nuestro cliente de correo especificando como servidor POP nuestra propia m�quina (localhost, 127.0.0.1, etc). Tras haber recogido todos los mensajes con fetchmail y ya desconectados de la Red, en el cliente de correo (por ejemplo Netscape) le damos a GET NEW MESSAGES (Obtener nuevos mensajes) y aparecer�n ante nosotros los emails recogidos por fetchmail dispuestos para ser respondidos totalmente offline.

10.5 Sendmail y Fetchmail: Todo Offline

Con fetchmail y sendmail, trabajar con el correo electr�nico en modo desconectado (tanto leer como contestar el correo OFFLINE, con el consiguiente ahorro de dinero en tiempo de conexi�n) consiste simplemente en lo siguiente:

  [root@localhost root]# pppd
  [root@localhost root]# sendmail -q
  [root@localhost root]# fechmail
  [root@localhost root]# killall pppd
Con la primera l�nea conectamos a Internet, para posteriormente enviar el correo pendiente en la cola de mensajes (los enviados por nosotros a nuestram�quina), as� como recoger el correo entrante en nuestro ISP con fetchmail (y dejarlo en nuestra m�quina listo para recogerlo con Netscape, Pine o nuestro cliente de correo).

Gracias a esto en apenas unos minutos de conexi�n enviamos todo el correo saliente y recogemos los nuevos mensajes, dej�ndolos en nuestro sistema listos para su contestaci�n con el modem desconectado. Otra opci�n es incluir las llamadas a las funciones de env�o y recogida en el fichero /etc/ppp/ip-up, de manera que la recogida sea autom�tica al realizarse la conexi�n. Adem�s podremos utilizar procmail para distribuir el correo, de manera que todos los usuarios de una red tengan la misma direcci�n de email en Internet pero luego puedan enviarse mensajes a usuarios individuales con esa misma direcci�n, etc. Las posibilidades de actuaci�n de Linux son infinitas en este campo, pudiendo crear listas de correo, filtros anti-spam, etc.

10.6 �C�mo configuro Netscape para trabajar Offline?

Si disponemos de nuestros emails en /var/spool/mails nada nos impide utilizar Netscape para trabajar con ellos, y as� de paso trabajar en modo desconectado u offline. Para ello tan s�lo hemos de ir a las opciones del programa (edit->preferences), y modificar los datos que especifican nuestro servidor de correo entrante y saliente.

Para ello vamos a la pesta�a Mail & Groups, submen� Mail Server y como Outgoing mail (SMTP) server especificamos localhost (nuestro ordenador), de manera que al enviar emails con Netscape vayan a parar al directorio /var/spool/mail. Como Mail server type especificamos la opci�n "Movemail Application", y seleccionamos Built in, para que utilice la herramienta interna de Netscape para la recogida del correo, tal y como se puede ver en la figura adjunta.

Por �ltimo como root habremos de cambiar los permisos del directorio /var/spool/mail para que Netscape pueda escribir en ellos:

  [root@localhost root]# cd /var/spool
  [root@localhost spool]# chmod 01777 mail
(otra posibilidad es buscar la aplicacion movemail y darle permisos de root.root y atributos +s para que tome privilegios de administrador).

Una vez realizado esto, todas las recepciones y env�os se realizan sobre el directorio /var/spool/mail y /var/spool/mqueue, con lo que podremos leer y responder desde Netscape los emails recogidos con fetchmail, y cuyas respuestas ser�n enviadas por sendmail en la siguiente conexi�n a Internet. De la misma manera, podemos especificar localhost como servidor de correo entrante (pop) y saliente (smtp) en otros programas de correo para que accedan a nuestra m�quina y podamos trabajar en modo desconectado, como en el programa Kmail incluido en KDE, en Pine, etc.

10.7 �Qu� son las news o grupos de noticias?

Las news (grupos de noticias) son un interesante servicio de Internet que permite el intercambio de mensajes en un foro com�n sobre un determinado tema de inter�s para todos sus lectores. En cuanto a formato, son algo similar a los emails: simples mensajes de texto formados por la cabecera del mensaje seguida del cuerpo, y donde a su vez la cabecera se divide en diferentes campos que indican el remitente, el grupo destinatario o el tema del mensaje.

Si se busca informaci�n de un determinado tema (programaci�n, electr�nica, dise�o, im�genes, etc.), s�lo es necesario apuntar nuestro programa de news (por ejemplo, Collabra Discussion Groups, de Netscape, incluido con Communicator) hacia el grupo adecuado para disponer de la posibilidad de intercambio de informaci�n e intereses comunes entre un gran grupo de usuarios interesados en el mismo tema. Apunt�ndose, por ejemplo, al grupo es.comp.os.linux estaremos en conexi�n con un grupo tem�tico dedicado exclusivamente al habla sobre este S.O. Si enviamos un mensaje al grupo, todas las personas suscritas al mismo podr�n leerlo y contestarlo (algo as� como enviar emails pero a un lugar donde lo pueden leer todas las personas interesadas en el tema) tanto personalmente como al grupo en general, pudiendo por tanto aprender mucho sobre el tema tratado. La variedad de temas disponibles en los diferentes grupos permiten nuestra participaci�n activa, yendo desde la simple lectura (de la que se puede aprender mucho) hasta la colaboraci�n con el grupo respondiendo a preguntas que ayuden a otros lectores a desarrollarse.

10.8 �C�mo se accede a las news?

En general, basta con instalar un cliente de news e indicarle la direccion de nuestro servidor de news (el nombre o IP de la m�quina que contiene los grupos), tal como news.arrakis.es, news.ctv.es, o como quiera que se llame nuestro proveedor de servicios de Internet. Tambi�n existen diferentes servidores de news gratuitos, algunos de ellos sin limitaciones y otros que s�lo permiten postear mensajes de un determinado n� de l�neas, o donde el n� de l�neas de texto nuevo sea mayor que el texto al que se contesta, ya que al ser como un email, se puede dejar el texto anterior al contestar:

  Ejemplo:

  --------------------------------------------------
  > JuanJO pregunt�:
  > �alguien sabe como hacer esto?

   Pues tienes que ir al directorio... [etc]
  --------------------------------------------------
Sabido ya nuestro servidor de news y el puerto de acceso (general- mente el 119) la configuraci�n del acceso simplemente consiste en ir a las opciones del cliente de news que deseemos usar e indicarle como "Servidor de News" la direcci�n de nuestro server, y como puerto, el apropiado para el mismo.

Una vez realicemos la configuraci�n, el cliente de news se bajar� del servidor remoto una lista de todos los grupos tem�ticos disponibles y de las descripciones de los contenidos, para que posteriormente podamos seleccionar aquellos de nuestro inter�s. Suelen haber miles o decenas de miles de grupos diferentes, ordenados por tematicas. Los grupos de news son como una jerarqu�a donde cada grupo se divide en subgrupos hasta llegar a aquel de la tematica deseada:

  es.*                   -> todos los grupos de news en castellano
                            (hay miles de ellos)
  es.ciencia.*           -> grupos de news sobre ciencia.
                            (hay unas decenas, de electr�nica,
                             matem�ticas, biolog�a, etc)
  es.ciencia.electronica -> grupo de news sobre electronica en castellano.

  o bien:
 
  es.comp.*              -> grupos relacionados con ordenadores.
  es.comp.os.*           -> grupo de news dedicados a S. Operativos.
  es.comp.os.linux       -> grupo de news sobre el S.O. Linux.
  es.comp.os.windows     -> grupo de news sobre el "S.O." Windows
  (etc...)
Esta lista de grupos y sus descripciones se almacena en nuestro PC para que posteriormente a su download completo (suele tardar bastante al ser muy extensa) podamos suscribirnos a aquellos grupos que m�s nos interesen. En el caso del autor, y como ejemplo, uso Netscape Communicator y estoy suscrito a es.ciencia.electronica, es.comp.os.linux y rec.games.programmer, los cuales recibo en diferentes carpetas para leer mensajes de cada uno de los temas por separado (cada vez que conecto a Internet recojo los nuevos mensajes de cada grupo y envio mis respuestas).

Tanto Netscape Communicator como otros lectores/clientes de noticias (Slrn, Krn, Xrn) dan acceso a la lectura y gesti�n de art�culos de las news siempre y cuando estemos conectados a Internet (trabajando online), es decir, hay que estar conectado, recoger los nuevos mensajes, y leerlos y contestarlos estando conectados lo cual conlleva un gasto (innecesario como veremos) de tel�fono a la hora de leer, responder y descartar los mensajes que nos interesen.

Existen algunos programas que permiten hacer algo m�s ahorrativo: al entrar en el grupo de news que nos interesa, podremos leer las cabeceras de los mensajes disponibles (como por ejemplo en el programa HY-News), marcar los que nos interesen y posteriormente bajarlos para leerlos una vez desconectados de la l�nea, si bien el marcado de cabeceras requiere un tiempo de lectura y elecci�n que puede llegar a bastantes minutos si estamos suscritos a diferentes grupos, aunque siempre es mejor esto que responder todos los art�culos online.

En Linux disponemos de la posibilidad (de nuevo formando parte gratuita del Sistema Operativo y no como un extra a a�adir al mismo) de instalar clientes de news (y servidores) que nos permitir�n trabajar en modo desconectado de la misma manera que se puede hacer con el correo (en aquel caso mediante fetchmail y sendmail). Estos programas funcionan bajandose TODOS los nuevos articulos/mensajes de news (a gran velocidad al ser conexion directa al servidor) para luego en nuestro cliente de correo especificar como servidor de news nuestro propio PC (localhost) de modo que podremos leer y contestar las news totalmente offline.

En este aspecto podemos elegir principalmente entre leafnode e inn+suck. �stos 2 ultimos paquetes (inn y suck) son muy potentes y mucho m�s avanzados para nuestros prop�sitos iniciales, de modo que si nuestro uso de las news es sencillo (no queremos montar nuestro propio servidor sino simplemente obtener un medio para leer las news offline) nos quedaremos con leafnode mucho m�s sencillo de instalar y configurar.

10.9 Leafnode como servidor de NNTP

Como puede leerse en la p�gina del manual (man fetch) leafnode es un paquete de trabajo con news dise�ado para ordenadores peque�os con pocos usuarios, de manera que no ocupa mucho espacio y permite la gesti�n de muchos grupos. El dise�o de leafnode est� pensado para que sea capaz de autoreparar errores cuando ocurran, y que no necesite mantenimiento manual. Es decir: nos encontramos ante un programa que requiere poco espacio y mantenimiento, pero que en cambio nos proporciona total acceso a la gesti�n de grupos de noticias, gracias a leafnode (un servidor de NNTP), fetch, el programa que se encarga de recoger las news de Internet y dejarlas en nuestro disco duro para su posterior lectura por parte del programa que deseemos, y texpire, que se encarga de eliminar los mensajes viejos para recuperar disco duro y deshacernos de los art�culos no deseados seg�n el tiempo de expiraci�n que hayamos configurado.

Leafnode es un programa incluido en la mayor�a de las distribuciones Linux (sobre todo en las de RedHat), y si no disponemos de �l puede encontrarse en ftp.redhat.com en el directorio pub/manhattan/contrib/i386 (versi�n 1.5) o en la secci�n de viejos RPMs (la versi�n 1.4). Algunas (caso de algunas distribuciones Manhattan) versiones tienen un fallo con Netscape, pero al autor le consta que a partir de la versi�n 1.9 este fallo fue corregido completamente (NOTA: El autor usa leafnode 1.4 ya que le sigue funcionando perfectamente y no ve ninguna necesidad de actualizar a la version 1.9 :). La instalaci�n en formato rpm es mediante el comando rpm -i, y para paquetes .deb y tar.gzs tambi�n se debe seguir el m�todo habitual de instalaci�n ya conocido por los que usan distribuciones Debian o Slackware, adem�s de poder convertir el paquete de rpm a cualquier otro formato mediante el script alien, incluido en muchas distribuciones y que podemos encontrar en el home de Debian.

10.10 Configuracion de Leafnode

Una vez instalado leafnode se debe proceder a configurarlo. Como root entramos en el directorio /usr/lib/leafnode y editamos el fichero config, donde leeremos algo similar a lo siguiente (fichero de configuraci�n de la versi�n 1.4):

  # This is the NNTP server leafnode fetches its news from.
  # You need read and post access to it.
  server = news.arrakis.es

  # Unread discussion threads will be deleted after this many days if
  # you don't define special expire times. Mandatory.
  expire = 5

  # Non-standard expire times (no regex possible)
  #groupexpire comp.linux.misc = 5   # group too big to hold articles 20 day
  #groupexpire any.newsgroup = 100  # very interesting, hold articles longe

  # Never fetch more than this many articles from one group in one run.
  maxfetch = 2000

  # Specifies an upper limit on how many groups an article may be posted to. 
  maxcrosspost = 0
El significado de las diferentes opciones es muy descriptivo:

La opci�n server indica el servidor de donde leafnode ha de leer las noticias. En este caso se tiene especificado como servidor news.arrakis.es. En principio esta l�nea no contendr� ning�n valor si es la primera vez que lo configuramos, as� que ser� necesario incluir aqui el nombre de nuestro servidor de noticias habitual (news.ctv.es, news.arrakis.es, etc.).

Con expire=5 le indicamos a leafnode que si un tema (thread o hebra) de art�culos no ha sido tratado durante 5 d�as o m�s, debe borrarlo (lo haremos con texpire). Es decir, si un hipot�tico tema llamado �Pregunta simple�, y sus respuestas �Re: Pregunta simple� llevan 5 d�as sin ser tratados, todos estos mensajes son eliminados del disco duro para ahorrar espacio (debido a que es considerado como tema antiguo). El n�mero de d�as puede ser modificado a nuestro gusto mediante esta opci�n.

Las 2 opciones groupexpire comentadas permiten especificar excepciones a diferentes grupos (por ejemplo, si queremos que en un determinado grupo se guarden los art�culos m�s d�as) con respecto al tiempo considerado para eliminar art�culos. En este sentido, se utiliza para hacer una excepci�n para un grupo concreto sobre el valor de expire generalizado para todos los grupos (por ejemplo, si un grupo tiene un flujo muy grande de mensajes puede no interesarnos que caduquen a los 5 dias sino a los 3).

El par�metro maxfetch especifica el m�ximo n�mero de art�culos a recoger cada vez de cada grupo. La primera vez que recojamos los mensajes de un grupo nos recoger� este n�mero de posts, as� que es recomendable ponerlo a 500 inicialmente y despues de la primera recogida de grupos dejarlo en el valor deseado.

La opci�n maxcrosspost indica el n�mero m�ximo de grupos a los que un art�culo puede ir dirigido (para evitar el crossposting o repeticion del mismo mensaje en diferentes grupos), o cero para no indicar l�mite de grupos.

Una vez configurado el programa conectamos a Internet y ejecutamos el programa de recogida de news (fetch) mediante la orden:

  [root@localhost root]#   fetch -v
Mediante esta orden, y al ser la primera vez que llamamos al programa, fetch se dedicar� a bajarse de nuestro servidor de news todos los nombres y descripciones de los grupos de noticias existentes para que posteriormente podamos suscribirnos a cualquiera de ellos.

Si queremos seguir el proceso y saber que hace en todo momento leafnode, podemos ejecutar el siguiente comando en otra consola virtual o xterm:

  tail -f /var/log/messages
Veremos algo similar a:
  Jan 2 11:07:00 localhost fetch: Registered group arrakis.binarios
  Jan 2 11:07:00 localhost fetch: Registered group arrakis.consultas
  Jan 2 11:07:00 localhost fetch: Registered group arrakis.general
  Jan 2 11:07:00 localhost fetch: Registered group arrakis.noticias
  Jan 2 11:07:00 localhost fetch: Registered group a.bsu.programming
  Jan 2 11:07:00 localhost fetch: Registered group a.bsu.religion
  (y un largo etc).
El par�metro -v (verbose) le indica a leafnode que muestre mensajes en pantalla indicando qu� hace en cada momento. Hay diferentes niveles de explicaci�n (-v, -vv, ...-vvvvv) que nos permitir�n saber qu� hace el programa y observar la progresi�n del mismo. Tras un tiempo (dependiendo de la velocidad de nuestro modem), el programa terminar� de recoger los nombres de los newsgroups (proceso largo, debido a la gran cantidad de ellos, as� que tendremos que tener paciencia esta primera vez de ejecuci�n), y habremos de resetear el inetd para que se active nuestro servidor de news (leafnode):
  [root@localhost root]#   /etc/rc.d/init.d/inet  restart
Por �ltimo (aunque suele ser realizado autom�ticamente al instalar el paquete), debemos asegurarnos de que tenemos abierto el puerto de nntp (de nuestro servidor de noticias) en el archivo /etc/inetd.conf, simplemente comprobando si existe (y creando en caso negativo) una l�nea similar a la siguiente:
  nntp  stream  tcp  nowait  news  /usr/sbin/tcpd  /usr/sbin/leafnode
Tras esto podemos desconectar de Internet y prepararnos para elegir los grupos a los que deseamos suscribirnos, como veremos a continuaci�n.

Nota: Es posible que si instalamos leafnode desde un fichero tar.gz, el path destino de instalacion sea /usr/local/sbin/leafnode, de modo que la linea anterior debe cambiar para ajustarse al path donde leafnode este disponible.

  nntp  stream  tcp  nowait  news  /usr/sbin/tcpd  /usr/local/sbin/leafnode
Las ultimas versiones llevan un mayor n�mero de opciones las cuales podemos (y deber�amos) consultar en la p�gina man de fetch.

10.11 Suscripcion a los grupos de noticias deseados

Una vez tenemos la lista de grupos y sus descripciones (Active List) en nuestro disco duro, llega el momento de suscribirse a los grupos que deseamos recoger. Para ello nos vamos a /var/spool/news/interesting.groups y creamos all� ficheros con los nombres de los grupos a los que nos queremos suscribir. Dicho de una manera sencilla, si nos queremos suscribir a es.comp.os.linux y es.ciencia.electr�nica, por ejemplo, dentro de /var/spool/news/interesting.groups creamos dichos ficheros sin contenido alguno:

  [root@localhost root]#   touch  es.comp.os.linux
  [root@localhost root]#   touch  es.ciencia.electronica
El comando touch sirve para actualizar la fecha de un fichero, y si no existe se encarga de crearlo (vac�o, de cero bytes). El directorio interesting.groups es para leafnode una base de datos de los grupos que debe bajarse, estando especificados en forma de ficheros. Despu�s de los 2 touch, el contenido del directorio es el siguiente:
  [root@localhost interesting.groups]# ls -l
  total 0
  -rw-r--r--   1 news     news     es.ciencia.electronica
  -rw-r--r--   1 news     news     es.comp.os.linux
Mediante esto, cada vez que recojamos los art�culos llamando a fetch (como ahora veremos), leafnode se bajar� los art�culos nuevos de estos 2 grupos. Por supuesto, es posible suscribirse a tantos grupos como sea necesario, creando los ficheros con touch (o creandolos con cualquier editor de texto y grab�ndolos vac�os).

Tras esto ya estamos suscritos a diferentes grupos en el leafnode, lo cual significa que leafnode se bajar� los mensajes de dichos grupos. El siguienet paso ser�a ir al cliente de news y poner como Groups Server (servidor de news, de nntp o de grupos) el nombre o IP de nuestra propia m�quina, como 127.0.0.1 o localhost. Tras esto veremos aparecer en el cliente de news (por ejemplo en Netscape Communicator) la lista de grupos que hay en nuestro sistema (la que se baj� leafnode) y nos podremos suscribir a los grupos que deseamos leer en nuestro netscape (Join Discussion Groups).

Es decir, primero con Leafnode nos suscribimos a los grupos que deseamos recibir en el sistema, y luego cada usuario, en su cliente de news, se suscribe, de dichos grupos que se reciben, a los que desea leer en su cliente.

10.12 Recogida de news

Una vez configurado todo el sistema de leafnode, veamos el proceso que se seguir�a cada vez que se deseen recoger los art�culos de las news cada d�a (o cada vez que se use Internet). Para ello, conectamos a Internet (por ejemplo, ejecutamos pppd, enviamos nuestro correo con sendmail, recogemos los mensajes nuevos con fetchmail, etc.) y ejecutamos el siguiente comando:

  [root@localhost root]#   fetch -v
En ese momento, leafnode enviar� los art�culos que hayamos respondido (si es la primera vez, no habremos escrito nada todav�a) y despu�s comenzar� a bajarse todos los art�culos nuevos de los grupos a los que nos hayamos suscrito en /var/spool/news/interesting.groups. N�tese que leafnode la primera vez se bajar� unos 2000 mensajes de cada grupo (depende de la opci�n maxfetch especificada en el fichero de configuraci�n, por lo que recomendamos que inicialmente se deje en 500 para colocarla en 2000 tras la primera recogida), pero a partir de ese momento en la siguiente conexi�n s�lo se bajar� los art�culos nuevos.

N�tese tambi�n que leafnode se baja todo el grupo (todos los mensajes, no siendo necesario marcar cabeceras), con lo que no es necesario pasar tiempo marcando los art�culos deseados, sino que posteriormente dispondremos de todo el grupo para su lectura en offline. Adem�s leafnode es muy r�pido bajando los art�culos, pues lo hace a altas velocidades y permite tambi�n ser a�adido al script ip-up para su recogida autom�tica tras la conexi�n.

Una vez recogidos los art�culos estos son dejados en /var/spool/news (en nuestro disco duro) para que puedan ser accedidos por cualquier cliente de news, como Krn, Xrn, Netscape, etc. Por otra parte, una vez por semana leafnode realiza una actualizaci�n de la lista de grupos y descripciones (no recogida completa sino actualizaci�n) aunque esto se puede evitar si as� lo deseamos, como veremos m�s adelante.

Otra de las ventajas de que la recogida se haga por medio de un comando de consola es que podemos colocar en un script de shell (como ya dijimos, algo similar a un BATCH de MSDOS, pero mucho m�s potente), que nos haga la recogida autom�tica de correo y news para nuestro ordenador. Para ello creamos un fichero "recoge" con el siguiente contenido:

  # Script para recogida de correo
  echo Enviando correo pendiente...
  sendmail -q
  echo Recogiendo correo entrante...
  fetchmail
  echo Posteando y recogiendo news...
  fetch -v
Tras crear este fichero, le damos permisos de ejecuci�n (chmod +x recoge), y ya puede ser utilizado en alguna consola virtual o xterm para recoger el correo+news autom�ticamente (enviar y recoger correo y news), mientras navegamos o trabajamos con el resto del sistema.

10.13 Configuracion del cliente de news para trabajar con leafnode

La configuraci�n del cliente que utilicemos es muy sencilla, y consiste en cambiar el servidor de news que tuvieramos especificado en las opciones del programa (por ejemplo, news.arrakis.es) por nuestra propia m�quina (localhost), con lo que cuando sea pulsado el bot�n de "Coger nuevos mensajes", por ejemplo, se estar� accediendo a nuestra m�quina (concretamente a leafnode) para leer dichos nuevos mensajes de /var/spool/news, es decir, los art�culos recogido por fetch.

En Netscape Communicator esto se especifica en el men� Edit, opci�n Preferences, pesta�a Mail & Groups, subopci�n Groups Server, donde especificaremos 127.0.0.1 (o localhost) como Groups Server y nuestro home (/home/sromero en mi caso) en la opci�n Discussion Groups (news) directory. Tras eso nos suscribiremos a los grupos deseados (cada usuario puede elegir cualquier grupo de los especificados en interesting.groups) mediante la opci�n Join Discussion Groups del men� File. El proceso es similar para otros clientes como Krn, Slrn (con un sencillo fichero de configuraci�n) o incluso el editor de texto Emacs (que puede utilizarse tambi�n para gestionar las news).

Una vez realizado esto, al pulsar sobre "Get new messages" estaremos accediendo a nuestro disco duro para leer los ultimos art�culos recogidos por leafnode, y al enviar un mensaje en realidad estar� siendo grabado como un fichero de texto en el directorio /var/spool/news/out.going, donde se almacenan todos los mensajes enviados offline hasta que en la pr�xima conexi�n fetch los env�e a nuestro servidor de news (y por tanto, sean posteados en Internet).

10.14 Eliminacion de noticias antiguas (Texpire)

Cada cierto tiempo debemos limpiar nuestro disco duro para eliminar mensajes antiguos. Esto no significa que debamos entrar en el directorio news para comprobar qu� mensajes est�n atrasados y eliminarlos, porque como ya se ha comentado, leafnode es un programa dise�ado para automatizar todo este tipo de procesos. Para ello s�lo tendremos que ejecutar el programa texpire (incluido con leafnode), que se encarga de recorrer todos los grupos de que dispongamos en nuestro disco duro y eliminar aquellos threads que sobrepasen sin actualizar el n�mero de d�as indicado en el fichero de configuraci�n de leafnode (en nuestro ejemplo indicamos 10 d�as). Al ejecutar texpire la salida suele ser algo parecido a lo siguiente (la aparici�n de varios grupos a los que no estamos suscritos es debido a que hay mensajes con crossposting, dirigidos a varios grupos):

  [root@localhost root]# texpire
  es.ciencia.electronica: 10 articles deleted, 182 kept
  es.ciencia.misc: 21 articles deleted, 25 kept
  es.comp.hackers: 1 articles deleted, 10 kept
  es.comp.lenguajes.java: 10 articles deleted, 1 kept
  es.comp.os.linux: 100 articles deleted, 690 kept
  total: 142 articles deleted, 1012 kept
Realizando esto regularmente mantendremos nuestro disco duro s�lo con los �ltimos mensajes deseados en lugar de ir llen�ndolo con la acumulaci�n de mensajes antiguos. La cantidad de d�as a los que hayamos configurado texpire variar� el nivel de limpieza de art�culos viejos. Texpire es autom�ticamente ejecutado por "cron" (la parte de Linux que se encarga de ejecutar procesos a determinadas horas), pero para que cron tenga utilidad es necesario tener conectado el ordenador todo el dia (cron hace las cosas a unas determinadas horas), cosa que viene muy bien en las estaciones de trabajo pero que a nosotros no obliga a usar el "anacron" (no necesita tener el ordenador permanentemente conectado) o a hacerlo manualmente (la forma m�s sencilla, simplemente llamando a texpire cada 15 d�as, ejecut�ndolo en la l�nea de comandos del sistema).

Normalmente a texpire le costar� cerca de un mes de uso empezar a borrar art�culos, de modo que aunque inicialmente veamos que al llamarlo no borra los art�culos antiguos, debemos dejarlo porque eso quiere decir que ninguno de los art�culos ha expirado a�n (o que hemos puesto un tiempo de expiracion muy grande. Un tiempo razonable es 5 dias, pero eso depende fundamentalmente del tr�fico del grupo en cuesti�n). Adem�s texpire est� basado en detectar TEMAS caducados (no art�culos). Esto implica que un TEMA caduca cuando no se postee ning�n mensaje sobre �l (o respuesta) en el tiempo especificado, tras el cual ser� borrado. Estar basado en temas hace que se tarde m�s (inicialmente) en comenzar a borrar art�culos viejos, pero que a partir de la primera expiraci�n de art�culos el proceso sea cont�nuo y eficiente.

Por Internet es posible encontrar tambi�n un programa en PERL llamado texpire.pl el cual hace un borrado art�culo por art�culo (no basado en cuando un TEMA caduca sino en cuando un ARTICULO caduca) que tambi�n puede utilizarse para este fin. No obstante el uso de texpire es m�s adecuado ya que viene integrado con leafnode y su funcionamiento es excelente.

10.15 �C�mo hacer que leafnode no actualice la lista de grupos?

Por otra parte, si no queremos que leafnode trate de actualizar los grupos de news cada semana es posible modificar el c�digo fuente del programa, aunque lo m�s sencillo es actualizar la fecha del fichero de grupos para que leafnode lo trate como si se acabara de actualizar. Esto se hace mediante la siguiente orden, que podemos poner en cualquier fichero del sistema (por ejemplo en /etc/rc.d/rc.local):

  touch -m /var/spool/news/active.read
Este fichero (active.read) lo usa leafnode para saber cu�ndo fue la �ltima vez que busc� nuevos grupos de news en el servidor. Cuando pasa una semana (fetch mirar� para ello la fecha del fichero), leafnode tratar� de bajarse de nuevo la lista de grupos para ver si hay grupos nuevos (proceso que suele tardar bastante). Para evitar esto, touch actualiza la fecha del archivo y fetch nunca detecta que haya pasado una semana, no actualizando la lista de grupos y descripciones.

En las �ltimas versiones, posiblemente podamos forzar a leafnode a no leer la lista de grupos o a releerla de nuevo usando alg�n switch de l�nea de comandos (al estilo fetch -n), para lo cual siempre es aconsejable la lectura de la p�gina man correspondiente (man fetch).

10.16 Problemas de acceso con Leafnode

Si al recoger las news con Netscape o cualquier otro cliente de news obtenemos el siguiente mensaje de error:

  "An error occurred with the News server.
  If you are unable to connect again, contact the
  administrator for this server."
Lo primero que deberemos hacer ser� comprobar si leafnode est� correctamente funcionando en el puerto 119 de nuestra m�quina, haciendo un telnet localhost 119:
  [root@compiler]  telnet localhost 119
  Trying 127.0.0.1...
  Connected to localhost.
  Escape character is '^]'.
  Connection closed by foreign host.
En ese caso, debemos modificar los ficheros /etc/hosts.allow y /etc/hosts.deny para permitir a nuestros usuarios que tengan acceso a leafnode. Una manera es dejar vac�os ambos ficheros (as� es como lo tengo yo) permitiendo a cualquier el acceso a leafnode, y otra es modificar el hosts.deny (nunca he necesitado realizarlo as� pero es otra manera de solucionarlo) es dejar el siguiente contenido en el fichero /etc/hosts.deny:
  # /etc/hosts.deny
  # The PARANOID wildcard matches any host whose name does not
  # match its address.
  ALL: PARANOID
  #-- leafnode begin
  leafnode: ALL
  #-- leafnode end
Una salida de "telnet localhost 119" correcta deber�a ser:
  [root@compiler]  telnet localhost 119
  Trying 127.0.0.1...
  Connected to localhost
  Escape character is '^]'.
  200 Leafnode NNTP Daemon, version 1.4 running at localhost


Next Previous Contents
Hosted by www.Geocities.ws

1