Se per curiosità o altri motivi vogliamo ottenere un elenco degli indirizzi IP di server SMTP che sono stati bloccati dalle RBL nel tentativo di consegnare messaggi al nosto server Postfix, possiamo utilizzare un semplice script che con awk filtra i contenuti dei file di LOG fornendoci un elenco in formato semplice e leggibile.

Lo script è piuttosto elementare e si limita ad estrarre le informazioni dal file di log e farle filtrare da awk per ottenere l'elenco che ci interessa. Create il file list_rbl_blocked utilizzando il vostro editor preferito. Non essendo un guru dei sistemi Unix-like non amo il sofisticato Emacs e nemmeno il potente quanto macchinoso vi e solitamente utilizzo joe o nano. Ovviamente se utilizzate un'interfaccia grafica (cosa peraltro insolita su un server GNU/Linux) potete affidarvi ad un editor grafico di vostro piacimento.

joe list_rbl_blocked

 Il contenuto sarà pittosto scarno:

#/bin/bash
echo "# cbl.abuseat.org"
grep "cbl.abuseat.org\/lookup\.cgi?ip=" /var/log/mail.info | awk -f list_rbl_blocked.awk |sort -u
echo "# zen.spamhaus.org"
grep "www.spamhaus.org\/query\/bl?ip=" /var/log/mail.info | awk -f list_rbl_blocked.awk |sort -u

dallo script potete già notare che awk viene richiamato passandogli un file contenente le regole per filtrare l'output estratto tramite grep. Awk viene richiamato due volte perché utilizzo più filtri RBL; dovrete quindi apportare le eventuali modifiche necessarie per adattarlo ai server RBL da voi utilizzati.
Non ci resta quindi che creare il file awk:

joe list_rbl_blocked.awk
/reject:/ {
    sub(/\[/,"",$17)
    sub(/\]/,"",$17)
    conta[$17]++
    rbl[$17] = $20
}
END {
    for (i in conta) {
        if (conta[i] > 2) {
            print "smtpd:\t",i,"\t# count: ",conta[i],"\t",rbl[i]
        } else {
            print "#smtpd:\t",i,"\t# count: ",conta[i],"\t",rbl[i]
        }
    }
}

Il funzionamento è abbastanza semplice: 

  • per ogni riga contenente la segnalazione di reject, incrementa il contatore per l'indirizzo IP del server bloccato.
  • al termine visualizza l'elenco di indirizzi interessati con il relativo contatore. Il formato è quello utilizzato per il file hosts.deny e per gli indirizzi con un massimo di due occorrenze, la riga è lasciata commentata.

ora dobbiamo rendere eseguibile lo script:

chmod +x list_rbl_blocked

 e non ci resta che farlo eseguire

./list_rbl_blocked

 per ottenere l'elenco degli indirizzi di server che sono stati bloccati nel tentativo di inviare SPAM verso i nostri utenti.

# cbl.abuseat.org
smtpd:   94.176.139.101     # count:  6      cbl.abuseat.org;
smtpd:   94.189.219.231     # count:  10     cbl.abuseat.org;
smtpd:   95.135.19.163  # count:  6      cbl.abuseat.org;
smtpd:   98.27.237.98   # count:  3      cbl.abuseat.org;
# zen.spamhaus.org
#smtpd:  123.237.32.127     # count:  1      zen.spamhaus.org;
#smtpd:  123.238.16.180     # count:  1      zen.spamhaus.org;
#smtpd:  123.24.91.170  # count:  1      zen.spamhaus.org;
#smtpd:  187.41.58.183  # count:  1      zen.spamhaus.org;
#smtpd:  187.57.23.56   # count:  1      zen.spamhaus.org;
smtpd:  187.78.168.173     # count:  3      zen.spamhaus.org;
smtpd:  188.158.80.136     # count:  9      zen.spamhaus.org;
smtpd:  188.161.173.73     # count:  5      zen.spamhaus.org;
smtpd:  188.17.218.46  # count:  11      zen.spamhaus.org;
smtpd:  188.48.62.42   # count:  8      zen.spamhaus.org

se volete utilizzarlo per aggiornare il file hosts.deny, basta ridirezionare opportunamente l'output:

./list_rbl_blocked >> /etc/hosts.deny

 

  • Appunti sull'implementazione dell'architettura IT

    Questo documento è nato come introduzione per una consulenza per la razionalizzazione dell'infrastruttura IT in un'azienda; L'aggiunta di alcuni concetti generali lo ha reso di probabile interesse anche per utenti con nozioni informatiche meno avanzate e per questo motivo ora è pubblicato qui. Per il...

    Leggi tutto...

  • DropBox: istanze multiple su sistemi GNU/Linux

    In rete potete trovare le descrizioni di diversi metodi per poter utilizzare più istanze di DropBox sul vostro sistema GNU/Linux; qui presento la mia soluzione, derivata da quanto reperito in rete con alcune modifiche personali. Primi passi Ovviamente dovrete iniziare creando, se non ne avete già,...

    Leggi tutto...

  • Pillole di Apache: Eliminare it 'trailing slash' dagli indirizzi URL

    Utilizzando Zend Framework 2 ho riscontrato un fastidioso problema legato alla presenza della barra alla fine di un indirizzo (la cosiddetta trailing slash): il  meccanismo di routing implementato nel framework non lo gradisce quindi non lo risolve correttamente e genera un errore di pagin non...

    Leggi tutto...

  • Pillole di PHP: iterazione su file e directory

    Capita spesso di dover attraversare una porzione del filesystem per effettuare operazioni su file e directory in modo ricorsivo; per questo ho creato una semplice classe PHP che implementa l'attraversamento (in modo ricorsivo) e dalla quale creare discendenti per manipolare i file nel modo...

    Leggi tutto...

  • Pillole di Bash e Imagemagick: aggiunta watermark

    Quante volte ci è capitato di dover manipolare una serie di immagini per cambiarne inserire un watermark ? Quando sono poche possiamo utilizzare Gimp o qualche altro editor grafico ma quando il numero cresce, diventa un lavoro ripetitivo e parecchio noioso. Per chi non lo sapesse, il watermark è quel...

    Leggi tutto...