Qmail + Maildir + Quota + POP3 + IMAP + Amavis + Squirremail
Esta es una guia en Debian para hacer andar Qmail con Maildir estableciendo quotas de almacenamiento de correos por usuario, a su vez poder recibir correos por pop3 e imap simultaneamente como tambien pudiendo chequear correos mediante un webmail, a todo esto le sumamos un antivirus para los correos entrantes y salientes.
Software necesario:
- qmail
- mcafee
- amavis
- courier-imap
- ipopd
- squirrelmail
Instalacion de qmail:
Primero hay que instalar los sources de qmail y ucspi-tcp
woody:/# apt-get install ucspi-tcp-src
woody:/# apt-get install qmail-src
Construcción e instalación de los paquetes .deb
Ahora construimos los deb's:
woody:/# build-ucspi-tcp
woody:/# build-qmail
Nos saldrá una pregunta así: Enter a directory where you would like to do this [/tmp/ucspi-tcp], le damos al enter para continuar.
Lo mismo con Enter a directory where you would like to do this [/tmp/qmail].
Una vez construidos los deb's los instalamos con dpkg -i, instalando ucspi-tcp antes que qmail.
Desinstalación del servidor de correo anterior
En este punto, si intentamos instalar el qmail, tendremos conflictos con el sendmail o exim ya instalados:
qmail hace conflicto con mail-transport-agent
exim proporciona mail-transport-agent y está instalado.
paquetes en conflicto - no se instalará qmail
Lo que debemos hacer para evitarlo es poner dpkg --purge exim. Nos dará un error de dependencias pero ya nos dejará instalar correctamente el qmail.
Una vez instalado el qmail nos dirá:
Do you want to start qmail now? [y/N]
Contestamos que NO porque aún falta configurarlo:
Configuracion de qmail:
Ahora hacemos
woody:/# echo dominio.com > /var/qmail/control/me
donde dominio.com es lo que nos aparece despues de la @ en las cuentas de correo que queremos administrar con el qmail.
Debemos editar /etc/qmail/rcpthosts colocando las direcciones de los dominios que que nuestro qmail va a usar para poder recibir correos destinados a esos dominios:
woody:/# echo dominio.com > /var/qmail/control/rcpthosts
woody:/# echo dominio2.com >> /var/qmail/control/rcpthosts
woody:/# echo dominio3.com >> /var/qmail/control/rcpthosts
Para que qmail sepa cuando el correo debe entregarlo internamente se debe poner en el archivo /etc/qmail/locals el o los nombres de nuestro dominio interno:
woody:/# echo "domino.com" > /etc/qmail/locals
Si queremoss que nuestro qmail sea el que entregue los correos directamente a internet corremos el riesgo si tenemos ip dinamica de que gran parte de los mensajes sean rechazados por muchos servers por el antispam ya que por lo gral las ip dinamicas suelen figurar en muchas listas negras.
Para esto podemos usar el smtp de nuestro ISP, (ej: el de arnet es smtp.arnet.com.ar)
Y hacemos :
woody:/# echo ':smtp.arnet.com.ar' > /var/qmail/control/smtproutes
(esto tambien nos sirve si tenemos nuestro server de smtp dentro de una lan sin salida a inet, y en dominio ponemos el que tiene la salida)
Debemos editar el archivo /etc/init.d/qmail y descomentamos
#alias_empty=”./Maildir”
(debemos comentar el otro alias_empty que es el alias_empty="|/usr/sbin/qmail-procmail" )
Con esto todos los usuarios van usar el formato $HOME/Maildir para recibir su correo, hasta el momento no he encontrado la forma de que cuando se cree un usuario se cree automaticamente en su home el directorio Maildir con sus respectivos permisos pero lo he solucionado creando el siguiente script :
-------------------------Inicio Script-------------------------------------
#!/bin/sh
user=$1
mkmaildir="/usr/bin/maildirmake"
chown="/bin/chown"
chmod="/bin/chmod"
dir="Maildir"
if [ -z $user ]
then
echo -e "Faltan parametros\a"
echo -e "Sintaxis: Maildir "
exit 1
fi
cd /home/$user
$mkmaildir $dir
$chown $user:$user -R $dir
$chmod 700 -R $dir
----------------------------Fin Script---------------------------------------
Luego editamos el /etc/login.defs y descomentamos la linea
#QMAIL_DIR Maildir/
(comentando #MAIL_DIR /var/mail)
POP3
Podemos usar ipopd que trae pop3 y pop2 instalamos :
apt-get install ipopd
Corre desde inet.d
Sino podemos usar el pop3 que trae qmail y solamente soporta el formato Maildir, para habilitarlo tenemos que editar /etc/init.d/qmail y descomentar dos lineas, una es la que lanza el daemond del pop3 y la otra es la que lo mata.
son estas dos lineas:
# Uncomment the following lines to automatically start the pop3 server
#sh -c "start-stop-daemon --start --quiet --user root \
# --exec /usr/bin/tcpserver -- \
# 0 pop-3 /usr/sbin/qmail-popup `hostname`.`dnsdomainname` \
# /usr/bin/checkpassword /usr/sbin/qmail-pop3d Maildir &"
y
# Uncomment the following line if you have enabled the pop3 server
#start-stop-daemon --user root --stop --quiet --oknodo --exec /usr/bin/tcpserver
Creacion de las cuentas de sistemas:
El usuario root no recibe correo en qmail por motivos de seguridad, aunque sí puede enviarlo:
Aqui podemos crear alias si no queremos crear a determinado usuario...
Supongamos que queremos la cuenta info@dominio.com pero queremos que no sea un usuario de correo sino que esa cuenta pertenezca a un grupo de personas, entonces aqui es donde es util un alias.
Tambien es importante crear un alias para root ya que por lo gral ahi es donde llegan muchos avisos importantes de sistemas, y entonces lo asociamos a un usuario standar.
De esta forma se crean los alias suponiendo el usuario pepe y juan existen:
woody:/# echo "pepe" > /var/qmail/alias/.qmail-info
woody:/# echo "juan" >> /var/qmail/alias/.qmail-info
woody:/# echo "pepe" > /var/qmail/alias/.qmail-postmaster
woody:/# echo "pepe" > /var/qmail/alias/.qmail-root
woody:/# echo "pepe" > /var/qmail/alias/.qmail-mailer-daemon
Aqui por ejemplo el alias info@dominio.com les va a mandar los correos a pepe y a juan por igual
Mientras que los demas alias se los va a mandar a pepe solamente.
Configuracion del open relay:
Para hacer un relay abierto o permitir que se use desde nuestra lan debemo editar el archivo /etc/tcp.smtp el cual trae por defecto que permite solo relay desde localhost asi que debemos agregar las ips o redes que vamos a permitir, de esta forma deberia quedar:
127.:allow,RELAYCLIENT=""
192.168.:allow,RELAYCLIENT="" #esta linea hace que acepte a 192.168.0.0/16
luego de editar este archivo hay que ejecutar lo siguiente para modificar la base de datos…seria de esta forma
woody:/# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
esto hay que hacerlo cada vez que se modifique el /etc/tcp.smtp
Uso del archivo .qmail+quotas:
Creando un archivo .qmail en cada home podemos tener muchas ventajas ya que dentro de este archivo podemos hacer que se ejecuten distintos comandos, como por ejemplo forwardear mensajes a otras direcciones…
Estos son algunos ejemplos:
./Maildir/ #guarda una copia del mail que llega en ese archivo
|forward usuario@dominio.com # manda una copia del mensaje a usuario@dominio.com
&usuario@dominio.com # manda una copia del mensaje a usuario@dominio.com
Esto nos va a ayudar por las quotas de usuario porque debemos usar .qmail para llamar al script que chequee el tamaño del Maildir de cada usuario y los pasos a seguir...
El script lo bajamos de http://www.pgregg.com/projects/qmail/mailquotacheck/mailquotacheck.php
o sino se puede bajar una version del script que yo he traducido de http://www.rosarix.com.ar/mailquotacheck.txt
El script lo ponemos en /usr/local/bin/mailquotacheck
Creamos el /etc/skel/.qmail conteniendo las dos siguiente lineas
|/usr/local/bin/mailquotacheck
./Maildir/
Entonces cuando creemos un usuario nos pondra en su home el .qmail que necesitamos para las quotas
Este script tiene por defecto un limite de 3000kb de quota, y puede cambiarse por usuario creando en su home un archivo .quota poniendo el nuevo tamaño de la quota (en kb)
ejemplo para el usuario pepe queremos ponerle un limite de 10MB para su correo hacemos:
echo 10240 > /home/pepe/.quota
Para limitar el tamaño de mensajes que el smtp puede enviar y recibir lo podemos hacer de la siguiente manera suponiendo que queremos un limite de 10MB
echo 10485760 > /var/qmail/control/databytes
Antivirus : Amavis 0.2.1+McAfee:
(Puede bajarse de http://www.amavis.org/dist/amavis-0.2.1.tar.gz)
Debemos tener el qmail funcionando ok.
se necesita tener instalado algun antivirus, en nuestro caso usamos unicamente MCAFEE..
tambien se requieren reformime como maildrop ya que es mas seguro...
y estos programas:
id, test, head, fgrep, egrep, grep, find, sed, awk, file, logger, tar, gunzip, bunzip2, uncompress, uudecode, unzip, maildrop, mailx, unrar, unarj, lha, zoo, arc, tnef, formail, procmail, expr
una vez que tenemos instalado todo el soft requerido, procedemos a descomprimir el amavis, ingresamos en ese directorio y ejecutamos:
./configure
(nos va a indicar si nos hace falta otro soft y va a detectar que MTA estamos usando junto a que antivirus)
si nos da el OK ejecutamos:
make
make install
nos instalara el amavis en /usr/sbin/scanmails
le hacemos chown root:qmail /usr/sbin/scanmails
(podemos editar este archivo a gusto para cambiar por ejemplo los mensajes de virus a español y tambien cambiarle el usuario local que va a recibir el mensaje de virus, por defecto el usuario es virusalert, si lo dejamos asi, hacemos
echo "usuario" > /var/qmail/alias/.qmail-virusalert)
Debemos crear los directorios /var/log/scanmails y /var/virusmails con permisos 1777
luego frenamos qmail :
/etc/init.d/qmail stop
cd /var/qmail/bin/
mv qmail-local qmail-local-real
mv qmail-remote qmail-remote-real
ln -s /usr/sbin/scanmails qmail-local
ln -s /usr/sbin/scanmails qmail-remote
/etc/init.d/qmail start
Webmail Squirrelmail:
Es necesario tener instalado un servidor Web (en lo que sigue supondremos Apache), un
agente de correo (Mail Transfer Agent: Sendmail, Postfix, qmail ...), un sevidor IMAP (courier-imap.).
También es necesario instalar los módulos PHP4 para apache y muy convenientemente PERL. En la distribución Debian Woody serían :
- apache
- apache-doc
- mod_perl
- mod_php4
- perl
- qmail
- courier-imap
Configuracion Squirrelmail:
Bajamos el squirrelmail 1.4.2 de http://www.squirrelmail.org/download.php
Descompactamos en el document root del apache
Lo renombramos a webmail
Hacemos chown www-data:www-data -R /var/www/webmail (le doy permisos de usuario de apache al squirrelmail)
Ahora hacemos
woody:/# mkdir -p /var/lib/squirrelmail/attach
woody:/# mkdir /var/lib/squirrelmail/data
woody:/# chmod 730 /var/lib/squirrelmail/attach
woody:/# chown -R www-data /var/lib/squirrelmail
woody:/# chgrp -R www-data /var/lib/squirrelmail
En cuanto al servidor Apache, resulta conveniente que las paginas del tipo index.php sean vistas por defecto en el directorio.
Así pues como root habría que editar el fichero de apache,/etc/apache/httpd.conf.
En la línea donde figura
DirectoryIndex index.html
deberíamos añadir algunas entradas más
DirectoryIndex index.html index.htm index.php index.php3
y tambien agregar el modulo de php4 de esta forma:
LoadModule php4_module /usr/lib/apache/1.3/libphp4.so
Ahora debemos instalar el servidor IMAP con:
apt-get install courier-imap
y debemos editar el archivo /etc/courier/imapd
las lineas importantes son:
ADDRESS=127.0.0.1
PORT=127.0.0.1.143,200.41.69.219.143 # significa que esas dos ips escuchan en el 143
AUTHSERVICE143=imap
IMAP_CHECK_ALL_FOLDERS=1
podemos seguir leyendo y cambiando cosas a gusto y luego hacemos:
/etc/init.d/courier-imap restart
Esto ya seria suficiente para que funcione IMAP
Entramos en /var/www/webmail
Que es donde tenemos el squirrelmail y asi comenzamos a editarlo
y ejecutamos ./configure y nos aparecera la siguiente pantalla:
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books (LDAP)
7. Message of the Day (MOTD)
8. Plugins
9. Database
D. Set pre-defined settings for specific IMAP servers
C. Turn color off
S Save data
Q Quit
Command >>
Las cosas mas importantes para editar son en la 1º podemos editar la organization Name, Default Language a es_ES.
en la 2º (server Settings) Deberia decir algo similar a lo que sigue.
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Server Settings
General
-------
1. Domain : dominio.com.ar
2. Invert Time : false
3. Sendmail or SMTP : Sendmail
A. Update IMAP Settings : 127.0.0.1:143 (courier)
B. Change Sendmail Config : /usr/sbin/sendmail
R Return to Main Menu
C. Turn color off
S Save data
Q Quit
en la 3º opcion ( Folder Defaults) Debe ser como aqui:
SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Folder Defaults
1. Default Folder Prefix :
2. Show Folder Prefix Option : false
3. Trash Folder : INBOX.Papelera
4. Sent Folder : INBOX.Enviados
5. Drafts Folder : INBOX.Borrador
6. By default, move to trash : true
7. By default, move to sent : true
8. By default, save as draft : true
9. List Special Folders First : true
10. Show Special Folders Color : true
11. Auto Expunge : true
12. Default Sub. of INBOX : false
13. Show 'Contain Sub.' Option : false
14. Default Unseen Notify : 2
15. Default Unseen Type : 1
16. Auto Create Special Folders : true
17. Folder Delete Bypasses Trash : false
18. Enable /NoSelect folder fix : false
en la 4º opcion (General Options) lo siguiente:
General Options
1. Default Charset : iso-8859-1
2. Data Directory : /var/lib/squirrelmail/data/
3. Attachment Directory : /var/lib/squirrelmail/attach/
4. Directory Hash Level : 0
5. Default Left Size : 150
6. Usernames in Lowercase : false
7. Allow use of priority : true
8. Hide SM attributions : false
9. Allow use of receipts : true
10. Allow editing of identity : true/true
11. Allow server thread sort : false
12. Allow server-side sorting : false
13. Allow server charset search : true
14. Enable UID support : true
15. PHP session name : SQMSESSID
Luego pueden ir viendose las demas opciones pero ahi ya depende de los gustos de cada uno, por los plugins y demas verduras.
En caso de que no funcione el idioma que habiamos seteado es_ES
Posiblemente nos haga falta reconfigurar locales hacemos
dpkg-reconfigure locales
y seleccionamos es_ES, es_AR y dejamos por defecto es_ES
Luego podemos jugar con alias en apache o virtualhosts para facilitar el acceso al webmail como por ejemplo:
Alias /mail /var/www/webmail
Options FollowSymLinks
o sino un virtualhost
NameVirtualHost 100.100.100.100
DocumentRoot /var/www/webmail
DirectoryIndex index.php
ServerName webmail.dominio.com.ar
*****************************************************************************
Este Documento fue escrito por :
Diego D'Angelo
gnux@opengnux.com.ar
y esta bajo GPL.
Estan todos invitados a probar y modificar esta guia,
y si es para mejorarla, mejor aun!!!
*****************************************************************************
Creo que eso es todo :)
- Secciones: