sábado, 24 de enero de 2009

Comunicacion Cliente - Servidor SMTP

Continuando con el estudio, esta noche me puse a resumir y entender como funciona el protocolo SMTP para el envío de correo electrónico, les dejo mi resumen de la wikipedia jeje por si les interesa saber como hace por ejemplo el outlook para comunicarse con un servidor SMTP y enviar los correos:

SMTP (Protocolo simple de transferencia de correo).:
Es un protocolo de red, basado en texto, utilizado para el intercambio de mensajes de correo electrónico.
Se basa en el modelo cliente-servidor donde un cliente envía un mensaje a uno o mas receptores.
La comunicación entre cliente y servidor consiste enteramente en lineas de texto compuestas unicamente por caracteres ASCII. El tamaño máximo de estas lineas es de 1000 caracteres.
Las respuestas del servidor están compuestas por un código numérico de 3 dígitos, (dirigido a un procesado automático de la respuesta), seguido de un texto explicativo para que un humano interprete la respuesta.
El SMTP usa normalmente el puerto 25 para establecer la conexión, por lo tanto esta continuamente escaneando ese puerto a la espera de una conexión.

Comunicación Cliente - Servidor SMTP: (C=Cliente, S=Servidor SMTP)

S: Escaneo constante del puerto 25 a la espera de una conexión TCP.
C: Se conecta con el servidor.
S: Responde a la conexión:
"220 Service Ready" indica q la comunicación puede continuar correctamente
o "421 Service non avaiable" indicando q el servicio no esta disponible momentaneamente
C: Envía un saludo para abrir la conexión
"HELO miequipo.midominio.com" (esta bien escrito jeje si es HELO)
S: Envía un saludo y se presenta
"250 Hello, beta.gov"
C: Indica que quiere mandar un correo y brinda al servidor una dirección de correo a la q se le notificará cualquier fallo en el envío del correo. (dirección de quien envía el mensaje)
"MAIL FORM: yo@midominio.com"
S: Responde que la operación anterior concluyo con éxito con el mensaje:
"250 Ok"
C: Envía un mensaje para indicar la dirección de destino del correo:
"RCPT TO: "
S: Responde
"250 Ok" (si encuentra al destinatario)
o "550 No such user here" (si no encuentra a el destinatario)
C: Puede enviar tantos "RCPT TO: " como destinatarios quiera que tenga el mensaje. (de a uno por vez esperando la respuesta del servidor siempre)
C: Envía una orden para indicar que a continuación enviará el contenido del mensaje:
"DATA"
S: Responde notificando al cliente como debe indicar el final del contenido del mensaje:
"354 Start mail input, end with ." (indica que la orden fue aceptada, pero que el servidor queda a la espera de que el cliente envié una linea solo con un punto, para indicar el final del cuerpo del mensaje y así terminar la operación)
C:Envía linea a linea el cuerpo del mensaje por ej:
"Subject: Campo de asunto"
"From: yo@midominio.com"
"To: destinatario@sudominio.com"
""
"Hola,"
"Esto es una prueba!"
"Adiós."
""
"." (linea que indica el fin del mensaje)
S: Avisa que el mensaje se envió con éxito:
"250 Ok"
C: Si no quiere enviar mas correos corta la conexión con la orden:
"QUIT" (finaliza la conexión)
o "TURN" (Se intercambian los roles, el cliente pasa a ser servidor y el servidor cliente).
S: Responde con un saludo y una confirmación de orden aceptada:
"221 Bye"

Bueno espero que a alguien le sirva alguna vez aunque sea para aprender, pido perdón si los aburro mucho, pero por lo pronto a mi me sirve así que voy a seguir haciendo estos post para repasar y que quede documentado el trabajo.

2 comentarios:

Gustavo dijo...

Y si mejor lo llama por telefono... o un mensajito con el celu, digo yo...
Que se yo...

Me parece que atraso...
Bessos

Jime dijo...

jejej!!! como que me parecio que lei en chino! jeje!! otra vez a estudiar!! que mal ¿no? que cortas son las vacaciones, yo también empece a estudiar, rindo el 9 de febrero! espero me vaya bien! je! uno siempre quiere que le vayan las cosas bien! bueno besos! suerte... cuidate