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
doc:appunti:linux:sa:postfix-policyd [2013/02/04 17:11] – [Cleanup cronjob] niccolodoc:appunti:linux:sa:postfix-policyd [2021/02/09 10:19] (current) – [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.1359994269.txt.gz · Last modified: 2013/02/04 17:11 by niccolo