
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í tienes la sintaxis básica para enviar un mensaje. En este ejemplo, estamos utilizando la dirección local del servidor:
swaks -s 127.0.0.1 -f sender@from.com -t recipient@recipient.com
Enviar un mensaje con una línea de "Subject" y otros encabezados y luego incluir el 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í te mostramos cómo agregar un archivo adjunto, donde SWAKS realiza la conversión base64 por ti, genial para probar los límites de tamaño de los mensajes:
swaks -s 127.0.0.1 -f me@from.com -t them@recipient.com --attach /path/to/file.tgz
¡Ya tienes lo básico cubierto! Ahora veamos cómo puedes mejorar tu configuración. Aquí tienes algunas ideas:
Usa un programador como chron para realizar pruebas básicas de '¿funciona?' que pueden servir como base o incluso mejorar tu sistema de monitoreo.
Mide la latencia al conectar y cerrar una conexión con un servidor de correo.
Prueba diferentes versiones y cifrados de TLS
No vas a quedarte solo aquí, te mostraré cómo hacer todo lo anterior. Esta vez vamos a inyectarnos en nuestros servidores SparkPost.
Envía un mensaje a nuestros servidores SparkPost (Cómo crear la clave de API aquí, y las opciones SMTP). Una vez que obtengas tu clave de autenticación, pégala en el comando (¡asegúrate de mantener la clave segura y protegida!):
swaks -server smtp.sparkpostmail.com:587 -tls --auth-user SMTP_Injection --auth-password [your auth key] -f me@from.com -t them@recipient.com
Si estás buscando orientación sobre cómo resolver problemas al enviar por SMTP a nuestros servidores, consulta este artículo. Para pruebas básicas de conexión SMTP, también puedes verificar las conexiones SMTP usando sesiones telnet manuales.
Replicando las mejores prácticas de seguridad, SparkPost ha desaprobado todas las versiones anteriores de TLS excepto la v1.2 y superiores. Si deseas saber si tu sistema es compatible, SWAKS te permite probar versiones y cifrados específicos de TLS.
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 úsalos en otros dominios para observar su compatibilidad.
¿Y si quieres cronometrar qué tan rápido responde un servidor de correo? SWAKS puede atravesar el ciclo SMTP y desconectarse en algunos puntos sin enviar un mensaje, y puedes medirlo usando el comando “time” que se muestra al final del resultado:
$ time swaks -s 127.0.0.1 -f sender@from.com -t them@recipient.com test--quit-after RCPT === Intentando 127.0.0.1:25... === Conectado a 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 dice adiós === Conexión cerrada con el host remoto. real 0m0.049s user 0m0.038s sys 0m0.009s
Como prometido, si has llegado hasta aquí la recompensa es esta sencilla cantando un archivo de configuración para establecer parámetros predeterminados:
$ Cd $HOME $ vim .swaksrc # Copia y pega esto en el archivo en el archivo .swaksrc --from swakstest@jasdevism.com h-From: "Jas Swaks" <swakstest@jasdevism.com> -s 127.0.0.1 --body "This is a test!" --to jsingh@sparkpost.com
Una vez que lo guardes, simplemente escribe “swaks” y completa automáticamente todo y lo envía felizmente! Aún mejor, puedes sobrescribir agregándolo en la línea de comandos, por ejemplo, si deseas un destinatario diferente:
swaks -t recipient@somewherelse.com