Sendmail y el MSP

Hace un tiempo me tocó volver a instalar Sendmail en unos equipos que administro. Después de tenerlos andando en un derivado un tanto arcaico de RedHat (WhiteBox), la tarea era pasarlos a Debian. Creía que las cosas no iban a ser muy diferentes; los mismos pasos básicos y repetitivos que se encuntran en 10.000 manuales en la web para configurar el viejo y querido (y odiado) Sendmail. Sin embargo para mi sorpresa algunas cosas habían cambiado en la configuración y en el modelo de funcionamiento de Sendmail. En la escena aparecía Sendmail MSP y había que activarlo para que algunas cosas funcionaran.

Qué es MSP

Las últimas versiones de Sendmail dividen el servicio de Sendmail en dos partes, el MTA y el MSP. El MTA de seguro lo conocemos, es el famoso Mail Transport Agent, pero el MSP? Bueno con MSP nos referimos Mail Submission Program. Pero, ¿por qué la división?

La respuesta tiene que ver con un RFC, una de esas tantas normas que gobiernan Internet. Según el RFC nº 2476 el servicio de correo electrónico debe dividirse claramente en dos partes: MTA y MSP y la división tiene que ver con el tipo de conexión que lleva a cabo el servidor

MTA: Conexión servidor – servidor

Si el servidor se está comunciando con otro servidor de correo (otro MTA) para tramitar el envío del los correos electrónicos, entonces decimos que funciona como MTA, o sea agente de transferencia de correo. Puede ser que para entregar el correo, Sendmail (en nuestro caso) tenga que comunicarse con un servidor de correo, pero también puede ser que el mensaje tenga que pasar por varios servidores MTA antes de llegar a destino; lo que comunmente se llama relaying. El relaying por lo tanto lo hacen solo los servidores MTA.

MSP: Conexión cliente – servidor

Si la conexión se da entre el cliente de correo electrónico (también llamado MUA) y el servidor que luego lo se encargará de la transferencia (Sendmail) entonces se dice que el servidor está actuando como MSP o Mail Submission Program. La diferencia es que aquí el servidor solo acepta un mensaje de un cliente y lo pone en la cola de salida. Luego cumpliendo la función de MTA, se comunicará con otros servidores de correo para que el mensaje llegue a su destino.

En versiones anteriores de Sendmail que no seguían el RFC nº 2476, se levantaba un sólo servidor que actuaba como MTA y MSP indistintamente. En las últimas versiones de Sendmail, si se activa el MSP, veremos que incluso tiene asignado un puerto específico, el 587, para que escuche las conexiones de los clientes de correo electrónico. Además todo el correo que es generado localmente dentro del servidor, ya sea por un cliente de correo, por el comando mail, el plugin vacation o los mails que envía el mismo sistema, es enviado a Sendmail-MSP. Debido a esto, si no activamos el servidor MSP no podremos enviar correo localmente.

En teoría si configuramos nuestro cliente de correo para que se comunique con su servidor saliente en el puerto 587, tiene que funcionar sin ningún problema. En la práctica esta constumbre no está difundida y se sigue configurando el puerto 25 para inyectar el correo del cliente en el servidor, aunque según el RFC este puerto deba usarse solo para conexiones entre MTA’s.

El por qué de la separación

La pregunta es por qué hacer esta separación cuando toda la vida los servidores no han hecho distinción entre las conexiones entre servidores y las conexiones entre cliente y servidor. Una lectura del RFC implicado nos dice que, entre otas cosas, separar el MTA del MSP hace que sea más fácil implementar pólitcas de seguridad contra el correo no deseado y el relaying no autorizado.

Configurando Sendmail para que levante el MSP

La línea que hay que editar para que levante el MSP es solo una dentro de sendmail.mc

DAEMON_OPTIONS(`Family=inet, Name=MSP-v4, Port=submission, Addr=127.0.0.1')dnl

Si dejamos el parámetro Addr en 127.0.0.1, entonces el MSP solo escuchara en la interfaz local y enviará los correos generados localmente. Los clientes de correo o MUA’s seguirán conectándose al puerto 25.

Si queremos tener activo el MSP junto con el MTA, debemos tener cuidado de no comentar la línea que se refiere al MTA. La mayoría de los manuales para configurar Sendmail nos dicen que lo primero que debemos hacer en una configuración estándar es comentar la siguiente línea:

DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl

Porque de lo contrario Sendmail escuchará solo en la interfaz local.

Pero si comentamos esta línea y dejamos descomentada la del MSP, Sendmail entenderá que solo debe levantarse como MSP y solo escuchará en el puerto 587. Entonces es más correcto dejar descomentada la línea pero indicarle que escuche en todas las interfaces.

DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=0.0.0.0')dnl

El 0.0.0.0 le dice a Sendmail que escuche como MTA en todas las direcciones de nuestro servidor. Claro está que podemos poner una ip específica si queremos que nuestro servidor escuche en una solo ip como MTA. Lo mismo vale para la línea que configura Sendmail como MSP.

Como siempre hay que recordar que debemos compilar los archivos .mc después de editarlos y reiniciar el servicio para que tome los cambios.

# make

#/etc/init.d/sendmail restart

Dos detalles más que agregar. La configuración del MSP es manejada por el archivo submit.mc; generalmente no hay que tocar nada dentro de este archivo. Por otra parte la cola de los correos de Sendmail-MTA está en /var/spool/mqueue mientras que la de Sendmail-MSP está en /var/spool/client-mqueue

Resta decir que no encontré si los demás MTA’s – MSP’s disponibles (Postfix, Qmail, Exim, etc.) se atengan a la RFC mencionada. Parece ser que el cambio no es radical, pero que afecta a la configuración de Sendmail, afecta.

Espero que esta información les sea de utilidad a aquellos que todvía usan Sendmail y se encuentren desorientados con estos pequeños cambios.

Links sobre el tema

RFC 2476 – Message Submission

Página de Sendmail sobre submit.mc

Página de Sendmail explicando el por qué se Sendmail-MSP

Explore posts in the same categories: correo electónico, Debian, sendmail

2 comentarios en “Sendmail y el MSP”


  1. Muy buena la información. Me preguntaba si tienes alguna especie de HowTo para instalar/configurar Sendmail en Debian y de ser posible, que autentique contra LDAP.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: