2 - Entendiendo qmail

[editar]
Artículo creado por FreeBSD. Extraido de: http://max.bandaancha.st/files/docs/servicio-smtp.html
14 de Noviembre de 2005

Para empezar, podríamos decir que la gran característica de qmail es su gran modularidad y que el alma de qmail es su cola de mensajes (queue). Por ella pasan todos los mensajes de correo que maneja el servidor. Cuando qmail acepta un mensaje, ya sea enviado vía SMTP o localmente y el destinatario final sea uno remoto o alguno de los usuarios de nuestro servicio, lo primero que hace es introducirlo en su cola. Una vez en ella, averiguará el destinatario y lo procesará en consecuencia. Podríamos dividir los módulos de qmail siguiendo este patrón: módulos encargados de aceptar mensajes, módulos encargados de introducirlos en la cola y módulos encargados de entregarlos.

A continuación se detallarán los módulos que nos interesan conocer para el propósito que nos hemos planteado. Aunque qmail tiene algunos otro, se escapan de la orientación de este documento:

    • qmail-queue: Introduce mensajes en la cola.

    • qmail-inject: Construye un mensaje y utiliza qmail-queue para introducirlo en la cola localmente.

    • qmail-smtp: Acepta los mensajes a través de SMTP y utiliza qmail-queue para introducirlo en la cola.

    • qmail-send: Realiza el primer procesamiento del mensaje en la cola para saber si el destinatario es local o remoto.

    • qmail-lspawn: Es llamado por qmail-send cuando el destinatario es local. Procesa el mensaje en consecuencia y utiliza qmail-local para entregar el mensaje.

    • qmail-local: Entrega un mensaje a un usuario local.

    • qmail-rspawn: Es llamado por qmail-send cuando el destinatario no es local y utiliza qmail-remote para entregar el mensaje.

    • qmail-remote: Entrega un mensaje a un usuario remoto.

    • qmail-clean: Limpia la cola (no utilizar manualmente).

Una visión gráfica de las secuencias que sigue sistema se ilustra en el siguiente esquema:
 



    1. En este caso, se ha introducido un mensaje en el sistema de correo de manera local. Ya hablamos de la existencia de qmail-inject, pero puede sorprender la existencia del programa sendmail. Bajo /usr/sbin en los sistemas Unix existe una programa para enviar mensajes usando el MTA instalado. Ya que sendmail ha sido utilizado durante largos años como MTA por defecto, se ha convertido en un estándar y muchos programas suponen la existencia del mismo. Con qmail se incluye una versión del programa manteniendo la misma interfaz con el fin de preservar la compatibilidad.

    2. El mensaje se recibe de manera remota vía SMTP.

    3. El módulo qmail-send ha concluido que el destinatario del mensaje se encuentra en el sistema local y cede la gestión del mensaje a los módulos encargados de dichas entregas.

    4. Ahora, el mensaje debe ser entregado a otro servidor donde se encuentra el destinatario final.

En qmail se considera al módulo qmail-send el cerebro del sistema. Y como hemos visto, todos los mensajes pasan siempre por la cola. La cola de qmail es un conjunto de directorios y archivos que se encuentran bajo el directorio /var/qmail/queue.


En sistema de encolado de mensajes de qmail garantiza que ningún mensaje se pierda. Esta es una de las grandes garantías de qmail. Sin embargo, para que esa garantía sea cien por cien, deben cumplirse ciertos requisitos en el sistema de ficheros:

    1. La cola de qmail debe estar situada siempre en un sistema de ficheros local. No puede encontrarse compartida vía NFS.

    2. El sistema de ficheros debe ejecutar llamadas link() síncronamente. Cuando qmail ejecuta una llamada link() asume que los metadatos para el nuevo enlace son escritos de manera segura. Este requerimiento es necesario para evitar que una caída del sistema en un momento inoportuno provoque que se pierdan algunos mensajes. Los sistemas de ficheros que cumplen este requisito son:


      • BSD Fast File System (FFS) sin softupdates.

      • Variantes de FFS como Solaris o Tru64 UFS.


    Algunos sistemas de correo que no cumplen este requisito:

      • Linux Ext2.
      • BSD FFS con sofupdates.
      • SGI XFS.
      • ReiserFS.
                        Para solventar este problema de falta de sincronización en algunos sistemas de ficheros se barajan dos posibilidades principalmente:
  1.  La primera es utilizar una nueva librería para las funciones que modifican los metadatos ( open(), link(), unlink() y rename() ) que proporcionen esa sincronización necesaria. Una vez instalada la librería, cuando se vaya a compilar qmail, se debe modificar el fichero conf-ld para que incluya -lsyncdir, y así utilizar dicha librería.

  2. Otra posibilidad es utilizar un parche para qmail. Este parche puede encontrarse en http://www.jedi.claranet.fr/qmail-link-sync.patch. La instalación es análoga a la de cualquier otro parche, lo cual se explicará más adelante cuando nos pongamos a instalar qmail.

    1. El tercer y último requisito se refiere a la unidad de disco en la cual está albergada la cola de qmail: el disco no debe realizar un caché de escritura. Esta práctica es habitual en unidades IDE y menos en unidades SCSI. Algunos discos IDE, en ciertos sistemas, permiten deshabilitar esta funcionalidad.

El hecho de no cumplir todos los requisitos no implica que vayamos a realizar un mal sistema, sino que no estamos explotando todas las características de seguridad del MTA qmail. Existen muchos sistemas que manejan grandes cantidades de correo sin cumplir estos requisitos y realizan una tarea excelente.

[editar]

1 opinión

Qmail.

Necesito hacer la instalacion y afinacion de un servicio de internet.

Artículos relacionados con 'Servicio de correo basado en qmail: SMTP'

El servicio de e-mail es tan viejo como la propia Internet, ha sufrido algunos cambios... Más »
Hasta ahora sólo hemos configurado el servicio SMTP por el cual podemos enviar y recibir... Más »

Autor y licencia de 'Servicio de correo basado en qmail: SMTP'


Artículo de FreeBSD. Extraido de: http://max.bandaancha.st/files/docs/servicio-smtp.html CopyLeft
BandaAncha.st coloca sus contenidos, artículos y documentos bajo Licencia Creative Commons. Esta modalidad de licencia, jurídicamente válida, permite copiar y distribuir los documentos y contenidos del sitio web con dos únicos requisitos obligatorios: se debe citar en los créditos la fuente (autor original y URI), y las distribuciones ulteriores deben adscribirse a una licencia similar.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.