This is an old revision of the document!
Table of Contents
spamass-milter
Come impostare un filtro SpamAssassin sulla posta in arrivo, con Postfix.
La posta viene filtrata sia quando è destinata agli utenti locali, sia quando ne viene fatto il relay. Nel primo caso vengono usate le preferenze Spamassassin dell'utente, nel secondo caso invece quelle dell'utente nobody oppure spamass-milter (non si è capito bene come mai: due comportamenti diversi su due server diversi).
Installazione e configurazione
Su una Debian 10 Buster, installare il pacchetto spamass-milter.
Quando il demone spamass-milter è in esecuzione crea il socket /var/spool/postfix/spamass/spamass.sock che è raggiungibile da Postfix anche nel suo chroot.
La configurazione predefinita è in /etc/default/spamass-milter:
OPTIONS="-u spamass-milter -i 127.0.0.1"
L'opzione -i indica di ignorare i messaggi da localhost (127.0.0.1). L'opzione -u viene invece usata solo per i messaggi con destinatari multipli; quando c'è un solo destinatario il milter ricava il nome utente da passare a spamc dalla local-part del destinatario (cioè la parte che precede il simbolo @), se il messaggio ha destinatari multipli viene invece passato l'utente indicato da questa opzione.
ATTENZIONE: Questa configurazione va bene per i messaggi in arrivo destinati ad utenti locali, infatti consente di far girare spamc a nome dell'utente finale ed utilizzare le sue preferenze contenute in $HOME/.spamassassin/. La stessa configurazione non va bene per il relay di messaggi, in quel caso infatti non ha senso estrarre la local-part del destinatario, che certamente non è un utente locale!
Configurazione system-wide
Se si desidera filtrare con il milter i messaggi in uscita è pertanto necessario chiamare spamc passando un generico utente di sistema, le preferenze impostate per quell'utente non saranno pertanto per-user, ma system-wide.
In tal caso configurare il demone mettendo in /etc/default/spamass-milter:
#OPTIONS="-d func,misc -i 127.0.0.1 -r -1" OPTIONS="-i 127.0.0.1 -r -1"
Per rileggere la configurazione è necessario un systemctl restart spamass-milter.service.
L'opzione -d
attiva alcuni parametri di debug che si possono togliere una volta in produzione, l'opzione -r
associata al valore -1
respingere il messaggio se la scansione di SpamAssassin dà esito positivo (il messaggio è SPAM), pertanto verranno applicate le impostazioni personali dell'utente a nome di cui viene invocato spamc. Altrimenti con il parametro -r
si può indicare il punteggio SPAM da usare come soglia di caso positivo.
Se il Milter gira a nome dell'unico utente spamass-milter
è probabile (con Debian) che la configurazione da tarare sia /var/lib/spamass-milter/.spamassassin/user_prefs
:
required_score 12.0
Togliendo l'opzione -u
il milter chiamerà spamc
sempre come utente spamass-milter
utilizzando le preferenze in /var/lib/spamass-milter
, vedere avanti su come creare la cartella con i permessi opportuni.
In /etc/postfix/main.cf
si imposta:
# Mail filter: spamass-milter smtpd_milters = unix:spamass/spamass.sock
Il messaggio di errore nel log non è grave:
spamass-milter[12260]: Could not retrieve sendmail macro "i"!. Please add it to confMILTER_MACROS_ENVFROM for better spamassassin results
La macro servirebbe a spamass-milter
per riscrivere gli header dei messaggi filtrati (ma noi non riscriviamo i messaggi). Vedere http://savannah.nongnu.org/support/?105310.
Quando deve filtrare un messaggio spamass-milter
passa a spamc
l'utente da utilizzare, se ha problemi ad usare le preferenze nella home directory si ottiene l'errore:
spamd[1355]: spamd: failed to create readable default_prefs: /var/lib/spamass-milter/.spamassassin/user_prefs spamd[353]: spamd: creating default_prefs: /var/lib/spamass-milter/.spamassassin/user_prefs
per risolvere basta creare la directory con gli opportuni permessi:
mkdir /var/lib/spamass-milter chown spamass-milter:nogroup /var/lib/spamass-milter chmod 750 /var/lib/spamass-milter