08 – nullmailer (Correo 01)

Bienvenidos a este octavo episodio de deployando.me, el podcast de tecnología para sysadmins y devops. Soy Rodolfo Pilas y estoy grabando el 22 de diciembre de 2016.

Quiro agradecer a todos los que nos han dejado comentarios en el blog Deployando.Me; esos comentarios ilustran mejor lo que nosotros presentamos semana a semana. Y también a nuestros seguidores en twitter que difunden nuestro podcasting con sus likes y sus retweets.

Esta semana voy a empezar una nueva serie sobre el correo electrónico en sistemas GNU/Linux, este va a ser el primer capítulo y a medida que vayan pasando las semanas iré adicionando otras herramientas que son las que vinculo al correo electrónico.

Todos sabemos que una vez que instalamos un GNU/Linux, él genera correo; generalmente se expresa por correo. Nosotros vamos a recibir mucha información de cómo está el sistema por el correo electrónico. Por ejemplo, el crontab cuando un usuario agendó una tarea si esa garea genera una salida cuando es ejecutada ese resultado nos va a llegar por correo. Tambien si instalamos algun software de monitoreo va a estar avisando por correo. O, a veces un servicio, va a tener direcciones por defecto que recibirán mensajes de ese daemon, según los problemas que tenga a la hora de correr.

Generalmente, si no tomamos ninguna precaución, el servidor va a estar mandando correos localmente o sea, la mayoría de los correos van a terminar en el usuario root. El usuario root colecciona un montón de correo que nadie lee, salvo que hagamos algo al respecto. Siempre insisto a mis estudiantes la importancia de hacer llegar esos correos a cuenta donde las podamos atender, aunque más no sea leerlos rapidamente o clasificarlos con un filtro, o por lo menos borrarlos pero saber que están llegando.

Es importante entonces que ese correo que se genera en nuestros servidores GNU/Linux salga, sea ruteado, hasta una dirección de correo válida.

Cuando instalamos un GNU/Linux en su versión servidor, generalmente queda instalado un MTA que será el encargado de recibir esos correos que se generan y hacerlos llegar a un usuario dentro del mismo servidor. Por defecto, se instala un MTA como postfix o exim4 que es un excelente software para el manejo de correo electrónico.

En esta edición de deployandome les voy a contar de nullmailer, que para definirlo rapídamente les digo que es un agente de trasnporte de correo simple que solo permite relay hacia un único host externo.

Nullmailer es un remplazo de los conocidos MTA como postfix, exim4 o qmail. Lo que hace nullmailer es tener un relay host fijo y está diseñado para ser configurado de una manera muy simple.

No obstante su configuración puede ser extendida en funcionalidad, por ejemplo, para validar usuario, conectar con SSL o TLS.

Una de las principales ventajas de nullmailer es que permite encolar el correo, entonces si por algun montivo la conexión con el host de relay se pierde, él va a estar encolando todo lo que recibe. Dicho de otra forma, nuestras aplicaciones van a poder enviar correo y desentenderse de esa función, siendo nullmailer el que toma la tarea de enviarlo hacia el relay host; y si por algún motivo no puede hacerlo, estará encolando el correo hasta que la conexión se reestablesca.

Nullmailer es un conjunto de aplicaciones, si tuviera que contarles cómo trabaja:

Nuestra aplicación va a utilizar sendmail para mandar el correo localmente y lo toma el primero de los componentes de nullmailer,

nullmailer-inject que permite reformatear el mensaje para cumplir con el RFC822. Permite dar formato a campos como el To, From: Cc, Bcc, Reply-To, etc. y por ejemplo poner un dominio normalizado en el campo From:, y pasa el correo a

nullmailer-smtpd que es un front-end smtpd para entregar el correo a

nullmailer-queue que lee la entrada estándar y si el mensaje satisface el formato de correo electrónico lo inyecta en la cola de salida

nullmailer-smtp es el único daemon que está activo y lee la cola de salida y se encarga de la transmisión d los correos encolados, se le pueden configurar cosas como sus reintentas o timeouts.

Como ven por su estructura, hablamos de una herramienta muy sencilla. Ya la instalación por defecto y la configuración del relay host lo dejan funcionando y sacando el correo hacia fuera de nuestro servidor.

Nullmailer es un software creado por Bruce Guenter y su última versión es la 2.0 de principios de 2016.

Se distribuye bajo GNU GENERAL PUBLIC LICENSE (GPL), por lo cual es un software libre que puede ser estudiado, modificado y compartido de acuerdo a las necesidades de cada uno.

Nullmailer ha sido uno de esos software que se desde que descubrí paso a ser obligatorio en todos los servidores e instancias GNU/linux que instalo y es responsable de toda la salida de los correos mi smarthost.

Entonces, si instalas un servidor y no prestas atención a los correos electrónicos que el propio sistema está generando, ten en cuenta que se están acumulando, generalmente en el usuario root, y deberías tomar alguna precaución para que esos correos lleguen a una cuenta.

Si ya te encargas de rutear los correos con postfix o exim4 te invito a que pruebes nullmailer y verás que es bastante más liviano. Me parece la herramienta justa para la tarea.

Si ya usas nullmailer u otra herramienta, te invito a que compartas tu experiencia, si has tenido problemas o has encontrado una mejor solución para que los correos lleguen a tus cuentas donde los lees y procesas.

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

Les deseo a todos una feliz Navidad y que puedan compartirla con sus seres queridos.

Hasta la próxima edición.