Funcionamiento
SMTP se basa en el modelo cliente-servidor, donde un cliente envía un mensaje a uno o varios receptores. La comunicación entre el cliente y el servidor consiste enteramente en líneas de texto compuestas por caracteres ASCII. El tamaño máximo permitido para estas líneas es de 1000 caracteres.
Las respuestas del servidor constan de un código numérico de tres digitos, seguido de un texto explicativo. El número va dirigido a un procesado automático de la respuesta por autómata, mientras que el texto permite que un humano interprete la respuesta. En el protocolo SMTP todas las órdenes, réplicas o datos son líneas de texto, delimitadas por el carácter
En el conjunto de protocolos TCP/IP, el SMTP va por encima del TCP, usando normalmente el puerto 25 en el servidor para establecer la conexión.
Resumen simple del funcionamiento del protocolo SMTP
Cuando un cliente establece una conexión con el servidor SMTP, espera a que éste envíe un mensaje “220 Service ready” o “421 Service non available”
Se envía un HELO desde el cliente. Con ello el servidor se identifica. Esto puede usarse para comprobar si se conectó con el servidor SMTP correcto.
El cliente comienza la transacción del correo con la orden MAIL. Como argumento de esta orden se puede pasar la dirección de correo al que el servidor notificará cualquier fallo en el envío del correo. El servidor responde “250 OK”.
Ya le hemos dicho al servidor que queremos mandar un correo, ahora hay que comunicarle a quien. La orden para esto es RCPT TO:
Una vez enviados todos los RCPT, el cliente envía una orden DATA para indicar que a continuación se envían los contenidos del mensaje. El servidor responde “354 Start mail input, end with
Ahora el cliente envía el cuerpo del mensaje, línea a línea. Una vez finalizado, se termina con un
Tras el envío, el cliente, si no tiene que enviar más correos, con la orden QUIT corta la conexión. También puede usar la orden TURN, con lo que el cliente pasa a ser el servidor, y el servidor se convierte en cliente. Finalmente, si tiene más mensajes que enviar, repite el proceso hasta completarlos.
Puede que el servidor SMTP soporte las extensiones definidas en el RFC 1651, en este caso, la orden HELO puede ser sustituida por la orden EHLO, con lo que el servidor contestará con una lista de las extensiones admitidas. Si el servidor no soporta las extensiones, contestará con un mensaje "500 Syntax error, command unrecognized".
En el ejemplo pueden verse las órdenes básicas de SMTP:
HELO, para abrir una sesión con el servidor
MAIL FROM, para indicar quien envía el mensaje
RCPT TO, para indicar el destinatario del mensaje
DATA, para indicar el comienzo del mensaje, éste finalizará cuando haya una línea únicamente con un punto.
QUIT, para cerrar la sesión
RSET Aborta la transacción en curso y borra todos los registros.
SEND Inicia una transacción en la cual el mensaje se entrega a una terminal.
SOML El mensaje se entrega a un terminal o a un buzon.
SAML El mensaje se entrega a un terminal y a un buzon.
VRFY Solicita al servidor la verificación del argumento.
EXPN Solicita al servidor la confirmación del argumento.
HELP Permite solicitar información sobre un comando.
NOOP Se emplea para reiniciar los temporizadores.
TURN Solicita al servidor que intercambien los paquetes.
De los tres dígitos del código numérico, el primero indica la categoría de la respuesta, estando definidas las siguientes categorías:
2XX, la operación solicitada mediante el comando anterior ha sido concluida con éxito
3XX, la orden ha sido aceptada, pero el servidor esta pendiente de que el cliente le envíe nuevos datos para terminar la operación
4XX, para una respuesta de error, pero se espera a que se repita la instrucción
5XX, para indicar una condición de error permanente, por lo que no debe repetirse la orden
No hay comentarios:
Publicar un comentario