Vamos a utilizar MailWatch para realizar estadísticas de virus en el correo, y otras labores de gestión. MailWatch necesita MySQL para guardar los logs de MailScanner, Apache para servir las páginas y PHP. Vamos a instalarlos.
apt-get install apache2 libapache2-mod-php5 php5php5-common php-pear php5-gd php5-cli php5-mysqlAsignamos una clave de acceso al usuario root en MySQL.
mysqladmin -u root password 'MIPASSWORD'Nos descargamos MailWatch de internet y lo descomprimimos.
mkdir -p/root/download/mailwatchCreamos la base de datos mailscanner.
cd mailscannerDamos permisos al usuario de la base de datos mailscanner (mailwatch).
mysql -u root -pCopiar el fichero MailWatch.pm al directorio /etc/MailScanner/CustomFunctions.
mv MailWatch.pm /etc/MailScanner/CustomFunctions/Ahora editamos /etc/MailScanner/CustomFunctions/MailWatch.pm y cambiamos las siguinetes líneas con nuestros valores (aprox: lineas 43 y 44).
my($db_user) = 'mailwatch';Creamos un usuario Web para gestionar MailWatch.
mysql mailscanner -u mailwatch -pAhora copiamos el directorio mailscanner al directorio raiz del servidor web.
mv /root/download/mailwatch/mailwatch/mailscanner /var/www/Modificamos los permisos de los subdirectorios images e images/cache del directorio mailscanner. Debemos hacer que sean legibles y escribibles por el servidor web.
chown root:www-data /var/www/mailscanner/imagesAhora creamos el fichero conf.php en /var/www/mailscanner/. Para ello copiamos el fichero conf.php.example.
cp /var/www/mailscanner/conf.php.example /var/www/mailscanner/conf.phpModificamos /var/www/mailscanner/conf.php para adaptarlo a nuestra instalación. Las siguientes líneas deben quedar como sigue:
define (DB_USER, 'mailwatch');Ahora vamos a configurar MailScanner para enviar el registro de logs a la base de datos de MySQL. Primero paramos el servicio MailScanner
/etc/init.d/mailscanner stopNos aseguramos que en el fichero de configuración /etc/MailScanner/MailScanner.conf aparezcan los siguientes parámetros.
Always Looked Up Last = &MailWatchLoggingCopiar el fichero SQLBlacklistWhitelist.pm, de /root/download/mailwatch/mailwatch a /etc/MailScanner/CustomFunctions.
cp /root/download/mailwatch/mailwatch/SQLBlacklistWhitelist.pm /etc/MailScanner/CustomFunctions/En el fichero de configuración /etc/MailScanner/MailScanner.conf poner:
Is Definitely Not Spam = &SQLWhitelistModificar /etc/MailScanner/CustomFunctions/SQLBlacklistWhitelist.pm. En la función CreateList, poner los parámetros de acceso a la base de datos iguales que en el fichero /etc/MailScanner/CustomFunctions/MailWatch.pm. En la línea 105 (aprox.) y siquiente se debe tener:
my($db_user) = 'mailwatch';Movemos las base de datos bayesianas, y ponemos los permisos. En /etc/MailScanner/spam.assassin.prefs.conf ponemos:
bayes_path /etc/MailScanner/bayes/bayesCreamos el nuevo directorio, le damos la propiedad al servidor web, y le ponemos el setgid.
mkdir /etc/MailScanner/bayesCopiamos las bases de datos bayesianas existentes y cambiamos los permisos.
cp /var/lib/MailScanner/* /etc/MailScanner/bayes/Verificamos que SpamAssassin funciona correctamente con las nuevas bases de datos bayesianas.
spamassassin -p /etc/MailScanner/spam.assassin.prefs.conf --lintY debe aparecer algo así como:
debug: using "/etc/MailScanner/spam.assassin.prefs.conf" for user prefs filePero... aparecen dos errores.
Parece ser que hay un bug en esta versión de SpamAssassin. Debemos comentar tres líneas en el fichero /usr/share/spamassassin/20_dnsbl_tests.cf, para que no realice cierto test de listas negras a través de dns. Quedarían de la siguiente manera (aprox: línea 190 y siguientes):
# header DNS_FROM_AHBL_RHSBL ................Además, en el fichero /usr/share/spamassassin/50_scores.cf debemos comentar otra línea que quedaría:
# score DNS_FROM_AHBL_RHSBL .............Otro bug. En el fichero /usr/share/spamassassin/25_body_tests_es.cf hay una cadena demasiado larga. Tiene más de 50 caracteres, por lo que hay que acortar la última palabra. Debe quedar así:
describe EXCUSE_ES_03 Someone requested a spammer to spam you in SpAl verificar de nuevo SpamAssassin, no indica error alguno.
Reiniciamos MailScanner.
/etc/init.d/mailscanner startEn el fichero de registro /var/log/mail.log debemos ver algo parecido a:
Jun 13 12:18:23 pagasarri MailScanner[26388]: MailScanner E-Mail Virus Scanner version 4.41.3 starting...Ya tenemos todo funcionando. Ahora necesitamos acceder a la máquina desde un navegador. Como la máquina está, en una DMZ, tenemos que habilitar en el cortafuegos el acceso HTTP desde el interior.
Source |
Destination |
Service |
Action |
---|---|---|---|
Zerbitzariak Administraritza Irakasleak |
antivirus perimetral |
HTTP (80) |
Accept |
Ahora habilitamos las extensiones de php para usar MySQL y los gráficos. En el fichero /etc/php4/apache2/php.ini, las líneas que corresponden a las extensiones han de ser descomentadas. Quedarían de la siguiente forma:
extension=mysql.soVamos a configurar Apache para que solo responda a peticiones realizadas desde nuestras subredes, y para que siga los enlaces simbólicos. Esto último lo realizamos porque el programa mailwatch utiliza dichos enlaces. En el directorio /etc/apache2/conf.d/, y suponiendo que las cuatro subredes de nuestra escuela son 172.16.0.0/24, 172.16.1.0/24, 172.16.2.0/24, 172.16.3.0/24, creamos el fichero mailwatch con el siguiente contenido:
ServerAdmin webadmin@nire-eskola.netVamos a hacer que el usuario en que se ejecuta Apache en Debian (www-data) sea del grupo postfix para que se pueda acceder al directorio de cuarentena. Ejecutamos el siguiente comando:
usermod -a -G postfix www-dataEn el fichero /etc/group, debe aparecer (en Sarge):
postfix:x:104:www-dataHay dos líneas en el fichero de configuración de apache /etc/apache2/apache2.conf, que conviene descomentar. Quedarían así:
AddType application/x-httpd-php .phpMailScanner permite sistemas complejos, donde las reglas de spam, etc, están jerarquizadas. Esto hace qye las reglas por defecto se pongan en un sitio, las del site en otro, las locales en otro, etc. MailWatch las busca en esos lugares, y las "suma", para mostrarlas en la página web, y para actualizarlas. Además también busca el fichero de configuración en dos sitios. Si no tenemos definida esa jerarquía, no pasa nada, pero los errores en la búsqueda de ficheros quedan en el registro de errores de apache. Podemos subsanarlo creando unos enlaces simbíolicos al directorio que utilizemos. En nuestro caso:
ln -s /usr/share/spamassassin /usr/local/share/spamassassinEn realidad, esto es un bug de MailWatch, pues debería de ser configurable en lugar de suponer su existencia.
Si tenemos el típico iconillo que aparece en la barra de los navegadore (favicon.ico), lo ponemos en el directorio /var/www/mailscanner.
Parece que hay un problemilla con el directorio temp, cuando descarga el fichero de información geográfica de las IPs. Vamos a darle la propiedad al servidor web.
chown www-data:www-data /var/www/mailscanner/tempReiniciamos el servidor web:
/etc/init.d/apache2 restartHay otro BUG? en el código PHP del fichero clamav_status.php que hace que no aparezca la fecha de actualización y el número de versión de los ficheros de firmas de ClamAV. Desde la versión 0.92.1 de ClamAV, no funciona. Esto es debido a un cambio en las APIs de ClamAV. Para corregirlo, la línea siguiente:
<?passthru(get_virus_conf('clamav')." -V | awk -f ./clamav.awk");?>debe poner:
<?passthru('/usr/sbin/clamd -V | awk -f ./clamav.awk');?>Ahora apuntamos el navegador al antivirus (http://antibirusa.nire-eskola.net/mailscanner). Nos aparece la página de MailWatch con menús para acceder a las estadísticas, actualización de SpamAssassin, etc. Cuidado con esto. index.php es un enlace simbólico al fichero status.php. Si en la barra del navegador ponemos el nombre del servidor, funcionará. Si ponemos la IP no sigue al enlace simbólico. En este último caso deberemos de poner p.ej: http://172.16.0.5/mailscanner/status.php. En caso de querer también que lo haga al poner la IP, debemos definir un ServerAlias en el VirtualHost, por ejemplo.
Visualización de las colas de postfix (inbound / outbound)
MailWatch no visualiza correctamente las colas de postfix. Siempre aparecen en cero. Para subsanarlo, debemos aplicar un parche al código PHP de la aplicación.
Descargamos el código y lo descomprimimos.
wget -P /var/www/lhpaiak http://www.gbnetwork.co.uk/mailscanner/files/postfixmail.tar.gzCopiamos los ficheros en el directorio de la aplicación y parcheamos el fichero functions.php.
cp postfixmail
cp postfix* /var/www/mailscanner/
patch /var/www/mailscanner/functions.php functions.php.diff
Cambiamos los permisos al directorio /var/spool/postfix/hold.
chgrp www-data /var/spool/postfix/hold
chmod g+rw /var/spool/postfix/hold
Listo!
Liberando de cuarentena, correo con contenido peligroso
MailScanner pone en cuarentena los tipos de ficheros que le indicamos como peligrosos.
Para liberar de cuarentena el SPAM, MailWatch tiene una opción en la que podemos poner 127.0.0.1 en la WhiteList, y al liberar los mensajes de cuarentena, no los vuelve a analizar, y por ende, no los vuelve a poner en cuarentena.
No
es el caso con los mensajes con contenido peligroso. Al liberarlos de
cuarentena, vuelven a ser capturados por MailScanner. Para
solucionarlo, vamos a crear un fichero con las reglas a seguir en el
caso de mensajes de correo con ficheros considerados como contenido
peligroso. Le diremos, que cuando provienen de la misma máquina,
los deje pasar, y al resto, les haga el tratamiento habitual. Peara
ello, en el fichero /etc/MailScanner/MailScanner.conf, la siguiente línea deberá estar de esta forma:
Dangerous Content Scanning = %rules-dir%/content.scanning.rules
Luego creamos el fichero /etc/MailScanner/rules/content.scanning.rules con el siguiente contenido:
From: 127.0.0.1 no
FromOrTo: default yes
Volvemos a reiniciar MailScanner:
/etc/init.d/mailscanner force-reload
Ahora podemos liberar los mensajes de cuarentena, sin hacer cambios en la configuración de MailScanner.
MSRE (MailScannet Ruleset Editor)
MSRE es un editor de reglas para MailScanner. Utiliza para ello un interface Web. Se integra visualmente con MailWatch, utilizando hojas de estilo similares. Vamos a descargarlo al directorio /var/www/lhpaiaki y descomprimirlo.
wget -P /var/www/lhpaiaki http://heanet.dl.sourceforge.net/sourceforge/msre/
tar -zxf msre-0.2.2.tar.gz
Lo instalamos dentro del directorio /var/www/mailscanner.
mkdir /var/www/mailscanner/msreEl fichero de configuración y el script de actiualización los situamos en /etc/msre.
mkdir /etc/msrePonemos el fichero de tarea de cron en /etc/cron.d/.
cp msre-0.2.2/msre_reload.crond /etc/cron.d/Modificamos los permisos del directorio /etc/MailScanner/rules para que MSRE pueda escribir en los ficheros que hay en su interior.
chown -R root:www-data /etc/MailScanner/rulesSi deseamos podemos modificar la hoja de estilos /var/www/mailscanner/msre/style.css. Se recomienda aumentar el tamaño de las tipografías.
La configuración no la vamos a tocar.
Finalmente lo integramos con MailWatch. Deseamos que se acceda al editor desde el menú de herramientas de MailWatch. Este menú está en el fichero /var/www/mailwatch/other.php. En dicho fichero, al final de la sección de herramientas añadimos las siguientes líneas:
....Si deseamos crear un enlace desde esta misma página a PHPsysinfo, añadiremos también las siguientes líneas:
<? if($GLOBALS['user_type'] == 'A'): ?>