domingo, enero 17, 2010

Correo Gmail por Telnet

Siempre me ha gustado cacharrear con los servidores SMTP desde Telnet, si disponemos de una cuenta en Gmail esta es la forma de hacerlo.
El primer problema que nos encontramos es que un cliente telnet corriente y moliente no soporta SSL, además el nombre de usuario y el password se deben enviar codificados en base64, pero no os preocupeis porque con la ayuda de un pequeño script de cosecha propia todo será resuelto de forma muy comoda.

Para realizar conversiones a base64 emplearé un script pero esta vez será en Python, la salida del script será emplazada en /tmp/base64

Para resolver el problema de SSL vamos a instalar la aplicación stunnel:
apt-get install stunnel

  • Ahora creamos el tunel SSL que escuchará en el puerto 25 local:
stunnel -d 25 -cr smtp.gmail.com:465
La -c significa modo cliente y la -r servicio remoto
  • Ahora basta conectar con nuestro host y seremos redireccionados a smtp.gmail.com:465 pero por el tunel SSL:
telnet localhost 25

El servidor debe de responder tal que así:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mx.google.com ESMTP 28sm4369646eye.7
  • Ahora seremos educados y saludaremos al servidor:
ehlo gmail.com

Nos responderá:
250-mx.google.com at your service, [89.131.206.8]
250-SIZE 35651584
250-8BITMIME
250-AUTH LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250 PIPELINING
  • Elegimos modo de autentificarnos:
auth login

Responderá:
334 VXNlcm5hbWU6
  • Ahora debemos indicarle el nombre de usuario en base 64:
python Base64.py

Responderá:
334 UGFzc3dvcmQ6
  • Ahora debemos indicarle el password en base 64:
python Base64.py

Responderá:
235 2.7.0 Accepted
  • Indicamos el origen:
mail from:<"Dirección de correo">

Responderá:
250 2.1.0 OK 28sm4369646eye.7
  • Indicamos el destino:
rcpt to:

Responderá:
250 2.1.5 OK 28sm4369646eye.7
  • Empezamos con el mensaje:
data

Responderá:
354 Go ahead 28sm4369646eye.7
  • Indicamos el motivo:
subject: prueba nesima
  • Escribimos el mensaje:
Mensaje de prueba
  • Acabamos el mensaje:
. (No es un error es un punto)

Responderá:
250 2.0.0 OK 1263726572 28sm4369646eye.7
  • Salimos:
quit

Responderá:
221 2.0.0 closing connection 28sm4369646eye.7
Connection closed by foreign host.

Con el Script será mucho mas sencillo, recordad colocar los dos Scripts tanto el de Python como el de Bash en el mismo directorio o no funcionará.

PD: Yo de vosotros le hecharía un ojo a los Scripts ya es necesario meter el password de vuestras cuentas de correo!!!
Para otros servidores de correo se puede modificar de forma fácil el script.

8 comentarios:

Unknown dijo...

Me ha gustado mucho tu blog, me guardo el link para echarle un vistazo mas pausado.

Gracias

Kr0m dijo...

Muchas gracias, saber que hay gente a la que le gusta lo que escribo siempre anima ;)

Unknown dijo...

=( hola he estado intentando conectarme por telnet con gmail y sin tunel me pasaba q no aparecia ningun metodo de auth con el tunel me sale pero auth cram-md5 y el digest
no emsale el auth login
si me puedes ayudar e buscardo e intendao logearme con el auth cram pero no se q responderle pues me responde
leonardo@leonardo-desktop:~$ stunnel -d 25 -cr smtp.gmail.com:25
leonardo@leonardo-desktop:~$ telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 leonardo-desktop ESMTP Sendmail 8.14.3/8.14.3/Debian-9.1ubuntu1; Tue, 16 Nov 2010 17:54:05 -0300; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]
ehlo gmail.com
250-leonardo-desktop Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250-DELIVERBY
250 HELP
AUTH CRAM-MD5
334 PDgxNTE5NjQ1Ny4xNDg3MjUzNEBsZW9uYXJkby1kZXNrdG9wPg==
Y AI NO SE Q RESPONDERLE PROBE CON MI usea y pass en base 64 separados de un guion y tb por seprado pero no pasa nada me falla si me puedes ayudar te agradeceria

Unknown dijo...
Este comentario ha sido eliminado por el autor.
El Puto Amo dijo...

amigo te agradeceria mucho si me respondieras esto mira... ago lo mismo que tu:
C:\Documents and Settings\Administrador>telnet smtp.gmail.com 587

220 mx.google.com ESMTP s12sm5205409anh.2
ehlo
250-mx.google.com at your service, [201.240.65.174]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250 ENHANCEDSTATUSCODES
auth login
530 5.7.0 Must issue a STARTTLS command first. s12sm5205409anh.2//ESTE ES EL ERROR!!!
que puede ser e desactivado el firewall y el antivirus no me explico que mas ni el router impide nada... te agradesco de antemano tu respuesta...

El Puto Amo dijo...
Este comentario ha sido eliminado por el autor.
El Puto Amo dijo...

puede ser el ssl pero como lo resuelvo en windows????

Unknown dijo...

como mola... solo añadir un detalle. con stunnel si abres un puerto inferior a 1024, lo tienes que hacer como superusuario.