Project

General

Profile

Configurazione di policyd per Postfix

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.

Su Debian (sia Lenny che Squeeze) il programma si installa immediatamente direttamente dal pacchetto con:

apt-get install postfix-policyd

e chiede di configurare un database (il default è postfixpolicyd) su cui appoggiare le proprie informazioni (attraverso l'infastruttura di dbconfig-common).

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.

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.

Sender throttling

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.

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:

SENDERTHROTTLE=1
SENDER_THROTTLE_SASL=1
SENDER_THROTTLE_HOST=0

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:

SENDERMSGLIMIT=512
SENDERRCPTLIMIT=3600

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.

Configurazione di Postfix

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.

Un esempio della direttiva che consente di ottenere il controllo del servizio tramite policyd è allora il seguente:

smtpd_recipient_restrictions =                                                   
         reject_non_fqdn_sender,                                                 
         reject_non_fqdn_recipient,                                              
         reject_unknown_recipient_domain,                                        
         permit_mynetworks,                                                      
         check_policy_service inet:127.0.0.1:10031,                              
         permit_sasl_authenticated,                                              
         reject_unauth_destination,                                              
         reject_unauth_pipelining,                                               
         reject_unknown_sender_domain,                                           
         reject_non_fqdn_hostname,                                               
         reject_invalid_hostname,                                                
         reject_rbl_client zen.spamhaus.org,                               
         permit