Monta tu propio servidor profesional (3)
Y llegamos a la tercera parte, una vez que ya tenemos nuestro servidor funcionando, y es el turno de instalar los servicios extra que vamos a necesitar.
Vamos a dividir estos servicios extra en dos partes, ya que en una sola se haría eterno. En primer lugar vamos a instalar un antivirus/antispam para nuestro servidor. Después instalaremos un webmail, que aunque el panel de control del servidor trae uno, Squirrelmail, nosotros instalaremos Roundcube, que es más moderno y gráficamente más similar a los que conocemos estilo hotmail.
El antivirus/antispam lo vamos a dotar de una interfaz gráfica, o panel de control, donde cada usuario puede ajustar su propio nivel de spam, así como comprobar qué mesajes han sido bloqueados por spam o virus.
Vamos a la instalación...
Antes de comenzar, y para los que se les haya olvidado los comandos que usábamos con vim, nuestro editor, puedes refrescar la memoria en el artículo anterior.
Además de la conexión por SSH, con Putty, podemos acceder también a la shell de nuestro sistema con una interfaz gráfica. ¿Para qué sirve esto? Pues sencillamente, en la instalación de hoy hay fragmentos de código que hay que agregar a archivos, y teclearlo todo a mano tiene su tiempo. Usando la interfaz gráfica podemos abrir el archivo y pegar los cambios. Podemos también subir archivos, descomprimirlos, copiar, pegar, eliminar, etc...
El programa que nos a a ayudar a todo esto se llama WinSCP. Lo puedes descargar desde aquí y su uso es tan sencillo como Putty (para instalar y conectar). Hazme caso y pruébalo, no te vas a arrepentir.
Un último aviso, respeta la sintaxis de los comandos, puntos, comas, etc... y cambia donde pone _TU_PASSWORD_ por tu password del sistema (para MySQL) y _TU_PASSWORD_AMAVIS_ por la password que le asignes a AMaViS.
Comenzamos la instalación, para ello debemos primero acceder a nuestro servidor por SSH con Putty.
Paramos Postfix:
-> /etc/init.d/postfix stop
Actualizamos los paquetes debian:
-> apt-get update && apt-get upgrade
Instalamos:
-> apt-get install libdbd-mysql-perl libdbi-perl libphp-jpgraph libossp-uuid-perl php-pear
Instalamos los módulos php-pear (si aparecen errores en el primer comando los ignoramos):
-> pear upgrade-all
-> pear install Log Mail_Mime File Date DB DB_Pager Net_Sieve Net_Pop3
-> pear -d preferred_state=alpha install Image_Color Image_Canvas Image_Graph Numbers_Roman Numbers_Words
-> pear install Pager Net_SMTP Auth_SASL
Instalamos AMaVis:
-> apt-get install amavisd-new spamassassin clamav clamav-daemon
Modificamos la configuración de Postfix para activar AMaViS (si quieres puedes hacer una copia de seguridad del archivo antes de modificarlo con cp /etc/postfix/main.cf /etc/postfix/main.cf-bk):
-> vim /etc/postfix/main.cf
Buscamos esta línea y la descomentamos (quitamos la almohadilla # que tiene delante):
content_filter = amavis:[127.0.0.1]:10024
Añadir también estas líneas:
smtpd_sasl_authenticated_header = yes
receive_override_options = no_address_mappings
Modificaremos ahora el archivo master.cf (haz una copia por seguridad):
-> vim /etc/postfix/master.cf
Busca estas líneas:
localhost:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_override_options=no_address_mappings
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
Y añade debajo:
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
Vamos a modificar la configuración de AMaViS (descargaremos un archivo de configuración externo):
-> cd /etc/amavis
-> wget http://www200.pair.com/mecham/amavisd.conf.maia
-> mv amavisd.conf.maia amavisd.conf
Editamos el archivo descargado:
-> vim /etc/amavis/amavisd.conf
Cambia '$mydomain' y '$myhostname' por los valores que corresponden a tu servidor, recuerda el FQDN.
Después buscamos estas líneas:
$final_virus_destiny = D_DISCARD;
$final_spam_destiny = D_DISCARD;
$final_banned_destiny = D_DISCARD;
$final_bad_header_destiny = D_DISCARD;
Y añadimos debajo:
$warnvirussender = 1;
$warnspamsender = 0;
$warnbannedsender = 1;
$warnvirusrecip = 1;
$warnbannedrecip = 1;
Busca esta línea e introduce una password nueva para AMaVis:
lookup_sql_dsn = ( ['DBI:mysql:maia:localhost', 'amavis', '_TU_PASSWORD_AMAVIS_'] );
Y después de:
$X_HEADER_TAG = 'X-Virus-Scanned';
$X_HEADER_LINE = "Maia Mailguard 1.0.2";
Añade esto:
use DBI;
my $db = "ispcp";
my $user="root";
my $host="localhost";
my $password="_TU_PASSWORD_"; ---> Tu password de root de MySQL
my $dbh = DBI->connect("DBI:mysql:database=$db;host=$host", $user, $password, {RaiseError => 1});
my $arr = $dbh->selectcol_arrayref('SELECT domain_name, 1 FROM domain', {Columns=>[1,2]});
my $arre = $dbh->selectcol_arrayref('SELECT alias_name, 1 FROM domain_aliasses', {Columns=>[1,2]});
my $lis = ($arre,$arr);
%local_domains = (@$arr,@$arre);
Vamos a instalar SpamAssassin. Crea una configuración con el configurador que existe en la web http://www.yrex.com/spam/spamconfig.php y lo descargas, guardándolo como /etc/spamassassin/local.cf, puedes usar la configuración que aparece por defecto.
Añade el usuario clamav al grupo amavis:
-> usermod -G amavis clamav
MySQL debe arrancar antes que AMaVis, para ello modificamos:
-> update-rc.d -f mysql remove
-> update-rc.d mysql start 18 2 3 4 5 . stop 22 0 1 6 .
Reiniciamos los servicios:
-> /etc/init.d/amavis restart
-> /etc/init.d/clamav-daemon restart
-> /etc/init.d/postfix restart
Instalamos Maia, para ello creamos un nuevo directorio y descargamos los archivos:
-> mkdir /usr/src/maia
-> cd /usr/src/maia
-> wget http://www.maiamailguard.com/files/maia-1.0.2a.tar.gz
-> wget http://ratsnet.org/vhcs/maia_vhcs_theme_v2.12.tar.bz2
Descomprimimos los archivos:
-> tar -xzf maia-1.0.2a.tar.gz
-> tar xjvf maia_vhcs_theme_v2.12.tar.bz2
Creamos la base de datos para Maia:
-> cd /usr/src/maia
-> mysql -u root -p
mysql> CREATE DATABASE IF NOT EXISTS maia;
mysql> quit
Creamos una password para el usuario 'amavis':
-> passwd amavis
Eliminamos la shell del usuario 'amavis':
-> chsh -s /bin/false amavis
Creamos la estructura y damos los permisos a la base de datos:
-> cd /usr/src/maia/maia-1.0.2
-> mysql -u root -p maia < maia-mysql.sql
-> mysql -u root -p maia
mysql> GRANT CREATE, DROP, ALTER, SELECT, INSERT, UPDATE, DELETE ON
mysql> maia.* TO amavis@localhost IDENTIFIED BY '_TU_PASSWORD_AMAVIS_';
mysql> quit
Creamos los directorios para Maia:
-> mkdir /var/lib/amavis/maia
-> mkdir /var/lib/amavis/maia/scripts
-> mkdir /var/lib/amavis/maia/templates
Modificamos la configuración:
-> cd /usr/src/maia/maia-1.0.2
-> mv maia.conf.dist maia.conf
-> vim maia.conf
Modificar $password por la password de AMaViS y $base_url por http://svr01.tudominio.com/tools/antispam
Y corregimos los siguientes directorios (verás que las rutas originales no son iguales):
$script_dir = "/var/lib/amavis/maia/scripts";
$template_dir = "/var/lib/amavis/maia/templates";
$pid_file = "/var/run/amavis/.process-quarantine.pid";
Copiamos los archivos:
-> cp /usr/src/maia/maia-1.0.2/maia.conf /etc/maia.conf
-> cp -R /usr/src/maia/maia-1.0.2/scripts/* /var/lib/amavis/maia/scripts
-> cp -R /usr/src/maia/maia-1.0.2/templates/* /var/lib/amavis/maia/templates
Les asignamos permisos:
-> chown -R amavis /var/lib/amavis/maia
-> chgrp -R amavis /var/lib/amavis/maia
-> chmod 640 /var/lib/amavis/maia/templates/*.tpl
-> chmod 750 /var/lib/amavis/maia/scripts/*.pl
-> chown amavis /etc/maia.conf
-> chgrp amavis /etc/maia.conf
-> chmod 640 /etc/maia.conf
Corregimos los directorios en los scripts scripts
-> vim /var/lib/amavis/maia/scripts/process-quarantine.pl
Cambiar /var/amavisd/maia/scripts a /var/lib/amavis/maia/scripts y también /var/amavisd/.process-quarantine.pid a /var/run/amavis/.process-quarantine.pid
-> vim /var/lib/amavis/maia/scripts/send-quarantine-digests.pl
Cambiar /var/amavisd/maia/templates/ a /var/lib/amavis/maia/templates/ y cambiar $base_url por la que pusimos anteriormente
Comprobamos la configuración:
-> cd /var/lib/amavis/maia/scripts
-> ./configtest.pl
NOT INSTALLED te aparecerá en algunos módulos, pero no son necesarios.
Importamos las reglas de Spamassassin:
-> cd /var/lib/amavis/maia/scripts
-> ./load-sa-rules.pl
Instalamos el panel de control web:
-> mkdir /var/www/ispcp/gui/tools/antispam
-> cp -R /usr/src/maia/maia-1.0.2/php/* /var/www/ispcp/gui/tools/antispam
Editamos el archivo config.php:
-> cd /var/www/ispcp/gui/tools/antispam
-> mv config.php.dist config.php
-> vim config.php
Cambiamos los valores por defecto:
$default_display_language = "en";
$maia_sql_dsn = "mysql://amavis:_TU_PASSWORD_AMaVis_@tcp(localhost:3306)/maia";
$address_rewriting_type = 4;
$auth_method = "pop3";
Instalamos el motor para plantillas SMARTY (si usas debian sigue más abajo):
-> cd /usr/src/maia/
-> wget http://www.smarty.net/do_download.php?download_file=Smarty-2.6.20.tar.gz
-> tar -xzf Smarty-2.6.20.tar.gz
-> cd Smarty-2.6.20/libs
-> mkdir /var/www/ispcp/gui/tools/antispam/libs/Smarty
-> cp -R ./* /var/www/ispcp/gui/tools/antispam/libs/Smarty
O si estás usando Debian:
-> apt-get install smarty
Y editamos el archivo:
-> vim /var/www/ispcp/gui/tools/antispam/config.php
Para descomentar esta línea (le quitamos la almohadilla que lleva antes):
$smarty_path = "/var/www/ispcp/gui/tools/antispam/libs/Smarty";
Instalamos el tema modern_blue:
-> mkdir /var/www/ispcp/gui/tools/antispam/themes/modern_blue
-> cp -R /usr/src/maia/modern_blue/* /var/www/ispcp/gui/tools/antispam/themes/modern_blue
Aplicamos los permisos:
-> chown -R vu2000:www-data /var/www/ispcp/gui/tools/antispam
-> chmod -R 555 /var/www/ispcp/gui/tools/antispam
-> chmod -R 755 /var/www/ispcp/gui/tools/antispam/themes
Añadimos la ruta antispam a apache:
-> cd /etc/apache2/sites-available/
-> vim 00_master.conf
Después de:
Alias /ftp /var/www/ispcp/gui/tools/filemanger/
Añadimos esta línea:
Alias /antispam /var/www/ispcp/gui/tools/antispam/
Y reiniciamos Apache:
-> /etc/init.d/apache2 restart
Comprobamos lo hecho, para ello abrimos en el navegador: http://svr01.dominio.com/tools/antispam/admin/configtest.php
Debe aparecerte todo OK, si no es así instala los módulos que falten con:
-> pear install modulname
Existe un error en PEAR::Image_Graph 0.7.2 que lo corregiremos:
-> cd /usr/share/php/Image/Graph/Plot/
-> mv Pie.php Pie.php.orig
-> wget http://www200.pair.com/mecham/Pie.php.txt
-> mv Pie.php.txt Pie.php
No es necesario que aparezca como OK:
- PostgreSQL Support
- PEAR::Net_IMAP
- IMAP library
- LDAP library
- MCrypt library
Además puede ocurrir que falte el archivo Remote.php, para ello:
-> mkdir /var/www/ispcp/gui/tools/antispam/admin/PEAR
-> cp /usr/share/php/PEAR/Command/Remote.php /var/www/ispcp/gui/tools/antispam/admin/PEAR/Remote.php
Puedes refrescar el navegador (F5) y comprobar que ahora todo va bien.
Maia necesita su propio AMaVis, es parte del paquete:
-> mv /usr/sbin/amavisd-new /usr/sbin/amavisd-bak
-> cp /usr/src/maia/maia-1.0.2/amavisd-maia /usr/sbin/amavisd-new
-> chown root /usr/sbin/amavisd-new
-> chmod 755 /usr/sbin/amavisd-new
Editamos la configuración de Spamassassin:
-> vim /etc/spamassassin/local.cf
Y añadimos estas líneas al final:
# Bayes database configuration
use_bayes 1
bayes_store_module Mail::SpamAssassin::BayesStore::SQL
bayes_sql_dsn DBI:mysql:maia
bayes_sql_username amavis
bayes_sql_password _TU_PASSWORD_AMaViS_
bayes_sql_override_username amavis
bayes_auto_learn 1
bayes_auto_learn_threshold_nonspam 0.1
bayes_auto_learn_threshold_spam 10.0
bayes_use_hapaxes 1
# bayes_use_chi2_combining 1
bayes_ignore_header ReSent-Date
bayes_ignore_header ReSent-From
bayes_ignore_header ReSent-Message-ID
bayes_ignore_header ReSent-Subject
bayes_ignore_header ReSent-To
bayes_ignore_header Resent-Date
bayes_ignore_header Resent-From
bayes_ignore_header Resent-Message-ID
bayes_ignore_header Resent-Subject
bayes_ignore_header Resent-To
bayes_ignore_header X-Received-From-IP
bayes_ignore_header X-Virus-Scanned
bayes_ignore_header X-Spam-Status
bayes_ignore_header X-Spam-Level
bayes_ignore_header X-Sender
bayes_ignore_header X-Mailer
# Auto-Whitelist configuration
auto_whitelist_factory Mail::SpamAssassin::SQLBasedAddrList
user_awl_dsn DBI:mysql:maia
user_awl_sql_username amavis
user_awl_sql_password _TU_PASSWORD_AMaViS_
Creamos un enlace a la configuración de amavis:
-> ln -s /etc/amavis/amavisd.conf /etc/amavisd.conf
Reiniciamos AMaVis:
-> /etc/init.d/amavis restart
Nos registramos como administrador del antispam, para ello nos iremos en nuestro navegador a:
http://svr01.dominio.com/tools/antispam/login.php?super=register
La dirección con la que entres debe existir en tu servidor, así que debes haber creado antes un dominio y un email. En el caso de nuestro ejemplo podemos dar de alta el dominio que estamos usando, dominio.com, y crear la cuenta admin@dominio.com.
Añadimos al cron los scripts de mantenimiento:
-> crontab –u amavis -e
Y añadimos:
55 * * * * /var/lib/amavis/maia/scripts/process-quarantine.pl --learn --report
1 * * * * /var/lib/amavis/maia/scripts/stats-snapshot.pl
5 1 * * * /var/lib/amavis/maia/scripts/expire-quarantine-cache.pl
@weekly /var/lib/amavis/maia/scripts/send-quarantine-reminders.pl
#15 1 * * * /var/lib/amavis/maia/scripts/send-quarantine-digests.pl
Ahora ya está todo instalado, podemos chequear nuestro sistema:
Test GTUBE (Generic Test for Unsolicited Bulk Email):
Envía desde una cuenta externa a tu servidor un email que contenga en el cuerpo del mensaje esta línea:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
El antispam lo reconocerá con una puntuación de 1000.
Test EICAR:
Igualmente envía desde una cuenta externa a tu servidor un email que contenga en el cuerpo del mensaje esta línea:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Clamav lo reconocerá como un virus.
Una vez que todo está funcionando, puedes borrar el directorio admin (o renombrarlo):
-> rm -fR /var/www/ispcp/gui/tools/antispam/admin







Comentarios (0)
Trackback URL | Comentarios RSS
No hay comentarios.¿Por qué no eres el primero en comentar?.