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:
MTA(Mail Transfer Agent, servidor): emplea el protocoloSMTPpara comunicarse con otrosMTAy con los clientes de correo.- 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). MUA(Mail User Agent, cliente): programa de usuario como Mozilla Mail, Thunderbird, Outlook, Pegasus, Eudora, etc. Se comunica con losMTAempleandoSMTPy 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í :)):

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.
- El usuario
juanjo@blackshelldesea enviar un correo al usuariojjm@usebox. Para ello redacta un mensaje con suMUAy lo envía. SuMUAemplea el protocoloSMTPpara enviar el correo. - El
MTAenblackshellrecibe el mensaje. En primer lugar determina el punto de entrega. Como no es en una cuenta de un usuario local (el destino indicausebox, noblackshell), verifica quejuanjo@blackshelltiene permiso para emplear eseMTApara enviar correo a otros servidores. Esto es importante, por ejemplo, para evitar que se emplee unMTAde forma indiscriminada para enviar correo (como el molesto spam). - Definitivamente el correo va destinado a otro servidor, y el cliente que lo envía tiene permiso para usar el
MTA. Así el servidor deblackshellentrega empleando el protocoloSMTPel correo alMTAdeusebox. - El servidor de
useboxrecibe 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. - En otro punto de la red el usuario
jjm@useboxemplea suMUApara comprobar si tiene correo nuevo. En este caso emplea el protocoloPOP3de recogida de correo. - El servidor
POP3deuseboxcomprueba que el usuario sí tiene correo (el que le enviójuanjo@blackshell) y lo entrega alMUA. 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.
![[xml]](/images/xml.gif)
