Posta estatistikak: MailWatch

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.

    apt-get install apache2 libapache2-mod-php5 php5php5-common php-pear php5-gd php5-cli php5-mysql
    apt-get install
mysql-server-5.0 mysql-client-5.0

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

    mysqladmin -u root password 'MIPASSWORD'

Internetetik deskargatuko dugu MailWatch, eta deskonprimiitu egingo dugu.

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

mailscanner datu-basea sortuko dugu.

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

Baimenak emango dizkiogu mailscanner datu-basearen erabiltzaileari (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

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

    mv MailWatch.pm /etc/MailScanner/CustomFunctions/

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

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

Web erabiltzaile bat sortuko dugu MailWatch-kudeatzeko.

    mysql mailscanner -u mailwatch -p
    mysql>INSERT INTO users VALUES ('mwadmin', MD5('PASSWORDUSUARIOWEBMAILWATCH'), 'MailWatch administraria', 'A', 0, 0, 0, 0, '');
    mysql>quit

Orain, mailscanner direktorioa kopiatuko dugu web zerbitzariaren errora.

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

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

    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

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

    cp /var/www/mailscanner/conf.php.example /var/www/mailscanner/conf.php

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

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');

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

    /etc/init.d/mailscanner stop

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

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

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

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

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

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

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

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

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

bayes_path /etc/MailScanner/bayes/bayes
bayes_file_mode 0660

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

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

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

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

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

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

Holako zerbait agertu behar da.

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.

Baina... bi errore ditugu.

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

# header DNS_FROM_AHBL_RHSBL ................
# describe DNS_FROM_AHBL_RHSBL .............
# tflags DNS_FROM_AHBL_RHSBL .............

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

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

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:

describe EXCUSE_ES_03    Someone requested a spammer to spam you in Sp

Berriz probatzerakoan, ez dago errorerik.

MailScanner abiaraziko dugu.

    /etc/init.d/mailscanner start

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

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

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

Source

Destination

Service

Action

Zerbitzariak
Administraritza
Irakasleak

antivirus perimetral

HTTP (80)

Accept

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:

extension=mysql.so
extension=gd.so

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:

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>

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

    usermod -a -G postfix www-data

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

postfix:x:104:www-data

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

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

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:

    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

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

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

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

    chown www-data:www-data /var/www/mailscanner/temp

Web zerbitzaria berrabiarazi.

    /etc/init.d/apache2 restart

Beste BUG? bat dago clamav_status.php fitxategian. Hau dela eta, ez da agertzen azkeneko eguneratze data ezta sinadura fitxategien bertsioa. ClamAV-ren 0.92.1 bertsiotik aurrera ez du funtzionatzen, CalmAV-ren APIen aldaketa bat dela eta. Zuzentzeko, hurrengo lerroa dagoen tokian:

<?passthru(get_virus_conf('clamav')." -V | awk -f ./clamav.awk");?>

hauxe jarri behar da:

<?passthru('/usr/sbin/clamd -V | awk -f ./clamav.awk');?>

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.

Postfix lerroen ikusketa (inbond / outbond)

MailWatch-ek ez ditu postfix-en lerroak erakusten. Beti agertzen dira hutsirik. Konpontzeko, partxe bat aplikatu behar diogu aplikazioaren PHP kodeari.

Partxea deskargatu eta deskonprimitu.

    wget -P /var/www/lhpaiak http://www.gbnetwork.co.uk/mailscanner/files/postfixmail.tar.gz
    tar zxf postfixmail.tar.gz

Fitxategiak kopiatu aplikazioaren direktoriora eta partxea aplikatu functions.php fitxategiari.

    cp postfixmail
    cp postfix* /var/www/mailscanner/
    patch /var/www/mailscanner/functions.php functions.php.diff

Baimenak aldatu /var/spool/postfix/hold direktorioari.

    chgrp www-data /var/spool/postfix/hold
    chmod g+rw /var/spool/postfix/hold

Listo!

MSRE (MailScannet Ruleset Editor)

MSRE, MailScanner-entzako erregla editore bat da. Web interfaze bitartez erabiltzen da. Bisualki, MailWatch-ekin integratzen da, estilo orri berdintsuak erabiltzen bait ditu. /var/www/lhpaiaki direktoriora deskargatuko dugu, eta hor deskonprimituko.

    wget -P /var/www/lhpaiaki http://heanet.dl.sourceforge.net/sourceforge/msre/
    tar -zxf msre-0.2.2.tar.gz

/var/www/mailscanner direktorioan instalatuko dugu.

    mkdir /var/www/mailscanner/msre
    cp msre-0.2.2/*.php /var/www/mailscanner/msre/
    cp msre-0.2.2/*.css /var/www/mailscanner/msre/

Konfigurazio fitxategia eta eguneraketa skript-a, /etc/msre direktorioan kopiatuko ditugu.

    mkdir /etc/msre
    cp msre-0.2.2/msre_reload.sh /etc/msre/
    cp msre-0.2.2/msre.conf.sample /etc/msre/msre.conf

cron lanaren fitxategia jarriko dugu /etc/cron.d/ direktorioan.

    cp msre-0.2.2/msre_reload.crond /etc/cron.d/

/etc/MailScanner/rules direktorioaren baimenalk aldatuko ditugu. Horrela. Barnean dituen fitxategietan idatzi ahal izango du MSREk.

    chown -R root:www-data /etc/MailScanner/rules
    chmod g+rwxs /etc/MailScanner/rules
    chmod g+rw /etc/MailScanner/rules/*

Nahi izanez gero, /var/www/mailscanner/msre/style.css estilo orria aldatu dezakegu. Letra-tipoaren tamaina handitzea gomendatzen da.

Konfigurazioa ez dugu aldatuko.

Azkenik, MailWatch-ekin integratuko dugu. MailWatch-ek duen erraminta menutik nahi dugu atzitu. Menu hau /var/www/mailwatch/other.php fitxategian dago. Fitxategi honetan, erranminten atalaren azkenean, hurrengo lerroak gehituko ditugu:

....
<? if($GLOBALS['user_type'] == 'A'): ?>
    <LI><A HREF="msre/">Ruleset Editor</A>
<? endif; ?>
....

Nahi badugu PHPSysInfora sortu lotura bat orri honetan, hurrengo lerroak gehituko ditugu segidan.

<? if($GLOBALS['user_type'] == 'A'): ?>
    <LI><A HREF="../phpsysinfo/">System information</A>
<? endif; ?>