Dominios y Usuarios Múltiples en Qmail

Dominios Adicionales

Para recibir mensajes dirigidos de diferentes dominios primeramente es necesario configurar DNS (Vea RR MX en DNS, el recibir mensajes no es garantizado ) y el archivo que contiene los dominios de recepción: rcpthosts ubicado en /var/qmail/control , este ultimo debe ser modificado para reflejar los dominios sobre los cuales se recibirán mensajes.

El archivo rcpthost solo define sobre cuales dominios se recibirá correo electrónico, aún falta definir hacia donde serán dirigidos los mensajes de cada dominio, para esto debe crearse el archivo virtualdomains bajo el directorio /var/qmail/control

El formato que tiene el archivo virtual domains es el siguiente:

osmosislatina.com:osmosislatina-com 
lejano.com:lejano-com
mtnbike.com:mtnbike-com

El formato anterior indica que los mensajes dirigidos al dominio osmosislatina.com serán enviados al usuario osmosislatina-com de Qmail, lo mismo ocurre para los otros dominios, debe existir una sola cuenta por dominio.También verifique que el archivo locals en /var/qmail/control NO contenga los dominios definidos en virtualdomains .

Buzones para Dominios Adicionales

Esto se declara en el archivo assign que fue discutido en la configuración de buzones,(Vea Archivo assign )

El archivo assign para Dominios Múltiples

La forma del archivo assign ya fue discutido en la sección de buzones, esta sería una configuración de este archivo para varios dominios:

=osmosislatina-com-informes:pop:412:412:/var/qmail/buzones/osmosislatina-com/informes::: 
+osmosislatina-com-:pop:412:412:/var/qmail/buzones/osmosislatina-com/pedro:-::
=lejano-com-servicios:pop:412:412:/var/qmail/buzones/lejano-com/jose:::
+lejano-com-web-:pop:412:412:/var/qmail/buzones/lejano-com/marta:-::
.

El primer parámetro indica la dirección del mensaje: =osmosislatina-com-informes indica la dirección informes@osmosislatina.com , +osmosislatina-com indica cualquier dirección de osmosislatina.com que no se encuentre dentro de otro criterio ( el + es un "wildcard") así sucesivamente.

El segundo parámetro pop indica el usuario definido en el sistema ( /etc/passwd ) que será dueño de todos los buzones, 412 y 412 son el UID y GID del usuario pop respectivamente, y el último parámetro es el directorio donde radicará el buzón del destinatario, que para esta configuración será Maildir

Asegúrese de crear los directorios Maildir para cada usuario ya que estos servirán como buzones; estos buzones y los directorios para llegar a ellos deben pertenecer al usuario pop del sistema y tener acceso tipo 0700 ; también deberá agregar un archivo .qmail , aunque si ya configuró la utilización de Maildir a nivel global (el archivo rc ) esto no será tan critico, solo deberá agregar/modificar .qmail si requiere: redireccionar, ejecutar un programa, recibir para algún alias conocido (root,webmaster,postmaster ) o alguna otra funcionalidad especial.

De la misma manera en que era necesario ejecutar el comando qmail-newu cada vez que era agregado un usuario nuevo para generar el archivo cdb usado por Qmail, también será necesario ejecutarlo para este archivo de assign .

Para limitar la carga administrativa de definir todos los buzones de todos los dominios en un mismo archivo, se recomienda tener archivos definidos por dominio y generar el archivo assign cada vez que sea necesario. Suponiendo que los archivos de todos los dominios se encontraran en el directorio /var/qmail/dominios/ , se puede ejecutar el siguiente "script" para generar el archivo assign :

#!/bin/sh       
cat /var/qmail/dominios/* > /var/qmail/users/assign.tmp
echo "." >> /var/qmail/users/assign.tmp
mv /var/qmail/users/assign.tmp /var/qmail/users/assign   
/var/qmail/bin/qmail-newu 

El "script" anterior además de generar un nuevo archivo assign , substituye el assign anterior y actualiza el archivo cdb que es utilizado por Qmail.

Recabación de Mensajes

La recabación de mensajes utiliza una metodología muy similar a aquella utilizada para la (Vea recabación de buzones ) con checkpassword , inclusive solo es necesario realizar unas pequeñas modificaciones a este archivo, esto se debe a que por "default" checkpassword corrobora las contraseñas en el archivo /etc/passwd del sistema y por lo tanto se necesitaría dar de alta como usuarios del sistema todos aquellos usuarios que utilizarían el servicio de correo, debido a que sería innecesario crear cuentas de sistema Unix, se debe generar un archivo especial de donde serán leídos los usuarios y contraseñas.

checkpassword

La versión de checkpassword que se describe a continuación es una versión modificada a la que fue descrita y descargada en otra sección de esta guia, alterada para localizar usuarios y dominios en un archivo y formato hecho a medida. Esta versión modificada la puede descargar localmente : checkpoppasswd.c .

Este archivo solo debe ser substituido por checkpassword.c original, recompilado e instalado. Esta versión de checkpassword busca el archivo con contraseñas en /var/qmail/users/poppasswd aunque esto puede ser modificado si así se requiere.

La forma del archivo que se busca es la siguiente:

rubio:45DGsd$hDEv#T:popuser:/var/qmail/buzones/osmosislatina-com/pedro
ariza:xGejDF$hDfv6p:popuser:/var/qmail/buzones/lejano-com/webmaster

El primer parámetro indica la cuenta pop que será utilizada para accesar el buzón mientras el segundo es la contraseña de la cuenta; estos parámetros son los mismos que serán indicados en el Mailer (MUA "Mail User Agent") utilizado por el usuario, el tercer parámetro es el usuario del sistema popuser , el cual es utilizado para todas las cuentas, y la última secuencia es la ubicación del buzón en el "Host".

El nombre de las cuentas pop tienen una limitación, no pueden existir 2 usuarios con el mismo nombre, esto es, si en osmosislatina.com y en lejano.com existe el usuario pedro , aunque sea posible generar dos buzones independientes, no podrán existir dos usuarios con la misma cuenta(pop) de acceso , para esto se recomienda utilizar iniciales o números para nombrar las cuentas (os-001, os-002, os-003, lej-1, lej2), aunque inicialmente le sea difícil al usuario final recordar que debe utilizar números o letras sin sentido, esto también garantiza que no se puede atacar un buzón POP fácilmente.

Para generar las contraseñas utilizadas en este archivo, se puede utilizar el siguiente "script" en Perl :
#!/usr/local/bin/perl
if (@ARGV) {
  $pw1 = shift; $la_sal = shift;
} else {
  system("stty -echo");
  print "Indique una contraseña: "; $pw1 = <STDIN>;
  print "\nDe nuevo: "; $pw2 = <STDIN>;
  system("stty echo");
  if ($pw1 ne $pw2) { print "No coincidieron las contraseñas .\n"; exit; }
  print "\nLa_Sal: "; $la_sal = substr(<STDIN>,0,2);
}
chomp($la_sal); chomp($pw1);
if (length($la_sal) eq 0) {
  srand(time());
  $a = int(rand(25) + 0.5) + (int(rand(1) + 0.5) * 32) + 65;
  $b = int(rand(25) + 0.5) + (int(rand(1) + 0.5) * 32) + 65;
  $la_sal = sprintf ("%c%c", $a, $b);
}
printf("Contraseña encriptada: %s\n", crypt($pw1, $la_sal));  

La configuración esta completa