<!doctype linuxdoc system>

<!-- ifmail-COMO: Como configurar ifmail, fuente SGML -->
<!-- Version Castellano (y unica por el momento) -->

<!-- Revision 1.10 -->

<article>

<title>Linux ifmail-COMO en Castellano
<author>Juan José Amor, <tt><htmlurl url="mailto:jjamor@ls.fi.upm.es"
name="jjamor@ls.fi.upm.es"></tt> (fido 2:341/12.19)
<date>v1.1, 6 de Diciembre de 1999

<abstract>

Este documento pretende ser una pequeña ayuda para los usuarios de Linux
pertenecientes a redes tipo Fidonet. No puede ser perfecta, ya que viene a ser
un resumen de mi propia experiencia, y tampoco tengo mucha ...  Seguro que
algún veterano de ifmail y compañía tiene sugerencias que hacerme. Pues venga,
las espero todas en <tt><htmlurl url="mailto:jjamor@ls.fi.upm.es"
name="jjamor@ls.fi.upm.es"></tt> o en <tt><htmlurl
url="mailto:Juan.Jose.Amor@p19.f12.n341.z2.fidonet.org" name="mi dirección de
fido, 2:341/12.19"></tt>.
</abstract>

<toc>

<sect>Introducción 
<p>

Me gusta el riesgo. Eso me animó hace tres años a hacerme punto de Fidonet por
la vía difícil (FrontDoor + FastEcho + GoldED). Luego me dio por los sistemas
operativos de <it>línea de comandos</it> (Unix sin ventanas, ya me entendéis
;-) ). Me envicié con el Linux, y claro, llegó la hora de gestionar el correo
de Fido desde Linux, y no me iba a quedar con el método fácil ...

Pero configurar el sistema de correo bajo Unix es como mil veces más difícil
que hacerlo en DOS. Uno tiene que aprender a configurar, no dos, sino hasta
cinco programas que no tienen nada que ver el uno del otro. Hay que lidiar con
la escasa documentación que cada aplicación trae, juntarlo todo armoniosamente
y finalmente lograr que funcione. Confieso que eso me hizo echarme atrás en
varias ocasiones... hasta que vino la ayuda del cielo.

Ramón Gutiérrez, antiguo moderador de la (mejor) área de Fidonet, R34.LINUX, me
pasó todos sus ficheros de su configuración, que a él le funcionaba a medias.
Con ellos me puse y aquí estamos.

Tengo que decir que este documento va dirigido a los puntos interesados en
gestionar todo el tema desde Unix. Por lo tanto, asumo que ya se es punto y se
conoce de qué va el tema de Fidonet. Hace tiempo que escribí un documento sobre
cómo hacerse punto bajo MS-DOS, que igual le interesa a alguien que aun no lo
haya hecho ... lo tenéis en <tt><htmlurl
url="http://lml.ls.fi.upm.es/&tilde;jjamor/intropnt.txt"
name="http://lml.ls.fi.upm.es/&tilde;jjamor/intropnt.txt"></tt>.

<sect>El proceso del correo de Fido en Unix 
<p>

Antes de entrar a ver qué programas hay que configurar, intentaremos deducirlo
siguiendo el camino que recorren los mensajes desde que son escritos.

Empecemos con los NETs, los mensajes privados. En Unix, los NETs se van a
convertir en <bf>correo de Internet</bf>, es decir, van a quedar almacenados en
el buzón del usuario, <tt>/var/spool/mail/usuario</tt>. Y para escribir un NET
se usan los programas de correo habituales, eligiendo una dirección de Fido en
formato Internet (por ejemplo,
<tt>Juan.Jose.Amor@p19.f12.n341.z2.fidonet.org</tt>).

Cuando escribimos un mensaje, éste es enviado al <tt>sendmail</tt>, quien debe
estar configurado para enviar a Fido solo los mensajes de Fido (es decir, los
mensajes para el dominio <tt>fidonet.org</tt>).  Los demás irán a Internet. Lo
que sendmail hace es enviar el mensaje al conversor Internet &lt;-&gt; FidoNet,
<tt/ifmail/.

Cuando recibimos un paquete con NETs, ifmail se encarga de convertirlos a
mensajes de Internet y entregárselos a sendmail.

Vamos ahora con las áreas de ECHO. En Internet, el equivalente es USENET (las
news). Por lo tanto, necesitamos un lector de News, que puede ser, el
<tt/pine/, el <tt/tin/ o incluso el Netscape. Cuando escribamos un artículo,
éste es enviado a un servidor de news que habrá que configurar (INN). Luego, a
la hora de empaquetar los mensajes, se llamará a un script que, ejecutando
<tt>ifnews</tt>, dejará los paquetes listos para su envío al nodo de Fido.

<sect1>¿Qué programas hay que configurar entonces? 
<p>

Vamos a tener que aprender a tocar la configuración de unos cuantos programas.
De la sección anterior se deducen los siguientes:

<itemize>
<item>Paquete <tt/ifmail/. Hay que configurar tanto la parte de empaquetado
(<tt/ifpack/, <tt/iftoss/), como la de traducción Internet &lt;-&gt; FidoNet,
como la del programa de llamada (<tt/ifcico/).
<item>Sendmail.
<item>Servidor de News (INN).
<item>Además, necesitaréis los correspondientes programas cliente: un lector de
correo (como el <tt>pine</tt>) y tal vez un lector de noticias (el propio
<tt>pine</tt> os vale, aunque igual os gusta más el <tt>tin</tt>). 
</itemize>

O sea, además de entender de qué va esto de hacerse punto (que no es poco)
habrá que entendérselas con el críptico <tt/sendmail.cf/ y con los ficheros de
INN.  Si además se quieren tener News de Internet, habrá que pelearse con otro
programa (¡otro!), el <tt/suck/.

Casi nada. En fin, vayamos por partes.

<sect>Correo privado (NETs) 
<p>

Ante todo, mucha calma. Mientras no consigáis enviar y recibir NETs, mejor que
no paséis la página. Bien, sigamos.

<sect1>Notación «Internet» de las direcciones de Fidonet 
<p>

Antes de entrar en los ficheros de configuración, tengo que haceros ver cómo
una dirección de Fidonet se expresa en Internet. Es importante para las
siguientes secciones, así como para saber escribir un NET.

Bien, empecemos. Como sabéis, una dirección de Fidonet contiene información de
zona, región, net, nodo y opcionalmente punto. Esto se nota así:
<tt>ZONA:REGIÓN_Y_NET/NODO</tt> o <tt>ZONA:REGIÓN_Y_NET/NODO.PUNTO</tt>.

Por ejemplo, mi dirección de punto es <tt>2:341/12.19</tt> y la del nodo de mi
BBS, <tt>2:341/12</tt> (nodo que llamamos Boss).

En Internet, una dirección de nodo se notará como:

<tscreen><verb>
fNODO.nREGION_Y_NET.zZONA.fidonet.org
</verb></tscreen>

o bien:

<tscreen><verb>
pPUNTO.fNODO.nREGION_Y_NET.zZONA.fidonet.org
</verb></tscreen>

Así, mi máquina será conocida en Fidonet como:

<tscreen><verb>
p19.f12.n341.z2.fidonet.org	
</verb></tscreen>

Y yo, como usuario de mi máquina seré conocido como:

<tscreen><verb>
Juan.Jose.Amor@p19.f12.n341.z2.fidonet.org
</verb></tscreen>

Un mensaje dirigido al usuario anterior quedará convertido en un mensaje
dirigido al usuario «Juan Jose Amor» del punto <tt>2:341/12.19</tt>

<sect1>Configuración de Sendmail 
<p>

Sobre sendmail podía tirarme varias horas escribiendo, pero para eso ya hay un
buen tocho escrito (de O'Reilly, creo). Así que creo que lo mejor es
proporcionar aquí mismo un fichero <tt/sendmail.cf/, que sirve para una
configuración típica, con conexión a Internet y Fidonet, e incluso una pequeña
Intranet local.

Supongamos que vuestra máquina se llama DRAGON, y vuestro dominio ficticio (de
Intranet) lo habéis llamado, MICASA.ES. Aquí tenéis un fichero sendmail.cf que
os servirá para mandar correo de la siguiente forma:

<itemize>
<item>	usuario@dragon.micasa.es: Entregar directamente al buzón local.
<item>	usuario@micasa.es: Entregar directamente al buzón local
(dragon es la máquina maestra del dominio micasa.es :-) ).
<item>	usuario@otramaquina.micasa.es: Entregar directamente a la
máquina remota (se supone que la otra máquina está en una Ethernet
local...).
<item>	Usuario@pX.fY.nZ.zT.fidonet.org: Entregar a Ifmail.
<item>	cualquier@otro.sitio: Encolarlo para Internet, para ser
entregado al <it>relevo</it> de la red de redes cuando estemos
conectados (el <it>relevo</it> es la máquina de nuestro proveedor de
Internet que nos ofrece servicio de correo SMTP).
</itemize>

	Algunas observaciones sobre este fichero: en principio, no
necesita que exista un servidor de nombres (DNS) disponible. No
obstante, yo tengo uno local así que igual os da algún problema...

	Por otra parte, si recibís este documento en un formato distinto
al original (SGML) puede que los caracteres de tabulación que existen
en sendmail.cf se hayan convertido en espacios. Por desgracia, así no
os funcionará el fichero, de modo que tendréis que convertir a mano,
los separadores de las reglas a tabuladores.

	En la línea referente al nodo del proveedor (donde aparece la
IP del mío, 212.106.192.135) debéis poner la IP del vuestro, claro
:-). En la línea referente a Fidonet, debéis codificar el nombre del
nodo al que llamáis. En mi caso, 2:341/12 se traduce a f12.n341.z2
(observad la línea del fichero sendmail.cf. Como véis, esto hace la
función del fichero route.fe en FastEcho u otro procesador de correo
de Fido bajo DOS: esta línea determina entregar todos los NETs vía el
nodo elegido). Además, si no tenéis Internet o red local propia,
podéis comentar las líneas correspondientes de la regla 0. 

    Además, debéis modificar la línea "Punto local" con los datos de
vuestro punto. Así, sendmail entregará localmente cualquier mensaje
dirigido a vuestro punto.

	Una vez instalado el nuevo /etc/sendmail.cf, debéis reiniciar el
demonio. Lo mejor es que lo matéis y lo relancéis de nuevo (enviarle la
señal SIGHUP no funciona en todas las versiones). Hasta que no hagáis
esto, tu nuevo sendmail.cf no será reconocido. Podéis comprobar que lo
habéis logrado lanzando el demonio y a continuación ejecutar
<tt>telnet</tt> al puerto 25. Debéis ver una referencia a la versión
del <tt>sendmail.cf</tt>, <it>BS-3.3</it> en la línea de
bienvenida. Luego, escribid <tt>quit</tt> para salir:

<tscreen><verb>

$ telnet dragon.micasa.es 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 dragon.micasa.es ESMTP Sendmail 8.7.6/BS-3.3 ready at Tue, 22 Apr 1997 11:56:31 +0200
quit
221 dragon.micasa.es closing connection
Connection closed by foreign host.

$
</verb></tscreen>

	Si tenéis algún problema con el comando <tt>telnet</tt> (en
particular, os responde con un <tt>Connection refused</tt>) es porque el
demonio no ha podido mantenerse tras el cambio en el sendmail.cf. El motivo
es un error en dicho fichero, así que será el momento de repasarlo
para luego volver a lanzar el <tt>sendmail</tt>. Los logs que este
programa habrá dejado os darán una pista acerca de la causa del problema.

<code>

################################################################################
#####                                                                      #####
#####                 Fichero de Configuracion de SENDMAIL                 #####
#####                                                                      #####
#####             Realizado por:   Juan Jose Amor, 2:341/12.19             #####
#####       a partir del fichero FI-4.1 del Centro de Calculo de la        #####
#####              Facultad de Informatica de Madrid, U.P.M.               #####
#####                                                                      #####
#####                              04-08-97                                #####
#####                                                                      #####
################################################################################

# RCS: $Id: sendmail.cf,v 1.5 1999/12/1  13:57:52 root Exp root $

#   Version de Sendmail
DVBS-3.3

################################################################################
#   Definicion del Dominio                                                     #
################################################################################

#   Dominio Local
DOdragon
DQmicasa
DRes
#DSes

#   Nombre del Dominio Oficial de la Maquina
Dj$O.$Q.$R

#   Sinonimos
Cw $w

################################################################################
#   Macros Especiales                                                          #
################################################################################

#   Mi nombre
DnMAILER-DAEMON

#   Cabecera en formato UNIX
DlFrom $g $d

#   Caracteres para delimitacion (operadores)
Do.:%@!^=/[]

#   Formato del nombre completo
Dq$g$?x ($x)$.

#   Mensaje de SMTP
De$j Sendmail $v/$V ready at $b

################################################################################
#   Opciones                                                                   #
################################################################################

#   Fichero de Alias
OA/etc/aliases
#   Fichero de Ayuda
OH/usr/lib/sendmail.hf
#   Fichero de estado
OS/etc/sendmail.st
#   Nivel de log
OL9
#   Copia al Postmaster en caso de error
OPPostmaster
#   Directorio de colas de mensajes
OQ/var/spool/mqueue
#   Intervalo de "timeout" en la cola
OT8d
#   No conectar en caso de mucho trafico
OX12
#   Modo de funcionamiento
Odb
#   Modo de gestion de errores
Oep
#   GID por defecto
Og1
#   Enviamelo tambien en caso de utilizacion de alias
Om
#   Por defecto, los mensajes en estilo tradicional
Oo
#   No admite EXPN ni VRFY
Opnoexpn,novrfy
#   "Timeout" de lectura
Or5m
#   Arranca la cola antes de enviar un mensaje,
Os
#   UID por defecto
Ou1
#   Encolar en caso de mucho trafico
Ox8
#   Numero maximo de vueltas antes de decidir que estamos en un bucle de correo
Oh17

################################################################################
#   Precedencia de Mensajes                                                    #
################################################################################

Pfirst-class=0
Pspecial-delivery=100
Pjunk=-100

################################################################################
#   Usuarios Validados                                                         #
################################################################################

#Troot
#Tdaemon
#Tuucp
#Tnetwork
Tjjamor
Tslist

################################################################################
#   Formato de las Cabeceras                                                   #
################################################################################

H?P?Return-Path: <$g>
HReceived: $?sfrom $s $.by $j ($v/$V) $b
H?D?Resent-Date: $a
H?D?Date: $a
H?F?Resent-From: $q
H?F?From: $q
H?x?Full-Name: $x
HSubject:
H?M?Resent-Message-Id: <$t.$i@$j>
H?M?Message-Id: <$t.$i@$j>

################################################################################
#####                                                                      #####
#####               REGLAS  DE  REESCRITURA  DE  DIRECCIONES               #####
#####                                                                      #####
################################################################################


################################################################################
#####                                                                      #####
#####               REGLA  CERO                                            #####
#####                                                                      #####
################################################################################
S0

#   Gestiona casos especiales
R@				$#local $:$n

#   Filtra casos miscelaneos
R$*<$*.>			$1<$2>
R$+<@>				$@$>0$1

#   Maquina local
R$+<@$j>			$#local $:$1

#!!!Activar esta regla en caso de maquina Cabecera de Dominio
R$+<@$Q.$R>			$#local $:$1

#   Vemos si es para la maquina local
R$+<@$*$O.$Q.$R>		$#local $:$1

#   Regla para entregar localmente mensajes para hispalinux.es
# R$+<@hispalinux.es>		$#local $:$1

#   Dominio local: entregar directamente (a~nadido por jjamor)
R$+<@$*$Q.$R>			$#tcp $@$2$Q.$R $:$1<@$2$Q.$R>

#   Punto local: entregar directamente (a~nadido por jjamor)
R$+<@p19.f12.n341.z2.fidonet.org>	$#local $:$1

#   Vemos si es para Fidonet
R$*<@$+.fidonet.org>$*		$#fido $@f12.n341.z2 $:$1<@$2.fidonet.org>$3

##  Cualquier otra direccion, al nodo del proveedor para su tramitacion
# Proveedor : Jazzfree     (JAZZFREE.COM)
R$+				$#tcp $@[212.106.192.135] $:$1

################################################################################
#####                                                                      #####
#####               REGLA  1  -  Reescritura del Campo Origen              #####
#####                                                                      #####
################################################################################
S1


################################################################################
#####                                                                      #####
#####               REGLA  2  -  Reescritura del Campo Destino             #####
#####                                                                      #####
################################################################################
S2


################################################################################
#####                                                                      #####
#####               REGLA  3  -  Paso de la Direccion a Forma Canonica     #####
#####                                                                      #####
################################################################################
S3

#   Gestion del caso especial "from:<>"
R<>				$@@

#   Canonizacion basica
R$*<$+>$*			$2

#   Encaminamiento norma RFC 822
R@$+:$+@$+			$:$1,@$3!$2
R$+,@$+				$1!$2

#   El delimitador @ indica precedencia
R$+@$+				$:$1<@$2>
R$+<$+@$+>			$1$2<@$3>
R$+<@$+>			$@$>5$1<@$2>

#   Trata el delimitador !
R$+^$+				$1!$2
R$-!$+				$@$>5$2<@$1.uucp>
R$+!$+				$@$>5$2<@$1>

#   % es una precedencia inferior a @
R$+%$+				$:$1@$2
R$+@$+%$+			$1%$2@$3
R$+@$+				$@$>5$1<@$2>

#   Correo local
R$+				$@$>5$1<@$j>

################################################################################
#####                                                                      #####
#####               REGLA  4  -  Reescritura salida final                  #####
#####                                                                      #####
################################################################################
S4

#   Extrae informacion relativa al dominio local
R$*<$+>$*			$1$2$3

################################################################################
#####                                                                      #####
#####               REGLA  5  -  Cualifica Completamente la Direccion      #####
#####                                                                      #####
################################################################################
S5

#   Maquinas locales
R$+<@$*$O>			$@$>6$1<@$2$j>
R$+				$@$>6$1

################################################################################
#####                                                                      #####
#####               REGLA  6  -  Resuelve sinonimos                        #####
#####                            y elimina encaminamientos locales         #####
#####                                                                      #####
################################################################################
S6

#   Elimina redundancias de nombres de maquinas locales
R$+@$+<@$j>			$@$>3$1@$2
R$+!$+<@$j>			$@$>3$1!$2
R$+%$+<@$j>			$@$>3$1%$2

################################################################################
#   Especificacion del programa local de gestion de correo                     #
################################################################################

#Mlocal, P=/usr/local/sbin/deliver, F=lsDFMShP, S=10, R=20/40, A=deliver $u
Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@ShPfn, S=10/30, R=20/40,
	T=DNS/RFC822/X-Unix,
	A=procmail -a $h -d $u
Mfido, P=/usr/lib/ifmail/ifmail, F=mSDFMuC, S=11, R=21, A=ifmail -l -1 -r $h $u
Mprog, P=/bin/sh, F=DFMPelsu, S=10, R=10, A=sh -c $u
S10
R$*<@$j>			$@$1

################################################################################
#   Especificacion del gestor de correo SMTP/IPC                               #
################################################################################

Mtcp, P=[IPC], F=CDFMXmsu, S=11, R=11, A=IPC $h
S11

</code>

<sect1> Configuracion de Sendmail usando macros M4 <p>

La mayoría de los usuarios de Unix prefieren configurar el sendmail
con las colecciones de macros M4 que incluye. Reconozco que es la
forma más flexible y a la vez fácil de entender para configurar este
programa. Eso sí, si el fichero presentado en la sección anterior os vale,
mejor es que os saltéis esta sección o posiblemente os volveréis locos
(¡y no quiero que nadie me acuse de contagiaros nada!).

Lo que viene a continuación es una contribución recibida de Roberto Suárez
Soto, y no me hago responsable de su eficacia (en realidad, no me voy
a hacer responsable de la eficacia de nada que se haya dicho en este
documento. Me lavo las manos como cualquier otro colaborador de la
causa GNU ;-) ).

	La configuración de sendmail para ifmail puede ser hecha mediante un
fichero de éstos, y de hecho es lo más fácil. Un fichero sendmail-ifmail.mc
(el nombre es indiferente) podría ser éste que pongo a continuación. Está
casi copiado del que viene en el paquete ifmail-2.14-tx8.8.tar.gz, de Pablo
Saratxaga. La «primera versión» que hice se la mandé al propio Pablo para
que la revisara, y en su contestación me mandó un fichero .mc completísimo y
muy bien explicado que es el que pongo aquí. Así que todo el mérito es suyo
:-) Yo sólo me limito a transcribir lo que me mandó él (si hay algún fallo
en los comentarios o en las explicaciones, eso sí que será obra mía O:-))

	Los datos son imaginarios, necesitarás cambiarlos para tu
configuración. Otra cosa: este fichero lo he probado con sendmail 8.9.1; con
la versión 8.8.x hay un par de líneas que no funcionan. De todos modos, si
tienes una distribución más o menos reciente, seguro que ya trae un sendmail
de la serie 8.9.x (y si no, ¿no crees que ya es hora de actualizarse? :-))

<code>

divert(-1)
include(`../m4/cf.m4')
OSTYPE(`linux')
dnl ##########################
dnl #  Configurable options  #
dnl ##########################

dnl ### El servidor SMTP de tu Proveedor de Internet
dnl ### Los corchetes ( [ ] ) evitan las llamadas al DNS;
dnl ### útil si no estás conectado a Internet las 24 horas del día
define(`SMART_HOST',		``[smtp.de.tu.proveedor.com]'')

dnl ### La dirección Fido de tu uplink; esta será la ruta por defecto
dnl ### para el correo de Fido
define(`FIDO_SMART_HOST',	``f1.n2.z3.fidonet.org'')

dnl ### La pasarela Fidonet --> Internet
define(`FIDO_GATEWAY',		``f4.n5.z6.fidonet.org'')

dnl ### Si vas a usar una pasarela, déjalo así;
dnl ### cámbialo a "undefine" si no la vas a usar
dnl ### (si tienes una cuenta de email real, pon el undefine)
define(`USE_FGATE')

dnl ### Esto es necesario si no tienes acceso permanente a un DNS
dnl ### (es decir, si no tienes conexión 24h a Internet; si tienes
dnl ###  este tipo de conexión, puedes quitar estas líneas)
FEATURE(accept_unresolvable_domains)
FEATURE(nodns)dnl

dnl
dnl ####################################
dnl #    End of configurable section   #
dnl ####################################
dnl

define(`confDEF_USER_ID',``8:12'')
define(`confMATCH_GECOS',`True')
define(`confTRY_NULL_MX_LIST',`True')
define(`confTO_QUEUEWARN', `2d')
define(`confTO_QUEUERETURN', `8d')
define(`confUSE_ERRORS_TO',`True')
define(`confTRUSTED_USERS',`ftn')
define(`confCT_FILE', ` -o /etc/mail/sendmail.ct')dnl
define(`confCW_FILE', ` /etc/mail/sendmail.cw')dnl
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')dnl
define(`confSTATUS_FILE',`/var/run/sendmail.st')dnl
dnl ### Esta línea que viene a continuación define dos ficheros
dnl ### de alias para sendmail; el segundo (/etc/mail/majordomo)
dnl ### sólo hace falta si usáis majordomo como gestor de listas
dnl ### de correo; como no es mi caso (y tampoco el de la mayoría
dnl ### de la gente), he cambiado la línea para reflejarlo.
dnl ### (dejo la original como comentario para el que le interese)
dnl ### define(`ALIAS_FILE',`/etc/mail/aliases,/etc/mail/majordomo')dnl
define(`ALIAS_FILE',`/etc/mail/aliases')dnl
define(`HELP_FILE',`/etc/mail/sendmail.hf')dnl
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
define(`STATUS_FILE',`/var/run/sendmail.st')dnl
undefine(`UUCP_RELAY')dnl
undefine(`BITNET_RELAY')dnl
FEATURE(access_db, hash -o /etc/mail/access)dnl
FEATURE(always_add_domain)dnl
FEATURE(blacklist_recipients)dnl
dnl FEATURE(limited_masquerade)dnl
dnl FEATURE(masquerade_entire_domain)dnl
FEATURE(masquerade_envelope)dnl
FEATURE(local_procmail)dnl
FEATURE(redirect)dnl
FEATURE(relay_based_on_MX)dnl
FEATURE(relay_entire_domain)dnl
FEATURE(relay_local_from)dnl
FEATURE(use_ct_file)dnl
FEATURE(use_cw_file)dnl
FEATURE(`domaintable',`hash -o /etc/mail/domaintable')dnl
FEATURE(`genericstable',`hash -o /etc/mail/genericstable')dnl
GENERICS_DOMAIN_FILE(confCW_FILE)dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl
FEATURE(nocanonify)dnl
MAILER(procmail)dnl
MAILER(smtp)dnl
MAILER(ftn)dnl
MAILER(usenet)dnl
MAILER(uucp)dnl

LOCAL_CONFIG
# Pseudo-dominios (no se llama al DNS para ellos)
CPz1.fidonet.org z2.fidonet.org z3.fidonet.org z4.fidonet.org
CPz5.fidonet.org z6.fidonet.org ftn

# Para las direcciones de Fido, que no se manden a través del mailer
# smtp.z2.fidonet.org, www.z2.fidonet.org, etc
CFfidonet ns ns2 mail smtp www ftp

# Esto es un pequeño parche para que ciertas direcciones que nosotros
# digamos no salgan a Internet, sino que sean entregadas localmente
Kpirateo hash -o /etc/mail/pirateo

LOCAL_RULE_0
# pirateo
R$+ < @ $+ . > $*		$: < $(pirateo $1 @ $2 $: $) > $1 < @ $2 . > $3
R$+ < @ $+ $~. > $*		$: < $(pirateo $1 @ $2 $3 $: $) > $1 < @ $2 $3 > $4
R< $+ > $+ < @ $+ > $*		$@ $>97 $1 $4
R<> $+ < @ $+ > $*		$: $1 < @ $2 > $3

LOCAL_NET_CONFIG
# ************ FIDONET.ORG ***********
# for nodes allways put leading $* if you want to route his points too
# routed trough default smart host FIDO_SMART_HOST
R$* < @ $~F $+ .z1.fidonet.org . > $*	$#ftn $@ FIDO_SMART_HOST $: $1 < @ $2 $3 .z1.fidonet.org > $4
R$* < @ $~F $+ .z2.fidonet.org . > $*	$#ftn $@ FIDO_SMART_HOST $: $1 < @ $2 $3 .z2.fidonet.org > $4
R$* < @ $~F $+ .z3.fidonet.org . > $*	$#ftn $@ FIDO_SMART_HOST $: $1 < @ $2 $3 .z3.fidonet.org > $4
R$* < @ $~F $+ .z4.fidonet.org . > $*	$#ftn $@ FIDO_SMART_HOST $: $1 < @ $2 $3 .z4.fidonet.org > $4
R$* < @ $~F $+ .z5.fidonet.org . > $*	$#ftn $@ FIDO_SMART_HOST $: $1 < @ $2 $3 .z5.fidonet.org > $4
R$* < @ $~F $+ .z6.fidonet.org . > $*	$#ftn $@ FIDO_SMART_HOST $: $1 < @ $2 $3 .z6.fidonet.org > $4

# El resto de redes FTN se rutarán a través del FIDO_SMART_HOST
R$* < @ $+ .ftn . > $*			$#ftn $@ FIDO_SMART_HOST $: $1 < @ $2 .ftn > $3

# Si no tienes conexión permanente a Inet, comenta esta línea
ifdef(`USE_FGATE',`',`#')R$* < @ $* > $*			$#ftn $@ FIDO_SMART_HOST $: $1 % $2 < @ FIDO_GATEWAY > $3

</code>

	Explico algunas de las opciones de este fichero.

<itemize>
<item> MAILER(ftn)dnl
</itemize>

En esta línea se le dice al sendmail que va a usar un mailer llamado ftn.
Tiene que haber un fichero «ftn.m4» en el directorio «mailer» para este
mailer. En Debian, con el paquete de ifmail viene un fichero «ifmail.m4»,
así que tienes que cambiar las ocurrencias de «ftn» por «ifmail». Esto lo
puedes hacer fácilmente con sed:

<tscreen><verb>

sed s/ftn/ifmail/g ifmail.mc > ifmail.mc.nuevo

</verb></tscreen>

Para los que no tengan un fichero ifmail.m4 o ftn.m4 en su distribución de
ifmail, aquí pongo el que uso yo:

<code>

PUSHDIVERT(-1)
ifdef(`FIDO_MAILER_FLAGS',, `define(`FIDO_MAILER_FLAGS', `8mDFMuSC')')
ifdef(`FIDO_MAILER_PATH',, `define(`FIDO_MAILER_PATH', /usr/lib/ifmail/ifmail)')
ifdef(`FIDO_MAILER_USER',, `define(`FIDO_MAILER_USER', `ftn:uucp')')
ifdef(`FIDO_MAILER_ARGS_H',, `define(`FIDO_MAILER_ARGS_H', `ifmail -r $h -g h $u')')
ifdef(`FIDO_MAILER_ARGS_C',, `define(`FIDO_MAILER_ARGS_C', `ifmail -r $h -g c $u')')
ifdef(`FIDO_MAILER_ARGS_B',, `define(`FIDO_MAILER_ARGS_B', `ifmail -b -r $h -g h $u')')
ifdef(`FIDO_MAILER_ARGS_P',, `define(`FIDO_MAILER_ARGS_P', `ifmail -l-3 -r $h -g h $u')')
POPDIVERT

#############################
# FIDO Mailer specification #
#############################

VERSIONID(`@(#)ftn.m4  1.01 (srtxg@f2219.n293.z2.fidonet.org) 7/7/97')

# normal ftn mailer, pkt as hold
Mftn,  P=FIDO_MAILER_PATH, F=FIDO_MAILER_FLAGS, S=11, R=21,
        _OPTINS(`FIDO_MAILER_CHARSET', `C=', `, ')U=FIDO_MAILER_USER,
        ifdef(`FIDO_MAILER_MAX', `M=FIDO_MAILER_MAX, ')A=FIDO_MAILER_ARGS_H

# This is for crash mail just in case you need it * USE WHITH CARE *
Mftn-crash,  P=FIDO_MAILER_PATH, F=FIDO_MAILER_FLAGS, S=11, R=21,
        _OPTINS(`FIDO_MAILER_CHARSET', `C=', `, ')U=FIDO_MAILER_USER,
        ifdef(`FIDO_MAILER_MAX', `M=FIDO_MAILER_MAX, ')A=FIDO_MAILER_ARGS_C

# This doesn't split messages when writting in pkt, of course the node
# receiving the pkt must be able to handle arbitrary size messages.
# if the other end uses ifmail too use this.
Mftn-big,  P=FIDO_MAILER_PATH, F=FIDO_MAILER_FLAGS, S=11, R=21,
        _OPTINS(`FIDO_MAILER_CHARSET', `C=', `, ')U=FIDO_MAILER_USER,
        ifdef(`FIDO_MAILER_MAX', `M=FIDO_MAILER_MAX, ')A=FIDO_MAILER_ARGS_B

# This one uses a "kludge verbosity" of level -3, that is nothing is kept
# from usenet/email infos.
Mftn-poor, P=FIDO_MAILER_PATH, F=FIDO_MAILER_FLAGS, S=11, R=21,
	_OPTINS(`FIDO_MAILER_CHARSET', `C=', `, ')U=FIDO_MAILER_USER,
	ifdef(`FIDO_MAILER_MAX', `M=FIDO_MAILER_MAX, ')A=FIDO_MAILER_ARGS_P

</code>

Está sacado, como tantas otras cosas, del paquete ifmail-2.14-tx8.8.tar.gz.

<itemize>
<item> define(`confCW_FILE',`/etc/mail/sendmail.cw')dnl
<item> FEATURE(use_cw_file)
<item> GENERICS_DOMAIN_FILE(confCW_FILE)
</itemize>

Estas tres líneas sirven para utilizar un fichero (/etc/mail/sendmail.cw en
nuestro caso, aunque puedes poner el que quieras) en el que pondremos todos
los nombres de nuestra máquina. La tercera línea («GENERICS_DOMAIN_TABLE»)
en realidad es para indicar un fichero en el que aparecen todos los
dominios a enmascarar; para nuestro caso, vamos a decirle que
enmascare todos los dominios locales (porque, a menos que tengas una
máquina conectada directamente a Inet, los nombres locales no serán
reales). Por ejemplo, el mío es:

<tscreen><verb>

cheetah.darkland.es
p83.f105.n348.z2.fidonet.org
p76.f1.n348.z13.ficnet.org

</verb></tscreen>

Así, todo el correo dirigido a uno de estos dominios se entregará
localmente.

<itemize>
<item>FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl
</itemize>

Esto vale para crear un fichero (/etc/mail/mailertable, pero como antes,
podemos escoger otro sitio) con «mailers». Es decir, que el correo dirigido
a unos dominios que nosotros digamos se rutará a través de los mailers
especificados. Mi fichero mailertable es éste:

<tscreen><verb>

.z13				ftn:f1.n348.z13
ceu.fi.udc.es			smtp:ceu.fi.udc.es
lucus.org			smtp:lucus.org

</verb></tscreen>

Los dominios que empiezan por un punto («.») especifican cualquier subred de
ese dominio, y en el caso de los dominios de redes FTN (fidonet.org),
cualquier punto/nodo de esa red. Por ejemplo: con «.z13» estamos diciendo
que cualquier mail (que en este caso será un net) a un punto o nodo de la
zona 13 (FiCNet, con la forma «pXX.fY.n348.z13») será encaminado a través
del nodo 13:348/1, que en formato Inet es f1.n348.z13. Esto sólo hace falta
para rutas alternativas a las normales, ya que todo el correo, por defecto,
se encaminará a través del smtp que hayas definido (en el caso de correo
Inet) o a través de tu uplink (en el caso del correo para fidonet.org y
demás redes FTN). Otro ejemplo: suponiendo que además de ser punto de Fido,
eres punto de FiCNet y de SubNet:

<tscreen><verb>

.z13		ftn:f1.n348.z13
.z93		ftn:f1.n3481.z93

</verb></tscreen>

En realidad, en mi caso (y en el de la mayoría, me imagino) no harían falta
estas especificaciones. El nodo 13:348/1 y mi uplink 2:348/105 son el mismo,
FiC BBS; y por defecto, todo el correo FTN va a ir allí. Así que las
mailertables sólo tienen un verdadero sentido cuando rutéis varias redes a
distintos uplinks. En el resto de los casos, podéis pasar sin ellas. Sólo
que me pareció una cosa interesante :-) Quizás no tanto para puntos, pero sí
para nodos. (recordemos que en principio Ifmail está pensado para nodos, no
para puntos)

Este fichero hay que compilarlo, para que el sendmail pueda leerlo. Para
esto, sólo tenéis que hacer:

<tscreen><verb>

makemap hash mailertable < mailertable

</verb></tscreen>

(suponiendo que estáis en el directorio en el que está el fichero
mailertable, claro)

Se creará un fichero mailertable.db, que es el que usará sendmail.

<itemize>
<item> FEATURE(`genericstable',`hash -o /etc/mail/genericstable')dnl
</itemize>

Esta línea no es para el correo Fido, sino más bien para el de Inet. Sirve
para enmascarar el correo saliente con vuestra dirección de Inet, en vez de
la dirección local. Supongamos que el usuario que usas es «robe» (como es mi
caso :-)), y tu dirección de Internet es «rss-trgn@usa.net» (como también
es mi caso :-)). Crearías un fichero /etc/mail/genericstable que tuviera
esto:

<tscreen><verb>

robe	rss-trgn@usa.net

</verb></tscreen>

Y así, todo el correo que escribas con este usuario y que salga de tu
máquina para Inet, será reescrito de tal forma que parezca que procede de
rss-trgn@usa.net. Sí, también aparecerá así en el «From» del correo Fido
que envíes, pero no te preocupes: ifmail se encargará de que el campo
«Reply-To» vaya con tu dirección de punto, así que no habrá problema a la
hora de responder a tus mensajes :-)

Este fichero hay que compilarlo, como el anterior:

<tscreen><verb>

makemap hash genericstable < genericstable

</verb></tscreen>

<itemize>
<item> FEATURE(local_procmail)dnl
<item> MAILER(procmail)dnl
</itemize>

Estas dos líneas especifican que el mailer local será procmail. Si tienes
instalado este programa, el correo será entregado por él. Esto tiene una
ventaja: si usas procmail para filtrar el correo, no te hará falta más que
crear un fichero «.procmailrc» con las recetas adecuadas en tu
directorio, sin el «.forward» que haría falta en otro caso. Además, en
las versiones 8.9.x de sendmail, el fichero .forward no está muy bien
visto, con lo que te ahorrarías problemas si lo hicieras así. Que lo
instales, vamos :-) Es algo extremadamente útil que todo el mundo ha
instalado ya, ¿por qué no lo ibas a hacer tú? }:-) ;-)

<itemize>
<item>FEATURE(access_db, hash -o /etc/mail/access)dnl
</itemize>

Con esta línea, y si usáis <bf>Sendmail 8.9.x</bf> (mi caso), podéis
controlar el correo de entrada, para rechazarlo en el caso de que provenga
de spammers conocidos (o de alguien que no os caiga bien :-)). Esto se
realiza mediante un fichero /etc/mail/access, que también controla aspectos
de relay. Un fichero de ejemplo (el que me mandó P.S. O:-)) sería éste:

<code>

#
# allways accept those
#
postmaster@                     OK
abuse@                          OK
#
# domains we accept they relay trough us
#
z1.fidonet.org                  RELAY
z2.fidonet.org                  RELAY
z3.fidonet.org                  RELAY
z4.fidonet.org                  RELAY
z5.fidonet.org                  RELAY
z6.fidonet.org                  RELAY
ftn                             RELAY
#
# special mail to accept, despite their domains are bannished
#
auclairdelalune@hotmail.com     OK
mwibmer@hotmail.com             OK
#
# mail to reject
#
infobeat.com                    REJECT
magnumhosting.com               REJECT
net-vest.net                    REJECT
# cyberpromo.com [204.137.222.*]
# se puede dar un mensaje de error:
cyberpromo.com                  550 We don't accept mail from spammers
204.137.222                     550 We don't accept mail from spammers
# discard ni siquiera envia mensaje de error, lo hace desaparecer
# aunque yo prefiero dar un mensaje de error para hacerles saber que
# su basura no llega
Republica.Utocratica.de.Nowheresville   DISCARD
_                               DISCARD

</code>

Este fichero hay que compilarlo con makemap, como los demás:

<tscreen><verb>

makemap hash access < access

</verb></tscreen>

<itemize>
<item> Kpirateo hash -o /etc/pirateo
</itemize>

Esta línea permite usar un fichero en el que definiremos direcciones de
Inet que corresponden a direcciones locales. Sirve para que el correo que
dirijamos a nuestra dirección de Inet no salga al mailer y luego vuelva,
sino que se entregue directamente en la máquina. Yo tengo esto:

<tscreen><verb>

rss-trgn@usa.net	robe

</verb></tscreen>

Y todo el correo que made a rss-trgn@usa.net no saldrá a Inet, sino que se
entregará localmente al usuario robe (que soy yo). Otro uso que se me
ocurre, pero no he probado, es poner ahí la dirección
Mail.Delivery.Subsystem@&lt;dirección de tu uplink&gt;. Durante una
semana o así, hubo un net que «rebotaba» constantemente entre mi
uplink y mi máquina con una dirección parecida, y era rechazado por
ambos extremos. Añadiendo una línea:

<tscreen><verb>

Mail.Delivery.Subsystem@f105.n348.z13.fidonet.org	postmaster

</verb></tscreen>

Se conseguiría que este tipo de correo fuera al postmaster, es decir, al
root, y no molestara a mi ya atribulado Sysop :-) Pero bueno, como decía
antes esto no lo he probado todavía ... y no tengo ganas de crear un pequeño
caos para probarlo, sinceramente ;-)

En fin ... como antes, recomiendo encarecidamente que creéis un fichero como
éste con vuestra dirección email. En una instalación de ifmail que he estado
haciendo recientemente, sendmail buscaba esta dirección para entregar el
netmail a mi usuario :-? Y claro, es mucho mejor que se entregue localmente
en vez de tener que salir a Inet y luego volver. Pero seguro que es por
algún fallo que tuve al configurar ifmail o sendmail, no porque en realidad
haga falta todo esto O:-)

Después de todo esto, hay que compilar el fichero sendmail-ifmail.mc que
habéis creado:

<tscreen><verb>

m4 sendmail-ifmail.mc > sendmail-ifmail.cf

</verb></tscreen>

Y luego, hay que copiarlo encima (o haced un enlace) del sendmail.cf actual
(¡haced una copia de seguridad antes!), reiniciar el sendmail y empezar a
hacer pruebas. Si no me he equivocado mucho, funcionará ;-)

<it>De nuevo, agradezco a Pablo Saratxaga la atención y la ayuda que me ha
brindado en la confección de este capítulo :-) </it>

<bf>Nota: Este capítulo ha sido escrito por Roberto Suárez Soto, a quien
podéis localizar para lo que sea en <tt>rss-trgn@usa.net</tt>.</bf>

<sect1> Configuración de Ifmail <p>

	Vamos a tratar aquí qué partes de <tt>ifmail</tt> hay que tocar para
hacer funcionar el NETmail. Luego nos meteremos con las áreas de ECHO.
Paciencia.

	Personalmente, si usáis RedHat os aconsejo que empecéis por instalaros
el paquete <tt>rpm</tt> de <tt>ifmail</tt> (versiones <it>tx</it>) que
podréis encontrar en cualquier
<it>mirror</it> de <tt>sunsite.unc.edu</tt>. Si no usáis RedHat, aun
os debo recomendar el <tt>ifmail</tt> versión <it>tx</it> en formato
<tt>tar</tt>, ya que está mucho mejor preparado para FidoNet que el
<tt>ifmail</tt> original. Una vez instalado podréis configurar
vuestros ficheros, que estarán en /etc/ifmail.

	Básicamente son dos los ficheros que hay que tocar:

<itemize>
<item> Areas : De momento no hay que tocarlos (o mejor, comentad con '&num;'
cualquier área que no esté ya comentada...).
<item> config
</itemize>

	El fichero <tt>config</tt> es el primero que hay que tocar. Creo que
hay opciones obvias (logfile, debugfile) y no os las voy a explicar por eso.
Tenéis otras que son del estilo de las de FrontDoor (o incluso más sencillas).
Aquí os dejo un fichero ejemplo <tt>config</tt> comentado para que hagáis el
vuestro.

<code>

# Fichero de configuracion de ifmail (ifmail+ifnews+ifcico)
# En esta version para RedHat, debe estar en /etc/ifmail/config

# Cualquier linea que empiece con un caracter '#' es un comentario

# Fichero de log
logfile		/var/log/ifmail/iflog

# Fichero para depuracion.
debugfile	/var/log/ifmail/ifdebug

# Nivel de informacion de depuracion. 0 Para ninguno. En pruebas, poner 4.
verbose		0

# Direccion principal de Fido
address		2:341/12.19

# AKAs:
address		93:341/12.19
# address		2:341/14.119

# Passwords de inicio de sesion EMSI y yoohoo.
password	2:341/12.19	SI_HOMBRE_COMO_QUE_TE_LA_VOY_A_DECIR

# Passwords para paquetes (no suelen usarse).
#packetpasswd	2:5929/6	AZERTY

# Alias del sistema. Para convertir nombres de usuario a nombres de Fido
# Por ejemplo, saber que un mensaje de 'jpgarcia' procede de
# Juan Perez Garcia.
sysalias	/etc/aliases

# Nombre completo del sistema (FQDN)
myfqdn		dragon.micasa.es

# Directorio para los paquetes y ficheros entrantes:
inbound		/var/spool/ifmail/inb
# Directorios para sesiones "listed" y "protected"
listinbound	/var/spool/ifmail/inb
protinbound	/var/spool/ifmail/inb

# Directorio para paquetes salientes.
outbound	/var/spool/ifmail/fidonet

# Directorio con los ficheros de "file-request" (de interes solo para
# quien gestione una BBS con este software).
public		/home/ftp/pub

# Fichero que establece correspondencia entre nombres de ficheros cortos
# y nombres con ruta completa. Opcion para sistemas que acepten "filereq"
# reqmap		/usr/local/lib/fnet/reqmap

# Directorio para nombres "magicos" de ficheros. Para sistemas con "filereq"
magic		/usr/lib/ifmail/magic

# Lista de nodos primaria. Se expande a extension de dia juliano (".NNN")
# automaticamente si es necesario.
nodelist	/var/spool/ifmail/nl.d/REGION34

# Lista de nodos para otros dominios. Aqui podemos meter la lista de puntos.
# Se incluye el nodo que genera dicha lista (2:341/14 en este momento).
nodelist	ptlstr34	2:341/14@fidonet

# Traducciones de dominios.
domtrans	.fidonet		.fidonet.org

# Base de datos de alias para las lineas ocultas
# ^aREPLYADDR y ^aREPLYTO
database	/var/spool/ifmail/ifdbm

# Fichero con numero de secuencia (usado para generar IDs unicos)
sequencer	/var/spool/ifmail/seq

# Fichero de areas de ECHO
areas		/etc/ifmail/Areas

# Nombres de grupos cuyos mensajes no se entregaran a Fido.
badgroup	relcom.ads.
badgroup	relcom.commerce.

# Limitacion en el numero de grupos que pueden aparecer en la cabecera
# Newsgroups. Si se excede, el articulo no se mandara a Fido. Si se omite
# la opcion, no supondra limite alguno.
#maxgroups	10

# Directorio con las tablas de traduccion de caracteres.
maptabdir	/etc/ifmail/maptabs

# Linea de comandos para entregar NETs con sendmail, y mensajes publicos
# con news (INN).
sendmail	/usr/lib/sendmail -f $F $T
rnews		/usr/bin/rnews

# Programa de desempaquetado
iftoss		/usr/lib/ifmail/iftoss

# Descompresores.
# $F se convierte en el nombre del fichero.
unzip		/usr/bin/unzip -Lojq $F
unarj		/usr/bin/unarj e $F
unlzh		/usr/bin/lha xiq $F
unarc		/usr/bin/unpack $F
unzoo		/usr/bin/zoo -extract $F
# unrar		/usr/bin/unrar e $F
unrar		/usr/local/bin/rar e $F

# Compresor. Yo uso RAR, a lo mejor te interesa el ZIP.
# $F es el nombre del fichero, $P es el nombre de los paquetes.
#packer		/usr/bin/zip -q9 $F $P
packer		/usr/local/bin/rar a $F $P

# Tama~no maximo de un paquete comprimido de correo. ifpack lo partira 
# en varios si este tama~no es superado.
maxfsize	500000

# Tama~no maximo de un paquete .pkt. Se partira en varios si se supera.
maxpsize	30000

# Tama~no maximo de un mensaje cuando se permite auto-fragmentacion de
# mensajes grandes.
maxmsize 12300

# Casos en los que no se aplican los limites de tama~no de paquete. El caso
# "m" se refiere a los Nets.
nonpacked	cm

# Logs de News, y base de datos temporal para lineas "seen-by"
newslog		/var/log/news/ifmail/
msgidbm		/tmp/ifmsgids

# Base de datos de traduccion MSGID <-> Message-ID para crear cabeceras
# References: correctas (util con lectores de news que manejen threads)
refdbm		/tmp/ref_db

# OPCIONES PARA EL MODEM Y DEFINICION DEL SISTEMA DE PUNTO
# Ver ejemplos incluidos con ifmail para mas detalle
#
# Aqui se incluye una configuracion basica para modems 14.4K
#

# Puerto del modem (nombre del dispositivo de /dev) y velocidad del puerto
ModemPort	modem:L38400

# Traduccion de telefonos desde las listas de nodos. Muy similar a la
# que se utiliza en FrontDoor.
PhoneTrans	34-	/
PhoneTrans	   	/	00

# Secuencias de inicio del modem (adaptar a tus necesidades)
ModemReset	AT&amp;F\r
ModemDial		ATDT\T\r
# Si tienes acceso a otro nodo con alguna peculiaridad... (como yo :-) )
#ModemDial	(address 2:341/41) ATX2B9M0S7=60S11=60DT\T
ModemHangup	ATZ\r
ModemOK		OK
ModemConnect	CONNECT
ModemError	BUSY
ModemError	NO\sCARRIER
ModemError	NO\sDIAL
ModemError	RING\r
ModemError	ERROR

# Tiempos de expiracion, respectivamente de espera a mensajes OK y CONNECT
TimeoutReset	3
TimeoutConnect	70

# Delay in seconds before every call in "automatic" mode.  Ignored
# if explicit list of addresses specified in the command string.
DialDelay	0

# Datos EMSI para este nodo.
Name		Nombre del Punto
Location	Madrid - Spain
SysOp		Nombre del sysop
Phone		-Unpublished-
Speed		14400
Flags		V32,V42,V42B

</code>

<sect1> ¿Enviamos un NET? <p>

Seguro que estáis deseando de ver que lo que habéis configurado sirve para
algo. Yo también: si no os funciona, pasar al siguiente capítulo sería
inútil...

Bien, en principio, enviar un NET es tan simple como coger vuestro
programa de correo preferido y escribirlo. Ya sabéis, utilizando una
dirección de Fido al estilo Internet.

Una prueba que podéis hacer es mandarte un NET a ti mismo, para que os
hagáis la idea de cómo funciona. Así que suponed que sois el punto
2:341/12.89 (o sea, un punto del mejor Boss que conozco ;-) ). Y
supongamos que vuestro nombre es Juan Pérez.

Para enviar el NET, dirigid el mensaje a
<tt>Juan.Perez@p89.f12.n341.z2.fidonet.org</tt>. Podrán pasar varias
cosas:

<enum>
<item> El mensaje ni se encola ni se devuelve, pero os sale en
pantalla un mensaje tal que así: <tt>/etc/sendmail.cf: line 166:
replacement &dollar;7 out of bounds</tt>. Normalmente, esto significa un
error grave en el sendmail.cf. Revisad su contenido. Puede ocurrir que
como separador se estén usando espacios en lugar de tabuladores.

<item> El mensaje os resulta devuelto, con un contenido así:

<code>

From: MAILER-DAEMON (Mail Delivery Subsystem)
Subject: Returned mail: Service unavailable

[...]

   ----- The following addresses have delivery notifications -----
Juan.Perez@p89.f12.n341.z2.fidonet.org  (unrecoverable error)

   ----- Transcript of session follows -----
451 Cannot exec /usr/lib/ifmail/ifmail: No such file or directory
554 Juan.Perez@p89.f12.n341.z2.fidonet.org... Service unavailable

</code>

Eso quiere decir, bien que os habéis <it>olvidado</it> de instalar
ifmail, o no lo habéis hecho correctamente (problemas de permisos, etc).

<item> El mensaje no se os es devuelto, pero se os queda en la cola de
Internet (lo veréis porque aparece en el comando mailq, indicando que
está encolado por algún fallo de la red, como <tt>Network
unreachable</tt>). En este caso, revisad el fichero sendmail.cf, algo
hay mal escrito, que evita la entrega de los mensajes de Fido a
ifmail. ¡Ah!, después de arreglarlo, no os olvidéis de borrar la cola
(ficheros de /var/spool/mqueue/) o de lo contrario, el mensaje
anterior se acabará encaminando por las pasarelas
Internet&lt;-&gt;Fido que pululan por ahí (deberíais saber que su uso
indiscriminado no es recomendable...).

<item> El mensaje no es devuelto, ni aparece en la cola de
Internet. En este caso, empecemos por repasar el log de correo. Debe
aparecer algo así:

<code>

Apr 20 13:50:45 dragon sendmail[1723]: NAA01723: from=jperez, size=1912,
class=0, pri=31912, nrcpts=1, msgid=<199704201150.NAA01723@dragon.micasa.es>,
relay=f12.n341

Apr 20 13:50:46 dragon sendmail[1728]: NAA01723: to=Juan.Perez@p89.f12.n341.z2.fidonet.org,
ctladdr=jperez (9/13), delay=00:00:02, xdelay=00:00:01, mailer=fido, stat=Sent

</code>

¡Enhorabuena! Este log os indica que tu mensaje ha sido entregado (<tt>
Stat=Sent</tt>) al relevo f12.n341 vía ifmail, o sea, que ha entrado en un
paquete de Fido. Eso lo comprobaremos ahora.
</enum>

Si habéis conseguido que se entregue el correo a ifmail, podéis comprobar
que se ha creado un paquete mirando el directorio
<tt>/var/spool/ifmail/fidonet</tt>. Allí deberíais encontrar un fichero
con un nombre parecido a <tt>0155000c.out</tt>. Si no aparece, puede
que ifmail no haya podido escribir ahí por problemas de permisos, o
que el fichero /etc/ifmail/config esté mal escrito. En este punto os
será de ayuda echar un vistazo a los logs disponibles en
<tt>/var/log/ifmail/</tt>.

Ahora podéis ver cómo ese paquete se convierte de nuevo en correo de
Internet. Para ello, movedlo a <tt>/var/spool/ifmail/inb</tt> y
ejecutad desde el usuario <tt>fnet</tt> (propietario de todos estos
ficheros) el comando <tt>/usr/lib/ifmail/ifunpack</tt>. El mensaje
deberá ser entregado de nuevo a <tt>sendmail</tt>, para el usuario de
vuestra máquina cuyo nombre completo (campo <it>gecos</it> del fichero
<tt>passwd</tt>) coincida con el destinatario del mensaje,
o se encuentre en la base de datos <it>ifdbm</it> (ver la siguiente sección
de este documento). Si <tt>ifunpack</tt> aparenta no hacer nada, probad a
ejecutar cambiar la extensión del fichero (de <tt>.out</tt> a <tt>.pkt</tt>)
en el directorio <tt>/var/spool/ifmail/inb</tt> y reejecutad
<tt>ifunpack</tt> de nuevo. El comportamiento depende de la versión
que hayáis instalado. 

Una vez hechas estas pruebas, vamos a intentar llamar al Boss. Para
ello, mandadle un mensaje como hemos hecho antes. A continuación, os
recomiendo que copiéis el <it>script</it> <tt>ifpoll</tt> que viene en
la documentación, en el directorio donde están los binarios de
ifmail. Este script está para empaquetar los mensajes y llamar
cíclicamente a tu Boss hasta conseguir una conexión.

Editad el fichero ifpoll, poniendo los datos de vuestro nodo. En particular,
necesitaréis tocar las líneas siguientes (que he rellenado con los
datos del sistema ficticio, punto de 2:341/12):

<itemize>
<item> <tt>NODE=&dquot;f12.n341.z2.fidonet.org&dquot;</tt> (el nodo del Boss)
<item> <tt>IFCICO_OWNER=fnet</tt> (usuario Unix que ejecuta ifmail)
<item> <tt>IFCICO_SYSOP=jperez@dragon.micasa.es</tt> (la direccion local)
</itemize>

Antes de ejecutar, tenéis que compilar la lista de nodos. Coloca en
<tt>/var/spool/ifmail/nl.d</tt> un par de ficheros de nodos y puntos
recientes (<tt>REGION34.XXX</tt> y <tt>ptlstr34.YYY</tt>). Ejecuta,
desde el usuario propietario de los ficheros de este directorio,
el comando <tt>/usr/lib/ifmail/ifindex</tt> para compilarlos. Te
generará un par de ficheros, <tt>index.dir</tt> e <tt>index.pag</tt>.

Os recuerdo que <tt>REGION34.XXX</tt> no es una <it>nodelist</it>
verdadera, con lo que para que funcione correctamente, muy
probablemente tendréis que poner al principio del fichero anterior,
las siguientes líneas, para luego compilarlo con <tt>ifindex</tt>:

<code>
Zone,2,Europe_etc,Finland,Ron_Dwight,358-0-2983308,9600,CM,V32B,HST,V42B,XA
,999,I_Gate,Nobody,Nowhere,-Unpublished-,9600,CM
;
</code>

No os preocupéis por el teléfono del Gate de Europa: el encaminamiento
previsto en esta configuración impedirá cualquier llamada que no sea a
vuestro <it>boss</it> local.

A continuación, ejecutad <tt>ifpoll</tt>. Vigilad los logs del
sistema. Empezarán a aparecer mensajes. Os muestro aquí un log de
conexión correcta:

<code>
Apr  3 23:25:51 dragon ifcico[649]: calling 2:341/12@fidonet (Corben, phone 34-1-5702555)
Apr  3 23:25:51 dragon ifcico[649]: chat got "OK", continue
Apr  3 23:26:13 dragon ifcico[649]: chat got "CONNECT", continue
Apr  3 23:26:15 dragon ifcico[649]: start outbound EMSI session
Apr  3 23:26:16 dragon ifcico[649]: remote  address: 2:341/12@Fidonet
Apr  3 23:26:16 dragon ifcico[649]: remote  address: 2:34/777@Fidonet
Apr  3 23:26:16 dragon ifcico[649]: remote  address: 37:1/5001@TrekNet
Apr  3 23:26:16 dragon ifcico[649]: remote  address: 93:341/102@Subnet
Apr  3 23:26:16 dragon ifcico[649]: remote  address: 9:3410/23@Virnet
Apr  3 23:26:16 dragon ifcico[649]: remote  address: 9:3410/24@Virnet
Apr  3 23:26:16 dragon ifcico[649]: remote  address: 2:341/41@Fidonet
Apr  3 23:26:16 dragon ifcico[649]: remote  address: 37:1/5000@TrekNet
Apr  3 23:26:16 dragon ifcico[649]: remote password: SI_HOMBRE_COMO_QUE_TE_LA_VOY_A_DECIR
Apr  3 23:26:16 dragon ifcico[649]: remote     uses: FrontDoor [0c] version 2.20c.mL/BR000086
Apr  3 23:26:16 dragon ifcico[649]: remote   system: TIPTOP Gate R34 - TrekNet Gate (R34)
Apr  3 23:26:16 dragon ifcico[649]: remote location: Madrid !!!BASTA YA!!!
Apr  3 23:26:16 dragon ifcico[649]: remote operator: Enrique Lopez
Apr  3 23:26:16 dragon ifcico[649]: remote    phone: +341 5702555 341 5712437
Apr  3 23:26:16 dragon ifcico[649]: remote     baud: 28800
Apr  3 23:26:16 dragon ifcico[649]: remote    flags: V32B,V42B,V34,ARQ,FAX,CM,XA,LO
Apr  3 23:26:16 dragon ifcico[649]: remote tag: "FDREV" value: "[2MY4J]"
Apr  3 23:26:16 dragon ifcico[649]: remote     time: Apr 03 22:25:22
Apr  3 23:26:16 dragon ifcico[649]: start ZedZap send
Apr  3 23:26:19 dragon ifcico[649]: zmodem send: "0000015c.out" 2259 bytes
Apr  3 23:26:18 dragon ifcico[649]: zmodem send rc=0
Apr  3 23:26:18 dragon ifcico[649]: start ZedZap receive
Apr  3 23:26:19 dragon ifcico[649]: zmodem receive: "01165d15.pkt" 2259 bytes dated Apr 04 00:25:26 mode 100400
Apr  3 23:26:20 dragon ifcico[649]: received 2259 bytes in 1 seconds (2259 cps)
Apr  3 23:26:20 dragon ifcico[649]: zmodem receive: "49b0f5c0.mo0" 410408 bytes dated Apr 03 23:47:36 mode 100400
A

[...]
Apr  3 23:30:26 dragon ifcico[649]: zmodem receive rc=0
Apr  3 23:30:27 dragon ifcico[649]: got SIGHUP

</code>

Como véis, se parece mucho a un <it>log</it> de conexión de
FrontDoor. Así que supongo que lo entenderéis.

Si todo va bien, en el log aparecerá, después de la llamada, la
parte correspondiente al desempaquetado: vigilad el log, pues igual
surge algún error. De momento, como no habéis configurado las news, todos
los mensajes de ECHO se perderán, pero sí se entregarán los NETs. Todo
esto lo veréis con claridad en los logs.

Mucho ojo: vuestro sistema es desde ahora mismo una pasarela entre
Internet y FidoNet. O sea, si alguien envía un mensaje al usuario UUCP
de vuestro sistema, ifmail entenderá que la primera línea del mensaje
es un destinatario de Internet: como consecuencia, el mensaje lo mandará a
sendmail para que lo encole para Internet.

Llegado a este punto, lo típico es contactar con el Boss para que
compruebe si le ha llegado el NET, y si sus respuestas te llegan. Cuando
lo consigas, será el momento de pasar al siguiente capítulo.

<sect1> Acceso de otros usuarios al NET <p>

	Una de las ventajas de gestionar el correo de Fido desde Unix es la
posibilidad de que varios usuarios del sisteman usen la dirección Fidonet. Por
ejemplo, en mi sistema me pueden interesar las direcciones de fido,
Juan Jose Amor,2:341/12.19 y Jose Gomez Diez, 2:341/12.19 (un amigo mío
con cuenta en mi sistema).

	El problema es establecer la correspondencia entre nombres de usuario
de Fido (Jose Gomez Diez) y del sistema Unix (jfg).

	Con anteriores versiones de ifmail-tx, funcionaba el siguiente
truco: <tt>ifmail</tt> mantiene una base de datos <tt>dbm</tt> en 
<tt>/var/spool/ifmail/ifdbm.*</tt>. Dicha base de datos establece la relación
existente entre los nombres Fido y las direcciones de Internet. Cada vez que
<tt>ifmail</tt> recibe por Internet (desde <tt>sendmail</tt>) un mensaje para
Fido, obtiene del campo <tt>From:</tt> el nombre completo, si existe, y guarda
la relación en la base de datos. Cuando se recibe un mensaje desde Fido a este
nodo, se busca en la base de datos el nombre y si se encuentra, se entrega el
mensaje al usuario correspondiente a través de <tt>sendmail</tt>.

	Por lo tanto, la forma de establecer relaciones entre cuentas de Unix
y usuarios del nodo de Fido es simple: enviar un mensaje a otro usuario de
Fido desde esa cuenta. De este modo la base de datos recordará para siempre
el nombre del remitente del mensaje y la cuenta Unix asociada.

	Sin embargo, desde que actualicé mi sistema a RedHat 6.x, las
nuevas versiones del software instalado no soportan correctamente esta
característica, por lo que he tenido que utilizar el fichero
<tt>/etc/aliases</tt> para establecer correspondencia entre los
nombres de Fido y las cuentas, y modificar el fichero
<tt>/etc/sendmail.cf</tt> para que dirija a los buzones locales los
mensajes dirigidos al punto local.

	Si modificáis el fichero <tt>/etc/aliases</tt>, no os olvidéis de
ejecutar a continuación el comando <tt>newaliases</tt>.

<sect1> Traducción automática de códigos ISO a IBM-PC <p>

Como sabéis, en sistemas Unix se utiliza la tabla de códigos
ISO-8859-1 para extender el ASCII a caracteres especiales del idioma,
como acentos y eñes. En cambio, en sistemas basados en MS-DOS se suele
utilizar la tabla de la ROM del IBM-PC.

Posteriormente contaré cómo programar automáticamente la conversión
para las áreas de ECHO. Ahora os diré cómo conseguir ésta en los Nets,
un asunto que tenía pendiente en otras versiones del documento.

Se trata de algo simple: vuestros Nets deben incluir una nueva
cabecera, que diga: <tt>X-FTN-ORIGCHRS: IBMPC 2</tt> (para añadir a
vuestros mensajes nuevas cabeceras, usad algún programa de correo
avanzado como <it>Pine</it>). Esta cabecerá hará que ifmail (versión
<it>tx</it>) los convierta automáticamente de códigos ISO a IBM-PC. En
caso de recibir mensajes de fuera, siempre que se incluya la cabecera
de Fido <tt>CHRS: IBMPC 2</tt> se producirá automáticamente una conversión a
vuestra tabla ISO.

<sect> &Aacute;reas públicas (ECHO) <p>

Preparáos, porque viene lo peor :-) No obstante, si habéis llegado a
enviar y recibir correctamente los NETs, os considero capaces de
afrontar la siguiente fase.

Empezad por instalaros un sistema de noticias. Yo he instalado el más
moderno, INN. La gente dice que C-News es más sencillo. Si elegí INN
es porque viene como paquete estándar de la distribución RedHat de
Linux.

Uno y otro, utilizan ficheros de configuración parecidos. INN es más
potente pero más lioso cuando hay problemas. Intentaremos ver cómo
configurarlo todo para recibir el correo de Fido en las news. Antes,
os recomiendo que os iniciéis en el mundo de los servidores de
News. Una lectura interesante es la guía de administración de redes,
de Olaf Kirch, que también ha traducido <htmlurl
url="http://lucas.hispalinux.es/" name="el proyecto LuCAS">.

Si instaláis el paquete de la distribución de RedHat, os meterá
archivos de configuración en <tt>/etc/news</tt>, ficheros de grupos
activos en <tt>/var/lib/news</tt> y os creará el directorio
<tt>/var/spool/news</tt> con algún contenido.

<sect1> Retocar ifmail <p>

En el capítulo anterior nos olvidamos de las áreas de ECHO, con lo que
teníamos el fichero de áreas vacío. Vamos a rellenarlo ahora.

Para ello, añadid líneas como esta:

<tscreen><verb>
AVISOS.R34                fido.r34.avisos             fido
</verb></tscreen>

En cada línea, el primer campo es el nombre del área en Fido. El
segundo es el nombre del grupo de news donde vamos a guardar el
área. Y el tercero, es el tipo de <it>distribución</it> que le vamos a
dar (en general, se le da <tt>fido</tt> frente a <tt>world</tt> que se
le da a los grupos de USENET).

Si usáis la versión <tt>tx</tt> de <it>ifmail</it>, y escribís con acentos
y eñes, os recomiendo esta línea para cada área, en lugar de la anterior:

<tscreen><verb>
AVISOS.R34	fido.r34.avisos		fido	iso-8859-1	CP437
</verb></tscreen>

De esta forma vuestros mensajes de ECHO se exportarán con códigos del
IBM PC bajo
DOS, lo que facilitará su lectura a los usuarios de programas de correo bajo
este sistema operativo. Recordad que para los mensajes recibidos no
tenéis que tener en cuenta esto, ya que como os dije, la cabecera de
FIDO <tt>CHRS</tt> es interpretada automáticamente por vuestro
<it>ifmail</it> y prácticamente cualquier otro procesador de correo
Fido bajo Unix.

Una ultima cosa: aseguráos de que el usuario que ejecuta ifmail (fnet,
fido o el que sea) <it>también</it> pertenece al grupo
<tt>news</tt>. Si no es así, podría fallar el envío de mensajes de
ECHO al no poder acceder a ficheros generados por el gestor de news elegido.

<bf>Nota:</bf> En versiones más recientes de <it>ifmail-tx</it> existen dos
parámetros del fichero <tt>/etc/ifmail/config</tt> que establecen
las traducciones de tabla de caracteres por defecto. Comprobad si en vuestra
versión original del fichero aparecen los parámetros:
<code>
defaultftnchar          cp437
defaultrfcchar          iso-8859-1
</code>

<sect1> Activar las áreas en el INN <p>

Para que las áreas sean aceptadas en el INN (o C-News) hay que
incluirlas en el fichero <tt>/var/lib/news/active</tt>. Para la
anterior, por ejemplo, la línea a añadir sería:

<tscreen><verb>
fido.r34.avisos 0000000001 0000000001 y
</verb></tscreen>

Además, si la añadimos al fichero <tt>/var/lib/news/newsgroups</tt>
como sigue:

<tscreen><verb>
fido.r34.avisos            Avisos de R34
</verb></tscreen>

tendremos la descripción visible en programas lectores como
<tt>tin</tt> o <tt>xrn</tt>.

Ojo, no borréis de <tt>/var/lib/news/active</tt> o
<tt>/var/lib/news/newsgroups</tt> las áreas predefinidas (test, control,
junk, to y puede que alguna más) ya que posiblemente la versión que hayáis
instalado del <tt>inn</tt> las necesite y no funcione si desaparecen.

<sect1> Otros ficheros de configuración de INN <p>

En /etc/news habrá que preparar algunos ficheros:

<enum>
<item> <tt>hosts.nntp</tt> : Son los nodos que pueden conectarse a nosotros
para entregarnos news. Lo normal es poner aquí las líneas:

<code>
localhost:
dragon.micasa.es:
</code>

<item> <tt>expire.ctl</tt> : Fichero para expiración automática de
artículos. Permite borrar los artículos más antiguos. No me voy a
extender aquí en cómo se maneja, pues creo que entre el manual
expire.ctl(5) y el propio ejemplo que viene ya es suficiente :-) (y no
es imprescindible para que recibáis los mensajes).

<item> <tt>inn.conf</tt>: Aquí se pone el nombre de vuestro sistema
(el de vuestro punto, por ejemplo) y el de vuestro servidor de
news. En principio, el nombre que asignéis a la entrada
<tt>Organization:</tt> será el que se utilice como línea
<it>Origin</it> en Fidonet.

<item> <tt>nnrp.access</tt>: Este fichero debe dar autorización total
de lectura y escritura de artículos, al menos a vuestra
máquina. Lógico, ¿no?. Valdrán unas líneas como:

<code>

localhost:Read Post:::*
dragon.micasa.es:Read Post:::*

</code>

Si queréis podéis cambiar la palabra <tt>dragon</tt> por <tt>*</tt> y así
daréis acceso a todas las máquinas de vuestro dominio local. Será muy
interesante si tenéis varios sistemas en red local. :-)

<item> <tt>newsfeeds</tt>: Este es el fichero más importante. Es con
el que se decide qué grupos se exportan, y a qué nodo. Es el que
permite, que podáis tener grupos locales, grupos de news en USENET
(que se exportarán al servidor de news de vuestro proveedor, mediante
SUCK) y áreas de Fido (que se exportarán a vuestro nodo). Os voy a dejar un
fichero de ejemplo que aglutina estas tres posibilidades. En él se
supone que el proveedor tiene un servidor de news llamado
<tt>news.proveedor.es</tt> y que vuestro Boss es 2:341/12 de nuevo.

<code>

##  $Revision: 1.12 $
##  newsfeeds - determine where Usenet articles get sent
##  Format:
##	site[/exclude,exclude...]\
##		:pattern,pattern...[/distrib,distrib...]\
##		:flag,flag...\
##		:param

# Linea obligatoria

ME:*:::

# for NOV overview database, edit to put correct path to overchan
#OVERVIEW!:*:Tc,WO:/news/bin/overchan
OVERVIEW!:*:Tc,WO:/usr/lib/news/bin/overchan

# Grupos de Fidonet: Ninguno, excepto fido.*

f12.n341/f12.n341\
	:!*,fido.*\
	:Tf,Wfb\
	:

# Grupos de Internet: Todos excepto locales (de micasa) y fido.

news.proveedor.es/news.proveedor.es\
	:*,!fido.*,!micasa.*\
	:Tf,Wfm\
	:

</code>

</enum>

Bien, con esto creo que podemos poner en marcha el servidor de
news. Seguid las instrucciones (en el INN de RedHat es tan simple como
ejecutar <tt>/etc/rc.d/init.d/inn start</tt>. No es necesario
rearrancar el equipo. Si estaba corriendo ya con la configuración
antigua, podéis empezar por llamar al script anterior pero con el parámetro
<tt>stop</tt>.)

Una vez hecho esto, escribid con un lector de News en algún grupo
existente. Si escribís a un grupo de Fido deberá generarse un fichero 
<tt>f12.n341</tt> (o con otro nombre, según sea vuestro Boss) en el
directorio <tt>/var/spool/news/out.going</tt>. Dicho fichero contiene
referencias al mensaje que acabáis de escribir. Si lo hacéis a un
grupo de USENET, aparecerá un fichero <tt>news.proveedor.es</tt>, y
si lo hacéis a un grupo local, no aparecerá ninguno. Todo esto depende
del contenido del fichero <tt>/etc/newsfeeds</tt>.

Vigilad los logs en estas operaciones, para identificar y corregir
cualquier problema.

En los directorios de documentación de ifmail hay un script muy bueno
para empaquetar los mensajes para Fido y prepararlos para su
envío. Dicho script se llama <tt>send-ifmail</tt> y podéis instalarlo
en <tt>/etc/news</tt>. Según qué paquete de ifmail hayáis instalado, es
posible que el fichero anterior ya esté presente en <tt>/var/lib/news</tt>.

<sect1> Intentemos empaquetar y desempaquetar los mensajes <p>

Para probar el empaquetado, hay que ejecutar el mencionado programa
<tt>send-ifmail</tt> 
desde el usuario fnet. Os recomiendo que hagáis
que el usuario de ifmail (fnet) pertenezca también al grupo news, y
así os ahorraréis algunos problemas con los permisos.

La ejecución <tt>send-ifmail</tt> debe producir un fichero de nombre
parecido a <tt>0155000c.tmp</tt> en un directorio similar a
<tt>/var/spool/ifmail/fidonet/0155000c.opk/</tt>. Si no aparece, es
casi seguro que se debe a problemas con los permisos.

Al ejecutar a continuación <tt>ifpack</tt> se producirá el fichero
definitivo, comprimido, de nombre <tt>0155000c.XY0</tt> siendo XY las
iniciales del día de la semana en Inglés. Este fichero quedará en el
directorio <tt>/var/spool/ifmail/fidonet/</tt>.

Finalmente, cuando se llame a <tt>ifcico</tt> (vía <tt>ifpoll</tt>) el
paquete comprimido se enviará al Boss.

Lo mejor es incluir la llamada a <tt>send-ifmail</tt> en una tarea de
<it>cron</it> o bien en el propio script <tt>ifpoll</tt> justo antes
de la llamada a <tt>ifpack</tt>. El parámetro a incluir es el nombre del
nodo: en mi caso f12.n341.

Cuando tengamos un fichero empaquetado de prueba, podemos probar a
ejecutar <tt>ifunpack</tt> con el fin de comprobar que los mensajes
que hemos exportado en pruebas se entregan al sistema de News. En este
caso solo puede pasar tres cosas (a la vista de los logs):

<enum>
<item> Que salgan errores más o menos graves. Puede deberse a una
configuración incorrecta.
<item> Que se entreguen al grupo <it>junk</it> de news. Eso significa
que INN no reconoce los grupos, y se debe a que hay algún problema con
la definición de los grupos activos, o los nombres que figuran en el
fichero de áreas. También, con un paquete procedente del Boss, puede
deberse a algún mensaje que proceda de un área que no está activa en
las News, porque sea nueva o nos hayamos suscrito pero no hayamos
actualizado la configuración de las News.
<item> Que aparezca en los logs que han sido rechazados por INN. Esto
es lo normal: INN controla si un mensaje ha pasado por él ya y en este
caso es normal que lo rechace, puesto que es un mensaje que tú mismo
escribiste en el mismo servidor.
</enum>

<sect1> Y probemos a llamar al Boss <p>

Si habéis completado los pasos anteriores, empaquetando y desempaquetando
correo de prueba, dirigid mensajes a las áreas locales de tu BBS y
algún NET. La llamada a <tt>ifpoll</tt> deberá:

<enum>
<item> Empaquetar todo el ECHO pendiente y el NETmail.
<item> Llamar al Boss
<item> Enviar los ficheros
<item> Recibir los ficheros del Boss
<item> Desempaquetar, entregando los NETs como E-mail y los ECHO al
sistema de News
</enum>

Si algún paso falla, revisad los logs. En particular, ifmail a veces es
algo silencioso con problemas de permisos: si no puede acceder a un paquete
con correo pendiente, simplemente pasa de él y no lo envía, pero no
genera ningún error.

Esto me ha producido especiales dolores de cabeza con el envío de
mensajes ECHO: ifmail los ignoraba sin decir nada. Esto era porque no
había dado permiso de escritura al grupo <tt>news</tt> al directorio
<tt>/var/spool/news/outgoing</tt>, donde <tt>ifnews</tt> lee y
modifica lo que ha enviado por su cuenta.

Aquí ya no sé qué más decir. Si funciona, enhorabuena. Si no va, creo
que los logs deberían daros suficiente información como para
solucionarlo. Sé que es complicado (¡a mí me lo váis a decir!) y que
hay muchos archivos de log para vigilar, pero poco más podemos hacer
que trabajar cada uno por su cuenta...

<sect1> Cómo añadir áreas nuevas <p>

Recordaréis que con FastEcho (bajo DOS) se podía tener creación
automática de áreas cuando llegaba algún mensaje para áreas no
definidas. Aquí aun no lo he conseguido, con lo que el proceso de
suscripción al área conllevará algunas operaciones manuales:

<itemize>
<item> Añadir el área al fichero /etc/ifmail/Areas, con la notación
indicada antes.
<item> Añadir el grupo de news al fichero /var/lib/news/active como se
ha indicado antes.
<item> Añadir el grupo de news al fichero /var/lib/news/newsgroups
como se ha indicado antes.
</itemize>

Si el área es de USENET, en lugar de añadirla al fichero Areas de
ifmail, hay que añadirla, por ejemplo, al de configuración de SUCK.

<sect1> Algunas ideas sobre Suck <p>

<tt>Suck</tt> es posiblemente el programa más sencillo de configurar de todos
los que vamos a ver aquí. Aunque su finalidad nada tiene que ver con Fido, lo
cuento para facilitaros la integración de Internet (news) con Fido (áreas de
ECHO). Así de paso soy coherente con haberos facilitado la conexión entre
el correo de Internet y el de Fido, con <tt>sendmail</tt>.

Por el momento, <tt>suck</tt> no se distribuye como paquete de mi distribución
(RedHat). Ignoro si se distribuye como parte de otras como Debian o Slackware,
pero voy a suponer que os habéis bajado el archivo con las fuentes, y
concretamente la versión que yo uso (suck-3.4.1.tar.gz). ¿Os parece antiguo
y no lo encontráis? Pues lo siento, este es uno de los programas que ya
ofrecen toda la funcionalidad de interés en una versión de principios de 1997,
así que en ningún momento me ha parecido necesario migrar a otra más reciente.

Lo primero que tenéis que hacer es descomprimirlo y en el directorio que os
va a generar, ejecutar el script de preparación con la orden
<tt>./configure</tt>. Una vez preparado, compilad con la orden <tt>make
CFLAGS=-O2</tt>. Los binarios resultantes, instaladlos donde os
parezca (os aconsejo <tt>/usr/local/bin</tt>).

Ahora viene ponerlo en marcha. Aunque os voy a dar unas ideas, los usuarios
más avispados habrán notado que hay en la distribución un directorio
llamado «<tt>Spanish.docs</tt>». ¡Sí!, en efecto, trae toda la documentación
(incluidas las páginas del manual) traducidas a nuestro idioma. De modo que no
deberá liaros mucho este programa ...

Básicamente, configurarlo es tan simple como crear un fichero con los grupos
que quieres bajarte (un grupo por línea, seguido de un número 0, que
<tt>suck</tt> alterará cada vez que contacte con el servidor de noticias de
vuestro proveedor). Por ejemplo, este fichero podría ser:

<code>
comp.os.linux.announce 0
es.comp.os.linux 0
esp.comp.so.linux 0
</code>

Este fichero deberíais guardarlo entre las librerías modificables del sistema
de noticias local. El mejor sitio es <tt>/var/lib/news</tt>. Y el mejor nombre,
<tt>sucknewsrc.vuestro.servidor.de.news</tt>. Por ejemplo, el mío se llama
<tt>/var/lib/news/sucknewsrc.noticias.ibernet.es</tt>.

Luego, hay que ejecutar los programas que trae con una serie de parámetros de
forma que, primero se conecte al servidor de noticias de vuestro proveedor
y recoja las noticias pendientes introduciéndolas en un directorio
temporal (tal como <tt>/var/spool/news/in.coming/tmp</tt>). A continuación
otro programa le dirá a vuestro <tt>inn</tt> que recoja las noticias de
ese directorio y las distribuya en los grupos correspondientes. Por último,
otro programa debería enviar los artículos que habéis escrito vosotros al
servidor de noticias de vuestro proveedor. Esto se hará correctamente si
se ha configurado bien el archivo <tt>/etc/news/newsfeed</tt>.

Lo más indicado es usar o adaptar un script como este:

<code>

#!/bin/bash
#
# SUCK: realiza un suck(1) del servidor de news pasado como primer argumento.
#

# set -x 

if [ $# -ne 1 ] ; then
	echo "USO: SUCK nombre.server.nntp" ;
	exit 1
fi

NNTPHOST=$1
DIR_ACTIVE=/var/lib/news

DIR_INCOMING=/var/spool/news/in.coming/tmp
DIR_BATCH_IN=/var/spool/news/in.coming
DIR_BATCH_OUT=/var/spool/news/out.going


mv  $DIR_BATCH_OUT/$NNTPHOST $DIR_BATCH_OUT/${NNTPHOST}.out

/usr/lib/news/bin/ctlinnd flush $NNTPHOST

echo "Recibiendo mensajes desde $NNTPHOST"

	suck $NNTPHOST \
		-c \
		-dt $DIR_ACTIVE \
		-dm $DIR_INCOMING \
		-dd $DIR_ACTIVE \
		-p  .$NNTPHOST \
		-bi $DIR_BATCH_IN/${NNTPHOST}


echo "Enviando mensajes a $NNTPHOST"
	rpost $NNTPHOST \
		-M -S /tmp/rpost$$  \
		-b  $DIR_BATCH_OUT/${NNTPHOST}.out \
		-f /usr/lib/news/bin/filter.NNTP-Posting-Host $\$o=/tmp/FILTER_MSG \
		$\$i /tmp/FILTER_MSG

echo "Descargando mensajes"
	/usr/lib/news/bin/innxmit news.bsoft.org $DIR_BATCH_IN/$NNTPHOST
</code>

Lo mejor es que este script se instale en <tt>/usr/lib/news/bin</tt>.
Además, otro script, <tt>filter.NNTP-Posting-Host</tt>, deberá instalarse
en <tt>/usr/lib/news/bin</tt>. Este filtro evita que el servidor de noticias
del proveedor reciba vuestros mensajes como escritos desde vuestra máquina.
Cuando ésta no forma parte permanente de Internet, los artículos podrían
ser rechazados. Este script es una simple orden de <tt>sed</tt> que elimina
las líneas <tt>NNTP-Posting-Host</tt> y <tt>Xref</tt> de la cabecera,
y es el siguiente:

<code>

#!/bin/sh

# this is just a simple script to use sed to strip off the
# NNTP_Posting_Host and Xref headers that my ISP's newsfeed
# doesn't like.  this could be written as a one liner
# sed -e SEDCMD1 $1 | sed SEDCMD2 > $2

# set -x

if [ $# -ne 2 ]; then
        echo
        echo "Usage `basename $0` infile outfile <RETURN>"
        echo
        exit -1
fi

SEDCMD="/^NNTP-Posting-Host/d"
SEDCMD2="/^Xref/d"
OUTFILE=$2
INFILE=$1

if [ -f ${INFILE} ]; then

        sed -e ${SEDCMD} ${INFILE} | sed -e ${SEDCMD2} > ${OUTFILE}

        if [ $? -ne 0 ]; then
                echo "Error"
                exit -1
        fi

else
        echo "$1 does not exist"
        exit -1
fi

</code>

Ya solo queda ejecutar el script <tt>SUCK</tt> desde el usuario <tt>news</tt>
cuando estemos conectados a Internet y ... ¡que la fuerza os acompañe!

<sect1> Un lector de noticias para Fido <p>

	Ya os dije antes que para leer las áreas de ECHO valía cualquier 
lector de noticias. Entonces, ¿para qué seguir insistiendo? Bien, quien
lleve tiempo leyendo áreas de Fido con un lector tipo GoldED sabrá que
todos estos editores son más cómodos y adecuados para esta red... Es cierto
que se anuncia desde hace tiempo un GoldED para Linux, pero muy probablemente
manejará bases de mensajes clásicas de Fido (JAM por ejemplo) y no
creo que implante el protocolo del servidor de noticias.

Otro editor especial para Fido en Unix es el <tt>fmbedit</tt>, que forma
parte del paquete <tt>Feddi</tt>, que tan perfectamente bien mantiene Manuel
Soriano. Sin embargo este programa sigue orientado a manejar bases de
mensajes propias.

Lo mejor que he encontrado hasta la fecha es el lector de noticias
<tt>tin-1.3-unoff</tt>. En resumen, presenta las ventajas tradicionales
del <tt>tin</tt> como sencillo pero funcional lector de noticias; pero
además se han añadido mejoras orientadas a Fido: coloración automática
de las acotaciones, respuestas personalizadas, líneas de cabecera
<tt>X-Comment-To</tt> que a ifmail le sirven para dirigir un mensaje
público a una persona, etc.

Instaláos esa versión y fijáos en los ficheros de configuración que
trae de ejemplo para Fido. Acabará siendo vuestro lector preferido,
ya veréis :-)

<sect2> Slrn <p>

	Además de tin, también existe <tt>slrn</tt>. Es un lector de news
bastante completo, que se puede adaptar para reconocer (y exportar) las
cabeceras <tt>X-Comment-To</tt> mencionadas antes. Para ello, hay que crear
un fichero de «score», de «puntuación», que marque con puntuación máxima los
mensajes dirigidos a ti. Estos mensajes aparecerán con un símbolo de
admiración («!») a la izquierda.

	Para esto, hace falta añadir unas líneas como éstas al fichero
<tt>.slrnrc</tt>:

<code>
% Para que los nuevos mensajes vayan dirigidos a "All":
set custom_headers "X-Comment-To: All\n"
% Para que los mensajes de respuesta vayan con la cabecera X-Comment-To:
set followup_custom_headers "X-Comment-To: %r\n"
set reply_custom_headers "X-Comment-To: %r\n"

% Nombre del fichero de "score":
scorefile ".slrn-score"
</code>

Y ahora crearíamos un fichero <tt>.slrn-score</tt> tal que así:

<code>
[fido.*]
score: 9999
X-Comment-To: Perico\ Delos\ Palotes
</code>

La primera línea especifica el ámbito de la puntuación (es decir, en qué
newsgroups se va a aplicar). Las barras invertidas («\») en el campo
«X-Comment-To» son para «escapar» los espacios.

<bf>Nota: Esta sección sobre <tt>slrn</tt> ha sido escrita por
Roberto Suárez Soto, a quien podéis localizar para lo que sea en
<tt>rss-trgn@usa.net</tt>.</bf>

<sect> Referencias <p>

Voy a dar aquí algunos enlaces de Internet donde podéis encontrar más
información sobre el tema.

<itemize>
<item> <htmlurl
url="ftp://sunsite.rediris.es/pub/Linux/system/Mail/transport/fido/"
name="ftp://sunsite.rediris.es/pub/Linux/system/Mail/transport/fido/">,
un servidor de <it>ftp</it> donde encontraréis el software
<it>ifmail</it> en versiones de todo tipo, incluso como paquete
<tt>rpm</tt>.
<item> <htmlurl url="ftp://sunsite.rediris.es/pub/Linux/system/News" name=
"ftp://sunsite.rediris.es/pub/Linux/system/News"> : Este <it>sitio</it>
contiene software para gestionar y leer las noticias (INN, C-News, tin...).
No obstante
os recomiendo usar los paquetes que vienen con las distribuciones de Linux.
<item> <htmlurl url="ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff/" name="ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff/">,
lugar donde podréis encontrar el lector de noticias <tt>tin-unoff</tt>.
<item> <htmlurl url="ftp://sunsite.unc.edu/pub/Linux/system/news/transport"
name="ftp://sunsite.unc.edu/pub/Linux/system/news/transport">,
lugar donde se localiza, entre otros programas, el <it>Suck</it>.
<item> <htmlurl url="http://lml.ls.fi.upm.es/&tilde;jjamor/intropnt.txt"
name="http://lml.ls.fi.upm.es/&tilde;jjamor/intropnt.txt">, un documento
escrito por mí hace bastante, sobre cómo hacerse punto de Fidonet con
el software bajo MS-DOS.
<item> <htmlurl url="http://lucas.hispalinux.es/"
name = "http://lucas.hispalinux.es/">, servidor principal del Proyecto
LuCAS, donde encontrarás todo tipo de documentación sobre Linux en nuestro
idioma.
<item> Si sigues teniendo problemas después de leer todo esto ;-) aun
hay más documentación sobre <tt>ifmail</tt>: <htmlurl url="ftp://svpop.com.dist.unige.it/pub/Linux/ILS/Ifmail-HOWTO.tar.gz" name="ftp://svpop.com.dist.unige.it/pub/Linux/ILS/Ifmail-HOWTO.tar.gz">. Lo siento, aun nadie lo ha traducido
al castellano... ¿quién se anima? ;-)
</itemize>

Si queréis instruiros sobre <it>sendmail</it>, he aquí su biblia:
<tscreen><verb>
     Costales, Allman y Rickert
     `Sendmail'
     Ed: O'Reilly & Associates
</verb></tscreen>

<sect> Agradecimientos <p>

Hay mucha gente a la que agradecer desde aquí. Principalmente, a los
siguientes:

<itemize>
<item> A Ángel Jiménez Jiménez, quien, siendo el punto de Fidonet
2:345/207.7, me dedicó un extenso mensaje acerca de cómo había configurado su
sistema. Actualmente esa dirección pertenece a otra persona, y no sé
qué ha sido de Ángel :-(
<item> A <htmlurl url="mailto:rcamus@jet.es" name="Ramón Gutiérrez
Camus">, que fue quien me pasó sus ficheros de configuración con los
que empecé a trabajar.
<item> A <htmlurl url="mailto:ulusa@frodo.com" name="Urko Lusa">,
quien también se ha montado un tinglado parecido y me ha dado algunos
consejos (y además es un experto en mezclar armoniosamente los juegos
de caracteres para que todo el mundo se entienda :-) ).
<item> A <htmlurl url="mailto:rss-trgn@usa.net" name="Roberto Suárez Soto">,
quien ha escrito un par de capítulos de este documento.
<item> A todos aquellos que me han pasado desde la primera versión del
documento, allá por Abril; sus sugerencias que han contribuido a ampliarlo.
<item> Al <htmlurl url="http://www.fi.upm.es" name="Centro de
Cálculo"> de la Facultad de Informática de la Universidad Politécnica
de Madrid, por poner a nuestra disposición un fichero de configuración
del <tt>sendmail</tt> que más o menos parecía fácil de entender y modificar.
<item> A <htmlurl url="mailto:srtxg@linux.chanae.stben.be" name="Pablo
Saratxaga">, quien ha hecho las versiones <it>tx</it> de <it>ifmail</it>.
<item> Y, por supuesto, a Enrique López, el SysOp de CORBEN BBS
(2:341/12) y mi Boss desde que decidí hacerme punto. No creo que
conozca Sysop mejor, ni que me aguante más :-)
</itemize>

<sect> Historial de revisiones <p>

Este documento está vivo. ¡Se mueve! :-) A continuación os muestro la
historia de revisiones que ha sufrido este documento, para vuestra
información:

<itemize>
<item> Rev. 1.1 a 1.7: Versiones iniciales de ifmail-COMO, poco a poco
fui añadiendo mi experiencia personal con los distintos paquetes de
software, haciendo el documento cada vez mayor :-) La revisión 1.7 fue
publicada el 18 de abril de 1997.
<item> Rev. 1.8: Fue presentada el 15 de julio de 1998. El cambio a
RedHat 5.x me presentó nuevas versiones del software que tenían
comportamiento ligeramente distinto. En esta versión se reflejaron
estos cambios.
<item> Rev. 1.9: Fue presentada el 25 de diciembre de 1998. Se añaden
nuevas secciones aportadas por Roberto Suárez Soto, y se mejoran las
demás.
<item> Rev. 1.10: Presentada el 6 de diciembre de 1999. Se realizan
algunas correcciones estilísticas recomendadas por el grupo INSFLUG,
al tiempo que se actualiza el documento con nuevas peculiaridades
detectadas en el software utilizado para la versión 6.0 de RedHat.
Es el documento para el nuevo milenio :-)
</itemize>

<sect> Notas sobre el Copyright y todo eso <p>

Este documento es ... Copyleft, faltaría más ;-) Puede ser distribuido
libremente bajo licencia GNU. En consecuencia, podéis modificar lo que
queráis <bf>excepto</bf> esta sección que habla de los autores. De todas
formas, si lo modificáis será positivo decírmelo si queréis que vuestra
aportación la vea más gente.

El documento ha sido escrito por Juan José Amor Iglesias, en 1997. Incorpora
revisiones de 1998 y 1999, dos de ellas escritas por Roberto Suárez Soto,
tal como se indica en las correspondientes secciones.

El documento forma parte del LDP español, también conocido como Proyecto
LuCAS, dentro de los denominados «documentos cortos» o «COMOs», mantenidos
por el grupo INSFLUG, y coordinados por Francisco José Montilla. Su sitio
principal de distribución es <htmlurl url="http://www.insflug.org/"
name="http://www.insflug.org">. Su principal réplica se encuentra
en <htmlurl url="http://lucas.hispalinux.es/" name="http://lucas.hispalinux.es/">.

Aunque este COMO ya tiene de todo lo que quería ponerle, aun no lo voy a
considerar terminado. Principalmente porque tendrá fallos que me tenéis que
comentar los lectores. Además, siempre estará abierto a ampliaciones que
queráis proponer. Eso sí, prefiero que las ampliaciones me las deis
hechas :-)

Por último, declino toda responsabilidad acerca de los daños que el uso
de este documento, dentro o fuera de sus fines previstos, pueda causar
sobre vuestro disco duro, CPU, monitor o cualquier otra parte de vuestro
equipo informático; así como sobre vuestra cordura. Tampoco me hago responsable
de ningún altercado familiar ;-) Hay que advertirlo, nunca se sabe...

</article>
