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 [2015/10/12 17:50] – [server reached --max-children setting] niccolodoc:appunti:linux:sa:spamassassin [2021/07/08 12:18] – [Punteggio SPAM] niccolo
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 85: Line 94:
 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): 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 SENDER_GOOGLE_CALENDAR    Sender =~ /calendar-notification\@google\.com/ +<file> 
-describe SENDER_GOOGLE_CALENDAR  Sender is Google Calendar +header      LOCAL_SENDER_GOOGLE_CALENDAR   Sender =~ /calendar-notification\@google\.com/ 
-score SENDER_GOOGLE_CALENDAR     -2.8+describe    LOCAL_SENDER_GOOGLE_CALENDAR   Sender is Google Calendar 
 +score       LOCAL_SENDER_GOOGLE_CALENDAR   -2.8
 </file> </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. 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 150: Line 170:
  
 ===== Punteggio SPAM ===== ===== 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: Una regola che assegna punteggio SPAM può includere 4 punteggio distinti, esempio:
Line 163: Line 185:
   - Test Bayes abilitati, test network disabilitati   - Test Bayes abilitati, test network disabilitati
   - Test Bayes e network abilitati   - 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**. 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%%''**. 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