User Tools

Site Tools


doc:appunti:linux:sa:spamass-milter

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
doc:appunti:linux:sa:spamass-milter [2012/10/11 11:17] – [Installazione e configurazione] niccolodoc:appunti:linux:sa:spamass-milter [2021/02/12 16:00] (current) – [Configurazione system-wide] niccolo
Line 7: Line 7:
 ===== Installazione e configurazione ===== ===== Installazione e configurazione =====
  
-Installare il pacchetto **spamass-milter**.+Su una **Debian 10 Buster**, installare il pacchetto **spamass-milter**.
  
-Il demone in esecuzione crea un socket **''/var/spool/postfix/spamass/spamass.sock''** che è raggiungibile da Postfix anche nel suo chroot.+Quando il demone **spamass-milter** è in esecuzione crea il socket **/var/spool/postfix/spamass/spamass.sock** che è raggiungibile da Postfix anche nel suo chroot.
  
-Configurare il demone in **''/etc/default/spamass-milter''** mettendo:+La configurazione predefinita è in **/etc/default/spamass-milter**:
  
 <file> <file>
-#OPTIONS="-d func,misc -u spamass-milter -r 12" +OPTIONS="-u spamass-milter -i 127.0.0.1"
-#OPTIONS="-u spamass-milter -r 12" +
-OPTIONS="-r 12"+
 </file> </file>
  
-L'opzione **''-d''** attiva alcuni parametri di debug che si possono togliere una volta in produzione, l'opzione **''-r''** respingere il messaggio se totalizza un punteggio maggiore o uguale 12senza filtrarlo come fa normalmente SpamAssassin.+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 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.
  
-L'opzione **''-u''** serve a passare la //local part// del destinatario a **''spamc''** (usando il parametro ''-u'')cioè a far girare Spamassassin con i privilegi e le impostazioni del destinatario. Se i destinatari sono più di uno viene passato l'utente ''spamass-milter''. Ma nel nostro caso il destinatario non è necessariamente un utente locale, anzi in generale si tratta di mail di cui fare il relay; quindi preferiamo che il filtro ''spamass-milter'' giri con impostazioni //system-wide// piuttosto che //user-wide//. 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.+**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!
  
-In **''/etc/postfix/main.cf''** si imposta:+===== 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**:
  
 <file> <file>
-Mail filter: spamass-milter +#OPTIONS="-d func,misc -i 127.0.0.1 -r -1" 
-#smtpd_milters unix:/var/spool/postfix/spamass/spamass.sock +OPTIONS="-i 127.0.0.1 -r -1"
-smtpd_milters unix:/spamass/spamass.sock+
 </file> </file>
  
 +Per rileggere la configurazione è necessario un **systemctl restart spamass-milter.service**.
  
-Il messaggio di errore nel log:+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. 
 + 
 +Il milter gira a nome dell'utente **spamass-milter**, la sua home directory è **/var/lib/spamass-milter/**. È necessario creare questa directory perché spamass-milter possa scrivere le proprie preferenze:
  
 <code> <code>
-spamass-milter[12260]Could not retrieve sendmail macro "i"!.  Please add it to confMILTER_MACROS_ENVFROM for better spamassassin results+mkdir /var/lib/spamass-milter 
 +chown spamass-milter:spamass-milter /var/lib/spamass-milter 
 +chmod 750 /var/lib/spamass-milter
 </code> </code>
  
-non è importante. Servirebbe a ''spamass-milter'' per riscrivere gli header dei messaggi filtrati, vedere [[http://savannah.nongnu.org/support/?105310]]+Alla prima esecuzione del filtro viene creato il file con le preferenze **/var/lib/spamass-milter/.spamassassin/user_prefs**, è possibile poi ad esempio aggiungere:
  
 +<file>
 +required_score   12.0
 +</file>
  
-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:+===== Configurazione Postfix =====
  
-<code> +Per aggiungere il filtro milter è sufficiente mettere in **''/etc/postfix/main.cf''**:
-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 +
-</code>+
  
-per risolvere basta creare la directory con gli opportuni permessi:+<file> 
 +# Mail filterspamass-milter 
 +smtpd_milters = unix:spamass/spamass.sock 
 +</file>
  
-<code+Ovviamente con la regola generica **smtpd_milters** il filtro sarà **applicato a tutti i messaggi** (in entrata e in uscita). 
-mkdir /var/lib/spamass-milter + 
-chown spamass-milter:nogroup /var/lib/spamass-milter +Nel nostro caso invece vogliamo applicare il filtro **solo sui messaggi in uscita**, per evitare di fare SPAM relay a qualche utente che ha avuto l'account hackerato. I messaggi in arrivo invece sono filtrati a valle, con un filtro utente invocato dal Local Delivery Agent (**dovecot-lda**, **procmail** o **maildrop**, per citarne tre). 
-</code>+ 
 +Ecco come applicare il filtro solo per gli utenti autenticati che accedono al servizio submission sulla porta 587. In **master.cf** si aggiunge il parametro **''-o smtpd_milters''** al servizio **submission**: 
 + 
 +<file
 +submission inet n                               smtpd 
 +  -o syslog_name=postfix/submission 
 +  -o smtpd_tls_security_level=encrypt 
 +  -o smtpd_sasl_auth_enable=yes 
 +  -o smtpd_tls_auth_only=yes 
 +  -o smtpd_client_restrictions=permit_sasl_authenticated,reject 
 +  -o smtpd_milters=$mua_milters 
 +  -o smtpd_sender_restrictions=$mua_sender_restrictions 
 +  -o smtpd_relay_restrictions=$mua_relay_restrictions 
 +</file> 
 + 
 +in **main.cf** si definisce il **$mua_milters**: 
 + 
 +<file> 
 +# Restriction applied as smtpd_milters over SUMBISSION/587. 
 +mua_milters = unix:spamass/spamass.sock 
 +</file>
doc/appunti/linux/sa/spamass-milter.1349947071.txt.gz · Last modified: 2012/10/11 11:17 by niccolo