Progetto

Generale

Profilo

SetupCluebringer » Cronologia » Versione 1

Simone Piccardi, 28-02-2014 18:54

1 1 Simone Piccardi
h1. Configurazione di cluebringer per Postfixsu wheezy
2
3
Cluebringer è il successore del precedente @policyd@ e come questo consente di delegare una serie di possibili decisioni relative alle connessioni SMTP ad un demone di gestione delle policy di accesso. Questo è stato riscritto in Perl (e reso notevolmente più macchinoso da configurare) ma presenta una architettura modulare ed una nuova interfaccia di configurazione web. I vari moduli, 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
Il programma è disponibile a partire da Wheezy, dove sostituisce il precedente @postfix-policyd@ non più disponibile e lo si installa immediatamente direttamente dal pacchetto con:
6
 
7
<pre>
8
apt-get install postfix-cluebringer-mysql postfix-cluebringer
9
</pre>
10
11
Se non si usa Postgres è necessario installare il pacchetto aggiuntivo, come nell'esempio precedente, dato che di default viene installata la versione con il supporto per Postgres; alternativamente si può usare SQLite con il pacchetto @postfix-cluebringer-sqlite3@. Il programma viene eseguito come demone, ed è controllato dal file di configurazione @/etc/cluebringer/cluebringer.conf@, questo non viene installato di default e deve essere creato dal template @/usr/share/doc/postfix-cluebringer/templates/cluebringer.conf@  inserendo le informazioni per l'accesso al database. 
12
13
Il pacchetto, la cui qualità è putroppo molto scarsa come vedremo a breve, non installa più il database con _dbconfig-common_ ed occorre fare a mano. Nella directory @/usr/share/doc/postfix-cluebringer/database/@ ci sono le istruzioni per creare le tabelle necessarie, ma quelle per MySQL sono platealmente sbagliate. In ogni caso occorrerà prima creare un database (che chiameremo con molta originalità @cluebringer@) con:
14
15
<pre>
16
mysqladmin create cluebringer
17
</pre>
18
19
ed un utente per la relativa gestione con eseguendo nella shell di MySQL l'istruzione:
20
21
<pre>
22
grant all privileges on cluebringer.* to 'cluebringer'@'localhost' identified by 'passworlungaecomplicata';
23
</pre>
24
25
a questo punto si potrà eseguire la creazione delle tabelle con:
26
27
<pre>
28
zcat /usr/share/doc/postfix-cluebringer/database/policyd-db.mysql.gz \
29
  | sed -e 's/TYPE=InnoDB/ENGINE=InnoDB/' \
30
  | mysql cluebringer
31
</pre>
32
33
(dove il @sed@ è necessario per correggere l'errore del codice SQL, che altrimenti fallisce, bug #683275 tuttora non risolto)
34
35
Una volta creato con successo il database occorre passare alla configurazione del programma. La documentazione al riguardo è quantomeno confusa, si parla di guardare gli esempi ma l'unico file in @/usr/share/doc/postfix-cluebringer/examples/@ contiene una configurazione del database sbagliata che non indica username e password per l'accesso al database. In ogni caso si copy il template disponibile aggiustando coerentemente i permessi per evitare la leggibilità del file che conterrà la password di accesso al database:
36
37
<pre>
38
cp /usr/share/doc/postfix-cluebringer/templates/cluebringer.conf /etc/cluebringer/cluebringer.conf
39
chmod 640 /etc/cluebringer/cluebringer.conf
40
chgrp cluebringer /etc/cluebringer/cluebringer.conf
41
</pre>
42
43
Per inserire i dati necessari all'accesso al database si tratta di modificare le righe seguenti:
44
45
<pre>
46
DSN=DBI:mysql:database=cluebringer;host=localhost
47
48
#DB_Type=_DBC_DBTYPE_
49
#DB_Host=_DBC_DBSERVER_
50
#DB_Port=_DBC_DBPORT_
51
#DB_Name=_DBC_DBNAME_
52
Username=cluebringer
53
Password=passworlungaecomplicata
54
</pre>
55
56
Per poter utilizzare l'interfaccia web, che consente di gestire le politiche impostate sul database, viene fornito un esempio di configurazione di apache di relativa (praticamente nulla) utilità nel file @/usr/share/doc/postfix-cluebringer-webui/examples/httpd/cluebringer-httpd.conf@, che si può copiare sotto @/etc/apache2/conf.d@ per rendere l'interfaccia accessibile solo da localhost sulla URL @http://server/cluebringer@. Per avere qualcosa di utilizzabile si consiglia di creare un opportuno accesso autenticato con:
57
58
<pre>
59
htpasswd -c /etc/apache2/cluebringer-users cluebringer
60
chmod 640 /etc/apache2/cluebringer-users
61
chgrp www-data /etc/apache2/cluebringer-users
62
</pre>
63
64
e si modifichi @/etc/apache2/conf.d/cluebringer-httpd.conf@ con il seguente contenuto che forza l'autenticazione sotto SSL:
65
66
<pre>
67
<Directory /usr/share/postfix-cluebringer-webui/webui>
68
    AuthType Basic
69
    AuthName "Cluebringer Web Interface"
70
    AuthUserFile /etc/apache2/cluebringer-users
71
    Require user cluebringer
72
    SSLRequireSSL
73
    DirectoryIndex index.php
74
</Directory>
75
</pre>
76
77
Oltre ad apache, occorre anche configurare opportunamente la applicazione web, tramite il file @/etc/cluebringer/cluebringer-webui.conf@ che viene installato dal pacchetto. Anzitutto dato che questo viene installato leggibile al mondo, e dovrà contenere le password di accesso al database, occorre correggere i permessi con:
78
79
<pre>
80
chmod 640 /etc/cluebringer/cluebringer-webui.conf
81
chgrp www-data /etc/cluebringer/cluebringer-webui.conf
82
</pre>
83
84
poi occorrerà impostare le credenziali di accesso al database inserendo nel file (una sezione di codice PHP) un contenuto del tipo:
85
86
<pre>
87
$DB_DSN="mysql:host=localhost;dbname=cluebringer";
88
$DB_USER="cluebringer";
89
$DB_PASS="passworlungaecomplicata";
90
</pre>
91
92
93
94
h2. Configurazione di Postfix
95
96
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 _cluebringer_ 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@. 
97
98
Un esempio della direttiva che consente di ottenere il controllo del servizio tramite +cluebringer+ è allora il seguente:
99
100
<pre>
101
smtpd_recipient_restrictions =                                                   
102
         reject_non_fqdn_sender,                                                 
103
         reject_non_fqdn_recipient,                                              
104
         reject_unknown_recipient_domain,                                        
105
         permit_mynetworks,                                                      
106
         check_policy_service inet:127.0.0.1:10031,                              
107
         permit_sasl_authenticated,                                              
108
         reject_unauth_destination,                                              
109
         reject_unauth_pipelining,                                               
110
         reject_unknown_sender_domain,                                           
111
         reject_non_fqdn_hostname,                                               
112
         reject_invalid_hostname,                                                
113
         reject_rbl_client zen.spamhaus.org,                               
114
         permit                     
115
</pre>