Puede utilizar el integrado 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 la autenticación del 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 de telnet. Consideraremos la opción con un servidor SMTP normal, así como con un servidor SMTP que acepte conexiones solo a través de un protocolo SST/TLS seguro.
Prueba de autenticación SMTP con Telnet
Para autenticarse en un host SMTP remoto a través de telnet, Autenticación básica debe estar 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 consiste en 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 (debe 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. Habilitar 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 que 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("[email protected]"))
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 [email protected] parecía dGVzdF91c2VyQHdvc2h1Yi5jb20g en Base64
La contraseña $up3RsTr)ng convertido en JHVwM1JzVHIpbmc= en 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 necesitas presentarte al servidor:
ehlo sender.woshub.com
El servidor devolverá la lista de opciones y métodos 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 usar 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 básicos de autenticación PLAIN e LOGIN utilizan la codificación BASE64 del nombre y la contraseña. La diferencia entre ellos es que para el SENCILLO método el nombre de usuario y la contraseña se envían en una línea. Y al usar ACCESOel inicio de sesión se envía primero, 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 mediante la función Perl o PowerShell:
perl -MMIME::Base64 -e 'print encode_base64("�[email protected]�00$up3RsTr)ng")'
[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("�username�password"))
Dígale al servidor SMTP que desea autenticarse mediante el método LOGIN:
INICIO DE SESIÓN
El servidor responderá:
334 VXNlcm5hbWU6
Al autenticarse con el método PLAIN, puede enviar las credenciales del usuario de inmediato:
AUTH SIMPLE XDB0ZXN0X3VzZXJAd29zaHViLmNvbVwwKW5n
Ahora copia y pega el nombre de usuario en el formato Base64 que encriptaste 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
Que no:
535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6
Es hora de completar los campos de correo electrónico estándar:
correo de: [email protected]
250 2.1.0 Sender OK
rcpt a: [email protected]
250 2.1.5 Recipient OK
datos
354 Start mail input; end with .
de: TestUser <[email protected]><
a: TheMainAdmin <raí[email protected]>
Asunto: prueba BASE SMTP autenticado a través de Telnet
esto es prueba
.
250 2.6.0 <[email protected]> [InternalId=6334284] Queued mail for delivery
El correo electrónico se ha puesto en cola para su entrega.
RENUNCIAR
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 en el 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 mediante AUTH LOGIN.
Descargue e instale OpenSSL:
Para conectarse al host SMTP desde la línea de comandos con el cifrado SSL/TLS, use 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 un correo electrónico como se describe anteriormente.
Autenticación SMTP en Office 365 con TLS
A fines de octubre de 2020, Microsoft bloqueó el uso de la autenticación básica para conectarse a los 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 inquilinos nuevos. Esto significa que no podrá conectarse a hosts SMTP en Office 365 desde la línea de comandos usando telnet
o openssl
.
Para enviar un correo electrónico de prueba a través de los servidores SMTP de Office 365, debe usar el cmdlet de PowerShell Send-MailMessage.
$emailto='[email protected]'
$emailfrom='[email protected]'
$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
Artículos Interesantes
Contenido