Progetto

Generale

Profilo

SetupPolicyd » Cronologia » Versione 1

Simone Piccardi, 15-05-2012 15:51

1 1 Simone Piccardi
h1. Configurazione di policyd per Postfix
2
3
L'uso di @policyd@ consente di delegare una serie di possibili decisioni relative alle connessioni SMTP ad un demone di gestione delle policy di accesso che oltre ad implementare il _graylisting_ permettono ad esempio di imporre limiti sulla quantità di posta inviata dal singolo utente, che possono risultare molto utili per arginare il caso, ormai abbastanza comune, in cui le credenziali per l'invio di posta autenticata vengono compromesse, ed un server si trova a spedire grandi quantità di posta elettronica per conto di un utente autenticato surrettiziamente. 
4
5
Su Debian (sia Lenny che Squeeze) il programma si installa immediatamente direttamente dal pacchetto con:
6
 
7
<pre>
8
apt-get install postfix-policyd
9
</pre>
10
11
e chiede di configurare un database (il default è @postfixpolicyd@) su cui appoggiare le proprie informazioni (attraverso l'infastruttura di _dbconfig-common_). 
12
13
Il programma viene eseguito come demone, ed è controllato dal file di configurazione @/etc/postfix-policyd.conf@, che contiene le informazioni per l'accesso al database che vengono inserite automaticamente se si è utilizzata la configurazione attraverso _dbconfig-common_. 
14
15
La configurazione è espressa in forma di assegnazione di valori a variabili di configurazione, ed il file è diviso in sezioni relative alle varie politiche di filtraggio che possono essere utilizzate dal servizio, che in genere vengono attivate da una variabile di configurazione principale, con i relativi dettagli indicati tramite ulteriori variabili. 
16
17
h2. Sender throttling
18
19
Nel caso in questione si intende evitare la spedizione di un numero di mail eccessive da parte di un singolo utente. La sezione che consente di porre un limite alle email inviate dal singolo utente autenticato è @SENDER THROTTLE@, che di default è disabilitata. Inoltre il default prevede che il controllo venga fatto per IP di connessione, ma quello che in genere interessa di più è farlo per utente, e cioè in base alla autenticazione SASL, perché in caso di furto delle credenziali la spedizione viene in genere effettuata da un gran numero di macchine diverse, ed interessa stabilire non il loro IP, ma l'utente del quale stanno usando abusivamente le credenziali. 
20
21
Dato che le due tipologie di controllo sono alternative occorrerà disabilitare il controllo per indirizzo IP ed abilitare quello per username SASL. La configurazione per ottenere tutto ciò prevede che si assegnino i seguenti valori rispetto a quelli di default:
22
23
<pre>
24
SENDERTHROTTLE=1
25
SENDER_THROTTLE_SASL=1
26
SENDER_THROTTLE_HOST=0
27
</pre>
28
29
Una volta fatto questo ogni connessione autenticata sarà registrata sulla tabella @throttle@ del database insieme ai limiti massimi sul numero di messaggi e sui byte trasferiti, ed al periodo di tempo su cui devono essere applicati detti limiti. I limiti assegnati di default vengono controllati da altrettante variabili di configurazione, ad esempio il numero di messaggi ed il periodo vengono impostati da:
30
31
<pre>
32
SENDERMSGLIMIT=512
33
SENDERRCPTLIMIT=3600
34
</pre>
35
36
Ma se si vogliono impostare limiti personalizzati si possono andare a modificare le colonne @_count_max@ e @_quota_max@ nella tabella @throttle@ relative all'utente. 
37
38
39
h3. Configurazione di Postfix
40
41
Di default il servizio viene posto in ascolto sulla porta 10031 su @localhost@ e per poterlo utilizzare si deve configurare postfix per fargli utilizzare il servizio fornito da _policyd_ questo si fa inserendo la richiesta di controllo all'interno della direttiva @smtpd_recipient_restrictions@, in particolare occorrerà richiedere l'uso servizio con l'aggiunta della direttiva @check_policy_service@. 
42
43
Un esempio della direttiva che consente di ottenere il controllo del servizio tramite +policyd+ è allora il seguente:
44
45
<pre>
46
smtpd_recipient_restrictions =                                                   
47
         reject_non_fqdn_sender,                                                 
48
         reject_non_fqdn_recipient,                                              
49
         reject_unknown_recipient_domain,                                        
50
         permit_mynetworks,                                                      
51
         check_policy_service inet:127.0.0.1:10031,                              
52
         permit_sasl_authenticated,                                              
53
         reject_unauth_destination,                                              
54
         reject_unauth_pipelining,                                               
55
         reject_unknown_sender_domain,                                           
56
         reject_non_fqdn_hostname,                                               
57
         reject_invalid_hostname,                                                
58
         reject_rbl_client zen.spamhaus.org,                               
59
         permit                     
60
</pre>