Envío de correo electrónico con autenticación SMTP a través de Telnet u OpenSSL

Puede utilizar el incorporado telnet herramienta de línea de comandos para conectarse a un servidor SMTP remoto y enviar un correo electrónico de prueba. Esta es la forma más fácil y rápida de probar un servidor SMTP remoto y no requiere la instalación de un cliente SMTP completo. Pero en la mayoría de los casos, los servidores SMTP requieren autenticación de usuario y el envío no autenticado solo es posible a través de servidores SMTP anónimos (retransmisiones SMTP).

En este ejemplo, le mostraremos cómo autenticarse en un servidor SMTP y enviar un correo electrónico desde la línea de comandos telnet. Consideraremos la opción con un servidor SMTP normal, así como con un servidor SMTP que acepta conexiones solo a través de un protocolo seguro SST / TLS.

Prueba de la autenticación SMTP con Telnet

Para autenticarse en un host SMTP remoto a través de telnet, Autenticación básica debe ser permitido en su configuración. La autenticación básica está habilitada de forma predeterminada en los servidores Exchange de la red corporativa. Este tipo de autenticación implica enviar el nombre de usuario y la contraseña a través de la red en base64 forma codificada.

En Exchange Server, puede habilitar o deshabilitar la autenticación básica en la configuración del conector de recepción.

Puede habilitar la autenticación básica en el conector de Exchange desde la consola de PowerShell (necesita instalar EMS en su computadora o conectarse a Exchange Server de forma remota):

Get-ReceiveConnector "ExchRecConnector1" | Set-ReceiveConnector -AuthMechanism Tls, Integrated, BasicAuth, ExchangeServer

Nota. Por favor, preste atención a que si el atacante tiene acceso al canal de comunicación, puede capturar y descifrar fácilmente las credenciales de usuario codificadas con Base64. Por lo tanto, este método de autenticación se recomienda solo para redes corporativas privadas.

Si está utilizando canales de comunicación no seguros entre el cliente y el host de Exchange, es recomendable permitir BasicAuth solo después de establecer una sesión TLS segura. Habilite el Ofrezca autenticación básica solo después de iniciar TLS opción en las propiedades del conector en EMC, o use PowerShell:

Get-ReceiveConnector "ExchRecConnector1" | Set-ReceiveConnector -AuthMechanism 'Tls, BasicAuth, BasicAuthRequireTLS'

Los detalles del envío de mensajes SMTP a través de TLS / SSL se describen en la siguiente sección del artículo.

Para autenticarse en el servidor SMTP a través de AUTH LOGIN, debe convertir el nombre de usuario y la contraseña desde los cuales se enviará el correo electrónico al formato Base64. Para convertir una cadena a Base64, puede usar la función de PowerShell:

[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("testuser@woshub.com"))

O el módulo Perl MIME :: Base64:

perl -MMIME::Base64 -e 'print encode_base64("username");'
O utilice cualquier servicio en línea, por ejemplo, https://www.base64encode.org.

El nombre de usuario test_user@woshub.com parecía dGVzdF91c2VyQHdvc2h1Yi5jb20g en Base64

La contraseña $ up3RsTr) ng convertido en JHVwM1JzVHIpbmc = en Base64

codificación base64

Abra un símbolo del sistema y use Telnet para conectarse al puerto 25 (SMTP) del servidor (resaltaré los comandos que se ingresarán en azul):

telnet mail.woshub.com 25

Si es un host con Exchange Server, devolverá algo como;

220 mail.woshub.com Microsoft ESMTP MAIL Service ready at Thu, 25 Nov 2021 10:22:31 +0300

Primero debes presentarte al servidor:

ehlo sender.woshub.com

El servidor devolverá la lista de métodos y opciones de autenticación admitidos. Como puede ver, hay AUTH LOGIN (autenticación básica) en la lista.

250-mail.woshub.com Hello [192.168.1.115]
250-SIZE 36700160
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-AUTH LOGIN
250-8BITMIME
250-BINARYMIME
250 CHUNKING

Los siguientes protocolos de autenticación se pueden utilizar en servidores SMTP: PLAIN, GSSAPI, DIGEST-MD5, MD5, CRAM-MD5, OAUTH10A, OAUTHBEARER.

Por ejemplo, una respuesta de este tipo del servidor SMTP indica que se admiten 3 protocolos de autenticación.

250 AUTH GSSAPI DIGEST-MD5 PLAIN

Los métodos de autenticación básicos PLAIN y LOGIN utilizan la codificación BASE64 del nombre y la contraseña. La diferencia entre ellos es que para el LLANURA método, el nombre de usuario y la contraseña se envían en una línea. Y al usar ACCESO, primero se envía el inicio de sesión y luego la contraseña.

Si su servidor SMTP admite el método de autenticación PLAIN, puede codificar el nombre de usuario y la contraseña utilizando la función perl o PowerShell:

perl -MMIME::Base64 -e 'print encode_base64("00testuser@woshub.com00$up3RsTr)ng")'

[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("usernamepassword"))

Dígale al servidor SMTP que desea autenticarse usando el método LOGIN:

AUTH LOGIN

El servidor responderá:
334 VXNlcm5hbWU6

Al autenticarse con el método PLAIN, puede enviar las credenciales del usuario de inmediato:

AUTH PLAIN XDB0ZXN0X3VzZXJAd29zaHViLmNvbVwwKW5n

Ahora copie y pegue el nombre de usuario en el formato Base64 que cifró anteriormente:

dGVzdF91c2VyQHdvc2h1Yi5jb20g

El servidor responderá con un código 334:

334 UGFzc3dvcmQ6.

Luego copie y pegue la contraseña en formato Base64:
JHVwM1JzVHIpbmc =

Si el nombre de usuario y la contraseña son correctos, el servidor devolverá:

235 2.7.0 Authentication successful

Si no:

535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6

telnet - AUTH-LOGIN

Es hora de completar los campos estándar de correo electrónico:

correo de: test_user@woshub.com
250 2.1.0 Sender OK
rcpt a: root@woshub.com
250 2.1.5 Recipient OK
datos
354 Start mail input; end with .
de: TestUser <
a: TheMainAdmin
Asunto: Prueba BASE SMTP autenticado a través de Telnet
Esta es la prueba
.
250 2.6.0 <ae80543d-cb8a-5c45-ad80-23b1985df753@mail.woshub.com> [InternalId=6334284] Queued mail for delivery

El correo electrónico se ha puesto en cola para su entrega.

enviar correo electrónico mediante telnet

DEJAR

221 2.0.0 Closing connection.
Connection closed by foreign host.

Después de un tiempo, compruebe si el correo electrónico se ha entregado al buzón del destinatario.

Uso de SMTP autenticado sobre TLS / SSL

La mayoría de los proveedores de SMTP no permiten sesiones SMTP de texto sin formato. Solo se permiten conexiones SMTP cifradas con TLS. Puede autenticarse en el servidor SMTP utilizando los métodos LOGIN y PLAIN solo después de inicializar la conexión TLS. Telnet no es compatible con SSL o TLS, por lo que debe utilizar el OpenSSL herramienta para conectarse al servidor SMTP a través de TLS.

Veamos cómo usar OpenSSL para conectarse al servidor SMTP a través de TLS y autenticarse usando AUTH LOGIN.

Descargue e instale OpenSSL:

Para conectarse al host SMTP desde la línea de comandos con el cifrado SSL / TLS, utilice el siguiente comando:

openssl.exe s_client -starttls smtp -connect smtp.woshub.com:25

Ejecute el comando EHLO después de establecer una conexión SSL segura con el servidor SMTP.

El servidor SMTP devolverá:

EHLO sender.woshub.com
250- smtp.woshub.com
250-PIPELINING
250-SIZE 52428800
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

Ahora puede autenticarse con AUTH LOGIN o AUTH PLAIN y enviar correo electrónico como se describe arriba.

Autenticación SMTP en Office 365 con TLS

A finales de octubre de 2020, Microsoft bloqueó el uso de la autenticación básica para conectarse a buzones de correo en Exchange Online. La autenticación SMTP para servidores en Office 365 (Microsoft 365 / Exchange Online) todavía es compatible, pero se considera insegura. Microsoft deshabilita SMTP AUTH para todos los nuevos inquilinos. Esto significa que no podrá conectarse a hosts SMTP en Office 365 desde la línea de comandos usando telnet o openssl.

Para enviar correo electrónico de prueba a través de servidores SMTP de Office 365, debe usar el cmdlet Send-MailMessage de PowerShell.

$emailto='emailto@woshub.com'
$emailfrom='emailfrom@woshub.com'
$smtpserver="smtp.office365.com"
$MailMessage = @{
To = $emailto
From = $emailfrom
Subject = "Testing SMTP TLS on O365"
Body = "This is a test measles "
Smtpserver = $smtpserver
#ErrorAction = "SilentlyContinue"
Port="587"
}
Send-MailMessage @MailMessage -UseSsl -Credential $cred

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *