uucpssh.org: UUCP para fans de Linux

ArticleCategory: Hardware

SystemAdministration

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author + translation history. mailto: or http://homepage]

original in en Guido Socher

en to es Carlos González Pérez

AboutTheAuthor:[A small biography about the author]

A Guido le encanta UUCP porque es una solución que se adapta perfectamente a Linux

Abstract:

En el mundo Windows 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.

ArticleIllustration:

uucp mail

ArticleBody:

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 algo@linuxfocus.org).

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: 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 uucp@main.uucpssh.org
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 uucp@main.uucpssh.org -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 suIdentificador@su.nombre.de.dominio 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!.