25 septiembre 2008
Bienvenidos nuevos usuarios de Linux Fedora
Con este comandito ustedes se bajan las nuevas llaves para fedora yum -y install fedora-release.noarch instalenlo, no se asusten si ven que tienen por lo menos unos 500 o mas paquetes que actualizar, esto es normal debido a unos cambios que la comunidad de fedora tuvo que realizar por fuerza mayor.
10 septiembre 2008
F.E.A.R: First Encounter Assault Recon
Registrate y unete a los mas de cientos de felices usuarios "GAMERS", solo dame clic aca y podras bajarte todo tipo de video juegos para pc completos.
Descarga Fear Extraction Point (Expanción)
Registrate y unete a los mas de cientos felices usuarios "Gamers" dame clic aca y entra a descargar todos los juegos que quiras completamente gratis.
31 agosto 2008
Software Freedom Day 2008
Deceas saber mas acerca de los eventos de SFD, deceas saber de nuestra historia como LUG-NI visita este link
28 agosto 2008
Descargar Utorrent
(también conocido como uTorrent o microTorrent) es un cliente BitTorrent freeware escrito en C++ y traducido en 49 idiomas. El programa completo corresponde a un archivo ejecutable de 170 KiB, o 218 KiB (correspondiente a la versión 1.7.2 ).
Actualmente es uno de los clientes de BitTorrent más utilizados debido velocidad en las descargas y a los pocos recursos que consume.(también conocido como uTorrent o microTorrent) es un cliente BitTorrent freeware escrito en C++ y traducido en 49 idiomas. El programa completo corresponde a un archivo ejecutable de 170 KiB, o 218 KiB (correspondiente a la versión 1.7.2 ).
Actualmente es uno de los clientes de BitTorrent más utilizados debido velocidad en las descargas y a los pocos recursos que consume.
Para descargarlo haz cilc aqui02 agosto 2008
28 julio 2008
Tutorial de SendMail
- Tabla de contenidos
- Nota Introductoria
- Una Configuraci�n T�pica
- Conceptos
- Empezando
- Configuraci�n del sistema
- Sistema de configuraci�n M4
- El Procesamiento de los mensajes
- Administraci�n de la cola de Sendmail
- Dominios virtuales
- Enmascaramiento
- Sitios con m�s de un servidor
- Performance/Tuning
- Reglas y Rulesets
- Ejemplo: Ambiente de alta seguridad
- Ejemplo de configuraci�n de MUA
- Referencias
Este tutorial pretende dar una visi�n general del MTA Sendmail. Los ejemplos asumen un sistema Linux RedHat 7.X, 8.0 y 9.0, pero pueden extenderse a cualquier otro sistema operativo soportado.
El lector realmente interesado en conocer este MTA debe consultar la referencia [1], a partir de la cual se ha hecho este tutorial.
Nota Introductoria
Si tuviera que buscar un adjetivo para calificar a Sendmail, pensar�a en "excesivo". Excesivo puesto que este programa intenta -y puede- satisfacer las necesidades de una audiencia extremadamente amplia... incluso, de una audiencia que hace a�os ha desaparecido.
En general, cuando un programa es "m�s y m�s flexible", los usuarios deben pagar el precio de "m�s y m�s complejidad" para asimilar toda aquella flexibilidad. Sendmail permite configurar aspectos que normalmente yacen ocultos en el c�digo compilado de otros programas similares... aspectos que en la pr�ctica diaria ya casi nadie usa.
Es por eso que usar Sendmail suele ser una experiencia desconcertante... desde el inicio y hasta el final. Y en ese sentido tengo que admitir que este peque�o texto tambi�n puede serlo, pese a que he procurado que no ocurra as�.
Sendmail es calificado de "inseguro", y con justa raz�n. Tiene una larga historia de "vulnerabilidades" que han conminado a algunos administradores a optar por soluciones supuestamente m�s seguras como postfix y qmail. En favor de Sendmail s�lo tengo que indicar que sus creadores han venido haciendo grandes esfuerzos para que esto cambie, y ciertamente los �ltimas versiones han consistido esencialmente en mejoras en esa direcci�n.
Un �ltimo adjetivo para Sendmail podr�a ser "legendario", en el sentido que es una de las utilidades m�s antiguas de los sistemas Unix, se proporciona en pr�cticamente todas sus variantes (y tambi�n en Linux), es el servidor de email m�s utilizado a nivel mundial, y sorprendentemente es a la vez una de las utilidades menos "dominadas" por los administradores debido a lo antes indicado - as� como a una muy deficiente documentaci�n!
C�mo se ha confeccionado este texto
En la medida que tengo costumbre de usar vi, pero no tengo costumbre de escribir y recordar los extensos y variados tags de Docbook, he usado mi script "QDK" disponible en Sourceforge a fin de generar el SGML respectivo. Recomiendo su uso al lector que est� acostumbrado a escribir Docbook directamente.
Una Configuraci�n T�pica
Empezaremos con una descripci�n general de los pasos que se requieren en una configuraci�n t�pica de Sendmail.
Los lectores que no disponen de absolutamente ninguna experiencia con Sendmail deber�an pasar previamente por la secci�n denominada "Conceptos".
Escenario
La gran mayor�a de sitios peque�os en Internet puede usar la configuraci�n que proporciona RedHat en forma autom�tica. Es el caso t�pico de una organizaci�n que disponde de un �nico servidor de correo electr�nico con conexi�n directa a Internet, y que posee un dominio tal como "laorganizacion.org".
Asumiremos que el servidor de correo designado se llama "correo.laorganizacion.org" y no consideraremos detalles de seguridad como firewalls y redes DMZ.
Asumiremos tambi�n que nuestros clientes son las estaciones de trabajo que se conectan con alg�n cliente de correo est�ndar como "Outlook Express", "Mozilla", etc.
Configurar el DNS
Asumiremos que las direcciones de correo de nuestros usuarios son de la forma "usuario@laorganizacion.org". En ese caso, en el archivo de configuraci�n de la zona "laorganizacion.org" deber� inscribirse el siguiente registro MX:
@ 1D IN MX 0 correo |
Configurar las opciones del puerto SMTP
En RedHat 7.x, 8, 9 (y quiz� futuras versiones), Sendmail viene por defecto configurado para aceptar s�lo conexiones locales; es decir, no recibir� ning�n mensaje que llege desde el exterior.
Esto no sirve de mucho en ambientes t�picos de red, por lo que editaremos el archivo /etc/mail/sendmail.mc y modificaremos la siguiente l�nea:
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA') |
DAEMON_OPTIONS(`Port=smtp, Name=MTA') |
# cd /etc/mail |
An�logamente, en RedHat 7.x se modificar� el archivo redhat.mc.
Configurar el archivo /etc/hosts
Asegur�monos de que existan las siguientes DOS l�neas, y que tengan un contenido como a este:
127.0.0.1 localhost |
Configurar el archivo local-host-names
Como nuestras direcciones son "usuario@organizacion.org", nuestro servidor debe asumir como SUYOS todos los mensajes dirigidos a "@organizacion.org". Esto se consigue escribiendo "organizacion.org" en el archivo /etc/mail/local-host-names:
organizacion.org |
Permitir el relay a nuestros clientes
Asumiremos que las estaciones de nuestra organizacion est�n contenidas en la subnet "1.2.3.0". En ese caso, a�adiremos la siguiente l�nea al archivo /etc/mail/access:
1.2.3 RELAY |
# cd /etc/mail |
bash# cd /etc/mail |
Configurar servicios POP / IMAP
Estos dos servicios provienen del paquete "imap*.rpm". Se deber�n activar con el comando ntsysv o chkconfig (basta con uno de ellos.) Por ejemplo, para el �ltimo caso:
bash# chkconfig --level 345 ipop2 on |
Luego se deber� recargar la configuraci�n de xinetd:
# service xinetd reload |
Ahora todo est� listo por el lado del servidor.
Pruebas con el cliente "mail"
En los sistemas Linux el comando mail permite enviar y leer mensajes de correo electr�nico mediante Sendmail. Por ejemplo, para enviar un mensaje a una cuenta exterior de test:
[diego@edithpiaf diego]$ mail test_user@yahoo.com |
[pedrito@correo pedrito]$ mail |
# tail -f /var/log/maillog |
V�ase el ap�ndice intitulado "Ejemplo de configuraci�n de MUA" si requiere una idea acerca de c�mo se configura un cliente gr�fico de correo electr�nico.
Conceptos
Esta secci�n proporciona una serie de conceptos que se utilzar�n en lo que sigue.
Programas Involucrados
MUA/Cliente
El Mail User Agent o Cliente de correo electr�nico es un programa que ejecutan los usuarios para leer y escribir sus mensajes. En la mayor�a de casos se ejecuta en un computador personal. Este programa normalmente enviar� los nuevos mensajes redactados por el usuario al servidor de la organizaci�n/proveedor, y descargar� los mensajes pendientes para lectura del usuario desde el servidor de la organizaci�n/proveedor.
MTA/Servidor
El Mail Transfer Agent se encarga de enviar (y reintentar de ser necesario) los mensajes redactados por los usuarios de la organizaci�n. Igualmente, recibe los mensajes dirigidos a usuarios de la organizaci�n y los coloca en sus respectivas "casillas de correo" para su posterior lectura.
Protocolos
SMTP
El Simple Message Transfer Protocol se emplea para enviar mensajes de correo electr�nico entre servidores. En muchos casos, el programa cliente de correo electr�nico remite un nuevo mensaje al servidor usando tambi�n SMTP.
POP
El Post Office Protocol permite a los programas clientes de correo electr�nico extraer los mensajes pendientes en las casillas de correo del usuario para que �ste los pueda visualizar.
IMAP
El Internet Message Access Protocol, al igual que POP, permite a los programas clientes de correo electr�nico extraer los mensajes pendientes en las casillas de correo del usuario para que �ste los pueda visualizar. Tiene caracter�sticas adicionales a las proporcionadas por POP.
DNS
El Domain Name System permite que los mensajes de correo electr�nico sean dirigidos al servidor correspondiente en el Internet. En particular, a partir de una direcci�n de correo electr�nico de destino en un mensaje, se puede encontrar la direcci�n IP del computador que debe recibir dicho mensaje.
Mensajes
Header (cabecera)
Esta es una secci�n informativa que contienen todos los mensajes y que contiene datos relacionados a su env�o, tales como el nombre y direcci�n electr�nica del creador del mensaje, la lista de destinatarios, la fecha de env�o, los servidores intermedios por donde el mensaje ha pasado, etc.
Envelope (sobre)
Contiene informaci�n usada para enrutar los mensajes, tal como los destinatarios inmediatos. Esta informaci�n normalmente tiene coincidencias con algunos componentes del header.
Attachment
Los archivos que no se componen de texto ASCII pueden ser enviados si primero se codifican como texto ASCII y se a�aden ordenadamente a un mensaje normal. Estos a�adidos al mensaje se denominan attachments.
Casilla del usuario
Los usuarios de correo electr�nico no est�n conectados a la red durante todo el d�a, y lo mismo ocurre con sus computadores. Debido a esto, los mensajes que est�n dirigidos a ellos normalmente se almacenan en un �rea temporal denominada "casilla de correo" a la espera de que el usuario la extraiga cuando est� listo.
Empezando
Instalaci�n
RedHat Linux
En los sistemas Linux RedHat, el servidor Sendmail se distribuye mediante el paquete "sendmail". Sin embargo, se har� bien en instalar otros paquetes adicionales tales como sendmail-cf y sendmail-doc, que proporcionan herramientas de configuraci�n y documentaci�n adicional, respectivamente. Adicionalmente se requerir� el paquete "m4".
La instalaci�n en RedHat, como de costumbre, se har� mediante el comando RPM (o durante la instalaci�n del sistema operativo, eligiendo "Mail Server" entre las opciones.) Aqu� no explicaremos el comando RPM y nos limitaremos a mostrar c�mo se puede verificar si los paquetes han sido instalados:
bash# rpm -qa|grep sendmail |
La version de los paquetes indicados arriba puede ser distinta dependiendo de la versi�n de RedHat. El ejemplo anterior se refiere a una instalaci�n RedHat 7.1.
Otros Sistemas Operativos
En casi todos los sistemas operativos Linux y Unix principales, Sendmail se distribuye por el mismo proveedor (posiblemente con algunas alteraciones.) En estos casos el m�todo de instalaci�n de paquetes puede variar, y se deber� consultar la documentaci�n respectiva.
Desde la fuente
En RedHat y cualquier otro sistema operativo, siempre existe la posibilidad de descargar el c�digo fuente de Sendmail a fin de compilarlo e instalarlo manualmente. En este caso deber� descargarse el archivo ".tar" de:
ftp://ftp.sendmail.org/pub/sendmail/ |
Probando Sendmail
Asumiremos que Sendmail ya ha sido instalado. Para verificar la instalaci�n y obtener cierta informaci�n b�sica, usaremos el siguiente comando, cuyo resultado se muestra para mi computador:
# sendmail -d0.1 -bt |
N�tese que este comando ha sido ejecutado por el administrador. Los usuarios normales normalmente deber�n especificar la ruta completa del ejecutable "sendmail" a fin de obtener algo similar:
[diego@edithpiaf diego]$ /usr/sbin/sendmail -d0.1 -bt |
La opci�n "-bt" significa "modo de test", y el "-d0.1" significa "debug de aspectos generales (el cero), en nivel 1". Al modificar el nivel de debug se puede obtener m�s informaci�n. Por ejemplo, el lector podr�a observar la salida que presenta el comando anterior con "-d0.15".
Inicio autom�tico
Como se aprecia, el servidor "sendmail" puede ser invocado en modo interactivo con diversos prop�sitos, sin embargo, lo usual es que opere en forma "no interactiva", o como se suele decir en sistemas Unix, como un "demonio". Por lo general esto es configurado en los scripts de inicio del sistema operativo de modo tal que el "demonio sendmail" se inicie en forma autom�tica cada vez que el computador es iniciado.
En un sistema RedHat Linux (versiones 7 en adelante) se puede emplear el comando "service" para invocar a estos scripts en cualquier momento. Por ejemplo, para consultar acerca del estado actual del servicio Sendmail:
[root@edithpiaf root]# service sendmail status |
[root@edithpiaf root]# service sendmail start |
[root@edithpiaf root]# service sendmail stop |
bash# /etc/rc.d/init.d/sendmail start |
bash# /etc/init.d/sendmail start |
bash# /sbin/init.d/sendmail start |
Para que esto se ejecute autom�ticamente cuando el sistema se inicia, en RedHat se suele emplear los comandos ntsysv o chkconfig.
El log
Sendmail, como cualquier programa relacionado con el correo electr�nico, genera mensajes de eventos (logs) mediante syslog. En los sistemas RedHat normalmente syslog est� configurado para enviar los mensajes hacia el archivo /var/log/maillog. Cuando se hacen pruebas con Sendmail es muy conveniente tener una ventana o terminal abierta mostrando el log:
# tail -f /var/log/maillog |
Configuraci�n del sistema
Dividiremos esto en dos partes: configuraci�n del host y configuraci�n de programa Sendmail.
Configuraci�n del host
A continuaci�n algunos aspectos muy importantes relacionados al sistema operativo donde Sendmail se ejecutar�. Esto NO es propiamente la configuraci�n de Sendmail, pero �ste requiere interactuar con diversos elementos del sistema operativo.
DNS
A fin de poder enviar mensajes a destinatarios remotos, Sendmail debe ser capaz de obtener la informaci�n necesaria de un servidor DNS. Incluso en una red local puede ser conveniente el empleo de un servidor DNS.
Si se desea desactivar completamente el uso del servidor DNS (por ejemplo, si nunca se saldr� a Internet) entonces se debe recompilar Sendmail con las opciones apropiadas (no explicaremos esto aqu�.)
En la mayor�a de computadores Unix/Linux, la direcci�n del servidor DNS que usan las aplicaciones se configura en el archivo /etc/resolv.conf. Por ejemplo, si su servidor DNS m�s cercano (el de la organizaci�n o el que ha proporcionado su proveedor) tiene direcci�n ip 100.2.3.4, entonces el archivo "resolv.conf" del computador destinado para ejecutar Sendmail debe lucir as�:
nameserver 100.2.3.4 |
Por otro lado, a fin de que nos puedan enviar mensajes desde el exterior a nuestro servidor de correo, requerimos administrar un dominio (el dominio de la organizaci�n.) Esto implica que habr� un servidor DNS (posiblemente dentro de nuestra organizaci�n o administrado por un proveedor) que contenga la configuraci�n de nuestra zona.
Si el dominio de nuestra organizaci�n es "laorganizacion.org", es frecuente definir que las direcciones de los usuarios locales tendr�n la forma "usuario@laorganizacion.org". En algunos lugares, prefieren direcciones similares a "usuario@mail.laorganizacion.org" aunque esto es a gusto de la organizaci�n.
Esto debe reflejarse en la configuraci�n de nuestro dominio en el servidor DNS. Asumiendo que el servidor DNS que administra nuestra zona usa el software BIND, (puede ser cualquier otro) el archivo de la zona "organizacion.org" deber�a contener al menos estas l�neas para que las direcciones de formato "usuario@laorganizacion.org" llegen al servidor.
@ 1D IN MX 0 correo |
mail 1D IN MX 0 correo |
N�tese que esto �ltimo se har� muy probablemente en un computador distinto al que ejecuta Sendmail.
Archivo hosts
El archivo /etc/hosts es complementario al sistema DNS. Para su correcta operaci�n Sendmail normalmente requiere que el computador en que se ejecuta tenga una configuraci�n como la siguiente:
127.0.0.1 localhost |
La direcci�n IP suministrada debe coincidir con lo que se configur� en el DNS, y el nombre del host debe ser "full", es decir, debe incluir el nombre del dominio.
Hostname
El nombre del computador donde se ejecuta Sendmail debe corresponder a lo configurado en el DNS y el archivo hosts. Lamentablemente, la configuraci�n de este par�metro var�a de sistema en sistema. Por ejemplo, en RedHat, la configuraci�n del hostname se efect�a en el archivo /etc/sysconfig/network en la variable HOSTNAME.
[root@edithpiaf root]# cat /etc/sysconfig/network |
Configuraci�n del programa Sendmail
Sendmail es extremadamente configurable -aunque no necesariamente de un modo sencillo. Para esto posee un archivo de configuraci�n principal que en RedHat 8 es:
/etc/mail/sendmail.cf |
/etc/sendmail.cf |
/var/adm/sendmail/sendmail.cf |
Este archivo de configuraci�n de aqu� en adelante ser� llamado el archivo "cf" por la extensi�n de su nombre.
Como quiz� ya haya observado el lector, el archivo "cf" tiene una sintaxis poco intuitiva, y ha sido dise�ado principalmente para que el computador lo lea de un modo eficiente (mas no los humanos.)
El archivo "cf" define generalmente la ruta de otros archivos de configuraci�n auxiliares que evitan la modificaci�n directa del primero, simplificando la administraci�n de Sendmail.
En las �ltimas versiones de sendmail (8.12 o superiores) es usual que se configure el servidor para que se ejecute "dividido" en dos programas complementarios a fin de elevar la seguridad del sistema. La siguiente salida (recortada) de RedHat Linux 8.0 ilustra esta idea:
# ps axuw|grep sendmail |
/etc/mail/submit.cf |
Sistema de configuraci�n M4
Motivaci�n
Si el lector tuvo curiosidad de listar el archivo "cf", habr� notado seguramente que �ste tiene una sintaxis muy poco intuitiva. Este problema no ha pasado desapercibido para los desarrolladores de Sendmail (aunque la cura quiz� haya resultado peor que la enfermedad:)
A fin de facilitar la configuraci�n de Sendmail para los usuarios ocasionales y los administradores en general, existe un mecanismo complementario que evita la escritura y modificaci�n directa del archivo "cf". Este mecanismo consiste en escribir un archivo relativamente sencillo usando la sintaxis del lenguaje "M4", el cual se proporciona en pr�cticamente todos los sistemas Unix/Linux (a veces como software opcional.)
Mediante este sistema, el usuario crear� (o modificar�) un archivo relativamente breve, el cual se traducir� en muchas l�neas del archivo "cf".
Lo cierto es que es absolutamente impr�ctico escribir "desde cero" un archivo "cf" medianamente utilizable, as� que el m�todo M4 es una opci�n casi obligatoria.
Regenerando el archivo "cf"
Antes de hacer modificaciones, es recomendable conocer c�mo se gener� el archivo "cf" proporcionado por el sistema. Normalmente �ste proviene de un archivo tipo "M4". Lamentablemente esto no es v�lido en todos los casos, y las rutas de los archivos involucrados son muy variables.
En RedHat 8 el archivo "cf" distribuido (/etc/mail/sendmail.cf) se puede regenerar en cualquier momento a partir del archivo (/etc/mail/sendmail.mc) que usa la sintaxis "M4". Esto se puede hacer con el siguiente comando:
# cd /etc/mail |
En RedHat 7 la secuencia es parecida, aunque los directorios difieren:
bash# cd /usr/share/sendmail-cf/cf |
En otros sistemas Unix/Linux (incluso RedHat en versiones anteriores) el archivo sendmail.mc puede tener un nombre distinto y una ubicaci�n distinta, y habr� que ver la documentaci�n respectiva. Por ejemplo, en RedHat 7 se llamaba redhat.mc y se ubicaba en /usr/share/sendmail-cf/cf.
Incluso puede ser que este archivo simplemente no exista y haya que generar uno nuevo. En ese caso Ud. deber� ubicar primero el directorio "cf" de Sendmail y crear un archivo (le llamaremos prueba.mc) tal como:
include(`../m4/cf.m4') |
bash# ls ../ostype/ |
bash# m4 prueba.mc > /etc/sendmail.cf |
Volviendo a Linux RedHat, los archivos "M4" usados por Sendmail se proporcionan en el paquete "sendmail-cf". Obviamente requerir� tambi�n el paquete "m4" para poder usarlo. En otros sistemas Unix/Linux el software "M4" puede ser opcional o parte de las herramientas de desarrollo.
En Linux RedHat 8.0 y superiores, es tambi�n posible regenerar el archivo "submit.cf" a partir de:
# cd /etc/mail |
Configuraci�n con M4
El sistema M4 de Sendmail permite generar configuraciones para distintos prop�sitos as� como alterar opciones bastante puntuales. A modo de ejemplo, el par�metro que controla el "tiempo de alerta" de un mensaje en cola (no se preocupe si no entiende esto, es s�lo un ejemplo), se configura con M4 mediante una l�nea como la siguiente:
define(`confTO_QUEUEWARN',`2h') |
O Timeout.queuewarn=2h |
` y ' |
En resumen, mediante la sintaxis (simple) de "M4", se puede regenerar un archivo en la sintaxis (compleja) del "cf". Recu�rdese que al final, el programa Sendmail s�lo utilizar� el archivo "cf".
En lo que sigue, presentaremos la configuraci�n de Sendmail empleando ambos m�todos cuando sea posible, pero se preferir� el m�todo M4. Como se indic�, algunas directivas del m�todo "M4" se traducen a una gran cantidad de complejas directivas del archivo "cf", el cual resulta impr�ctico.
El Procesamiento de los mensajes
Los mensajes de correo electr�nico tienen principalmente dos tipos de procesamiento:
Local: Cuando el destinatario es un usuario perteneciente a nuestro servidorde correo electr�nico
Remoto: Cuando el destinatario est� ubicado en otro servidor
Estas "rutas" de env�o de mensaje se suelen denominar "mailers" y son implementadas por "delivery agents".
Env�os locales
Sendmail normalmente determina si un mensajes es local cuando la direcci�n de destino contiene s�lo un nombre de usuario (por ejemplo, "diego".) Asimismo, cuando la direcci�n de destino contiene un host que coincide con el "hostname" del servidor. Por ejemplo, en la direcci�n "diego@correo.caligula.net" el host especificado (lo que sigue a la @) es "correo.caligula.net"; si este coincide con el hostname del computador, entonces el mensaje debe ser considerado local.
Una excepci�n (extremadamente com�n) a lo �ltimo consiste en forzar que ciertas direcciones sean tratadas como locales. Para esto, el usuario generalmente configurar� el archivo /etc/mail/local-host-names con los nombres de host considerados "locales" o "sin�nimos" del host local. Por ejemplo, para que el mensaje con destino "diego@neron.org" sea tambi�n considerado local, habr�a que incluir en el archivo /etc/mail/local-host-names:
neron.org |
En otros sistemas el nombre del archivo de configuraci�n local-host-names puede variar. Para averiguar o verificar esto, debemos consultar la documentaci�n o en �ltimo caso el archivo "cf":
# grep "^Fw" /etc/mail/sendmail.cf |
Si se dispone del archivo "M4" que dio origen al "cf", deber�amos buscar all� una l�nea tal como:
FEATURE(`access_db',`hash -T |
Sin embargo, esta configuraci�n tambi�n puede hacerse en el mismo archivo "cf" con el comando "class-macro-w" (clase w.) Por ejemplo, las siguientes l�neas muestran que las direcciones terminadas en "@localhost" y "@localhost.localdomain" tambi�n son consideradas locales.
# grep "^Cw" /etc/mail/sendmail.cf |
Los env�os locales conllevan a que los mensajes sean almacenados en la "casilla de correo" del usuario destinatario. El usuario deber� extraer estos mensajes con su programa "cliente", posiblemente mediante los protocolos IMAP o POP como se ver� despu�s.
La casilla de correo (inbox) es simplemente un archivo cuyo nombre coincide con el del usuario y se ubica en el directorio /var/spool/mail (como siempre, esto puede variar en otros Unix.) Como veremos, Sendmail no escribe directamente en este archivo y por tanto no es parte de su configuraci�n.
Definici�n del env�o local
Como se indic�, el env�o local conlleva a que el mensaje sea guardado en el archivo "inbox" o "casilla de correo". Sin embargo, Sendmail no realiza directamente este trabajo, sino que invoca a un programa auxiliar para esta tarea (aparentemente sencilla.)
Esto se configura en el archivo "cf" con la definici�n "Mlocal" (mailer local.) En el archivo "cf" de RedHat 8.0, esta secci�n luce as�:
Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, |
Como se aprecia, Sendmail utiliza un programa auxliar llamado /usr/bin/procmail para el delivery local. En muchos sistemas Unix el programa usado es /bin/mail. No profundizaremos m�s sobre esto por ahora, pero en general "procmail" es mucho m�s flexible y eficiente que las alternativas tradicionales.
Env�os Remotos
Sendmail tiene la capacidad de hacer env�os remotos usando el protocolo SMTP (que opera usando TCP/IP.) En este caso, Sendmail no emplea un programa auxiliar como en los env�os locales.
Cuando un mensaje no puede ser enviado a uno de los destinatarios, el mensaje es "encolado" para un posterior reintento.
Para efectuar el env�o remoto, Sendmail requiere que los destinatarios del mensaje posean una "parte de host" distinta al hostname local (o a sus sin�nimos de la clase-w, como se vio en la secci�n anterior.)
Sendmail normalmente utilizar� el DNS a fin de encontrar el servidor remoto que recibir� el mensaje (espec�ficamente, el registro MX y el registro A) y abrir� una conexi�n SMTP.
El archivo "cf" define este env�o con una l�nea como la que sigue.
Msmtp, P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, |
De estos ejemplos se puede apreciar que las definiciones de los "mailers" o "agentes de delivery" siempre empiezan con el comando "M", inmediatamente seguido por el nombre del "mailer".
Administraci�n de la cola de Sendmail
Conceptos
Los mensajes que procesa Sendmail muchas veces no pueden ser enviados a su destino en forma inmediata. Por ejemplo, la l�nea que conecta nuestra organizaci�n a Internet puede estar detenida, o el mail server remoto puede haberse tornado inaccesible.
En estos casos Sendmail "encolar�" el mensaje a fin de intentar hacer posteriores reintentos a intervalos predefinidos. Cumplido cierto tiempo, Sendmail desistir� de reintentar y el env�o se considera fallido (el usuario que env�a recibe una notificaci�n.)
En RedHat 8 la cola de Sendmail se localiza en el directorio /var/spool/mqueue. Cada mensaje se compone de dos archivos (con prefijo "qf" y "df") que corresponden, respectivamente, al "archivo de control" y el "archivo de datos". El archivo de control contiene informaci�n respecto al env�o del mensaje, particularmente el header. El "archivo de datos" contiene el cuerpo del mensaje.
El directorio de cola se configura en el archivo "cf" del siguiente modo:
O QueueDirectory=/var/spool/mqueue |
define(`QUEUE_DIR',`/var/spool/mqueue') |
Temporizaci�n del queue run
El "queue run" corresponde a un intento repetitivo que hace Sendmail para enviar los mensajes que por alg�n motivo quedaron encolados. El intervalo entre queue run's es configurable en las opciones de l�nea de comando de Sendmail. Por ejemplo, "sendmail -bd -q3h" significa que Sendmail se ejecutar� en background y que el procesamiento de la cola (queue run) se har� cada tres horas (3h.) Este lapso se configura en RedHat en el archivo que se muestra.
# cat /etc/sysconfig/sendmail |
Forzar el procesamiento de la cola
Si deseamos forzar el procesamiento de la cola completa (por ejemplo, si de pronto nuestra conexi�n a Internet se ha restablecido tras un corte), en cualquier momento esto se puede hacer con el comando:
# sendmail -q |
# sendmail -qIsubstr |
# sendmail -bp |
# sendmail -qI1163 |
Nota: Como se indic� anteriormente, en las versiones recientes Sendmail viene dividido en "dos partes", una de las cuales se encarga del procesamiento de los mensajes enviados desde la l�nea de comando del servidor (sm-client) y otra de los mensajes recibidos desde la red. Ambas tienen su propia cola. A fin de ver la cola del "sm-client" es menester usar:
# sendmail -Ac -bp |
Orden de env�o de los mensajes
Normalmente Sendmail ordena los mensajes a ser enviados durante un queue run de acuerdo a la "prioridad" del mensaje. La prioridad se calcula mediante:
PRI=msgsize-(class*ClassFactor)+(nrcpt*RecipientFactor)+(nrun*RetryFactor) |
Por �ltimo, en cada intento de env�o (cada queue run) un mensaje que no pudo ser enviado sufre una alteraci�n en su prioridad en "RetryFactor". El default para este par�metro es 90000.
El ordenamiento de la cola en base a la prioridad es la pol�tica por omisi�n de Sendmail; sin embargo, la opci�n QueueSortOrder permite alterar esto. Por ejemplo,
QueueSortOrder=host |
define(`confQUEUE_SORT_ORDER',`host') |
Esto es recomendado en conexiones de alta velocidad.
Dominios virtuales
En esta secci�n veremos la forma en que podamos administrar las cuentas de usuarios en diversos dominios. Por simplicidad, supondremos que los dominios son s�lo dos: "incacoca.com" y "dbe.org.pe". Las cuentas existentes deben ser:
oscar@incacoca.com |
Cuentas en el sistema
Lo primero que har�amos en el caso est�ndar de un solo dominio es crear las cuentas de todos los usuarios:
# useradd oscar |
Una soluci�n a este dilema consiste en asociar nombres de usuario totalmente independientes de la direcci�n, m�s o menos del siguiente modo:
oscar@incacoca.com -> vdu0001 |
Por tanto, crearemos los usuarios del siguiente modo:
# useradd vdu0001 |
Asociar direcciones electr�nicas a las cuentas
Para esto se emplea el archivo "virtusertable" localizado en el directorio "/etc/mail". All� colocar�amos simplemente:
oscar@incacoca.com vdu0001 |
El archivo "cf" que proporciona RedHat ya incluye la referencia a "virtusertable". Si se partiera de cero, lo m�s conveniente es usar el m�todo "M4" incluyendo una l�nea como la que sigue en el archivo "sendmail.mc":
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl |
DNS
Como cabr�a de esperarse, en el DNS debe configurarse los registros necesarios para que el correo de forma user@incacoca.com y user@dbe.org.pe se redirija a nuestro servidor. Esto se hace configurando el registro MX en los archivos de configuraci�n de esas zonas. Si nuestro servidor es "correo.laorganizacion.org", la configuraci�n de la zona "incacoca.com" deber�a contener:
@ 1D IN MX 0 correo.laorganizacion.org. |
Local-host-names
Es necesario tambi�n indicar a Sendmail que los mensajes de dominios "incacoca.com" y "dbe.org.org" deben ser aceptados. Para esto, incluirlos en el archivo "/etc/mail/local-host-names".
Como siempre, la apertura del relay depender� de d�nde se ubican los clientes, cosa que no se repetir� aqu�.
Configuraci�n del MUA
La �nica diferencia con el caso "mono-dominio" en lo que compete al MUA, corresponde a la configuraci�n para RECIBIR el correo. Ya sea POP o IMAP, hay que indicar que la recepci�n se debe hacer con los usuarios "vduXXXX".
Por otro lado, el ENV�O s� se debe hacer con la direcci�n electr�nica completa (por ejemplo alex@incacoca.com)
Enmascaramiento
En una red conformada por un servidor de correo y un conjunto de estaciones (como nuestro dominio "laorganizacion.org") los usuarios de seguro redactan sus mensajes usando MUA's (clientes) que les permiten (y les exigen) especificar la direcci�n de correo con la que el mensaje aparente haberse originado (campo "From" en el header.) Esto se usa por lo general para que el destinatario pueda respondernos.
En nuestro caso, los usuarios configurar�n sus direcciones de origen con algo como "user@laorganizacion.org".
Sin embargo, hay algunos MUA's que no permiten especificar la direcci�n de origen (por extra�o que esto suene.) Por ejemplo, el comando "mail" disponible en la mayor�a de sistemas Unix permite enviar mensajes usando Sendmail, pero no especifica direcci�n de origen (por lo que Sendmail tiene que "imaginarla".)
A fin de no variar el escenario, supongamos que un usuario llamado "oscarin" se la conectado (usando telnet) al servidor de correo - no importa el motivo - y desea enviar un mensaje. Invoca a "mail" del siguiente modo:
oscarin$ mail pepebotella@yahoo.com |
oscarin@correo.laorganizacion.org |
A fin de corregir esta situaci�n, simplemente definiremos lo siguiente en nuestro archivo M4 "sendmail.mc":
MASQUERADE_AS(`laorganizacion.org') |
oscarin@laorganizacion.org |
N�tese que esto puede no funcionar adecuadamente con el usuario "root" (para facilitar ciertos diagn�sticos) por lo que se deben emplear usuarios comunes.
Recu�rdese que esto s�lo es necesario cuando se emplean MUA's con "problemas" en el sentido explicado. M�s adelante veremos otros casos m�s interesantes de enmascaramiento.
Sitios con m�s de un servidor
Redundancia
Si nuestro servidor de email de pronto sufre un desperfecto, nuestros mensajes de email no podr�n salir. Esto es grave, pero se puede suplir con llamadas telef�nicas u otros medios.
Sin embargo, m�s grave es el no responder a los mensajes que nos env�an. En ciertos casos, los servidores remotos intentar�n reenviarnos los mensajes (durante cierto tiempo.) En otros, puede que esto nunca ocurra y que los mensajes "reboten" inmediatamente. En cualquier caso, es muy grave el hecho de perder estos mensajes. Aqu� analizaremos algunas medidas destinadas a contrarrestar estos inconvenientes.
Un servidor local adicional
Si nuestro servidor de email deja de operar por un problema (cualquiera) del computador, una forma de mantener el servicio consiste en disponer de un servidor de respaldo ubicado al interior de nuestra organizaci�n el cual puede continuar recibiendo los mensajes que nos env�an.
Esto es relativamente sencillo de implementar a�adiendo una entrada en el DNS:
@ MX 10 mailserver1 |
Aqu� mailserver1 es el servidor "normal" que recibe los mensajes, mientras que mailserver2 es el "backup". Esta configuraci�n ocasionar� que los mensajes que llegan del exterior y no pueden ser enviados a mailserver1 sean enviados a mailserver2.
Frecuentemente estos servidores guardar�n los mensajes en las casillas de email de los usuarios destinatarios respectivos, a fin de que �stos los recojan v�a protocolos POP o IMAP. El problema es que la mayor�a de clientes de email POP/IMAP s�lo se pueden configurar para acceder a un servidor a la vez.
En otras palabras, si mailserver1 deja de operar y mailserver2 toma la posta, entonces todos los usuarios de la red local deber�n ser reconfigurados para que apunten a mailserver2.
Esto puede ser aceptable en ciertas circunstancias, como en el caso de tener pocos clientes.
A fin de evitar esto, es posible hacer algunos artificios asumiendo que mailserver1 est� inoperativo.
Si nuestros clientes est�n apuntando a mailserver1 mediante su direcci�n IP, entonces se puede asociar temporalmente esta direcci�n IP a mailserver2 por medio de un "IP virtual" o "IP alias".
Si nuestros clientes est�n apuntando a mailserver1 mediante su nombre (v�a DNS) entonces se puede modificar temporalmente la configuraci�n del DNS para que mailserver1 apunte al IP de mailserver2 (cambiar el registro A.)
Con esto los clientes acceder�n a mailserver2 de modo casi transparente... sin embargo, si usan IMAP y han creado carpetas en el servidor, obviamente estas carpetas no podr�n verse (pues se quedaron en mailserver1.) Informe a sus usuarios de esta situaci�n.
Otro inconveniente radica en el restablecimiento de mailserver1. Ciertos usuarios pueden haber dejado mensajes sin leer en mailserver2 que deber�n ser trasladados manualmente a mailserver1 para que est�n disponibles en su INBOX. Herramientas como fetchmail pueden ayudar en estos casos.
En general, si mailserver1 va a ser interrumpido por s�lo unos minutos, es mejor que mailserver2 NO se haga cargo del email entrante por los inconvenientes se�alados. Una soluci�n m�s adecuada (y costosa) consiste en que ambos servidores compartan un �rea de almacenamiento externo compartido.
Un servidor remoto
En el caso de que nuestra conexi�n a Internet se interrumpa, o en caso de un desastre general en nuestra organizaci�n, conviene disponder de un servidor ubicado en un lugar geogr�ficamente distante y accesible mediante proveedores distintos (a fin de aumentar la redundancia.) En algunos casos, este servidor puede ser el de otra organizaci�n, con la que pactaremos este servicio.
A la configuraci�n anterior del DNS, a�adiremos otra l�nea:
@ MX 10 mailserver1 |
laorganizacion.org RELAY |
Organizaci�n con divisiones administrativas
En organizaciones muy grandes es frecuente que se establezcan �reas relativamente interdependientes pero separadas. Por ejemplo, geogr�ficamente.
A fin de optimizar el rendimiento, el dise�o de la configuraci�n de email debe aprovechar estas caracter�sticas.
Soluci�n trivial: Diversos dominios
Supondremos que nuestra organizaci�n se llama "inkacoca" y que tiene sucursales en las ciudades de Lima, Trujillo, Cuzco, Iquitos y Puerto Maldonado. Asumimos que la organizaci�n ha adquirido la autoridad del dominio "inkacoca.org".
En ese sentido, una manera de operar ser�a crear los siguientes subdominios, que corresponder�an a las direcciones email respectivas:
Tabla 1.
Ciudad | Dominio | Direcci�n email |
---|---|---|
Lima | lima.inkacoca.org | usuario@lima.inkacoca.org |
Trujillo | trujillo.inkacoca.org | usuario@trujillo.inkacoca.org |
Cuzco | cuzco.inkacoca.org | usuario@cuzco.inkacoca.org |
Iquitos | iquitos.inkacoca.org | usuario@iquitos.inkacoca.org |
Puerto Maldonado | pmaldonado.inkacoca.org | usuarios@pmaldonado.inkacoca.org |
Luego se configurar�an servidores de email independientes para cada ciudad. Desde el punto de vista del email, cada subdominio viene a ser una organizaci�n independiente. En cada servidor (en cada ciudad) el administrador crea sus propias cuentas independientes.
El DNS deber� contener entradas independientes para cada uno de estos servidores (aqu� llamados lima-mail, tru-mail, cuzco-mail, iqui-mail, pto-mail.)
; archivo de zona de inkacoca.org |
Los problemas de este esquema son:
No se est� reflejando el dominio �nico de la organizaci�n (nadie tiene cuenta de la forma usuario@inkacoca.org)
Las direcciones de email son muy largas
Un s�lo dominio
Tratemos de mejorar el esquema anterior. Intentemos que todas las direcciones sean de la forma usuario@inkacoca.org, manteniendo los cinco servidores en cada ciudad. El primer inconveniente de este esquema es que si tenemos dos usuarios llamados "diego" en Lima y Cuzco, y ambos originalmente ten�an direcciones:
diego@lima.inkacoca.org |
Ahora bien, si un mensaje llega desde el exterior a "usuario@inkacoca.org", �qu� servidor lo recibe?
Una posibilidad es designar un servidor adicional (ubicado en cualquier ciudad) para que sirva como "switch", aunque podr�a ser cualquiera de los otros, como veremos.
Este servidor deber� ser capaz de redirigir el mensaje al servidor adecuado. Es decir, deber� disponer de una tabla similar a:
Esto es prec�samente lo que hace el archivo virtusertable que se discuti� anteriormente en la secci�n "dominios virtuales".
Para esto, el archivo /etc/mail/virtusertable contendr� algo como:
diego1@incakoca.com diego1@lima.inkacoca.org |
Adicionalmente se requieren registros en el DNS para el "mail switch":
; archivo de zona de inkacoca.org |
Todo esto permite que los mensajes destinados con @incakoca.org lleguen al servidor de correo local que les corresponde.
Los problemas pendientes son:
P�rdida de independencia
Cada administrador local debe notificar al administrador del switch de que se ha creado un usuario local a fin de que se le registre en virtusertable. Se pierde independencia y no hay una forma sencilla de evitar esto.
Ineficiencia en escritura de direcciones
Cuando un mensaje se env�a desde el interior de la organizaci�n a otro usuario de la organizaci�n, es necesario especificar la direcci�n de email completa (usuario@inkacoca.org.) Ser�a deseable usar s�lo el nombre del usuario y que el sistema asuma que se trata de la organizaci�n.
Ineficiencia en los env�os locales
Si se env�a un mensaje desde Iquitos a otro usuario en Iquitos usando su direcci�n email "usuario@inkacoca.org", el mensaje (de acuerdo al DNS) ir� primero al switch de la organizaci�n y luego !retornar�! a Iquitos. Esto es correcto pero ineficiente.
Ser�a deseable que si el usuario destinatario es local al remitente, entonces el mensaje no tenga que viajar hasta el switch.
* PENDIENTE.
Performance/Tuning
Balance con varios servidores
Normalmente los sitios que reciben una gran cantidad de email tienen una configuraci�n tipo "switch" como la que se coment� anteriormente en la secci�n "Organizaci�n con divisiones administrativas". En ese caso puede ser conveniente configurar varios computadores para que reciban la carga de mensajes entrantes y la redirijan a los computadores departamentales.
A fin de lograr esto, se suele aplicar dos t�cnicas, a saber, v�a DNS o mediante NAT. En el DNS es posible especificar varios servidores de switch para la organizaci�n con la misma preferencia. Siguiendo el ejemplo de la secci�n se�alada, habr�a que modificar esto:
; archivo de zona de inkacoca.org |
; archivo de zona de inkacoca.org |
El m�todo NAT consistir�a en nuestro ejemplo en redirigir las conexiones destinadas a la direcci�n 18.1.3.41 (no habr�a ning�n cambio en el DNS) hacia un grupo de otras direcciones (DNAT) que realmente est�n asociadas a los servidores de email. Los ruteadores normalmente disponen de estas facilidades (y por supuesto Linux cuando act�a como router, usando el comando iptables.) No lo explicaremos aqu�.
Intervalo de Queue Run
En sitios peque�os el intervalo debe ser corto a fin de asegurar el r�pido env�o (por ejemplo, 15 minutos.) En la mayor�a de sitios, sin embargo, una hora es un tiempo aceptable.
Como se indic�, el intervalo de Queue Run se especifica mediante opciones al ejecutarse sendmail (opci�n -q).
Procesos de ejecuci�n en Queue Run
Cuando el intervalo de Queue Run es corto, cuando los mensajes encolados son muchos, y cuando los servidores remotos son lentos, Sendmail puede lanzar muchos procesos "queue runners" concurrentes que intentan en paralelo limpiar la cola. Esto normalmente debe autocontrolarse, pero en situaciones extremas el n�mero de "queue runners" puede ser muy elevado al punto de crear un peligro para el sistema.
La opci�n MaxQueueChildren permite especificar el m�ximo n�mero de procesos "hijos" de Sendmail encargados de procesar la cola simult�neamente. Normalmente no hay l�mite.
El valor m�s adecuado se debe obtener observando el comportamiento "usual" de los queue runners de Sendmail, por ejemplo, mediante un comando como el que se muestra:
[root@edithpiaf root]# ps ax | grep sendmail | grep queue | wc -l |
Por otro lado, si el sistema constantemente tiene problemas de falta de memoria, y se sospecha que el problema est� asociado a un n�mero elevado de "queue runners", puede ser conveniente reducir esta opci�n gradualmente (quiz� reduciendo 10% al valor observado) a fin de aliviar este problema. Esto ocasionar� que algunos mensajes encolados tarden m�s en procesarse.
Limpiar m�s aprisa los mensajes en cola
La opci�n "Timeout.queuewarn" determina el lapso que permanece un mensaje en cola para generar un mensaje de alerta al redactor del mismo. Esta alerta le permite saber que el mensaje no pudo ser enviado (default=4 horas.)
La opci�n "Timeout.queuereturn" determina el tiempo m�ximo que el sistema mantendr� el mensaje en la cola (intentando enviarlo.) Cuando este tiempo se cumple, el mensaje es eliminado de la cola y se env�a una alerta al redactor (default=5 d�as.)
Por consistencia, Timeout.queuewarn <>
A fin de que los mensajes "reboten" m�s aprisa (y la cola se libere m�s aprisa), es conveniente en ciertos casos reducir estos valores, por ejemplo:
En el archivo "cf":
O Timeout.queuewarn=2h |
define(`confTO_QUEUEWARN',`2h') |
Cola con varios directorios
El acceso a disco generado por las colas puede ser considerable en sistemas grandes. Una forma de balancear esta carga y mejorar la performance consiste en utilizar discos f�sicos distintos, los cuales pueden montarse y usarse simult�neamente para la cola.
Esto se puede consiguir creando varios subdirectorios a partir de un directorio principal (por ejemplo bajo /var/spool/mqueue) y configur�ndolos en el archivo "cf" (o v�a M4.)
[root@edithpiaf mqueue]# ls -ld /var/spool/mqueue/ |
QueueDirectory=/var/spool/mqueue/cola* |
define(`QUEUE_DIR',`/var/spool/mqueue/cola*') |
Encolar si hay mucha carga
Si la carga del sistema se hace muy elevada, es conveniente limitar la operaci�n de Sendmail, al menos para los mensajes de menor prioridad.
Cuando un nuevo mensaje es recibido, Sendmail le calcula su prioridad inicial "PRI" con la f�rmula se�alada anteriormente.
Si la carga es muy elevada, Sendmail tiene la opci�n de no intentar enviar el mensaje, sino, simplemente encolarlo para un intento posterior. Esto ocurrir� si se verifican las siguientes condiciones:
1) La carga promedio del sistema (load average) es mayor que el indicado en la opci�n configurable "QueueLA" (cuyo default es ocho.) La carga promedio es un valor proporcionado por el sistema operativo que se puede obtener con el comando "uptime".
2) Se verifica la ecuaci�n:
PRI > QueueFactor /(LA-QueueLA+1) |
QueueFactor es una opci�n configurable cuyo valor por omisi�n es 600000.
En sistemas grandes puede ser necesario elevar el valor de QueueLA:
O QueueLA=15 |
define(`confQUEUE_LA',`15') |
Rechazar si hay mucha carga
La opci�n "RefuseLA" permite especificar un l�mite para la carga promedio del sistema (load average) a partir del cual Sendmail simplemente rechaza los mensajes que se le env�an. Esto, evidentemente asume que quien se est� intentando conectar lo intentar� nuevamente m�s adelante.
El valor por omisi�n de esta opci�n es doce. En sistemas grandes puede ser necesario elevar este valor.
O RefuseLA=18 |
define(`confREFUSE_LA',`18') |
Procesar lentamente las conexiones
La opci�n ConnectionRateThrottle permite "relentizar" las conexiones que llegan a un ritmo muy veloz. Por ejemplo, si este par�metro es igual a cinco, en caso de llegar m�s de cinco conexiones en menos de un segundo, s�lo las cinco son atendias inmediatamente. Otras cinco ser�n atendidas luego de un segundo, y as� sucesivamente.
Esta opci�n es adecuada cuando se usan las opciones QueueLA y RefuseLA.
O ConnectionRateThrottle=5 |
define(`confCONNECTION_RATE_THROTTLE',`5') |
Reglas y Rulesets
En una primera lectura de este tutorial sugiero evitar todo este material puesto que no es esencial para la gran mayor�a de administradores de Sendmail.
Las reglas son especificaciones de configuraci�n que sirven para modificar las direcciones electr�nicas y detectar errores en las mismas. Hay diversos motivos por los que una direccion electr�nica debe ser modificada; por ejemplo, si se desea que todos los mensajes luzcan como si hubieran sido enviados desde cierto computador aunque en realidad se han enviados desde diversos computadores de distinto nombre.
Los conjuntos de reglas se agrupan en los llamados "Rulesets" que funcionan a modo de "subrutina" de cualquier lenguaje de programaci�n. Los "Rulesets" se identifican con un n�mero, aunque en las �ltimas versiones de Sendmail es posible identificarlos con una palabra (que internamente es traducida a un n�mero por Sendmail.)
Algunos rulesets son definidos internamente (como los rulesets 0, 1, 2, 3, 4, y 5) mientras que otros se definen manualente en el archivo "cf".
Los rulesets se definen mediante el comando "S" y las reglas mediante el comando "R". A continuaci�n un extracto del archivo "cf" que viene con RedHat 8.0 en el que se ilustra el ruleset "0" o tambi�n denominado "parse". Obs�rvese que el ruleset termina donde empieza uno nuevo:
###################################### |
Esta salida puede ser muy distinta en otros sistemas Unix/Linux, pero por el momento eso no importa.
El ruleset 0 se pudo definir mediante "S0" en lugar de "Sparse", pero como "parse" es m�s "comprensible" que "0", entonces se prefiere esta �ltima forma (Sparse=0.)
Para verificar c�mo ha cargado Sendmail las reglas, se puede usar el modo de test de Sendmail con el comando "=S" y el n�mero del ruleset:
# sendmail -bt |
# sendmail -bt |
Como es f�cil de apreciar, cada ruleset consiste de varias "reglas" definidas con el comando "R".
Cada regla consiste de dos partes separadas por un tabulador, posiblemente seguidas de un comentario (separado tambi�n por un tabulador.)
Ejemplo de ruleset con una regla
Para esta secci�n haremos algunas modificaciones al archivo de configuraci�n "cf". Sin embargo, a fin de evitar alterar la configuraci�n actual, trabajaremos sobre un archivo "cf" alternativo. Empecemos haciendo una copia del archivo "cf":
# cp /etc/mail/sendmail.cf prueba.cf |
D{MAILHUB}mail.peru.com.pe |
R$+@$+ |
# sendmail -Cprueba.cf -bt |
Partes de una regla
Cada regla tiene hasta tres partes (el comentario es opcional) separadas por tabuladores (puede haber espacios dentro de cada parte.)
Recu�rdese que las reglas alteran las direcciones de correo electr�nico.
La primera parte (que sigue inmediatamente al comando "R") es la "left hand side" (lado izquierdo o LHS) mientras que la segunda es la "right hand side" (lado derecho o RHS.) La LHS especifica un patr�n de b�squeda. De haber coincidencia con el patr�n de b�squeda, la direcci�n de correo electr�nico que se est� procesando es convertida en el RHS.
Tokens
A fin de comprender las reglas, es necesario conocer el concepto de "token".
Las direcciones electr�nicas procesadas en los rulesets por las reglas son internamente fraccionadas en varias unidades independientes denominadas "token". As�, la direcci�n proporcionada en el ejemplo de arriba: "diego@hotmail.com" es internamente dividida en los siguientes cinco tokens:
diego |
.:@[] |
Expresiones de b�squeda
En el ejemplo de arriba, la LHS est� conformada por dos "expresi�n de b�squeda" (comodines o wildcards) de tipo "$+". Estos sirven para buscar coincidencias de uno o m�s "tokens". M�s adelante veremos m�s de estos comodines.
En nuestro ejemplo, la direcci�n proporcionada hizo coincidir el primer "$+" con el token "diego" y el segundo "$+" con los tokens "hotmail", ".", "com".
Por el lado de la RHS, el contenido de cada "expresi�n de b�squeda" es accesible mediante los operadores $1, $2, ... respectivamente. Para nuestro caso, tendremos:
$1 = diego |
El modificador de debug 21.12 permite obtener m�s informaci�n acerca del procesamiento de cada regla.
# sendmail -d21.12 -bt -Cprueba.cf |
Rulesets Internos
Los rulesets 0, 1, 2, 3, 4, 5 est�n reservados para usos espec�ficos de Sendmail. A futuro Sendmail puede definir los rulesets 6, 7, 8, 9. En general, es conveniente que el usuario defina - si lo requiere - rulesets con textos identificatorios (para que Sendmail autom�ticamente los numere) con lo que se evitan conflictos innecesarios.
Es conveniente conocer el uso que da Sendmail a los rulesets internos. La siguiente figura intenta ilustrar este punto.
En general, todas las direcciones electr�nicas pasan por el ruleset 3 apenas se inicia el procesamiento de las mismas. Entre otras cosas, el ruleset 3 extrae la direcci�n electr�nica "apta para procesamiento" a partir de la direcci�n electr�nica entregada por los clientes.
Por ejemplo, es usual que las direcciones electr�nicas luzcan as� (tal como las genera el programa cliente):
Pedro Escobedo |
# sendmail -bt |
Es sencillo imprimir el ruleset 3 (o cualquier otro) desde Sendmail. Para esto, simplemente entrar en modo debug (con -bt) y tipear el comando "=S":
> =S 3 |
Finalmente, todav�a en modo test, pru�bese el comando "/parse" que permite simular el procesamiento de una direcci�n de correo electr�nico (por ejemplo, pruebe "/parse user@localhost".)
Macros en el archivo "cf"
Para explicar esto, copiar� una parte del archivo "cf" que se vi� anteriormente (en la secci�n del delivery local.)
Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, |
En particular, la macro "h" (cuyo valor se obtiene con "$h") corresponde al host destinatario del mensaje, mientras que la macro "n" corresponde al usuario destinatario del mensaje. En este caso el valor de la macro es ajustado por Sendmail autom�ticamente para cada mensaje.
Las macros se pueden definir con el comando "D" en cualquier parte del archivo "cf". Por ejemplo, esto redefine la macro "w" al valor "jibaros":
Dwjibaros |
D{PRUEBA}amazonas.com.pe |
Ciertas macros son asignadas internamente por el programa Sendmail (como la macro "w" que es inicializada al nombre del host "sin dominio") y otras son creadas expl�citamente en el archivo "cf" con diversos prop�sitos.
Clases
Las "clases" son una suerte de variables tipo "array", es decir, que pueden contener un conjunto de valores.
Las clases no se solapan con las macros. Por ejemplo, existe la clase "w" que no tiene relaci�n alguna con la macro "w". Los elementos de la clase se a�aden con el comando "C". Por ejemplo, los siguientes dos comandos a�aden los elementos "localhost" y "localhost.localdomain" a la clase "w" del archivo "cf":
[root@edithpiaf tmp]# grep '^Cw' /etc/mail/sendmail.cf |
Como se recordar�, esa configuraci�n la hac�amos mediante el archivo /etc/mail/local-host-names. En otras palabras, las l�neas de este archivo pasan a conformar la clase "w". Esto se define en el archivo "cf" mediante el comando "F":
[root@edithpiaf tmp]# grep '/etc/mail/local-host-names' /etc/mail/sendmail.cf |
Ejemplo: Ambiente de alta seguridad
Descripci�n
Supondremos que nuestra organizaci�n se desempe�a tras un Firewall. Podr�amos hacer que el esquema anterior siga sin variaciones simplemente habilitando los puertos respectivos en el filtro de paquetes. Sin embargo, aqu� consideraremos una situaci�n m�s complicada en la que se requiere de dos servidores de email. Asumimos que el lector conoce el concepto de una red DMZ (zona desmilitarizada) usada como primera l�nea de defensa para los servicios que deben dar cara al exterior.
Uno de estos servidores de email se encontrar� en la red DMZ (correo_dmz) y ser� accesible desde Internet (aunque pasando por el Firewall), y el otro se encuentra dentro de nuestra red LAN (correo_lan). Las estaciones seguir�n configuradas para conectarse a este �ltimo (correo_lan) por lo que no haremos cambios al respecto. Sin embargo, correo_lan NO enviar� mensajes al exterior directamente, sino a trav�s de correo_dmz, y viceversa, no recibir� mensajes desde el exterior, salvo desde correo_dmz. La siguiente figura esquematiza esta configuraci�n:
N�tese que nosotros no indicaremos absolutamente nada acerca de la configuraci�n del firewall pues esto est� fuera de los objetivos de esta gu�a. Si se implementa el firewall con Linux, en Internet ya hay abundantes documentos acerca de c�mo configurarlo.Configuraci�n de correo_dmz
Este servidor no almacenar� los mensajes pendientes en casillas, por lo que no requiere que se inscriban all� nuestros usuarios. A fin de que los mensajes que llegan al dominio "abejas.org" se redirijan a correo_lan, en el archivo /etc/mail/mailertable debemos inscribir la siguiente l�nea:
abejas.org smtp:correo_lan.abejas.org |
bash# cd /etc/mail |
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl |
correo_lan.abejas.org RELAY |
Configuraci�n del DNS
Desde Internet, los mensajes deben llegar a "correo_dmz", por lo cual �ste servidor deber� ser el destino especificado en el registro MX para nuestro dominio:
$TTL 86400 |
Configuraci�n de correo_lan
Tal como vimos en una secci�n anterior, se debe modificar el archivo /etc/mail/local-host-names (o su equivalente) para que se acepten los mensajes con el formato deseado.
Ahora haremos que se env�e todo el correo no local hacia el computador "correo_dmz" en lugar del Internet. Para esto, debemos regenerar el archivo "cf" a partir del "mc", a�adiendo previamente la siguiente directiva a �ste �ltimo:
define(`SMART_HOST', `smtp:correo_dmz.abejas.org')dnl |
Ejemplo de configuraci�n de MUA
Los clientes de nuestra red local acceder�n al servidor mediante programas especializados para la redacci�n y visualizaci�n de mensajes. Estos programas se conocen como MUA's (Mail User Agent.) Este es un asunto que estrictamente no tiene que ver con nuestra gu�a, pero creemos conveniente proporcionar alg�n ejemplo ilustrativo. Supondremos que los usuarios est�n utilizando Netscape Messenger, que es parte del Netscape Communicator. A continuaci�n mostramos la pantalla principal de Netscape Messenger:
Vamos a configurar el MUA para que acceda a nuestro servidor de correo. Asumimos que ya est�n activos los servicios POP o IMAP. Cu�l de estos se usar� para traer los mensajes, y de qu� usuario, se selecciona en el menu Edit -> Preferences -> Mail Servers -> Incoming Mail Servers -> Edit o Add -> Server Name y Username , como se aprecia en la figura:Asimismo, en Edit -> Preferences -> Mail Servers -> Outgoing (SMTP) server, se debe especificar nuevamente nuestro servidor de correo, puesto que hacia all� se enviar�n los mensajes que redactemos.
Finalmente, en Edit -> Preferences -> Identity , se debe especificar nuestra direcci�n de email y nuestro nombre real, tal como lo ver�n los destinatarios:
Ahora Ud. deber�a poder enviar mensajes a usuarios locales (de la forma user@abejas.org), y recibir mensajes desde cualquier lugar de Internet. Pruebe a crear algunos usuarios en el servidor y a hacer que se intercambien mensajes desde sus estaciones.