A continuación resumo los pasos y comandos básicos para testear a traves de TELNET.
Antes que nada hay que aclarar que Telnet no es un protocolo seguro principalmente por dos razones:
* Transmite los comandos sin cifrar lo cual implica que si se transmiten contraseñas (como veremos más adelante en el caso de conexiones POP3) éstas serán legibles si se capturan los paquetes.
* No es un protocolo autenticado y, gracias a esto, es vulnerable a ataques man-in-the-middle.
Por éstas razones no es recomendable utilizar Telnet para verificar servicios POP3, FTP u otros que requieran autenticación.
Cabe aclarar también que lo que voy a comentar en las siguientes lÃneas los comandos POP3 y SMTP que yo normalmente utilizo para realizar pequeñas pruebas. No voy a detenerme en comandos ESMTP porque creo que no son necesarios.
Dicho ésto les detallo los pasos a seguir (por lo menos lo que yo utilizo) para realizar las verificaciones:
Servidor SMTP
Realizamos la conexión al servidor:
telnet smtp.server.ficticio.com 25
Si hay conectividad, el servidor nos contestará algo como:
Trying 190.192.22.118…
Connected to server.ficticio.com.
Escape character is ‘^]’.
220 Mensaje de Bienvenida del Servidor (Version del Servidor SMTP)
El mensaje de bienvenida puede variar según el server en cuestión o su configuración, pero lo importante aquà es el código numérico que hemos recibido (en éste caso es 220). Éste nos indica que el servidor SMTP está listo para atender nuestras peticiones.
Lo siguiente que debemos hacer es identificarnos:
helo nombre-de-mi-equipo
Donde nombre-de-mi-equipo es el nombre netbios del equipo local desde el cual estamos accediendo.
El servidor nos responderá con el código 250 otro mensaje (que como en el caso anterior puede ser cualquier cosa que el administrador haya seteado). Éste código numérico indica que el comando se registró exitosamente.
250 HELO accepted. Today is Tue, 16 Jan 2007 17:42:13 -0300
Si el servidor es autenticado, éste es el momento para loguearse.
Lo haremos mediante el comando AUTH LOGIN. El mismo nos devolverá el código 234 y el prompt para que ingresemos el usuario.
En el caso que me basé para confeccionar éste ejemplo, el servidor es autenticado y requiere que el usuario y password estén codificados en base64. (tuve que hacer un script en php para que me los codifique asà podÃa ingresarlos a mano… pero eso es otra historia :))
auth login
334 VXNlcm5hbWU6
YwU58hJ5QHNtdHBpcGxhbisSd745YXI=
334 UGFzc3dvcmQ6
5QHNtdHB
235 Authentication successful.
Nóten que los comentarios que devuelve junto con el código 334 están también codificados.
Si la autenticación falla el servidor nos devolverá un error código 535.
Debido a que estamos emulando la comunicación entre dos servidores SMTP que van a intercambiar correo (nosotros somos quién envÃa) a continuación indicamos quién es el remitente y el destinatario:
mail from:
250 Ok
rcpt to:
250 Ok
Nótese que para cada comando el servidor nos devuelve un Ok (código 250).
Para escribir el cuerpo del mail pasamos el comando DATA. Podemos escribir varios renglones, finalizando el modo de entrada de datos con un renglón con sólo un punto.
data
354 End data with “.”
Este es el cuerpo del mail.
Como veran puedo utilizar varios renglones.
.
250 Ok: queued as 20E73D85D6
Una vez que finalizamos el cuerpo, el mail es aceptado y encolado para su posterior envÃo.
Los errores que podemos recibir comunmente son:
* 550: Comando desconocido
* 501: Formato de dirección erróneo
* 502: Comando no implementado
* 530: Autenticación requerida
* 535: Fallo en la autenticación
Bueno… hemos probado con éxito nuestro servidor SMTP.
Probando un servidor POP3
A continuación realizaremos la prueba del servidor POP3. Por lo general probamos que haya conectividad y, una vez conectados, que una casilla exista (para lo cual debemos contar con unas credenciales adecuadas).
La metodologÃa es muy similar, asà que vamos directamente a los comandos:
telnet pop3.server.ficticio.com 110
Trying 190.192.22.118…
Connected to pop3.server.ficticio.com.
Escape character is ‘^]’.
+OK
Una vez conectado pasamos el usuario y contraseña correspondientes para acceder a un mailbox:
user webmaster@mey-online.com.ar
+OK
pass palabrasecreta
+OK
Nos hemos logeado! Lo significa que el servidor está disponible y aceptando conexiones.
A partir de ahora podemos pasarle distintos comandos para listar o borrar los mensajes que hay en el mailbox:
* STAT Devuelve la cantidad de mensajes y la cantidad de bytes que éstos ocupan en el mailbox.
* LIST Devuelve la cantidad de mensajes y abajo (en lÃneas distintas) el número de mensaje y la cantidad de bytes que ocupa cada uno de ellos
* DELE Borra el mensaje indicado. Ésto es muy útil si estamos accediendo para liberar la cola del mailbox de un mensaje que no puede descargarse y frena a los que ingresaron posteriormente (me pasó miles de veces… obviamente SIEMPRE es por chanchadas adjuntas).
Vuelvo a repetir lo anteriormente dicho: como telnet no cifra los datos las contraseñas se transmiten en forma legible. Es conveniente, quizás, el crear una cuenta de prueba en el servidor POP3 y realizar la conexión Telnet con dicho usuario, el cual luego deberÃamos eliminar para no comprometer al servidor.