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> |