por Guido Socher (homepage)
Sobre el autor:
A Guido le encanta UUCP porque es una solución que se
adapta perfectamente a Linux
Traducido al español por:
Carlos González Pérez (homepage)
Contenidos:
|
uucpssh.org: UUCP para fans de Linux
Resumen:
En el mundo gráfico el correo entrante se recibe vía POP3 o
IMAP y el correo saliente se envía directamente a través de SMTP. Esta
configuración puede causar todo tipo de jaquecas, especialmente
cuando se usan distintos ISPs a la vez.
UUCP es un protocolo antiguo pero realmente útil para enviar y
recibir correo electrónico. Es más, uucpssh.org ofrece características muy versátiles.
_________________ _________________ _________________
|
Introducción
uucpssh.org es una magnífica solución de gestión
de correo para los usuarios de Linux. Combina el transporte de
UUCP con la seguridad de SSH y ofrece además de esto
otras versátiles características.
El protocolo UUCP es un protocolo muy antiguo y fue originalmente
usado para copiar cualquier tipo de archivos entre sistemas Unix, de
ahí le viene el nombre "Unix to Unix Copy" (Copia de Unix a Unix).
Inicialmente, estos sistemas no estaban conectados permanentemente por red, en lugar de esto se conectaban con conexiones vía módem a intervalos de tiempo regulares. UUCP es ideal para
transportar cosas que trabajan en modo batch como lo son el correo electrónico o las noticias.
Hoy en día UUCP ya no se usa para el transporte de archivos en general. Sin embargo es todavía muy buen método para el correo, especialmente si se está frecuentemente en movimiento. Cuando se está conectado a una red inalámbrica en el
aeropuerto se puede enviar y recibir correo exactamente del mismo modo que desde la red de casa sin necesidad de cambiar ningún pequeño parámetro en la configuración.
La parte técnica
Veamos ahora cómo configurar el correo electrónico sobre UCCP a través de un
tunel SSH.
Para todos aquellos a los que les encantaría configurar esto
bajo XP o 98... necesitarán Linux. Es una solución
específica para sistemas Linux o Unix en general.
Un sistema de correo electrónico, consiste en general de MUAs (Agentes de Correo de
Usuario), el programa donde se escribe el correo y se lee, y los MTAs
(Agentes de Transporte de Correo) también conocido como Servidores de correo. Ejemplos de MUAs son mutt, Kmail, Thunderbird, etc... Los MTAs transportan el correo desde un equipo a
otro. Así como UUCP/SSH son protocolos de transporte, está claro que usaremos UUCP/SSH en esta solución para interconectar los MTAs.
En otras palabras configuraremos un servidor de correo local en nuestra máquina Linux para usar UUCP en lugar de SMTP para tanto el correo entrante como el saliente.
UUCP es el transporte y oculta el hecho de que el MTA no estará
siempre conectado a Internet. Tendremos cuidado de que el transporte de de correo se haga en modo batch.
Finalmente SSH es el protocolo que usaremos para encapsular UUCP y conectar a uucpssh.org.
Para usar uucpssh.org se necesita poseer un dominio completo
porque el ruteo se realiza con base en el nombre de dominio. El MTA local de la máquina Linux distribuirá luego para los distintos usuarios.
Aunque uucpssh.org distribuye inicialmente el correo con base en el nombre de dominio se tiene toda la flexibilidad necesaria para que cuando el sistema lo reparta a los distintos usuarios se puedan crear tantos alias como se necesiten.
¿Qué es un dominio MX?
Un nombre de dominio es algo como linuxfocus.org, eso probablemente se lo aclare a mucha gente. Para tener un dominio se necesita un DNS. Internet trabaja a nivel protocolo no con nombres, sino con números, direcciones IP. Un servidor DNS traduce un nombre en una dirección IP, luego ese número se usa para establecer la conexión entre los equipos (ej. servidores web o servidores de correo).
Si se quiere tener hosts físicamente diferentes para páginas web y FTP, habrá que darles diferentes nombres: linuxfocus.org y ftp.linuxfocus.org.
Sin embargo este no es el caso del correo, existe una entrada especial de DNS llamada MX (Mail eXchanger). Se pueden entonces tener las distintas páginas web en un único equipo (linuxfocus.org), y tener el correo en uucpssh.org, alcanzándolo también vía
linuxfocus.org (o [email protected]).
En otras palabras, cuando nos movemos a uucpssh.org movemos solo por el registro MX.
Configurándolo, apartado del MTA
Empezaremos con la configuración del MTA, en este artículo lo haremos con: Exim, Postfix y Sendmail.
Cualquiera de ellos son aptos para UUCP.
Exim 3
Añadir esto a la sección principal (arriba) en exim.conf:
trusted_users = uucp
primary_hostname = your.own.mail.domain
local_domains = your.own.mail.domain
en la sección de transporte añadir:
# Transport for uucp
uucp:
driver = pipe
user = nobody
command = "/usr/bin/uux -r - ${host}!rmail ${pipe_addresses}"
return_fail_output = true
Al comienzo (!) de la sección de ruteo añadir:
# Router for uucp (which domains are uucp domains):
# This must come before lookuphost!
uucphost:
transport = uucp
driver = domainlist
route_list = * uucpssh byname
Probar la configuración con el comando exim -bV y luego
reiniciar exim.
(/etc/init.d/exit restart)
Exim 4
Añadir a exim.conf las siguientes líneas:
trusted_users = uucp
primary_hostname = your.own.mail.domain
domainlist local_domains = your.own.mail.domain
domainlist relay_to_domains =
hostlist relay_from_hosts = 127.0.0.1
En la sección "transport" añadir:
# Transport for uucp
uucp:
driver = pipe
user = uucp
command = "/usr/bin/uux -r - ${host}!rmail ${pipe_addresses}"
path = /usr/local/bin:/usr/bin:/bin
return_fail_output
Al principio de la sección de ruteo añadir:
# Router for uucp (which domains are uucp domains):
# This must come at the beginning of the router section
uucphost:
transport = uucp
driver = manualroute
domains = ! +local_domains
route_list = * uucpssh byname
Probar la configuración con el comando exim -bV y reiniciar exim.
(/etc/init.d/exit restart)
Sendmail
Sendmail usa un sistema de configuración basado en el
pre-procesador m4. El sistema de configuración m4 puede no estar incluido en el paquete de Sendmail. Busque entre los CDs de su distribución, deberá instalar un paquete
llamado algo así como "sendmail-cf".
Cree un nuevo archivo sendmail-uucp.mc en el directorio cf para
sendmail (probablemente /usr/lib/sendmail-cf/cf):
#divert(-1)
# `This is config sends outgoing mail via uucp
#
# to generate a sendmail.cf out of this .mc file
# use the sendmail sources
# and run m4 thisfile.mc > sendmail.cf.'
divert(0)
include(`../m4/cf.m4')
VERSIONID(`UUCP, without DNS')
undefine(`BITNET_RELAY')
undefine(`DECNET_RELAY')
undefine(`UUCP_RELAY')
OSTYPE(`linux')
MASQUERADE_AS(your.own.mail.domain)
MASQUERADE_DOMAIN(localdomain)
MASQUERADE_DOMAIN(localhost)
# ` needed if you use an internal domain that does not exist: '
FEATURE(`masquerade_envelope')
FEATURE(always_add_domain)
# ` read allowed domains from cw file: '
FEATURE(use_cw_file)
FEATURE(local_procmail)
# `important for uucp:'
FEATURE(accept_unresolvable_domains)dnl
# `the /etc/passwd entry: mail:*:8:12:mail:/var/spool/mail:'
define(`confDEF_USER_ID',``8:12'')
define(`confSAFE_QUEUE',`True')
define(`confDELIVERY_MODE',`background')dnl
# 'replace mfic by the UUCP system name of your ISP:'
define(`SMART_HOST',uucp-uudom:uucpssh)dnl
define(`confSERVICE_SWITCH_FILE',/etc/service.switch)dnl
define(`confHOSTS_FILE',/etc/hosts)dnl
define(`UUCP_MAILER_MAX',1024000)dnl
MAILER(procmail)dnl
MAILER(local)dnl
MAILER(smtp)dnl
MAILER(uucp)dnl
Compílelo con el comando:
m4 sendmail-uucp.mc > sendmail.cf
Copie el archivo sendmail.cf file a /etc y reinicie Sendmail con:
/etc/init.d/sendmail restart
En el fichero /etc/service.switch debe tener:
hosts files
aliases files
Postfix
Puede consultar el FAQ de Postfix (http://www.postfix.org/faq.html#uucp-tcp)
acerca del uso de UUCP como transporte por defecto.
En el archivo /etc/postfix/main.cf añada:
relayhost=uucpssh
default_transport=uucp
y en /etc/postfix/master.cf debe tener la siguiente entrada:
uucp unix - n n - - pipe
flags=F user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
Configurándolo, apartado de UUCP
UUCP está disponible en http://www.airs.com/ian/uucp.html,
no obstante, antes de descargarlo de este sitio puede buscar en los CDs
de su distribución, la mayor parte de las distribuciones tienen
paquetes de este software. Si aún así quiere instalar el
software compilando desde el código fuente, debe saber que UUCP
(o al menos hasta la versión 1.07) utiliza convenciones de
nombre de ficheros un tanto raras, instala por ejemplo: los
ejecutables en /usr/lib/uucp. Todos los paquetes de las distribuciones
tienen solucionado este problema. Gentoo Linux instala para la
versión 1.06, los ficheros en los directorios adecuados
(/usr/bin, /usr/sbin, /etc/uucp), pero los compilados siguen fallando
en el path en algunos casos.
Describiré más profundamente unos cuantos trucos para
resolver problemas de instalación de UUCP.
Para la configuración de UUCP debe tener en el directorio
/etc/uucp/ al menos los siguiente archivos:
- config -- archivo de configuración general (este
fichero no es necesario si están correctamente establecidos los
paths en uucp)
- call -- "un archivo de claves" para que UUCP acceda a uucpssh.org
- port -- archivo de configuración para el tipo de
conexión que se realiza
- sys -- define todos los sistemas UUCP que su sistema debe conocer
En el mundo de UUCP, cada instalación debe tener un nombre, este nombre es analizado cuando dos sistemas UUCP enlazan en el principio de la comunicación. uucpssh.org es llamado uucpssh (todo en minúsculas) y el nombre de su sistema es el que define cuando crea una cuenta en uucpssh.org. En el siguiente ejemplo será mailtux.
Edite el fichero /etc/uucp/sys y añada al final:
system uucpssh
myname mailtux
time any
address main.uucpssh.org
port SSH
protocol t
remote-send /
remote-receive ~
chat ""
Edite el fichero /etc/uucp/port y añada al final:
port SSH
type pipe
command /usr/bin/ssh -C -x -o batchmode=yes [email protected]
Edite /etc/uucp/call y añada:
uucpssh mailtux your-random-string-get-it-from-uucpssh.org-admin-page
Ahora compruebe su configuración ejecutando el comando "uuchk".
Corrija todos los errores de síntaxis si fuese necesario.
Para reenviar correos a uucpssh.org usaremos SSH, y como usuario UUCP.
Asegúrese de que el usuario está definido en /etc/passwd con el nombre uucp y que tiene un directorio home válido.
Compruebe también que uucico tiene el bit s activo y que pertenece al usuario uucp. El programa, se ejecuta por cualquier usuario debe correr siempre como si fuese ejecutado por uucp. Lo mismo es válido para uux:
-r-sr-sr-x 1 uucp uucp 225008 Mar 7 2002 /usr/sbin/uucico
-r-sr-xr-x 1 uucp uucp 93920 Mar 7 2002 /usr/bin/uux
Configurándolo, apartado de SSH
Debemos ahora generar una clave DSA para SSH y subirla a la página de administración uucpssh.org. El cómo hacer esto
se describe en la página de administración. Lo
repetiré aquí:
- Become uucp user (su - uucp)
- Execute ssh-keygen -t dsa
- Do not give any password.
- upload the content of ~uucp/.ssh/id_dsa.pub to your uucpssh.org admin page
Probando
Enviar correo a alguien fuera de su equipo y comprobar que se ha encolado vía UUCP con el comando:
uustat -a
El correo debe haber terminado en los directorios
/var/spool/uucp/uucpssh/C./ y
/var/spool/uucp/uucpssh/D./ . Ejecute:
uulog -40
para ver lo que pasa. Compruebe los ficheros log en /var/log para su
gestor de correo y en /var/log/uucp para uucp. Estos archivos pueden
darle ideas si las cosas no funcionan. Si lo anterior no funciona,
entonces el fallo está en algún lugar de la
configuración de su MTA (servidor de correo).
Si la prueba anterior fue satisfactoría, compruebe la
conexión SSH. Acceda con el usuario uucp (su - uucp como
root) y ejecute:
ssh [email protected] -v
Acepte la llave RSA del servidor y deberá ver el propmt de uucp
(algó como "Shere...").
Finalmente comprobaremos el envío de nuestra cola de espera de
correo uucp con el comando:
/usr/sbin/uucico -x 11 -S uucpssh
El -x 11 añade la máxima cantidad de
información de depuración. Si algo va mal puede encontrar
ideas observando /var/log/uucp/Debug.
Para comprobar el correo entrante envíe un correo desde fuera a
[email protected]
y luego reciba el correo desde uucpssh.org con el comando:
/usr/sbin/uucico -x 11 -S uucpssh
Consulte de nuevo /var/log/uucp/Debug para resolver problemas. El
correo entrante es encolado al principio en
/var/spool/uucp/uucpssh/X./ y luego automáticamente enviado a su
MTA a través del comando
/usr/sbin/uuxqt y /usr/bin/rmail. Gentoo Linux tiene un error aquí: espera por uuxqt bajo /usr/lib/uucp/ y espera los archivos de configuración en /usr/conf/uucp. He resuelto estos
defectos específicos de Gentoo creando algunos enlaces simbólicos.
Compruebe el log de su MTA , debe observar que el correo se
recibió y se repartió para Ud.
Uso Diario
Una vez instalado correctamente no hay mucho que hacer. Solo ejecute:
/usr/sbin/uucico -S uucpssh
uulog -5
para intercambiar el correo con Internet. Yo prefiero tener control
total sobre lo que estoy ejecutando y lo hago manualmente via script,
pero Ud. puede también añadir:
/usr/sbin/uucico -S uucpssh
a /etc/ppp/ip-up y será ejecutado cada vez que se conecte
a Internet.
Referencias
¡Disfruta el correo UUCP!.
Formulario de "talkback" para este artículo
Cada artículo tiene su propia página de "talkback". A través de esa página puedes enviar un comentario o consultar los comentarios de otros lectores
<--, regresar al índice de este número
2004-03-10, generated by lfparser version 2.41