09 – ssmtp (Correo 02)

Bienvenidos a este noveno episodio de deployando.me, el podcast de tecnología para sysadmins y devops. Soy Rodolfo Pilas y estoy grabando el 5 de febrero de 2017.

Habrán visto que me tomé una especie de descanso, vamos a no decir vacaciones, entre el podcast número ocho y este noveno. Ese descanso correspondió con enero, donde dio para hacer nuevos planes y demás; lo importante es que arrancamos este podcast con bastantes ganas, tengo muchos temas en carpeta para ir compartiendo edición tras edición.

Si recuerdan en el último episodio de la serie empecé a hablar de utilidades para correo electrónico; en particular habíamos visto que todo servidor GNU/Linux que instalamos va a estar generando correo, la forma de expresar su funcionamiento es mediante correo electrónico.

Así fue que el el capítulo ocho hablamos de una utilidad llamada nullmailer, que habíamos definido como un agente de transporte de correo simple que solo permite el relay hacia un único host.

Nullmailer lo he usado y lo uso en varios servidores y estoy muy contento con él pero tiene un problemita, que requiere un daemon, un residente corriendo continuamente para hacer el trabajo.

El problema del daemon es que, como todo daemon, se puede caer o dejar de funcionar por algún motivo; por lo tanto tiene que estar monitoreado. Necesitamos enterarnos si ese daemon cae mediante un tercer agente para poder tomar alguna medida.

Para algo tan simple como nullmailer lo que utilizo es monit.

Monit es un monitor del cual pienso hablar en algún momento en este podcast, que es muy lindo en el sentido que uno le puede hacer tomar acciones ante un evento; en el caso de nullmailer volver a levantar.

Pero de algo tan simple como sacar el correo generado, ya tengo un daemon que es simple y acabo de agregar un monitor también simple y, entonces, lo simple se vuelve complejo.

Así fue que buscando encontré algo que se llama SSMTP es un agente de transporte de correo extremadamente simple y de eso va a tratar esta edición novena de deployando.me.

Como les decía SSMTP vino a mi en ese afán de buscar algo más simple aún que nullmailer y les decía que es extremadamente simple porque lo único que hace es sacar el correo donde se genera hacia un servidor externo de correo, que puede ser via pop, imap o por montado de un share nfs.

SSMTP se auto define como una forma efectiva y simple de sacar el correo local hacia un servidor de correo y, lo que soluciona el problema que comentaba al principio, es que SSMTP no es un daemon; por lo que no tengo el problema de monitorearlo.

Tampoco requiere permisos de setuid u otras cosas que puedan generar riesgo de seguridad.

¿cómo hace SSMTP para hacer esta función? Bueno, trabaja como un flujo, un streaming, entre la aplicación que genera el correo y el servidor MTA remoto.

A su vez, la configuración de SSMTP es extremadamente simple. Es un único archivo donde le configuramos quién va a recibir los correos de los daemons (UID menores a 1000), configuramos la dirección del MTA relay que vamos a utilizar, una dirección de correo saliente, y si permitimos que los usuarios locales (UID mayores a 1000) puedan o no definir su propio from.

Con SSMTP no vamos a poder recibir correos, no vamos a hacer manejo de alias, o escritura de cabezales y menos procesar los .forward de los usuarios. Y tampoco vamos a tener colas, ni manejado de cola.

Es importante destacar que SSMTP no es un reemplazo de sendmail, ya que no implementa toda su funcionalidad.

Entonces dirán: “encontraste lo que querías”, algo sencillo que te saca el correo. Pero ¿qué problemas he encontrado usando SSMTP?

El principal problema es cuando algo falla.

El problema de no tener una cola local, fíjense que todo el debug de su funcionamiento se hace en el servidor de correo que recibe, que es el que realmente encola. Cuando falla la conexión con el MTA, SSMTP solamente responderá que no puede recibir el correo a la aplicación.

A la hora de hacer un debug de una aplicación que envía correo he tenido problemas porque no se si es la aplicación que no envía o el servidor que no recibe. Lo que hago en esos casos es instalar un nullmailer para ver si el correo llega y queda encolado, y verificar si el problema está en la aplicación o en la conexión al servidor MTA.

Después les diré que es bárbaro porque no tengo que preocuparme de monitoreo y el correo llega.

SSMTP es un software libre, principalmente lo he encontrado en distribuciones basadas en Debian, tiene cuatro desarrolladores y tres de ellos son también desarrolladores Debian.

Lo que les quiero dejar es que no ignoren el correo que se genera en cada uno de nuestros servidores.

Soy Rodolfo Pilas, en twitter me siguen por @pilasguru y les dejo un saludo a todos, confiando en que este podcast les haya aportado para mejorar y, como siempre, espero sus inquietudes y sugerencias comentando en deployando.me

Hasta la próxima edición.

Referencias: