Spam Management · 5 min read · Sep 28, 2025

Il Perfetto SpamSnake - Ubuntu Jaunty Jackalope - Pagina 5

17.11 Imposta i permessi per mettere tutto insieme

chown -R postfix:www-data /var/spool/MailScanner   
chown -R postfix:www-data /var/lib/MailScanner   
chown -R postfix:www-data /var/spool/postfix/hold   
chmod -R ug+rwx /var/spool/postfix/hold   
chmod -R u+rwx,g+rx /var/spool/MailScanner/quarantine

Infine assicurati di riavviare MailScanner:

killall mailscanner
check_mailscanner

Prova la configurazione:

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

Controlla per righe come:

debug: bayes: Database connection established   
debug: bayes: found bayes db version 3   
debug: bayes: Using userid: 2

Dovresti vedere righe apparire con DCC, Pyzor e Razor che dicono caricamento plugin e sperabilmente nessun errore.

Finendo questa parte dobbiamo aggiungere cron job che puliranno/aggiorneranno, probabilmente hai visto il messaggio a riguardo dopo che lo script di installazione di MailScanner è terminato.

Prima modifica conf.php e imposta ‘QUARANTINE_DAYS_TO_KEEP’ in conf.php e cambia la seguente riga in /usr/src/mailwatch-1.0.4/tools/db_clean in:

#!/usr/bin/php -q
require('/var/www/mailscanner/functions.php');

Installa lo script di pulizia della quarantena:

cp /usr/src/mailwatch-1.0.4/tools/quarantine_maint.php /usr/bin/quarantine_maint.php   
cp /usr/src/mailwatch-1.0.4/tools/db_clean.php /usr/bin/db_clean.php   
chmod +x /usr/bin/quarantine_maint.php   
chmod +x /usr/bin/db_clean.php

Esegui

crontab -e

e aggiungi quanto segue:

15 10 * * 2 /usr/bin/quarantine_maint.php --clean &> /dev/null
58 23 * * * /usr/bin/db_clean.php &> /dev/null

Disabilita lo script cron installato di mailscanner /etc/cron.daily/clean.quarantine (nota: fai questo solo se lo script clean.quarantine esiste).

$disabled = 1; 

17.12 Riavvia il sistema

reboot

Controlla il tuo mail.log ( tail –f /var/log/mail.log) e dovresti vedere quanto segue:

Jun 13 12:18:23 hoshi MailScanner[26388]: MailScanner E-Mail Virus Scanner version 4.20-3 starting...   
Jun 13 12:18:24 hoshi MailScanner[26388]: Config: calling custom init function MailWatchLogging   
Jun 13 12:18:24 hoshi MailScanner[26388]: Initialising database connection   
Jun 13 12:18:24 hoshi MailScanner[26388]: Finished initialising database connection

Congratulazioni - ora hai MailScanner che registra su MySQL.

17.13 Testa l’interfaccia MailWatch

Punta il tuo browser a http:///mailscanner/ - dovresti essere invitato a inserire un nome utente e una password - inserisci i dettagli dell’utente web di MailWatch che hai creato in precedenza, e dovresti vedere un elenco degli ultimi 50 messaggi elaborati da MailScanner.

Se non riesci a vedere le mail, allora potresti dover impostare i seguenti permessi:

chgrp -R www-data /var/spool/MailScanner

Potresti dover creare il seguente per prevenire un errore in un test di lint:

mkdir /var/www/.spamassassin

17.14 Aggiorna la tabella delle regole di SpamAssassin

MailWatch mantiene un elenco di tutte le regole e descrizioni di SpamAssassin che vengono visualizzate nella pagina ‘Dettagli Messaggio’ - per mostrare le descrizioni, devi eseguire l’updater ogni volta che aggiungi nuove regole o aggiorni SpamAssassin. Clicca sul menu ‘Strumenti/Link’ e seleziona ‘Aggiorna Descrizioni delle Regole di SpamAssassin’ e clicca su ‘Esegui Ora’.

17.15 Aggiorna il database GeoIP

Cambia questa riga in /var/www/mailscanner/geoip_update.php per apparire così:

dbquery("LOAD DATA LOCAL INFILE 

*Nota: Assicurati che allow_url_fopen = On sia impostato nel tuo php.ini.

Clicca sul menu ‘Strumenti/Link’ e seleziona ‘Aggiorna database GeoIP’ e clicca su ‘Esegui Ora’.

17.16 Correzione per consentire caratteri jolly in Whitelist/Blacklist

Aggiungi quanto segue in fondo alla sezione return 1 nel tuo /opt/MailScanner/lib/MailScanner/CustomFunctions/SQLBlackWhiteList.pm:

return 1 if $BlackWhite->{$to}{'*@'.$fromdomain};
return 1 if $BlackWhite->{$to}{'*@*.'.$fromdomain};
return 1 if $BlackWhite->{$todomain}{'*@'.$fromdomain};
return 1 if $BlackWhite->{$todomain}{'*@*.'.$fromdomain};
return 1 if $BlackWhite->{'default'}{'*@'.$fromdomain};
return 1 if $BlackWhite->{'default'}{'*@*.'.$fromdomain};

17.17 Correzione per le Operazioni sui Messaggi che non Trovano Messaggi

Cambia quanto segue nel file /var/www/mailscanner/do_message_ops.php:

$id = $Regs[1]; 

in

$id = str_replace("_", ".",$Regs[1]); 

17.18 Rilascio di Messaggi Spam

Per consentire a MailWatch di rilasciare messaggi Spam senza che vengano elaborati nuovamente, aggiungi 127.0.0.1 come elemento della whitelist nell’interfaccia MailWatch/List. Assicurati di riavviare MailScanner dopo aver configurato queste opzioni. Di seguito è come appare la mia voce.

| 127.0.0.1 | default | Elimina |

17.19 Correzione per Consentire Rilascio Multiplo di Messaggi nelle Operazioni sui Messaggi

Modifica /var/www/mailscanner/do_message_ops.php e apporta le seguenti modifiche:

   case 'F':
    $type='forget';
    break;
   case 'R':
    $type='release';
    break;
   default:
    continue;
    break;

Poi, trova la seguente sezione e cambiala per apparire così:

$itemnum = array($num);
   if ($type == 'release'){
      if($quarantined = quarantine_list_items($id,RPC_ONLY)) {
         $to = $quarantined[0]['to'];
       }
       echo "$id$type" . quarantine_release($quarantined, $itemnum, $to, RPC_ONLY) . "\n";
    } else {
     echo "$id$type" . quarantine_learn($items, $itemnum, $type, RPC_ONLY) . "\n";
     }
   }
  echo "\n";
      }
    }
  }
}
echo "  \n";

Successivamente modifichiamo il file /var/www/mailscanner/functions.php e cambiamo:

$fieldname[$f] = "Ops
S  H  F";

in

$fieldname[$f] = "Ops
S  H  F  R";

Successivamente cambia:

array_unshift($row, "   "); 

in:

array_unshift($row, "    "); 

Successivamente trova il blocco con la funzione javascript per gestire i pulsanti radio. Aggiungi un terzo valore in questo modo:

echo "function SetRadios(p) {\n";
echo " var val;\n";
echo " if (p == 'S') {\n";
echo "  val = 0;\n";
echo " } else if (p == 'H') {\n";
echo "  val = 1;\n";
echo " } else if (p == 'F') {\n";
echo "  val = 2;\n";
echo " } else if (p == 'R') {\n";
echo "  val = 3;\n";
echo " } else if (p == 'C') {\n";
echo "  ClearRadios();\n";

Ora, aggiungi il testo per i radio:

echo "  S";
echo "  H";
echo "  F";
echo "  R";

Infine, cambia:

echo "

S = Spam   H = Ham   F = Forget\n";

in:

echo "

S = Spam   H = Ham   F = Forget   R = Release\n";

17.20 Patch per risolvere l’errore di autocommit quando si ferma MailScanner

Modifica la riga 80 di MailWatch.pm per apparire così:

$dbh = DBI->connect("DBI:mysql:database=$db_name;host=$db_host", $db_user, $db_pass, {PrintError => 0, AutoCommit => 0}); 

*Nota: Questo disattiva l’autocommit quando si connette in modo che la riga di commit quando si chiude non generi un errore.

18. Installa e Configura SPF

Il pacchetto postfix-policyd-spf-perl dipende dai moduli Perl Mail::SPF e NetAddr::IP.

Dobbiamo scaricare postfix-policyd-spf-perl da http://www.openspf.org/Software nella directory /usr/src/ e installarlo nella directory /usr/lib/postfix/ in questo modo:

cd /usr/src   
wget http://www.openspf.org/blobs/postfix-policyd-spf-perl-2.005.tar.gz   
tar xvfz postfix-policyd-spf-perl-2.005.tar.gz   
cd postfix-policyd-spf-perl-2.005   
cp postfix-policyd-spf-perl /usr/lib/postfix/policyd-spf-perl

Poi modifichiamo /etc/postfix/master.cf e aggiungiamo il seguente stanza alla fine:

policy unix - n n - - spawn
   user=nobody argv=/usr/bin/perl /usr/lib/postfix/policyd-spf-perl

(Le spaziature iniziali prima di user=nobody sono importanti affinché Postfix sappia che questa riga appartiene alla precedente!)

Poi apri /etc/postfix/main.cf e cerca la direttiva smtpd_recipient_restrictions. Dovresti avere reject_unauth_destination in quella direttiva, e subito dopo reject_unauth_destination aggiungi check_policy_service unix:private/policy in questo modo:

[...]
smtpd_recipient_restrictions =
[...]
   reject_unauth_destination
   check_policy_service unix:private/policy
[...]

È importante che tu specifichi check_policy_service DOPO reject_unauth_destination altrimenti il tuo sistema può diventare un relay aperto!

Poi riavvia Postfix:

/etc/init.d/postfix restart

Ecco fatto.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.