En esta sección vamos a explorar ligeramente los componentes principales de qmail. El lector interesado en la rápida puesta a punto de un mailserver típico puede saltarse esta sección y retornar posteriormente.
Como ya se ha indicado, qmail está compuesto de diversos subprogramas que realizan tareas específicas y que en conjunto constituyen el sistema de correo electrónico. La figura siguiente proporciona una visión esquemática de estos componentes. Para un esquema más completo, remito al lector a The big qmail picture (mi esquema se basa en aquél.)
Analicemos algunos de los posibles recorridos de un mensaje:Origen local: Un usuario Linux operando en el sistema (por ejemplo, con un terminal) remite un mensaje usando un MUA como mail. Esto normalmente originará una llamada a qmail-inyect el cual llevará el mensaje al programa de encolamiento qmail-queue. Este lo almacenará en la cola de mensajes /var/qmail/queue. Acto seguido, qmail-send intentará remitirlo a su destino (si se puede) mediante los programas qmail-lspawn o qmail-rspawn
Origen remoto exterior: Un usuario de Internet ha enviado un mensaje hacia nuestra red (hacia un usuario de nuestra organización.) Este mensaje debe provenir de otro servidor de email mediante SMTP. qmail-smtpd descubre que el destinatario es de los nuestros, y acepta el mensaje, el cual pasa a la fase de encolamiento.
Origen remoto de la LAN: Un cliente de nuestra red desea enviar un mensaje. Para esto ha configurado su MUA a fin de remitir hacia el servidor qmail. Esta remisión normalmente la efectúa usando SMTP, y por tanto nuevamente qmail-smtpd es el encargado de la recepción.
Destino local: Los mensajes con destino local son guardados en el mailbox por procmail (o qmail-local) para ser recogidos por los MUAs de los usuarios que trabajan en el servidor. En el caso de que el usuario no esté en el servidor, sino, en una estación de trabajo, entonces su MUA deberá conectarse a un servidor IMAP o POP para obtener los mensajes del mailbox. En cualquier caso, qmail-lspawn es el encargado de controlar el agente de delivery local.
Destino remoto: Los mensajes remotos se remiten con SMTP hacia otros MTA. qmail-rspawn es el encargado de los mensajes que se envían remotamente.
No hemos mencionado a tcpserver debido a que estrictamente no es parte de qmail. Sin embargo, es el encargado de despertar a qmail-smtpd de un modo seguro y relativamente inteligente.