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
Last revisionBoth sides next revision
doc:appunti:linux:sa:postfix-policyd [2013/02/04 17:00] – [Patch per l'installazione] niccolodoc:appunti:linux:sa:postfix-policyd [2024/04/15 15:21] – [Porting to Wheezy] 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 Debian 7 Wheezy =====
  
 I sorgenti per Squeeze si riescono a compilare su Wheezy: I sorgenti per Squeeze si riescono a compilare su 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 36: Line 55:
 </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 =====
 +
 +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>
 +DEBUG=1
 +
 +GREYLISTING=0
 +SENDERTHROTTLE=1
 +
 +SENDER_THROTTLE_SASL=1
 +SENDER_THROTTLE_HOST=0
 +SENDERMSGLIMIT=25
 +SENDERRCPTLIMIT=50
 +SENDERTIMELIMIT=15m
 +</file>
 +
 +**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>
 +smtpd_relay_restrictions =
 +    check_policy_service inet:127.0.0.1:10031,
 +    permit_sasl_authenticated,
 +    reject
 +</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 =====
 +
 +In ''/var/log/mail.log'' si legge:
 +
 +<code>
 +postfix-policyd: rcpt=230, throttle=update(a), host=62.48.51.8, from=niccolo@example.com,
 +  to=niccolo@example.org, size=0/1024000000, quota=0/250000000, count=11/50(2),
 +  rcpt=2/3600(2), threshold=0%|20%|0%, sasl_username=niccolo
 +</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:
 +
 +<code sql>
 +SELECT _from, _count_cur FROM throttle ORDER BY _count_cur ASC;
 +</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 =====
 +
 +Le operazioni di expire e cleanup sul database vanno eseguite da un cronjob:
  
 <code> <code>
 /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