9. Posta estatistikak: MailWatch / Estadísticas de correo: MailWatch

EU-Postaren estatistikak ikusi eta beste zenbait kudeaketa lanak egiteko, MailWatch erabilikodugu. MailWatch aplikazioak MySQL behar du MailScanner-en erregistroak gordetzeko, Apache weborriak emateko, eta PHP. Instala ditzagun.

ES-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 mysql-server php4 php4-mysql php4-gd

EU-Atzipen kode bat esleituko diogu root-i MySQL datu-basean.

ES-Asignamos una clave de acceso al usuario root en MySQL.

    mysqladmin -u root password 'MIPASSWORD'

EU-Internetetik deskargatuko dugu MailWatch, eta deskonprimiitu egingo dugu.

ES-Nos descargamos MailWatch de internet y lo descomprimimos.

    mkdir -p/root/download/mailwatch
    wget -P /root/download/mailwatch http://heanet.dl.sourceforge.net/sourceforge/mailwatch/mailwatch-1.0.3.tar.gz
    cd /root/download/mailwatch
    tar -zxf mailwatch*

EU-mailscanner datu-basea sortuko dugu.

ES-Creamos la base de datos mailscanner.

    cd mailscanner
    mysql -u root -p < create.sql

EU-Baimenak emango dizkiogu mailscanner datu-basearen erabiltzaileari (mailwatch).

ES-Damos permisos al usuario de la base de datos mailscanner (mailwatch).

    mysql -u root -p
    mysql>GRANT ALL ON mailscanner.* TO mailwatch@localhost IDENTIFIED BY 'MAILWATCHPASAHITZA';
    mysql>GRANT FILE ON *.* TO mailwatch@localhost IDENTIFIED BY 'MAILWATCHPASAHITZA';
    mysql>FLUSH PRIVILEGES;
    mysql>quit

EU-Orain MailWatch.pm editatuko dugu, eta gure baloreekin aldatuko ditugu hurrengo lerroak (43-44 lerroak ggb).

ES-Ahora editamos MailWatch.pm y cambiamos las siguinetes líneas con nuestros valores (aprox: lineas 43 y 44).

my($db_user) = 'mailwatch';
my($db_pass) = 'MAILWATCHPASAHITZA';

EU-MailWatch.pm fitxategia kopiatuko dugu /etc/MailScanner/CustomFunctions direktoriora.

ES-Copiar el fichero MailWatch.pm al directorio /etc/MailScanner/CustomFunctions.

    mv MailWatch.pm /etc/MailScanner/CustomFunctions/

EU-Web erabiltzaile bat sortuko dugu MailWatch-kudeatzeko.

ES-Creamos un usuario Web para gestionar MailWatch.

    mysql mailscanner -u mailwatch -p
    mysql>INSERT INTO users VALUES ('USUARIOWEBMAILWATCH', MD5('PASSWORDUSUARIOWEBMAILWATCH'), 'NOMBRE DEL USUAIO', 'A', 0, 0, 0, 0, '');
    mysql>quit

EU-Orain, mailscanner direktorioa kopiatuko dugu web zerbitzariaren errora.

ES-Ahora copiamos el directorio mailscanner al directorio raiz del servidor web.

    mv /root/download/mailwatch/mailwatch/mailscanner /var/www/

EU-Bailmenak aldatuko diegu mailscanner-en dauden images eta images/cache azpidirektorioei. Irakurri eta idazteko baimenak eman behar dizkiogu web zerbitzariari.

ES-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/images
    chown root:www-data /var/www/mailscanner/images/cache
    chmod ug+rwx /var/www/mailscanner/images
    chmod ug+rwx /var/www/mailscanner/images/cache

EU-Orain conf.php fitxategia sortuko dugu /var/www/mailscanner/ direktorioan. Hortarako, conf.php.example fitxategia kopiatuko dugu.

ES-Ahora 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.php

EU-Gure instalaziora egokitzeko, /var/www/mailscanner/conf.php aldatuko dugu. Hurrengo lerroak, honela geratu behar dute.

ES-Modificamos /var/www/mailscanner/conf.php para adaptarlo a nuestra instalación. Las siguientes líneas deben quedar como sigue:

define (DB_USER, 'mailwatch');
define (DB_PASS, 'MAILWATCHPASAHITZA');
define (MAILWATCH_HOME, '/var/www/mailscanner');
define (MS_CONFIG_DIR, '/etc/MailScanner');
define (MS_LIB_DIR, '/var/lib/MailScanner');
define (SA_DIR, '/usr/bin');
define (SA_RULES_DIR, '/usr/share/spamassassin');
define (SA_PREFS, MS_CONFIG_DIR.'spam.assassin.prefs.conf');

EU-Orain MailScanner aldatuko dugu, erregistro edukiak MySQL datu-basera bidal ditzan. Lehenengo, zerbitzua geldiaraziko dugu.

ES-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 stop

EU-/etc/MailScanner/MailScanner.conf konfigurazio fitxategian, hurrengo parametroak agertu behar dira.  

ES-Nos aseguramos que en el fichero de configuración /etc/MailScanner/MailScanner.conf aparezcan los siguientes parámetros.

Always Looked Up Last = &MailWatchLogging
Detailed Spam Report = yes
Quarantine Whole Message = yes
Quarantine Whole Messages As Queue Files = no
Include Scores In SpamAssassin Report = yes
Quarantine User = root
Quarantine Group = www-data
Quarantine Permissions = 0660

EU-/root/download/mailwatch/mailwatch direktorioan dagoen SQLBlacklistWhitelist.pm fitxategia, /etc/MailScanner/CustomFunctions direktoriora kopiatu behar dugu.

ES-Copiar el fichero SQLBlacklistWhitelist.pm, de  /root/download/mailwatch/mailwatch a /etc/MailScanner/CustomFunctions.

    cp /root/download/mailwatch/mailwatch/SQLBlacklistWhitelist.pm  /etc/MailScanner/CustomFunctions/

EU-/etc/MailScanner/MailScanner.conf konfigurazio fitxategian, hau jarri behar dugu:

ES-En el fichero de configuración /etc/MailScanner/MailScanner.conf poner:

Is Definitely Not Spam = &SQLWhitelist
Is Definitely Spam = &SQLBlacklist

EU-Aldatu egingi dugu /etc/MailScanner/CustomFunctions/SQLBlacklistWhitelist.pm fitxategia. CreateList funtzioan, datu-basearen atzipen parametroak, MailWatch.pm fitxategian dauden bezala jarriko ditugu. 105. lerroan ggb. hau eduki behar dugu:

ES-Modificar /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 MailWatch.pm. En la línea 105 (aprox.) y siquiente se debe tener:

my($db_user) = 'mailwatch';
my($db_pass) = 'MAILWATCHPASAHITZA';

EU-Bayes datu-baseak mugituko ditugu, eta baimenak jarriko ditugu. /etc/MailScanner/spam.assassin.prefs.conf fitxategian, hau jarriko dugu:

ES-Movemos las base de datos bayesianas, y ponemos los permisos. En /etc/MailScanner/spam.assassin.prefs.conf ponemos:

bayes_path /etc/MailScanner/bayes/bayes
bayes_file_mode 0660

EU-Direktorio berria sortuko dugu. Jabetza emango diogu web zerbitzariari, eta setgid bit-a jarriko diogu.

ES-Creamos el nuevo directorio, le damos la propiedad al servidor web, y le ponemos el setgid.

    mkdir /etc/MailScanner/bayes
    chown root:www-data /etc/MailScanner/bayes
    chmod g+rws /etc/MailScanner/bayes

EU-Ditugun bayes datu-baseak kopiatu, eta baimenak aldatuko dizkiegu.

ES-Copiamos las bases de datos bayesianas existentes y cambiamos los permisos.

    cp /var/lib/MailScanner/* /etc/MailScanner/bayes/
    chown root:www-data /etc/MailScanner/bayes/bayes_*
    chmod g+rw /etc/MailScanner/bayes/bayes_*

EU-Egiaztatu egingo dugu SpamAssassin-ek ongi funtzionatzen duela bayes datu-base berriekin.

ES-Verificamos que SpamAssassin funciona correctamente con las nuevas bases de datos bayesianas.

    spamassassin -p /etc/MailScanner/spam.assassin.prefs.conf --lint

EU-Holako zerbait agertu behar da.

ES-Y debe aparecer algo así como:

debug: using "/etc/MailScanner/spam.assassin.prefs.conf" for user prefs file
debug: bayes: 28821 tie-ing to DB file R/O /etc/MailScanner/bayes/bayes_toks
debug: bayes: 28821 tie-ing to DB file R/O /etc/MailScanner/bayes/bayes_seen
debug: bayes: found bayes db version 2
debug: Score set 3 chosen.

EU-Baina... bi errore ditugu.

ES-Pero... aparecen dos errores.

EU-SpamAssassin-en errore bat dirudi. /usr/share/spamassassin/20_dnsbl_tests.cf fitxategian dauden hiru lerro komentatu behar ditugu. Horrela, ez du lerro horietan jartzen duen test-a egingo. Horrela geratuko lirateke (190. lerroa ggb).

ES-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 ................
# describe DNS_FROM_AHBL_RHSBL .............
# tflags DNS_FROM_AHBL_RHSBL .............

EU-Gainera, /usr/share/spamassassin/50_scores.cf fitxategian beste lerro bat komentatu behar dugu. Honela geratuko litzateke:

ES-Además, en el fichero /usr/share/spamassassin/50_scores.cf debemos comentar otra línea que quedaría:

# score DNS_FROM_AHBL_RHSBL .............

EU-Beste bug bat. /usr/share/spamassassin/25_body_tests_es.cf fitxategian, kate luzeegi bat dago. 50 karaktere baino gehiago ditu, eta beraz, azken hitza moztuko dugu. Hola geratuko da:

ES-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 Sp

EU-Berriz probatzerakoan, ez dago errorerik.

ES-Al verificar de nuevo SpamAssassin, no indica error alguno.

EU-MailScanner abiaraziko dugu.

ES-Reiniciamos MailScanner.

    /etc/init.d/mailscanner start

EU-/var/log/mail.log erregistro fitxategian, holako zerbait agertuko zaigu:

ES-En 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...
Jun 13 12:18:23 pagasarri MailScanner[26388]: Read 120 hostnames from the phising whitelist
Jun 13 12:18:24 pagasarri MailScanner[26388]: Config: calling custom init function SQLBlacklist
Jun 13 12:18:24 pagasarri MailScanner[26388]: Starting up SQL Blacklist
Jun 13 12:18:24 pagasarri MailScanner[26388]: Read 0 blacklist entries
Jun 13 12:18:24 pagasarri MailScanner[26388]: Config: calling custom init function MailWatchLogging
Jun 13 12:18:24 pagasarri MailScanner[26388]: Started SQL Logging child
Jun 13 12:18:24 pagasarri MailScanner[26388]: Config: calling custom init function SQLWhitelist
Jun 13 12:18:24 pagasarri MailScanner[26388]: Starting up SQL Whitelist
Jun 13 12:18:24 pagasarri MailScanner[26388]: Read 0 whitelist entries
Jun 13 12:18:24 pagasarri MailScanner[26388]: Using locktype = flock

EU-Dena dago martxan. Orain web orrira sartuko gara. Makina DMZn dagoenez, HTTP atzipena gaitu behar dugu suhesian.

ES-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

EU-MySQL eta grafikoak erabiltzeko, php luzapenak gaitu behar ditugu orain. /etc/php4/apache2/php.ini fitxategian, luzapenei dagozkien lerroan deskomentatu egin behar ditugu. Honela geratuko lirateke:

ES-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.so
extension=gd.so

EU-Apache konfiguratuko dugu gure sareetatik eginiko eskakizunei soilik erantzuteko. Gainera, lotura sinbolikoak jarraitu behar ditu. Azken hau mailwatch programak behar du. /etc/apache2/conf.d/ direktorioan, mailwatch fitxategian, Gure eskolako lau sareak, 172.16.0.0/24, 172.16.1.0/24, 172.16.2.0/24, 172.16.3.0/24 direla suposatuz, hurrengo hau jarriko dugu:

ES-Vamos 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.net

<Directory /var/www/mailscanner>
    Option Indexes FollowSymLinks
    AllowOverride None
    Order deny.allow
    Deny from all
    Allow from 172.16.0 172.16.1 162.16.2 172.16.3
</Directory>

EU-Apacheren exekuzioa egiten duen erabiltzailea postfix taldekoa izan behar da. Horrela, koarentenako direktorioan baimenak izango ditu. Aginte hau egikarituko dugu:

ES-Vamos 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-data

EU-Hau agertu behar da /etc/groug fitxategian (Sarge-n):

ES-En el fichero /etc/group, debe aparecer (en Sarge):

postfix:x:104:www-data

EU-Apacheren /etc/apache2/apache2.conf konfigurazio fitxategian, bi lerro deskomentatzea komeni zaigu. Horrela geratuko lirateke:

ES-Hay 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 .php
AddType application/x-httpd-php-source .phps

EU-MailScanner-ekin sistema konplexuak egin ditzakegu, non erreglan hierarkizatuak dauden. Hortarako, defektuzko erreglan toki batean jartzen dira, tokikoak beste batean, lokalak beste batean, etab. MailWatch-ek toki guzti horietan bilatzen ditu, eta denak erkusten ditu web orrian. Gainera, konfigurazio fitxategia bi tokitan bilatzen du. Ez badugu hierarkia hori definitzen, ez da ezer gertatzen, baina fitxategien bilaketen errorean, apacheren erregistro fitxategian agertzen dira. Hori saihesteko, erabiltzen dugun direktoriora egingo ditugu lotura sinbolikoak. Gure kasuan:

ES-MailScanner 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/spamassassin
    mkdir -p /usr/local/etc/mail
    ln -s /usr/share/spamassassin /usr/local/etc/mail/spamassassin
    nkdir -p /opt/MailScanner
    ln -s /etc/MailScanner /opt/MailScanner/etc

EU-Errealitatean, MailWatch-en bug bat da hau. Konfiguragarria izan beharko litzateke, eta ez suposatu existitzen ditrela.

ES-En realidad, esto es un bug de MailWatch, pues debería de ser configurable en lugar de suponer su existencia.

EU-Web nabigatzaileetan, helbide barrab, agertzen den ikonotxoa (favicon.ico) badaukagu, /var/www/mailscanner direktorioan jarriko dugu.

ES-Si tenemos el típico iconillo que aparece en la barra de los navegadore (favicon.ico), lo ponemos en el directorio /var/www/mailscanner.

EU-Arazotxo bat dagoela dirudi temp direktorioarekin IPen informazio geografikoa deskargatzerakoan. Jabetza emango diogu web zerbitzariari.

ES-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/temp

EU-Errore bat dago mailq.php fitxategiaren PHP kodean. 15. lerroan, switch-aren azkenean, case default jartzen du. case hitza soberan dago. Honela geratuko da kodea:

ES-Hay un BUG en el código PHP del fichero mailq.php. En la línea 15, al final del switch, pone case default. Sobra el case. El código quedaría:

  default:
   die (.......

EU-Web zerbitzaria berrabiarazi.

ES-Reiniciamos el servidor web:

    /etc/init.d/apache2 restart

EU-Orain, nabigatzailea apuntatuko dugu gure perimetroko antibirusaren estatistiken web orrira (http://antibirusa.nire-eskola.net/mailscanner). MailWatch-en web orria agertzen zaigu. Bere barnean, estatistikak ikusteko orria, SpamAssassin eguneratzekoa, etab. Kontuz honekin. index.php, status.php-ren lotura sinboliko bat da. Navigatzailean, zerbitzariaren izena jartzen badugu, funtzionatuko du. IP helbidea jartzen badugu, ordea, ez du jarraituko lotura sinbolikoa. Kasu hontan, http://172.16.0.5/mailscanner/status.php jarri beharko genuke. Nahi badugu hau aldatu, ServerAlias bat definitu behar dugu VirtualHost-ean, adibidez.

ES-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.