User Tools

Site Tools


doc:appunti:linux:sa:spamassassin

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
doc:appunti:linux:sa:spamassassin [2010/09/22 10:14] niccolodoc:appunti:linux:sa:spamassassin [2021/07/08 12:18] – [Punteggio SPAM] niccolo
Line 3: Line 3:
 Nuova pagina di appunti dedicata a SpamAssassin, basata sull'esperienza con **SpamAssassin 3.2.4** su Debian Lenny. Nuova pagina di appunti dedicata a SpamAssassin, basata sull'esperienza con **SpamAssassin 3.2.4** su Debian Lenny.
  
-Anzitutto si è deciso di chiamare SpamAssassin non come filtro del programma di posta (Exim), ma come filtro sulla consegna in mailbox tramite **''procmail(1)''**. Questo consente una migliore personalizzazione del sistema antispam per ogni singolo utente.+Si è deciso di chiamare SpamAssassin non come filtro del programma di posta (Exim), ma come filtro sulla consegna in mailbox tramite **''procmail(1)''**. Questo consente una migliore personalizzazione del sistema antispam per ogni singolo utente.
  
 Come di consueto si installa la versione daemon (più performante) **spamd** e il relativo client **spamc**. Come di consueto si installa la versione daemon (più performante) **spamd** e il relativo client **spamc**.
Line 31: Line 31:
 La scansione non passa per ''spamd'', ma lancia un'istanza di spamassassin per la singola esecuzione. La configurazione usata dovrebbe essere quella di sistema in ''**/etc/spamassassin**''. Utile ad esempio per testare delle variazioni sui punteggi assegnati tramite regole inserite in **''/etc/spamassassin/local.cf''**. La scansione non passa per ''spamd'', ma lancia un'istanza di spamassassin per la singola esecuzione. La configurazione usata dovrebbe essere quella di sistema in ''**/etc/spamassassin**''. Utile ad esempio per testare delle variazioni sui punteggi assegnati tramite regole inserite in **''/etc/spamassassin/local.cf''**.
  
 +===== Custom rules =====
 +
 +Di norma non è possibile aggiungere delle regole personalizzate nella **''user_prefs''** di un utente. Ci sono motivi di sicurezza e di performance. Solo in casi eccezionali vale la pena di intervenire sul parametro **''allow_user_rules''**.
 +
 +In alternativa si può cambiare il punteggio assegnato ad una regole, per fare tutti i necessari esperimenti. Ad esempio la regola **''DRUG_ED_SILD''** scatta se il testo del messaggio contiene la parola **sildenafil**, possiamo dare un punteggio diverso con:
 +
 +<file>
 +score DRUG_ED_SILD 10.8
 +</file>
 ==== Problema con URIBL ==== ==== Problema con URIBL ====
  
Line 78: Line 87:
  
 Riavviare spamassassin. Riavviare spamassassin.
 +
 +===== Regole personalizzate =====
 +
 +Si possono aggiungere delle regole personalizzate direttamente in **''/etc/spamassassin/local.cf''** oppure in un file incluso da esso con la direttiva **''include''**.
 +
 +Ecco una semplice regola che controlla la presenza di un determinato header **''Sender:''** ed assegna un punteggio negativo (diminuendo cioè la possibilità che sia identificarlo come SPAM):
 +
 +<file>
 +header      LOCAL_SENDER_GOOGLE_CALENDAR   Sender =~ /calendar-notification\@google\.com/
 +describe    LOCAL_SENDER_GOOGLE_CALENDAR   Sender is Google Calendar
 +score       LOCAL_SENDER_GOOGLE_CALENDAR   -2.8
 +</file>
 +
 +Fare attenzione alla stringa dopo il segno **''=~''**, si tratta di un'espressione regolare racchiusa tra slash. Alcuni caratteri come il punto e il simbolo **@** devono essere preceduti da backslash perché sono simboli speciali nelle espressioni regolari.
 +
 +Un altro esempio per penalizzare certi top level domain particolarmente utilizzati dagli spammer:
 +
 +<file>
 +header      LOCAL_FROM_SPAMMER_TLD    From   =~ /@[a-z0-9\-\.]+\.(cam|top|xyz)/i
 +describe    LOCAL_FROM_SPAMMER_TLD    Domain originates a lot of spam
 +score       LOCAL_FROM_SPAMMER_TLD    4.0
 +</file>
 +
 +Vedere anche il paragrafo **[[spamassassin_private_dnsbl#configure_spamassassin|come utilizzare una blacklist DNS con SpamAssassin]]**.
  
 ===== AutoWhitelist ===== ===== AutoWhitelist =====
Line 99: Line 132:
  
 <file> <file>
-Jan 21 03:13:20 spamd[8175]: prefork: server reached --max-children setting, consider raising it +spamd[8175]: prefork: server reached --max-children setting, consider raising it 
-Jan 21 03:13:35 spamd[874]: bayes: cannot open bayes databases /home/.../.spamassassin/bayes_* R/W: lock failed: Interrupted system call +spamd[874]: bayes: cannot open bayes databases /home/.../.spamassassin/bayes_* R/W: lock failed: Interrupted system call 
-Jan 21 03:13:37 spamd[8175]: prefork: server reached --max-children setting, consider raising it+spamd[8175]: prefork: server reached --max-children setting, consider raising it
 </file> </file>
  
Line 135: Line 168:
  
 A seconda dei casi si può aumentare il numero dei processi figli oppure renderli più veloci. Ad esempio l'accesso alle preferenze dell'utente contenute in **''$HOME/.spamassassin/''** probabilmente non è concorrente e blocca i processi successivi. Forse spostare le preferenze in un database potrebbe migliorare le prestazioni. A seconda dei casi si può aumentare il numero dei processi figli oppure renderli più veloci. Ad esempio l'accesso alle preferenze dell'utente contenute in **''$HOME/.spamassassin/''** probabilmente non è concorrente e blocca i processi successivi. Forse spostare le preferenze in un database potrebbe migliorare le prestazioni.
 +
 +===== Punteggio SPAM =====
 +
 +In una installazione Debian (es. 9 Stretch) i file che definiscono il punteggio SPAM sono in **%%/var/lib/spamassassin/*/updates_spamassassin_org/%%**, ad esempio nel file **50_scores.cf**.
 +
 +Una regola che assegna punteggio SPAM può includere 4 punteggio distinti, esempio:
 +
 +<file>
 +score SUBJ_ALL_CAPS 0.518 1.625 1.197 1.506
 +</file>
 +
 +I 4 valori sono rispettivamente per queste condizioni:
 +
 +  - Test Bayes e network disabilitati
 +  - Test Bayes disabilitati, test network abilitati
 +  - Test Bayes abilitati, test network disabilitati
 +  - Test Bayes e network abilitati
 +
 +In generale viene applicato il punteggio del **quarto caso**: tutti i test abilitati.
 +
 +Per attivare i test Bayes bisogna includere nel file di configurazione **use_bayes 1**.
 +
 +I test network sono disabilitati se il demone **spamd** viene avviato con l'opzione **''%%-L%%''** oppure **''%%--local%%''**.
 +
 +===== Verifica punteggio =====
 +
 +Con il seguente script dovrebbe essere possibile verificare il punteggio associato per ciascun test:
 +
 +<code bash>
 +#!/bin/sh
 +TESTS="$1"
 +if [ -z "$TESTS" ]; then
 +    echo "Usage: $(basename $0) [rule1,rule2,...]"
 +    exit 1
 +fi
 +cat << EOF
 +
 +=== Punteggio SpamAssassin ===
 +
 +  * Test Bayes e network disabilitati
 +  * Test Bayes disabilitati, test network abilitati
 +  * Test Bayes abilitati, test network disabilitati
 +  * >>> Test Bayes e network abilitati
 +
 +EOF
 +TESTS="$(echo "$TESTS" | sed 's/,/ /g')"
 +for TEST in $TESTS; do
 +    find /var/lib/spamassassin/ -name "*scores.cf" | while read file; do
 +        SCORE="$(egrep "^score\s+${TEST}\b" "$file")"
 +        if [ -n "$SCORE" ]; then
 +            #echo "$SCORE"
 +            RULE="$(echo "$SCORE" | awk '{print $2}')"
 +            SCORE1="$(echo "$SCORE" | awk '{print $3}')"
 +            SCORE2="$(echo "$SCORE" | awk '{print $4}')"
 +            SCORE3="$(echo "$SCORE" | awk '{print $5}')"
 +            SCORE4="$(echo "$SCORE" | awk '{print $6}')"
 +            printf '%-25s %7.2f %7.2f %7.2f %7.2f\n' "$RULE" "$SCORE1" "$SCORE2" "$SCORE3" "$SCORE4"
 +        fi
 +    done
 +done
 +</code>
 +
 +
 +==== Client spamc e IPv6 ====
 +
 +Per impostazione predefinita il client **spamc** tenta di connettersi al demone Spamassassin usando il nome **localhost**, che potrebbe tradursi nell'indirizzo IPv6 ::1, se il demone non è in ascolto su quel socket si ottiene l'errore:
 +
 +<code>
 +spamc[16810]: connect to spamd on ::1 failed, retrying (#1 of 3): Connection refused
 +</code>
 +
 +Per forzare (system-wide) l'utilizzo di IPv4 si può creare **''/etc/spamassassin/spamc.conf''** mettendo:
 +
 +<file>
 +-d 127.0.0.1
 +</file>
doc/appunti/linux/sa/spamassassin.txt · Last modified: 2021/07/08 12:19 by niccolo