16 de Diciembre, 2004

Una explicación del correo electrónico

He estado hablando con el amigo r0sk un poco sobre mis intenciones a corto plazo. Tengo pensado escribir una pequeña serie de artículos para aprovechar y documentar algunas pruebas con servicios de correo, y las ideas que hemos intercambiado me han aclarado bastante las cosas.

La verdad es que los dos últimos artículos que he ido publicando me han quedado un poco durillos y, aunque no conozco el perfil de los lectores de esta bitácora, el hecho de que no abunden bitácoras con temática similar a esta me hace sospechar que puedo espantar a la pobre gente que se pasa por aquí a leer un rato.

En cualquier caso me parece buena idea hacer una exposición ligerita de cómo funciona el correo electrónico, para quizás situar lo suficiente a los más despistados, y hasta puede que así sigan los artículos que se avecinan.

Además ya cuento con una experiencia bastante reveladora. En el taller que impartió Paco sobre administración de servicios en Linux, en el ciclo de talleres para el 2004 propuesto por Kleenux, los asistentes estaban más interesados en entender los entresijos de los distintos servicios que en cómo administrar los propios servidores. Es lógico, sin saber como funciona SMTP (Simple Mail Transfer Protocol), resulta difícil entrar al trapo de administrar un servidor Postfix.

Así que vamos a ver si consigo dejar una idea aproximada de cómo funciona esto antes de entrar en temas más específicos.

Ya he dejado caer la primera palabra malsonante: SMTP. Lamentablemente no será la única.

En el proceso habitual de un correo electrónico entran en escena 3 programas distintos:

  1. MTA (Mail Transfer Agent, servidor): emplea el protocolo SMTP para comunicarse con otros MTA y con los clientes de correo.
  2. Servicios de recogida de correo (servidor): permite a los clientes de correo recoger correo almacenado en buzones remotos. Por ejemplo servidores POP3 (Post Office Protocol, versión 3).
  3. MUA (Mail User Agent, cliente): programa de usuario como Mozilla Mail, Thunderbird, Outlook, Pegasus, Eudora, etc. Se comunica con los MTA empleando SMTP y con un servicio de recogida de correo (hay varias opciones) para obtener los mensajes de un buzón.

Los MTA son servidores que se encargan de recibir correo, determinar el punto de entrega y entregarlo (local o remotamente a otro MTA).

Los servidores de recogida son los que permiten obtener los mensajes almacenados en un buzón remoto. Los MTA son los únicos que reciben correo, por lo tanto no hay que confundirse: nuestro cliente de correo no recibe los mensajes, los recoge de un buzón.

Los MUA son los clientes que usamos a diario para escribir y leer nuestro correo. Si alguna vez hemos configurado uno de estos programas seguro que nos suena haber indicado los datos de los dos servicios mencionados.

Imagino que ya habré perdido entre un 80 y un 90 por cien de la audiencia :S, no obstante echémosle un ojo a un esquema por si eso aclarara las cosas (seguro que sí :)):

Proceso de un correo
Un diagrama bastante currado, ¿no?

En este diagrama intento ilustrar un proceso básico de enviar un correo electrónico. Hay tres fases, cada una con un color distinto, y he numerado los pasos. Vamos a explicarlo.

  1. El usuario juanjo@blackshell desea enviar un correo al usuario jjm@usebox. Para ello redacta un mensaje con su MUA y lo envía. Su MUA emplea el protocolo SMTP para enviar el correo.
  2. El MTA en blackshell recibe el mensaje. En primer lugar determina el punto de entrega. Como no es en una cuenta de un usuario local (el destino indica usebox, no blackshell), verifica que juanjo@blackshell tiene permiso para emplear ese MTA para enviar correo a otros servidores. Esto es importante, por ejemplo, para evitar que se emplee un MTA de forma indiscriminada para enviar correo (como el molesto spam).
  3. Definitivamente el correo va destinado a otro servidor, y el cliente que lo envía tiene permiso para usar el MTA. Así el servidor de blackshell entrega empleando el protocolo SMTP el correo al MTA de usebox.
  4. El servidor de usebox recibe el mensaje. En primer lugar determina el punto de entrega. Como es en una cuenta local, pues va a buzón correspondiente y deja el correo. Aquí finaliza la entrega.
  5. En otro punto de la red el usuario jjm@usebox emplea su MUA para comprobar si tiene correo nuevo. En este caso emplea el protocolo POP3 de recogida de correo.
  6. El servidor POP3 de usebox comprueba que el usuario sí tiene correo (el que le envió juanjo@blackshell) y lo entrega al MUA. Aquí acaba la recogida.

Imagino, o en realidad espero, que el ejemplo haya dejado algo claro.

El esquema principal siempre será este, aunque pueden haber variaciones según donde se encuentren los distintos elementos (en máquinas UNIX o UNIX-like es muy frecuente que el MUA se encuentre en la misma ubicación que un MTA que solo entrega correo).

Por hoy creo que ya vale.

Anotación por Juan J. Martínez, clasificada en: email.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: