Enviar correo a través de servidores SMTP
El comando de correo predeterminado en la terminal de Linux utiliza el servidor smtp local (mta) en el puerto 25 para enviar correos electrónicos. Sin embargo, a veces necesita especificar un servidor smtp externo para usar para enviar correos.
Por ejemplo, acaba de configurar un servidor smtp, como Postfix o Exim, entonces querrá probarlo para verificar si está recibiendo y transmitiendo correos electrónicos correctamente o no.
Poder enviar correos desde la línea de comandos utilizando este servidor smtp externo es rápido en lugar de tener que configurar un cliente de correo como Thunderbird en su máquina local.
Hay 2 utilidades de línea de comando llamadas mailx y swaks que se pueden usar para enviar correos usando un servidor smtp externo. Estos son bastante útiles cuando necesita enviar correos electrónicos desde un script bash de manera automática.
1. comando mailx
El comando mailx está disponible en muchos paquetes diferentes, como mailutils, heirloom-mailx, etc. Primero debe usar el comando aptitude para buscar el paquete mailx disponible para su sistema. Aquí hay un ejemplo
$ aptitude search mailx p bsd-mailx - simple mail user agent p bsd-mailx:i386 - simple mail user agent v mailx - v mailx:i386
Para averiguar qué comando mailx está usando su sistema, ejecute el comando readlink. Aquí hay una salida de muestra.
$ readlink -f /usr/bin/mailx /usr/bin/bsd-mailx $ readlink -f /usr/bin/mailx /usr/bin/mail.mailutils
No todas las variantes de mailx pueden usar servidores smtp externos para enviar correo. Solo el que viene del paquete s-nail (tirado por heirloom-mailx) puede hacerlo.
Usaremos heirloom-mailx ya que permite especificar los detalles de la conexión smtp en un solo comando y enviar un correo electrónico rápidamente.
$ sudo apt-get install heirloom-mailx
Ahora envíe un correo electrónico con un servidor smtp externo como este -
echo "This is the message body and contains the message" | mailx -v -r "[email protected]" -s "This is the subject" -S smtp="mail.example.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="[email protected]" -S smtp-auth-password="abc123" -S ssl-verify=ignore [email protected]
Aquí hay una versión paso a paso del mismo comando -
$ echo "This is the message body and contains the message" | mailx -v \ > -r "[email protected]" \ > -s "This is the subject" \ > -S smtp="mail.example.com:587" \ > -S smtp-use-starttls \ > -S smtp-auth=login \ > -S smtp-auth-user="[email protected]" \ > -S smtp-auth-password="abc123" \ > -S ssl-verify=ignore \ > [email protected]
Asegúrese de usar la configuración correcta, como el número de puerto, el mecanismo de autenticación, etc. El comando produciría una salida detallada que brinda detalles completos de la comunicación smtp que se produce detrás, lo que facilita la prueba y la depuración.
Nota: El paquete heirloom-mailx se eliminó a partir de la versión 18 de Ubuntu. Ahora tienes que instalar el paquete s-nail.
$ sudo apt-get install s-nail
El comando s-nail es el mismo que el comando heirloom mailx. Solo el nombre es diferente. Ejecute el mismo comando anterior reemplazando mailx con s-nail y debería funcionar.
Si está utilizando la última versión de s-nail (14.9.x), la sintaxis para especificar los detalles del servidor smtp puede ser ligeramente diferente. Consulte el último manual aquí
http://manpages.ubuntu.com/manpages/bionic/en/man1/s-nail.1.html
Consulte la publicación anterior sobre el comando mailx aquí -
9 ejemplos de comandos mail/mailx para enviar correos electrónicos desde la línea de comandos en Linux
2. Comando Swaks
Swaks (navaja suiza para SMTP) es una herramienta de línea de comandos simple que se puede usar para probar servidores smtp para verificar si están haciendo su trabajo correctamente. También es compatible con TLS.
Instale swaks en Ubuntu/Debian con el siguiente comando
$ sudo apt-get install swaks
Ahora envía el correo electrónico
$ echo "This is the message body" | swaks --to [email protected] --from "[email protected]" --server mail.example.com --auth LOGIN --auth-user "[email protected]" --auth-password "abc123" -tls
Todas las opciones se explican por sí mismas. La opción "--server" especifica el servidor SMTP externo a usar, "--auth" especifica el tipo de autenticación. La opción "-tls" le dice a los swaks que usen STARTTLS.
Consulta la página del manual para ver más opciones.