Publica tu how-to

Dinos como hacer lo que sabes hacer, mándanos un email a wdonet@gmail.com y lo publicamos (dos días máximo) o si te interesa unirte al equipo de redactores, también háznoslo saber por correo.

Servidor de correo personal con postfix

En mi opinión un sistema de correo electrónico es de los que pueden llegar a tornarse más complicados de configurar. Al contrario de otros tipos de servidores que sólo requieren configurar un programa, y los puertos apropiados en el firewall, un sistema de correo requiere configurar varias cosas en diversos lugares.

Ésto último es debido a que un sistema de correo está en realidad compuesto no por uno sino por varios programas o sistemas que interactúan entre sí, completando y complementando sus funciones para dar lugar al sistema de correo electrónico como lo conocemos hoy: eficiente, robusto, sencillo si se sabe comprender...

Esta división de un sistema en pequeños subsistemas que cumplen funciones específicas es en realidad producto de la filosofía en sistemas como Unix de hacer las cosas bien y una sola vez. Así, por ejemplo el sistema que entrega el correo electrónico se dedica única y exclusivamente a eso, especializándose en ello y con eso no embotando su propio código fuente con funcionalidades para las que existen otros programas especializados, como el sistema que se encarga de obtener el correo a leer, o el que lo envía...

Un sistema de correo puede, en términos generales, dividirse en 3 partes principales, a saber, de afuera hacia adentro:


  • El MUA, Mail User Agent. Es el que se encarga de mostrar el correo en su bandeja al usuario. En otras palabras, el programa utilizado para leer el correo electrónico. Por ejemplo mutt, Mozilla Thunderbird, Evolution, MS Outlook, etc. También puede ser un cliente web, por ejemplo Squirrelmail. El análogo con el correo postal es que el MUA es la persona que recibe y lee sus cartas.
  • El MDA, Mail Delivery Agent. Es el que se encarga de repartir el correo a las distintas bandejas o cuentas que existan. Normalmente ya no se 've' este programa, pero está ahí ejecutando su labor conforme se lo solicita el último componente. Un ejemplo de este tipo de programas es Procmail. Un análogo con la realidad del correo postal, sería que el MDA desempeña la labor del cartero que toma las cartas de la oficina de correos y las lleva a los buzones de los usuarios correctos.
  • El MTA, Mail Transfer Agent. Es el núcleo de un sistema de correo electrónico. Se encarga de, por un lado, tomar los mensajes de las bandejas de salida de los usuarios y enviarlos a los destinatarios, utilizando por ejemplo el protocolo SMTP. Por otro lado, se encarga de recibir los correos entrantes del exterior (o los que vengan del propio sistema) y decidir qué hacer con ellos, en particular entregarlos al MDA para que los deposite en las bandejas adecuadas. Ejemplos de este tipo de programas son Sendmail y Postfix. El análogo con el sistema de correo postal es que el MTA es como la oficina de correos local, que recibe las cartas a ser enviadas por parte de los usuarios y que se comunica con otras oficinas para enviar los correos a los destinos adecuados.
  • Existen además otros componentes que se relacionan en algún punto del sistema. Por ejemplo, hay programas dedicados a leer constantemente las entradas de correo de servidores externos para así solicitar su llegada. Por ejemplo, Fetchmail. Otro ejemplo son los detectores de spam, tan importantes para evitar saturar las bandejas de entrada de los usuarios con correo basura o incluso peligroso. Por ejemplo, Spamassasin o Spambayes.
  • También existen otros protocolos que se relacionan con el correo, como POP e IMAP que permiten obtener el correo electrónico desde un servidor para leerlo en otros lugares (algo como lo que se logra configurando gmail para ser leido en Thunderbird o en un dispositivo móvil, y de hecho es en lo que se basa Fetchmail). Para levantar un servidor usando estos protocolos existen otros programas también. Por ejemplo Courier.
El siguiente diagrama muestra de manera muy general como se conformaría un sistema de correo personal como el que vamos a armar en este tutorial:


Para el presente tutorial, vamos a configurar entonces el sistema de correo con el siguiente software:
  • sobre GNU/Linux, distribución Debian Lenny (en realidad con un poco de investigación se puede instalar en cualquier otra distribución)
  • MTA: Postfix, conectado via una cuenta de gmail para poder conectarnos desde una IP dinámica
  • MDA: Procmail
  • MUA: mutt (cliente de correo en consola, modo texto, sencillo pero útil para este ejemplo, ¡y para leer rápidamente correo común también!)
  • Fetchmail para leer constantemente una cuenta de gmail y obtener así los correos entrantes
  • Spambayes para detección de spam
  • por ahora no vamos a configurar Courier para utilizar los protocolos POP e IMAP, lo dejamos para otro tutorial
Con esto lograremos un servidor de correo en nuestra máquina con IP dinámica, para poder enviar y recibir correos, con una dirección de correo personal (con todo y dominio personal si contamos con un servicio como el que da DynDNS). Los correos enviados desde el sistema parecerán venir de parte de la cuenta de Gmail, requisito necesario ya que los ISPs que dan IPs dinámicas no permite enviar correos así nada más, justamente para evitar abusos. Así mismo, será posible recibir correos en nuestra dirección con domino personal (de nuevo, siempre y cuando contemos con un servicio como el que da DynDNS).

Cabe la pregunta de por qué usar una cuenta de Gmail para el envío real de los correos. La razón es que la mayoría de los servidores de correo actuales están configurados para evitar la recepción de correos que vengan de dominios que mapeen con direcciones IPs definidas como dinámicas. Por ello, se necesita hacer relay con un servidor 'válido' para dichos servidores para evitar que los correos sean rechazados. Si contáramos con una dirección IP estática, es probable que no necesitemos usar Gmail como relay, pero como este tutorial está basado en esa supocisión, lo dejaremos como parte del diseño del sistema...

Para fines prácticos, puesto que este sería un post muy largo si lo dejamos todo en una sola entrada, vamos a subdividirlo en partes...

Como referencia, el presente tutorial lo base en: http://www.hypexr.org/linux_mail_server.php
y en http://albertomolina.wordpress.com/2009/01/04/configurar-postfix-a-traves-de-un-relay-host-autenticado-gmail/

Comencemos con el MTA...

No hay comentarios:

Publicar un comentario

Que opinas sobre esta publicación?