User Tools

Site Tools


doc:appunti:linux:sa:postfix-policyd

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
Next revisionBoth sides next revision
doc:appunti:linux:sa:postfix-policyd [2013/02/04 17:11] – [Cleanup cronjob] niccolodoc:appunti:linux:sa:postfix-policyd [2021/02/09 10:19] – [postfix-policyd] niccolo
Line 1: Line 1:
 ====== postfix-policyd ====== ====== postfix-policyd ======
 +
 +:!: **ATTENZIONE**! Nelle versioni più recenti di Debian (es. **Debian 10 Buster**) il pacchetto **postfix-policyd** è stato rimosso, una alternativa è **[[policyd-rate-limit]]** :!:
  
 Problema: limitare il numero di mail inviate da un singolo utente (identificato da [[http://www.postfix.org/SASL_README.html|SASL]]) in un determinato periodo di tempo. Questo per bloccare lo spam che tramite botnet sfrutta account //rubati//. Problema: limitare il numero di mail inviate da un singolo utente (identificato da [[http://www.postfix.org/SASL_README.html|SASL]]) in un determinato periodo di tempo. Questo per bloccare lo spam che tramite botnet sfrutta account //rubati//.
  
-Il programma **policyd** avrebbe tale funzione, più molte altre ({black|grey|white}listing, ecc.), peccato che non esista per Debian Wheezy. Il pacchetto **postfix-policyd** [[http://packages.qa.debian.org/p/postfix-policyd/news/20110618T163914Z.html|è stato rimosso]] da Debian, questa la [[http://packages.qa.debian.org/p/postfix-policyd.html|pagina del pacchetto sorgente]]. +Il programma **policyd** avrebbe tale funzione, più molte altre ({black|grey|white}listing, ecc.), peccato che non esista per Debian Wheezy. Il pacchetto **postfix-policyd** [[http://packages.qa.debian.org/p/postfix-policyd/news/20110618T163914Z.html|è stato rimosso]] da Debian, questa la [[https://tracker.debian.org/pkg/postfix-policyd|pagina del pacchetto sorgente]]. 
  
 ===== Porting to Wheezy ===== ===== Porting to Wheezy =====
Line 21: Line 23:
  
 ===== Patch per l'installazione ===== ===== Patch per l'installazione =====
 +
 +File da modificare:
 +
 +  * **''/usr/share/dbconfig-common/data/postfix-policyd/install/mysql''**
 +  * **''/etc/postfix-policyd.conf''**
 +  * **''/etc/init.d/postfix-policyd''**
  
 Il programma richiede un database MySQL, purtroppo lo script per crearlo (''/usr/share/dbconfig-common/data/postfix-policyd/install/mysql'') non è compatibile con la versione 5.5.24 e quindi durante l'installazione bisogna correggerlo sostituendo tutte le occorrenze di ''TYPE=MyISAM'' con **''ENGINE=MyISAM''**. Il programma richiede un database MySQL, purtroppo lo script per crearlo (''/usr/share/dbconfig-common/data/postfix-policyd/install/mysql'') non è compatibile con la versione 5.5.24 e quindi durante l'installazione bisogna correggerlo sostituendo tutte le occorrenze di ''TYPE=MyISAM'' con **''ENGINE=MyISAM''**.
 +
 +**ATTENZIONE:** L'opzione **ENGINE=MyISAM** è necessaria, altrimenti **postfix-policyd** non sarà in grado di eseguire gli statement **INSERT DELAYED INTO** usati per popolare le tabelle del database,
 +
 +Questa una traccia per creare database e utente in MySQL:
 +
 +<code>
 +CREATE DATABASE postfixpolicyd;
 +CREATE USER postfixpolicyd@localhost IDENTIFIED BY 'MySecret';
 +GRANT ALL ON postfixpolicyd.* TO postfixpolicyd@localhost;
 +FLUSH PRIVILEGES;
 +</code>
  
 Anche il file di configurazione (**''/etc/postfix-policyd.conf''**) va corretto, togliendo gli spazi dalla stringa **''SYSLOG_FACILITY''** (vedere questo [[http://www.iredmail.org/forum/topic1215-iredmail-support-fatal-error-policyd-logifoo-possible-bug-solved.html|bug report]]): Anche il file di configurazione (**''/etc/postfix-policyd.conf''**) va corretto, togliendo gli spazi dalla stringa **''SYSLOG_FACILITY''** (vedere questo [[http://www.iredmail.org/forum/topic1215-iredmail-support-fatal-error-policyd-logifoo-possible-bug-solved.html|bug report]]):
Line 35: Line 54:
 postfix-policyd: fatal: didn't find priority 'LOG_IFOO', exiting postfix-policyd: fatal: didn't find priority 'LOG_IFOO', exiting
 </code> </code>
 +
 +Altro grave problema riguarda lo script **''/etc/init.d/postfix-policyd''**, il parametro **''reload''** non è supportato dal demone, va tolto dallo script perché altrimenti il demone muore.
  
 ===== Configurazione ===== ===== Configurazione =====
  
-Questi sono i parametri modificati per disabilitare il greylisting e per attivare il throttling: sono consentiti al massimo 50 messaggi in 15 minuti:+Questi sono i parametri modificati in **/etc/postfix-policyd.conf** per disabilitare il greylisting e per attivare il throttling: sono consentiti al massimo 25 messaggi e 50 destinatari in 15 minuti:
  
 <file> <file>
Line 48: Line 69:
 SENDER_THROTTLE_SASL=1 SENDER_THROTTLE_SASL=1
 SENDER_THROTTLE_HOST=0 SENDER_THROTTLE_HOST=0
-SENDERMSGLIMIT=50+SENDERMSGLIMIT=25 
 +SENDERRCPTLIMIT=50
 SENDERTIMELIMIT=15m SENDERTIMELIMIT=15m
 </file> </file>
  
-Dopo aver avviato il demone si deve dire a Postfix di fare un check sul servizio ''postfix-policyd'' per ogni messaggio:+**ATTENZIONE**: Se si modificano i valori di **''SENDERMSGLIMIT''** e **''SENDERRCPTLIMIT''** nel file di configurazione bisogna aggiornare anche la tabella **''throttle''** del database utilizzato da Policyd. Ecco come verificare i valori correnti per ciascun utente: 
 + 
 +<code sql> 
 +SELECT _from, _count_max, _count_cur, _rcpt_max, _rcpt_cur, _rcpt_tot FROM throttle; 
 +</code> 
 + 
 +Dopo aver avviato il demone si deve dire a Postfix di fare un check sul servizio **postfix-policyd** per ogni messaggio:
  
 <file> <file>
-smtpd_recipient_restrictions =+smtpd_relay_restrictions =
     check_policy_service inet:127.0.0.1:10031,     check_policy_service inet:127.0.0.1:10031,
     permit_sasl_authenticated,     permit_sasl_authenticated,
Line 61: Line 89:
 </file> </file>
  
 +Nelle vecchie versioni di Postfix si doveva includere il controllo nella direttiva **smtpd_recipient_restrictions**, la nuova direttiva **smtpd_relay_restrictions** è preferibile perché viene applicata prima.
 ===== Verifica del funzionamento ===== ===== Verifica del funzionamento =====
  
Line 70: Line 99:
   rcpt=2/3600(2), threshold=0%|20%|0%, sasl_username=niccolo   rcpt=2/3600(2), threshold=0%|20%|0%, sasl_username=niccolo
 </code> </code>
 +
 +È importante vedere la stringa **throttle=update(a)**, significa che è stata aggiornata la riga opportuna nel database per tenere aggiornati i contatori. Se invece si legge **throttle=bypass** significa che qualcosa non va, ad esempio che è stato impossibile eseguire la modifica nel database (vedere sopra l'opzione ''ENGINE=MyISAM'').
  
 Collegandosi a MySQL è possibile vedere lo stato del throttling: Collegandosi a MySQL è possibile vedere lo stato del throttling:
Line 76: Line 107:
 SELECT _from, _count_cur FROM throttle ORDER BY _count_cur ASC; SELECT _from, _count_cur FROM throttle ORDER BY _count_cur ASC;
 </code> </code>
 +
 +Per resettare i contatori manualmente:
 +
 +<code sql>
 +UPDATE throttle SET _count_cur = 0, _rcpt_cur = 0 WHERE _from = 'login-name';
 +</code>
 +
 ===== Cleanup cronjob ===== ===== Cleanup cronjob =====
  
Line 83: Line 121:
 /usr/lib/postfix-policyd/cleanup -c /etc/postfix-policyd.conf /usr/lib/postfix-policyd/cleanup -c /etc/postfix-policyd.conf
 </code> </code>
 +
doc/appunti/linux/sa/postfix-policyd.txt · Last modified: 2024/04/15 15:21 by niccolo