
Esta es una herramienta de línea de comandos que puede enviar correos electrónicos a través de SMTP. No solo es fácil de usar, sino que también proporciona simultáneamente una multitud de opciones cuando se necesita.
El año pasado, publicamos un artículo de blog que muestra cómo usar la herramienta telnet ubicua y muy útil para verificar una conexión SMTP.
El siguiente paso es simplificar el proceso manual usando una increíble herramienta de “siguiente nivel” (se refiere a sí misma como la navaja suiza del correo electrónico) llamada SWAKS. Esta es una herramienta de línea de comandos que puede enviar correos electrónicos a través de SMTP. No solo es fácil de usar, sino que también proporciona una gran cantidad de opciones cuando se necesita.
Al principio, me intimidaba la cantidad de opciones, pero es perfectamente utilizable con las opciones más básicas. Si tienes algún problema, simplemente guarda esta página en tus favoritos, copia y pega los ejemplos, y modifícalos a tu gusto. Al final de este blog, una vez que hayas adquirido cierta familiaridad y no tengas mucha variación/dinámica en tus comandos de SWAKS, te mostraré cómo crear un archivo de configuración que predefine todos tus parámetros por defecto. ¡Esto hace que ejecutar SWAKS sea literalmente a un botón (bueno, “tecla”) de distancia!
Para el propósito de este ejercicio, vamos a ejecutar los comandos desde un servidor CentOS 7, pero los comandos son similares en todas las plataformas compatibles. Como se mencionó anteriormente, si te quedas atascado, simplemente copia y pega directamente en tu sistema y modifica lo que necesites. Aquí están los conceptos básicos:
Instalar
sudo yum install epel-release -y && sudo yum install swaks -y
Una vez instalado, aquí está la sintaxis básica para enviar un mensaje. En este ejemplo, usamos la dirección local del servidor:
swaks -s 127.0.0.1 -f sender@from.com -t recipient@recipient.com
Envía un mensaje con un encabezado de línea de “Subject” + otros encabezados e incluye un texto “Hello World!” en el cuerpo:
swaks -s 127.0.0.1 -f me@from.com -t them@recipient.com --header "Subject: Hello! This is the subject header\Second_header:123\nThird_Header:XYZ" --body “Hello World!”
Aquí está cómo añadir un archivo adjunto, donde SWAKS hace la conversión a base64 por ti, genial para probar límites de tamaño de mensaje:
swaks -s 127.0.0.1 -f me@from.com -t them@recipient.com --attach /path/to/file.tgz
¡Estás prácticamente listo con lo básico! Ahora veamos cómo puedes mejorar tu configuración. Aquí hay algunas ideas:
Usa un programador como chron para realizar pruebas básicas 'funciona' que pueden funcionar como base o incluso para mejorar tu sistema de monitoreo.
Medir la latencia al conectar y cerrar una conexión a un servidor de correo.
Probar diferentes versiones de TLS y cifrados
No te vas a quedar solo aquí, te mostraré cómo hacer todo lo anterior. Esta vez vamos a inyectar en nuestros servidores SparkPost.
Envía un mensaje a nuestros servidores SparkPost (Cómo crear la clave API aquí, y las opciones SMTP aquí). Una vez que obtengas tu clave de autenticación, pégala en el comando (¡asegúrate de mantener la clave segura!):
swaks -server smtp.sparkpostmail.com:587 -tls --auth-user SMTP_Injection --auth-password [tu clave de auth] -f me@from.com -t them@recipient.com
Si buscas orientación sobre cómo solucionar problemas al enviar a nuestros servidores vía SMTP, revisa este artículo. Para pruebas básicas de conexión SMTP, también puedes verificar las conexiones SMTP usando sesiones telnet manuales.
Reiterando las mejores prácticas de seguridad, SparkPost ha descontinuado todas las versiones de TLS anteriores excepto v1.2 y superiores. Si quieres ver si tu sistema es compatible, SWAKS te permite probar versiones específicas de TLS y cifrados.
swaks -s smtp.sparkpostmail.com -tls -p 587 -f me@from.com -t them@recipient.com -tlsp tlsv1_2 --tls-cipher ECDHE-RSA-AES128-GCM-SHA256
En este ejemplo, estamos usando “tlsv1_2” pero adelante y cambia eso a “tlsv1_1” y úsalo en otros dominios para observar su compatibilidad.
¿Qué pasa si quieres cronometrar qué tan rápido responde un servidor de correo? SWAKS puede recorrer el ciclo SMTP y desembarcar en algunos puntos sin enviar un mensaje, y puedes cronometrarlo usando el comando “time”, que muestra al final del resultado:
$ time swaks -s 127.0.0.1 -f sender@from.com -t them@recipient.com test--quit-after RCPT === Trying 127.0.0.1:25... === Connected to 127.0.0.1. … -> RCPT TO:<them@recipient.com> <- 250 2.1.5 <them@recipient.com> ok -> QUIT <- 221 2.0.0 v1pmta5.jasdevism.com says goodbye === Connection closed with remote host. real 0m0.049s user 0m0.038s sys 0m0.009s
Como lo prometí, si llegaste hasta aquí, la recompensa es esta sencilla manera de cantar un archivo de configuración para establecer parámetros predeterminados:
$ Cd $HOME $ vim .swaksrc # Copia y pega esto en el archivo .swaksrc --from swakstest@jasdevism.com h-From: "Jas Swaks" <swakstest@jasdevism.com> -s 127.0.0.1 --body "¡Esto es una prueba!" --to jsingh@sparkpost.com
Una vez que lo guardes, simplemente escribe “swaks“ y lo rellena todo y lo envía en su camino feliz. Aún mejor, puedes sobrescribirlo agregando en la línea de comandos, por ejemplo, si deseas un destinatario diferente:
swaks -t recipient@somewherelse.com