Enviar un correo desde el terminal por medio de SMTP | Programador Web Valencia

Enviar un correo desde el terminal por medio de SMTP

2 minutos

Shell to email

Simple de Transferencia de Correo (SMTP, por sus siglas en inglés) es el protocolo de red más utilizado en la historia para la transmisión de correos electrónicos. Lleva vigente desde 1980, aunque ha sido actualizado en diferentes ocasiones, con conceptos que vienen de ARPANET desde 1971. SMTP es más antiguo que el propio internet, con medio siglo de vida y gozando de una salud excepcional.

El protocolo utiliza un modelo cliente-servidor para el envío de correos. Un cliente SMTP, como un programa de correo electrónico (Thunderbird, Outlook…), se conecta a un servidor SMTP (Gmail, Fastmail…) y envía el mensaje. El servidor SMTP procesa el mensaje y lo transmite al servidor SMTP del destinatario, que luego lo entrega al destinatario final. Utiliza el puerto 25 como predeterminado para las comunicaciones, pero también se pueden utilizar otros puertos, como el puerto 587, que requiere autenticación. SMTP también es compatible con el cifrado TLS (Transport Layer Security) para asegurar la privacidad de los datos transmitidos durante la comunicación.

Vamos a jugar un poco con el protocolo enviando un correo desde el terminal. Usaré Fastmail para el ejemplo, pero es totalmente compatible con Gmail o cualquier otro distribuidor.

Si tu proveedor permite el puerto 25 puedes conectarte con Telnet.

telnet smtp.fastmail.com 25

En caso contrario que quieres un envío seguro usando SSL (puerto 465) o STARTTLS (puerto 587), deberás usar OpenSSL.

openssl s_client -connect smtp.fastmail.com:465 -ign_eof

Devolverá 220 smtp.fastmail.com ESMTP ready.

Ahora nos debemos identificar, independientemente de si nos conectamos por Telnet u OpenSSL.

AUTH LOGIN

Nos dirá 334 VXNlcm5hbWU6

Introducimos nuestro nombre de usuario (normalmente será tu correo) en Base64, puedes echo -n "paco@fastmail.com" | base64 para convertirlo rápidamente. Ojo, ¡ejecútalo en otro terminal!

Introduce el resultado y pulsa enter.

cGFjb0BmYXN0bWFpbC5jb20=

A lo cual nos dirá 334 UGFzc3dvcmQ6

Ahora toca dar la contraseña. La convertimos en Base64 y también lo introducimos.

cGFasdfajbw==

Nos confirmará que nos hemos identificado correctamente con 235 2.0.0 OK.

¡Ya podemos enviar el correo! Vamos a suponer que nosotros somos paco@fastmail.com y el destinatario destinatario@ejemplo.com.

Introduce el siguiente texto, línea por línea.

MAIL FROM: paco@fastmail.com
RCPT TO: destinatario@ejemplo.com
DATA
From: "Paco" <paco@fastmail.com>
To: "Nombre destinatario" <destinatario@ejemplo.com>
Subject: Mi asunto
Texto del mensaje.
Con tantas líneas como necesites.

.

Para terminar el mensaje debes dejar un salto de línea, un punto y pulsar enter.

Te informará que todo ha ido bien con 250 2.0.0 Ok. ¡Revisa tu bandera de entrada!

Ya puedes salir.

QUIT

Si quieres ejecutar todos los comandos, uno detrás de otro, siempre puedes crear un archivo de texto con todo lo mencionarlo y pasarlo a openssl mediante un pipe.

cat script-enviar-correos.sh | openssl s_client -connect smtp.fastmail.com:465 -ign_eof

Si quieres seguir profundizando en las particularidades del protocolo SMTP, puedes empezar por utilizar algún proveedor popular y aprender a configurar los dominios necesarios, entender su uso, y tal vez implementar tu propia librería en tu lenguaje favorito. Cuanto más conozcas una tecnología, más podrás sacarle provecho a nivel profesional.

Web

Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.

Atribución/Reconocimiento-NoComercial-SinDerivados 4.0 Internacional

¿Me ayudas?

Comprame un café
Pulsa sobre la imagen

No te sientas obligado a realizar una donación, pero cada aportación mantiene el sitio en activo logrando que continúe existiendo y sea accesible para otras personas. Además me motiva a crear nuevo contenido.

Comentarios

{{ comments.length }} comentarios

Nuevo comentario

Nueva replica  {{ formatEllipsisAuthor(replyComment.author) }}

Acepto la política de Protección de Datos.

Escribe el primer comentario

Tal vez también te interese...