SMTP significa (de sus siglas en inglés) “Simple Mail Transfer Protocol”. Su objetivo es transferir correos electrónicos entre agentes de forma confiable y eficiente.
La conversación SMTP:
Bajo SMTP, un cliente SMTP abre una conexión usando TCP a un servidor SMTP remoto e intenta enviar correo electrónico a través de esta conexión. El servidor SMTP remoto escucha las solicitudes para recepción de correo electrónico a través del puerto 25. Si la solicitud de conexión es exitosa, las dos entidades establecen una conversación SMTP, que no es otra cosa más que un simple diálogo solicitud/respuesta, en que el cliente que inició la conexión, transmite las dirección de correo electrónico origen del mensaje y a quién está destinado. Una vez que el servidor SMTP destino acepta las direcciones de correo electrónico destino, puede empezar a recibir el mensaje.
SMTP funciona con el envío de comandos de parte del cliente SMTP y respuestas por parte del servidor SMTP remoto. El cliente envía comandos, como la dirección de correo electrónico origen, el correo electrónico destino y eventualmente el mensaje, mientras el servidor SMTP remoto enviará confirmaciones de recepción de la información recibida o si hubo algún problema en la recepción del comando. Las respuestas que envía el servidor SMTP remoto siempre tendrán el siguiente formato: tres dígitos, un espacio o guión medio y un texto explicativo con información que los administradores de correo electrónico pueden leer. Existen tres códigos importantes en la conversación SMTP:
Código
|
Significado
|
2xx
|
Correcto, puedes proceder.
|
4xx
|
Problema temporal, favor de intentar más tarde.
|
5xx
|
Error permanente, abortar conexión.
|
Existen múltiples factores que pueden generar un error temporal o permanente en la conexión SMTP. Un cliente SMTP debe poder lidiar con este tipo de errores, reintentar apropiadamente la conexión en caso de un error temporal o abortar la conexión si encuentra un error permanente.
Una conversación SMTP entre un cliente y un servidor se ve muy similar al siguiente ejemplo:
Solicitud del cliente SMTP
|
Respuesta del servidor SMTP remoto
|
Inicia conexión al servidor:
telnet servidorSMTPremoto.com
|
220 Hola
|
El cliente SMTP se presenta:
Helo servidorSMTPremoto.com
|
250 Mucho gusto
|
Se especifica la dirección de correo origen:
MAIL FROM:<correo electrónico de origen>
|
250 OK
|
Se especifica la dirección de correo destino:
RCPT TO:<correo electrónico de destino>
|
250 OK
|
Se especifica el inicio del mensaje a enviar:
DATA
|
354 354 Start mail input; end with <CRLF>.<CRLF>
|
Se especifica el fin del mensaje a enviar y se pide su entrega al destinatario:
.
|
250 OK, en cola para entrega.
|
Al final de este ejemplo, el mensaje de correo electrónico ha sido enviado a su destinatario. El cliente SMTP puede desconectarse del servidor remoto con el comando QUIT o enviar un nuevo mensaje, usando nuevamente el comando MAIL FROM: o ingresando el comando RSET para iniciar una nueva conversación SMTP.
SMTP no es un protocolo seguro por naturaleza, una de las mejores opciones para protegerlo y evitar que algún tercero acceda al contenido de la conversación es usar el comando EHLO, que nos da acceso a opciones adicionales de la conversación SMTP, incluyendo STARTTLS, que permite iniciar una conexión segura utilizando Transport Layer Security (TLS) para proteger la conexión. En caso de que alguna entidad tenga acceso a la conversación, solo verá la información encriptada, evitando que tenga acceso a ella.
¿Has trabajado con el protocolo SMTP? ¡Cuéntanos tu experiencia!