Tutorial sendmail
Page1
TUTORIAL DE SENDMAIL
Este documento fue realizado en la UJI (Universidad Jaume I de Castellon) durante el
transcurso del curso universitario 97-98, en la asignatura Interconexion de Sistemas
Abiertos. Se permite la libre distribucion o copia de este documento. Si tienes cualquier duda,
critica o sugerencia, puedes contactar con el autor, que soy yo:
David Rubert Viana (
[email protected])
1. Introducción
1.1 Función y características de sendmail
1.2 Situación y descripción de los programas y ficheros de soporte utilizados
por sendmail
2. Funciones de sendmail
2.1 Sendmail como agente de usuario
2.2 Sendmail como agente de transporte
2.3 La cola de correo
2.4 Los Alias en sendmail
2.4.1 El fichero /etc/aliases
2.4.2 El fichero .forward
2.4.3 Las listas de correo
2.5 Sendmail en modo traza
2.6 Parámetros más comunes de la línea de comandos en sendmail
3. El fichero de configuración de sendmail
3.1 Función y organización del fichero
3.2 Macros
3.2.1 Los nombres largos
3.2.2 Los condicionales
3.2.3 Las macros internas de sendmail
3.3 Clases
3.3.1 Clases internas más comunes
3.3.2 Ejemplo del uso conjunto de macros y clases
3.4 Opciones
34.1 Opciones más comunes
3.4.2 Modos de reparto
3.4.3 Timeouts
3.5 Precedencia de mail
3.6 Trusted Users
3.7 Formato de las cabeceras
3.8 Las reglas de reescritura
3.8.1 Los conjuntos de reglas de reescritura (Rewriting rule sets)
3.8.2 La parte izquierda y derecha de una regla (Left-hand-side &
Right-hand-side)
3.8.3 Los separadores de tokens
3.8.4 Como probar nuestras propias reglas de reescritura
http://lucas.hispalinux.es/Universitarios/tutorial-sendmail.html
20:33:40 02/10/01
Tutorial sendmail
Page2
3.8.5 Ejemplos de reglas de reescritura extraidas del fichero de
configuración de LINUX
3.9 Definición de mailers
3.9.1 Campos más comunes en la definición de mailers
3.9.2 Parámetros más comunes en la definición de mailers
3.9.3 Ejemplos de definición de mailers
3.9.4 La definición del mailers en el fichero de configuración de LINUX
4. Links interesantes
1. Introducción
Este tutorial intenta dar una visión global de sendmail v8.8.7 (Berkeley), programa de
distribución gratuita creado (y actualmente revisado) por Eric Allman. La versión actual es
la v8.8.8, aunque nosotros trataremos la anterior versión. Se intentará explicar claramente la
mayoría de sus funciones sin entrar muy a fondo en cada una de ellas, pero dando ejemplos
conprensivos. También veremos como podemos configurar sendmail para su
funcionamiento en un sistema específico.
1.1 Función y características de sendmail
Existe una gran variedad de programas de correo electrónico que proveen al usuario de
una aplicación para la creación y envío de mail. Estos programas son los llamados Agentes
de Usuario o MUA (Mail User Agent), y su propósito es el aislar al usuario de los Agentes de
Transporte o MTA (Mail Transport Agent), que son los encargados de transferir los mails a
su correcto destino.
Sendmail es el agente de transporte de correo más común de Internet (en los sistemas
UNIX). Aunque actua principalmente como MTA, también puede ser utilizado como MUA
(aunque no posee interfaz de usuario). Las misiónes básicas de sendmail son las siguientes:
Recogida de mails provinientes de un Mail User Agent (MUA) como pueden ser elm,
Eudora o pine; o provinientes de un Mail Transport Agent (MTA) como puede ser el
propio sendmail.
Elección de la estrategia de reparto de los mails, basándose en la información de la
dirección del destinatario contenida en la cabecera:
Si el mail es local en nuestro sistema, enviará el mail al programa de reparto local
de mails.
Si el mail no es local, sendmail utilizará el DNS de nuestro sistema para
determinar el host al que debe ser enviado el mail. Para transferir el mensaje,
http://lucas.hispalinux.es/Universitarios/tutorial-sendmail.html
20:33:40 02/10/01
Tutorial sendmail
Page3
iniciará una sesión SMTP con el MTA de dicho host.
Si no es posible mandar el mail a su destino (porque la maquina receptora esta
desconectada, o va muy lenta), sendmail almacenará los mails en una cola de
correo, y volverá a intentar el envío del mail un tiempo despues. Si el mail no
puede ser enviado tras un tiempo razonable, el mail será devuelto a su autor con
un mensaje de error. Sendmail debe garantizar que cada mensaje llegue
correctamente a su destino, o si hay error este debe ser notificado (ningún mail
debe perderse completamente).
Reformatear el mail antes de pasarlo a la siguiente máquina, según unas reglas de
reescritura. Según el tipo de conexión que poseamos con una determinada máquina, o
según el agente de transporte al que vaya dirigido el mail, necesitaremos cambiar los
formatos de las direcciones del remitente y del destinatario, algunas lineas de la
cabecera del mail, o incluso puede que necesitemos añadir alguna línea a la cabecera.
Sendmail debe realizar todas estas tareas para conseguir la máxima compatibilidad
entre usuarios distintos.
Otra funcion muy importante de sendmail es permitir el uso de "alias" entre los
usuarios del sistema; lo que nos permitirá (entre otras funciones) crear y mantener
listas de correo entre grupos.
Ejecución como agente de usuario (MUA). Aunque no posee interfaz de usuario,
sendmail tambien permite el envío directo de mails a través de su ejecutable.
Todas estas características y muchas otras que posee el sendmail deben ser configuradas
y variarán de unos sistemas a otros. Para configurarlas hacemos uso del fichero de
configuración de sendmail. La revisión y modificación de este fichero es bastante complicada
y necesita de una serie de conocimientos previos.
1.2 Situación y descripción de los programas y ficheros de soporte utilizados por
sendmail
1. /usr/sbin/sendmail ( /usr/lib/sendmail en algunos sistemas)
Ejecutable del sendmail.
2. /etc/sendmail.cf (/usr/lib/sendmail.cf)
Fichero de configuración de sendmail.
3. /etc/aliases
Fichero donde se almacenan los alias del sistema.
4. /usr/bin/newaliases
Reconstruye la base de datos de alias usada por sendmail, a partir del fichero aliases. Es
un enlace simbólico a sendmail en el modo - bi.
http://lucas.hispalinux.es/Universitarios/tutorial-sendmail.html
20:33:40 02/10/01
Tutorial sendmail
Page4
5. /var/spool/mqueue
Es el directorio donde se almacena la cola de correo.
6. /usr/bin/mailq
Saca por pantalla el contenido de la cola de correo. Es un enlace simbólico a sendmail en
el modo -bp.
2. Funciones de sendmail
2.1 Sendmail como agente de usuario
Como agente de usuario, sendmail lee por defecto de su entrada estandard hasta
encontrar un end-of-file (EOF) o una linea que contenga únicamente un punto ("."). En ese
momento manda una copia de ese mensaje a cada una las direcciones destino (que se le
habrán pasado previamente en la línea de comandos). Él mismo determinará la ruta a seguir
(consultando el DNS si fuera necesario), basándose en el contenido de la dirección
destinataria.
Sendmail determina cómo enrutar un mensaje (cuyo destino sea la dirección o direcciónes
que le habremos establecido), de acuerdo a la información que posee en su fichero de
configuración (por defecto /usr/lib/sendmail.cf).
Ejemplo 1:
Este comando manda un mail a "
[email protected]", sin título y cuyo cuerpo contiene
únicamente "hola que tal".
$ sendmail
[email protected]
hola que tal
..
$
Ejemplo 2:
Podemos tambien pasarle el cuerpo del mail mediante un fichero:
$ cat fichero | sendmail alonso@xyz
Ejemplo 3:
Podemos incluso pasarle los datos de la cabecera manualmente, mediante el parámetro -t:
$ sendmail -t alonso@xyz
From:
[email protected]
Date: ....
.....
http://lucas.hispalinux.es/Universitarios/tutorial-sendmail.html
20:33:40 02/10/01
Tutorial sendmail
Page5
2.2 Sendmail como agente de transporte
La utilización de sendmail como demonio en el sistema nos permite enviar y recibir correo
SMTP. Para ello, sendmail se queda como proceso residente escuchando el puerto 25,
admitiendo y realizando conexiones SMTP cuando sea necesario (es decir, actua como un
Agente de Transporte de Correo (MTA)). Cuando reciba o una petición de conexión,
creará un proceso hijo que se encargará de ello, mientras el proceso padre seguirá
escuchando el puerto 25.
Solo puede ser ejecutado en este modo por el superusuario del sistema.
Para utilizar sendmail como demonio, debemos iniciarlo en el arranque del sistema en uno
de los scripts de inicio con los siguiente parámetros:
sendmail -bd -q15m
Con esta orden, sendmail actuará en modo background admitiendo conexiones por el
puerto 25. La opción -q15m le indica que actualice la cola de correo cada 15 minutos (este
parámetro puede variar).
El parámetro -bD es igual al -bg, pero actuando en foreground.
2.3 La cola de correo
Cuando el envío de un mail no puede alcanzar su destino porque nos rechazan la conexión
(normalmente debido a que la máquina destinataria esté apagada o sobrecargada), éste
debe ser almacenado en una cola de la máquina que manda el mail, para intertar de nuevo el
envío más tarde.
La cola de correo se encuentra en /var/spool/mqueue. En este directorio se crean unos
ficheros temporales para cada mail que se almacena. El formato de los ficheros en este
directorio es el siguiente:
- d f - - - - - - - - -
(ficheros donde se guardan los cuerpos de los mensajes, sin las
cabeceras).
- q f - - - - - - - - -
(ficheros donde se guardan la información necesaria para procesar
los trabajos).
- t f - - - - - - - - -
(ficheros temporales imagen de los ficheros qf cuando estos están
siendo reconstruidos).
- x f - - - - - - - - -
(fichero donde se almacena toda la información transmitida durante
la apertura y cierre de una sesión).
Para visualizar el contenido de la cola usamos el comando "mailq", que es un link simbólico
a el comando "sendmail -bp". Este producirá una lista con los identificadores de los
mensajes, su tamaño, la fecha en la que el mensaje entró
Comentarios de: tutorial de sendmail (0)
No hay comentarios