Instalación de qmail con vpopmail, qmail-scanner, ClamAV y SpamAssassin (I)
Vamos a iniciar una seria para la instalación de qmail con vpopmail, qmail-scanner, ClamAV y SpamAssassin.
El listado de la serie completa es Instalación de un servidor de correo con qmail/vpopmail/qmail-scanner/ClamAV/SpamAssassin:
- Iniciar la instalación de qmail con las daemontools y MySQL para vpopmail
- Instalación de vpopmail y spamassassin
- Instalación de ClamAV como motor antivirus y qmail-scan-queue para el analisis de los mensajes con ClamAV y SpamAssassin
- Arranque de qmail y sus scripts de inicio
- Instalación del servidor POP3 y IMAP con dovecot
- Instalación de parches para qmail: SMTP-AUTH, CHKUSER y UCSPI-TLS
- Scripts de supervise para los daemons SMTP y POP3 con SSL
Este documento esta basado en estas dos guias muy usadas para la instalación de qmail:
Paquetes
Vamos a instalar algunos paquetes desde código fuente y otros desde paquetes de la distribución, en este caso una CentOS 5. Sería equivalente para Fedora o RHEL.
Código fuente
Mediante código fuente vamos a instalar todos los paquetes relacionados con el servidor de correo:
umask 022 mkdir -p /usr/local/src cd /usr/local/src wget http://www.qmail.org/netqmail-1.06.tar.gz wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz mkdir -p /package cd /package wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz chmod 1755 /package cd /usr/local/src tar xzf netqmail-1.06.tar.gz tar xzf ucspi-tcp-0.88.tar.gz cd /package tar xzf daemontools-0.76.tar.gz
Paquetes del sistema
Los paquetes de sistema que necesitaremos para la instalación de los anteriores son los siguientes:
for depe in gcc gcc-c++ make wget curl libtermcap-devel; do yum install $depe -y; done
Directorios
Creamos el directorio donde vamos a instalar qmail:
mkdir /var/qmail
Usuarios
Creamos los usuarios necesarios para los daemons de qmail:
cd /usr/local/src/netqmail-1.06 export TMP=$(mktemp /tmp/lol.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX) echo '#!/bin/bash' >$TMP cat /usr/local/src/netqmail-1.06/INSTALL.ids | grep -i Linux -A 11 | grep "#" | sed 's/$/;/ig' | sed 's/#//ig' >>$TMP bash $TMP rm $TMP unset TMP sed -i 's#::/var/qmail/alias:/bin/bash#::/var/qmail/alias:/bin/true#' /etc/passwd sed -i 's#::/var/qmail:/bin/bash#::/var/qmail:/bin/true#' /etc/passwd
Instalación daemontools
Seguimos con la instalación de daemontools, que otras veces ya hemos tratado:
cd /package/admin/daemontools-0.76/src patch < /usr/local/src/netqmail-1.06/other-patches/daemontools-0.76.errno.patch cd .. package/install
Podremos ver como aparecen los siguientes procesos:
root 23733 0.0 0.0 3196 1052 ? Ss 15:07 0:00 /bin/sh /command/svscanboot root 23735 0.0 0.0 2952 316 ? S 15:07 0:00 \_ svscan /service root 23736 0.0 0.0 1940 232 ? S 15:07 0:00 \_ readproctitle service errors: ............................
Instalación MySQL
Vamos a instalar vpopmail con soporte MySQL, por lo que si no disponemos de uno deberemos instalarlo:
wget http://dev.mysql.com$(curl -dump http://dev.mysql.com/downloads/mysql/5.1.html 2>/dev/null| grep "Compressed GNU TAR archive" | sed 's/^.*href="//' | sed 's/".*$//' | sed 's#/pick#/http://mysql.rediris.es/#') -O /usr/local/src/mysql.tgz tar xzf mysql.tgz cd mysql* ./configure --prefix=/usr/local/mysql51 --exec-prefix=/usr/local/mysql51 --with-plugins=innobase,partition --enable-assembler --with-mysqld-ldflags=-all-static --with-big-tables --with-pthread make && make install mkdir -p /var/mysql/datadir ln -s /usr/local/mysql51/ /usr/local/mysql cp /usr/local/src/mysql-*/support-files/my-small.cnf /etc/my.cnf sed -i 's/#skip-networking/skip-networking/' /etc/my.cnf mkdir -p /usr/local/supervise/mysql groupadd mysql useradd -g mysql mysql cd /usr/local/mysql chown -R mysql . chgrp -R mysql . /usr/local/mysql/bin/mysql_install_db --user=mysql --datadir=/var/mysql/datadir chown -R root . chown -R mysql /var/mysql mkdir -p /var/log/mysql chown mysql:root /var/log/mysql/ -R echo "export PATH=\$PATH:/usr/local/mysql/bin" >> /etc/profile echo "/usr/local/mysql/lib/mysql" > /etc/ld.so.conf.d/mysq.conf ldconfig . /etc/profile
A continuación creamos el fichero /usr/local/supervise/mysql/run:
#!/bin/bash exec /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/var/mysql/datadir --user=mysql --pid-file=/var/mysql/mysqld.pid --skip-external-locking --socket=/tmp/mysql.sock --log-error=/var/log/mysql/mysqld.log
Le damos permisos y levantamos el servicio:
chmod +x /usr/local/supervise/mysql/run ln -s /usr/local/supervise/mysql /service
Podemos definir una contraseña mediante:
/usr/local/mysql51/bin/mysqladmin -u root password 'p4ssw0rd' /usr/local/mysql51/bin/mysqladmin -u root -pp4ssw0rd -h $(hostname --long) password 'new-password'
A continuación deberemos tener una primera versión de qmail (sin parches) para poder instalar vpopmail.
Instalación qmail
Instalar la distribución netqmail es tan simple como esto:
cd /usr/local/src/netqmail-1.06 make setup check
A continuación si ya tenemos correctamente configurados los DNS podemos ejecutar lo siguiente:
./config
En caso que aún no dispongamos de DNS configurados, por ejemplo, porque estamos preparando un servidor qmail al cual migraremos más adelante, podemos forzar la configuración de una inversa concreta mediante config-fast:
./config-fast ejemplo.systemadmin.es
Mañana seguiremos instalando vpopmail y spamassassin.
12. June 2009 at 5:08 pm :
Por que no instalas el mysql de la distribución?
14. June 2009 at 7:51 pm :
Los binarios siempre me han dado disgustos, por lo que prefiero evitarlos para los daemons más críticos. Además, de esta manera puedo habilitar solo lo que me interesa:
17. June 2010 at 2:50 am :
Para el que lo requiera, existe una aplicación que instala el QMail automáticamente, solo para Debian Linux, útil para ahorrar tiempo, está hecho en QT, les dejo la liga:
http://autoqmailinst.sourceforge.net/
18. July 2010 at 2:02 am :
Tengo problemas con la direccion de descarga de MySQL no se si puedes checarla porque preciso de la instalacion, me tira un archivo HTML
19. July 2010 at 8:19 am :
Voy a intentar que vuelva a funcionar, pero puedes simplemente bajar el código fuente del MySQL de su web y dejarlo en /usr/local/src con el nombre mysql.tgz.
Así el resto funcionará tal cual
saludos!