En todo Sistema Unix el correo electrónico de todos los usuarios es enviado y recabado de un Buzón, este Buzón, puede ser un archivo o un Directorio
Cuando se envía un correo electrónico hacia un usuario y este arriva al "Host" pertinente , el MTA (Qmail o Sendmail) de este "Host" es el encargado de depositar este correo en el buzón del usuario.
En un sistema Unix por lo general estos buzones se encuentran en un directorio llamado /var/spool/mail/<nombre_del_usuario>
, esta ubicación se debe al uso de Sendmail (uno de los programas en mayor uso como MTA), ya que su funcionamiento es el de enviar todo correo a este directorio general ( /var/spool/mail
) y encontrar al usuario correspondiente.
Entre los problemas que presenta este tipo de buzones es el de velocidad y seguridad , el intentar escribir miles de correos electrónicos a un directorio general ( /var/spool/mail
) puede ser muy tardado, además el escribir código para implementar seguridad en un directorio que puede ser escrito globalmente no es fácil; es por esto que Qmail utiliza otro formato.
NOTA: Qmail es lo suficientemente flexible, que si usted lo desea puede configurarlo para que continúe enviando el correo electrónico a este tipo de directorios ( /var/spool/mail
),sin embargo, su envío "default" es el que se explica a continuación.
Cuando realizó la
instalación básica
de Qmail y
las primeras pruebas de recepción
notaría que todo mensaje fue enviado al archivo (buzón) llamado Mailbox
, este archivo llamado Mailbox
es la metodología "default" que utiliza Qmail, cabe mencionar que es posible alterar esta metodología e inclusive es recomendable migrar a la metodología Maildir
, pero más sobre esto en otras secciones.
Mailbox
? En las pruebas iniciales de recepción se mencionó que solo existían 3 usuarios para recibir correo , estos 3 usuarios fueron definidos en el paso 6 de la instalación básica.
La operación básica de Qmail es que cuando desconoce el destinatario final de un mensaje , todo mensaje será dirigido al usuario alias
del sistema que fue definido inicialmente, debido a que el usuario alias
tiene definido su directorio raíz ("Home Directory") en /etc/passwd
como /var/qmail/alias
todos los mensajes serán dirigidos a este subdirectorio raíz ("Home Directory") del usuario.
.qmail
En el
paso 6
de la instalación básica se generaron 3 archivos de tipo .qmail
bajo el directorio raíz ("Home Directory") del usuario alias
, estos archivos .qmail son de suma importancia ya que rigen como será manipulado el mensaje en su etapa final .
El argumento que le sigue a cualquier archivo .qmail-
indica un usuario existente, esto es, .qmail-postmaster
:define que existe el usuario postmaster@dominio.com
, al igual que .qmail-root
define que existe el usuario root@dominio.com
, es por esto que cuando se envió un mensaje a desconocido@dominio.com
Qmail rechazo este mensaje, para haberlo recibido hubiera sido necesario que existiese el archivo .qmail-desconocido
, inclusive es posible crear un archivo .qmail-default
el cual recibiría TODOS los mensajes sobre los cuales no existiese un usuario especifico, esto es, se recibirían mensajes para rooottt@dominio.com , rebote@dominio.com
y cualquier otro mensaje dirigido a dominio.com
; quizás esto en ocasiones no es conveniente ya que TODO mensaje será recibido y el remitente jamás se percatará que esta dirección no existe.
.qmail
Con el solo hecho de existir un archivo .qmail-xxx
Qmail ejecutará una acción razonable, la cual es: Agregar el mensaje al archivo Mailbox , en el caso anterior donde fueron definidos los 3 archivos .qmail-postmaster .qmail-mailer-daemon .qmail-root
los mensajes dirigidos para los usuarios postmaster, mailer-daemon
y root
serán anexados al archivo (buzón) que reside en el mismo directorio,cualquier otro mensaje será rechazado.
Pero que sucede si se requiere otra acción para los mensajes dirigidos
a postmaster
o es necesario notificar a 5 administradores cuando arrive un mensaje para root
?
Estas acciones pueden ser definidas dentro de los archivos .qmail-xxx
y pueden ser las siguientes :
&servicio@isp.com
. El parámetro &
indica que el mensaje será redireccionado, mientras lo que continúe es la dirección electrónica alterna.En esta misma manera puede ser generada un lista de correos "Mailing-List" solo basta agregar todos los destinatarios de la misma forma..qmail
algún programa por el cual debe ser transferido todo el mensaje, este puede ser un filtro, un pre-procesador para SPAM como
SpamAssassin
, un antivirus como
ClamAV
o cualquier otro programa, para esto se utiliza lo siguiente:
|preline /usr/vacaciones/
, el parámetro |
indica que el mensaje se procesará por el Shell, mientras el resto de la linea indica el programa que será invocado para el mensaje. Mailbox
que contendrá todos los mensajes del usuario, su formato es:/home/admin/Mailbox
, cabe mencionar que la acción "default" para todos los usuarios es anexar todos los mensajes al directorio actual ("Present Working Directory") de los archivos .qmail-
, esto puede ser corroborado en
las pruebas de recepción
en la instalación básica. Directorio Maildir : Especifica la ubicación del directorio Maildir
que contendrá los mensajes para el usuario, su formato es:
/home/admin/Maildir/
, nótese que a diferencia de Mailbox
esta linea de configuración termina con "/"
.
Un poco sobre Maildir
: Maildir
es una alternativa para Mailbox
, el utilizar Maildir
ofrece varias ventajas sobre Mailbox
, sin embargo para no desviarse del tema esto será discutido en
Mailbox vs. Maildir
La discusión anterior se baso en el usuario alias
, este usuario será el que recibirá TODOS los mensajes de los usuarios desconocidos, pero que sucede si ya se tienen usuarios definidos en el sistema y cada uno requiere de su buzón ?
assign
Este archivo contiene TODOS los usuarios que recibirán correo electrónico, usted deberá generar este archivo bajo el directorio /var/qmail/users
, su composición es muy similar al archivo
/etc/passwd
, observe:
=informes:juan:231:121:/home/juan::: |
Por decirlo de cierta forma Qmail posee dos tipos de filtros (aunque no son filtros explícitamente): archivos .qmail
y el archivo assign
.
Los archivos .qmail
ya fueron discutidos anteriormente: si existe uno por nombre .qmail-xxx
será recibido el mensaje para xxx
de otra forma será rechazado, sin embargo, sería ilógico pensar que todos los usuarios fueran definidos .qmail-usuario1, .qmail-usuario-2, ...
, el archivo assign
ofrece este "filtro" previo a llegar a los archivos .qmail
.
Una linea del archivo assign
sería la siguiente:
=informes:juan:231:121:/home/juan::: |
Esta linea significa que cualquier correo electrónico destinado para informes
sera enviado al Buzón del usuario juan
con UID=231, GID=121
que se encuentra en el directorio /home/juan
, también es posible indicar una extensión abierta para el destinatario ("wildcard"):
+web:jose:234:342:/home/jose::: |
La linea anterior indica que todo correo cuyo nombre empiece con web
será enviado al buzón del usuario jose
en el directorio /home/jose
, esto sería: webmaster@, web-hosting@, webservicio@
,etc...Un archivo assign
básico sería el siguiente:
+web:jose:234:342:/home/jose::: =web:admin:121:23:/home/admin::: . |
Nótese que debe terminar en punto este archivo. La secuencia de eventos en Qmail para este archivo sería:
web@
este será enviado al buzón del usuario admin
web______@
(excluyendo web@
) será enviado al buzón del usuario jose
alias
.qmail
presentes en cada directorio del usuario.
Cada vez que sea agregado un usuario al archivo assign
es necesario ejecutar el comando qmail-newu
ubicado en el directorio /var/qmail/bin
, esto generará un archivo binario con el contenido de assign
, la intención de este archivo es agilizar el acceso de información a Qmail, este archivo binario se llama cdb
y se encuentra en el directorio /var/qmail/users
Las asignaciones anteriores en el archivo assign
asumieron dos cosas:
/var/qmail/control/defaultdomain
, esto es, si solo se define un nombre ( web:
), Qmail asume la dirección web@<defaultdomain>
Qmail puede ser configurado para recibir correo electrónico de múltiples dominios y miles de usuarios, sin la necesidad de generar miles de cuentas Unix y modificando algunos parámetros de la configuración básica, los detalles están en Dominios y Usuarios Múltiples en Qmail
Cuando finalmente arriva un mensaje a su destino final la acción "default" de Qmail es anexar el mensaje al archivo llamado Mailbox
, es en este archivo en el que residirán todos los mensajes para posteriormente ser leídos por el usuario, sin embargo, esta metodología carece de confiabilidad ("reliability") ya que todos los mensajes son anexados al mismo archivo.
Que sucede si al momento de estar anexando un mensaje al archivo Mailbox ,el sistema falla ? Seguramente el mensaje será corrompido o anexado al anterior, claro esta que Qmail (o Sendmail) detectará que no fue exitoso e intentará reenviar el mensaje, pero el archivo Mailbox ya estará corrompido.Para esto existe Maildir
, Maildir esta compuesto por varios subdirectorios que eliminan el problema antes mencionado con Mailbox
.
Primeramente se debe crear el directorio del tipo Maildir
que substituirá el uso de Mailbox
, para esto se utiliza el comando maildirmake
ubicado en /var/qmail/bin
. De la misma en que es generado el archivo Mailbox
en el directorio raíz ("Home Directory") del usuario, se debe ejecutar el comando maildirmake
dentro del directorio raíz del usuario ("Home Directory").
Si el usuario admin
tiene su directorio raíz ("Home Directory") en /home/admin
, entonces dentro de este directorio se debe ejecutar maildirmake Maildir
, este comando generará un directorio llamado Maildir
que contendrá tres subdirectorios cur, new, tmp
.
Ahora se debe indicarle a Qmail que el usuario empezará a recibir sus mensajes en el formato Maildir
, esto se realiza agregando la siguiente linea al archivo .qmail
del usuario:
./Maildir/
|
Lo anterior indica que todo mensaje será colocado dentro del directorio Maildir
.
Si se desea empezar a utilizar este formato para recibir los mensajes (algo muy recomendable) para todos los usuarios del Sistema, se deben modificar los parámetros "default" de Qmail, estos se encuentran en el archivo /var/qmail/rc
, basta cambiar la linea: qmail-start ./Mailbox splogger qmail
por
qmail-start ./Maildir/ splogger qmail
|
Si opta por este esquema se recomienda agregar el directorio Maildir
a /etc/skel
(Vea
Administración de usuarios en Unix
)
A pesar de las ventajas que presenta Maildir , presenta un pequeño problema de configuración; debido al amplio uso del formato Mailbox algunos Mailers (MUA "Mail User Agents") del mercado no son capaces de accesar los mensajes en este formato directamente , sin embargo, Qmail ofrece opciones que simulan el formato Mailbox que comúnmente espera un Mailer.
Debido a que esto es tema de lectura de mensajes , existe una sección dedicada donde se abarca esto y otros temas relacionados : recabación de mensajes
Links: