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 :)

Distribuir contenido

Office OpenXML (OOXML) no debe ser ISO 29500