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:00] – [Patch per l'installazione] niccolodoc:appunti:linux:sa:postfix-policyd [2024/04/15 15:21] (current) – [Porting to Debian 7 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 **Debian 6 Squeeze** si riescono a compilare su Wheezy:
  
 <code> <code>
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.1359993629.txt.gz · Last modified: 2013/02/04 17:00 by niccolo