mailgun-sending

El servicio de correo electrónico suele ser el que más dolores de cabeza nos genera. Entre la configuración del dominio (DNS) y los servicios (SMTP/POP/IMAP), los correos que rebotan, los virus y el SPAM, conforman lo que tal vez sea el peor servicio que le toque administrar a un SysAdmin. Entonces, por qué mejor no delegarlo a los expertos y migrarlo al cloud.

Este artículo explica cómo configurar un dominio y utilizar la API del servicio Mailgun para enviar correo electrónico de manera programática, sin necesidad de contar con un servidor de correo electrónico para nuestro dominio ni un cliente (MTA). Esta configuración es ideal para nuestros servidores en la nube ya que nos permite desentendernos del servicio de correo y delegar este problema a Mailgun. Por otro lado, migrar el servicio de correo a la nube es beneficioso en el sentido que toda la infraestructura que lo sustenta consume una gran cantidad de recursos (memoria, disco) que tal vez no disponemos.

Mailgun es un servicio de correo en la nube para desarrolladores, que nos permite enviar y recibir correo desde una API a través de HTTPS. Lo mejor de todo es que Mailgun nos permite enviar de manera gratuita hasta 10.000 correos por mes.

A continuación voy a demostrar cómo dar de alta una cuenta de Mailgun, cómo configurar un dominio correctamente para enviar correo a través de Mailgun, y cómo enviar correo desde un script Bash a través de HTTPS.

Mi objetivo es crear un MTA en Bash para enviar los correos de logwatch a través de Mailgun, utilizando un dominio alojado en Namecheap.

Para comenzar, crear una cuenta en Mailgun desde app.mailgun.com/signup:

mailgun01

Inmediatamente luego de crear la cuenta, es posible enviar nuestro primer correo utilizando un servidor sandbox:

mailgun02

El siguiente paso consiste en configurar el dominio a nombre del cual se enviará correo:

mailgun03

Para dicho dominio es necesario configurar los registros DNS necesarios para el correcto envío de correo (SPF, DKIM y MX):

mailgun04

La configuración de la zona DNS depende de cada proveedor. Tal como mencioné al comienzo del artículo, en mi caso utilizo Namecheap. Desde el editor DNS avanzado, agregar los registros TXT y MX.

mailgun05 mailgun06

Es probable que se requieran algunas modificaciones menores. Particularmente en Namecheap, notar cómo he cambiado "linuxito.com" por "@" en la configuración de los registros SPF y MX.

Como cada vez que se realizan modificaciones en una zona DNS, es necesario esperar que estos cambios DNS propaguen a través de Internet. Una vez propagados (pueden demorar hasta 48 horas), es posible verificar los registros (deben aparecer las tildes en verde):

mailgun07

La API de Mailgun autentica a través de una clave, la cual aparece difuminada en las capturas). Copiar y guardar esta clave al momento de crear la cuenta (se puede obtener dicha clave desde nuestra cuenta de usuario de Mailgun en cualquier momento). En su funcionamiento básico, permite enviar correo a través de un formulario Web, completando correctamente los campos "from", "to", "subject" y "text" (cuerpo del mensaje). Para ello se puede recurrir a curl:

mailgun08

El mensaje se envía correctamente y se recibe en la casilla destino:

mailgun09

En este ejemplo, la casilla destino es una cuenta de GMail, y el mensaje pasa correctamente los filtros SPF y DKIM:

mailgun10

La API de Mailgun además permite recibir correo y borrar mensajes en el servidor. Para más información recurrir a la documentación oficial.

Próximamente demostraré como crear un MTA en lenguaje Bash para enviar correo de manera sencilla con Mailgun.

Referencias

Fuente: linuxito

¿Quién está en línea?

Hay 4771 invitados y ningún miembro en línea