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
.
Esto se declara en el archivo assign
que fue discutido en la configuración de buzones,(Vea
Archivo assign
)
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.
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.
#!/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)); |