Tutorial de Sendmail

Apr 2006


Tabla de contenidos
1. Nota Introductoria
1.1. Autoría y Copyright
1.2. Cómo se ha confeccionado este texto
1.3. Esta versión del tutorial
2. Una Configuración Típica
2.1. Escenario
2.2. Configurar el DNS
2.3. Configurar las opciones del puerto SMTP
2.4. Configurar el archivo /etc/hosts
2.5. Configurar el archivo local-host-names
2.6. Permitir el relay a nuestros clientes
2.7. Configurar servicios POP / IMAP
2.8. Pruebas con el cliente "mail"
3. Conceptos
3.1. Programas Involucrados
3.1.1. MUA/Cliente
3.1.2. MTA/Servidor
3.2. Protocolos
3.2.1. SMTP
3.2.2. POP
3.2.3. IMAP
3.2.4. DNS
3.3. Mensajes
3.3.1. Header (cabecera)
3.3.2. Body
3.3.3. Envelope (sobre)
3.3.4. Attachment
3.3.5. Casilla del usuario
3.3.6. Relay
4. Empezando
4.1. Instalación
4.1.1. RedHat Linux
4.1.2. Otros Sistemas Operativos
4.1.3. Desde la fuente
4.2. Probando Sendmail
4.3. Inicio automático
4.4. El log
5. Configuración del sistema
5.1. Configuración del host
5.1.1. DNS
5.1.2. Archivo hosts
5.1.3. Hostname
5.2. Configuración del programa Sendmail
6. Sistema de configuración M4
6.1. Motivación
6.2. Regenerando el archivo "cf"
6.3. Configuración con M4
7. El Procesamiento de los mensajes
7.1. Envíos locales
7.2. Definición del envío local
7.3. Envíos Remotos
7.4. "mailers" en M4
8. Administración de la cola de Sendmail
8.1. Conceptos
8.2. Temporización del queue run
8.3. Forzar el procesamiento de la cola
8.4. Orden de envío de los mensajes
9. Dominios virtuales
9.1. Cuentas en el sistema
9.2. Asociar direcciones electrónicas a las cuentas
9.3. DNS
9.4. Local-host-names
9.5. Configuración del MUA
10. Enmascaramiento
11. Sitios con más de un servidor
11.1. Redundancia
11.1.1. Un servidor local adicional
11.1.2. Un servidor remoto
11.2. Organización con divisiones administrativas
11.2.1. Solución trivial: Diversos dominios
11.2.2. Un sólo dominio
12. Performance/Tuning
12.1. Balance con varios servidores
12.2. Intervalo de Queue Run
12.3. Procesos de ejecución en Queue Run
12.4. Limpiar más aprisa los mensajes en cola
12.5. Cola con varios directorios
12.6. Encolar si hay mucha carga
12.7. Rechazar si hay mucha carga
12.8. Procesar lentamente las conexiones
13. Reglas y Rulesets
13.1. Ejemplo de ruleset con una regla
13.1.1. Partes de una regla
13.1.2. Tokens
13.1.3. Expresiones de búsqueda
13.2. Rulesets Internos
13.3. Macros en el archivo "cf"
13.4. Clases
13.4.1. La clase w desde M4
A. Ejemplo: Ambiente de alta seguridad
A.1. Descripción
A.2. Configuración de correo_dmz
A.3. Configuración del DNS
A.4. Configuración de correo_lan
B. Ejemplo de configuración de MUA
C. Referencias

Este tutorial pretende dar una visión general del MTA Sendmail. Los ejemplos asumen un sistema Linux RedHat, 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.

1. Nota Introductoria

Si tuviera que buscar un adjetivo para calificar a Sendmail, pensaría en "excesivamente flexible": este programa intenta -y consigue- satisfacer las necesidades de correo electrónico 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 actualidad casi nadie requiere ya.

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 muchos administradores a optar por soluciones 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 sus ú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, proporcionándose en prácticamente todas sus variantes (y también en Linux); es (todavía) el servidor de email más utilizado a nivel mundial, y sorprendentemente es a la vez una de los programas menos comprendidos por los administradores debido a todo lo antes indicado - así como a una muy deficiente documentación online!

1.1. Autoría y Copyright

Este documento tiene copyright (c) 2006 Diego Bravo Estrada <diegobravoestrada en hotmail>. Se otorga permiso para copiar, distribuir y/o modificar este documento bajo los términos de la "GNU Free Documentation License, Version 1.2", excepto en lo mencionado en el siguiente párrafo. Esta licencia puede obtenerse en: http://www.gnu.org/licenses/fdl.txt

Si se desea crear un trabajo derivado o publicar este documento para cualquier propósito, apreciaría que se me contacte primero a fin de tener la oportunidad de proporcionar una versión más reciente. De no ser esto posible, la última versión debería estar disponible en el sitio web GatoGringo.com.

1.2. Cómo se ha confeccionado este texto

Como de costumbre, mediante mi script "QDK" disponible en Sourceforge.

1.3. Esta versión del tutorial

Complementa el caso de organizaciones que reparten el email en diversas "sucursales".

Lima, Abril de 2006