Come creare un semplice script per elencare gli indirizzi IP di server di posta che hanno tentato di inviare messaggi al nostro server SMTP Postfix e sono stati bloccati dai filtri RBL.
Se per semplice curiosità o per 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 semplice 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 altro editor di vostro piacimento.
joe list_rbl_blocked
Il contenuto sarà piuttosto 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. Non ci resta quindi che creare il file:
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:
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
Se questa documentazione ti è stata utile, una donazione sarà ben accetta