Progetto

Generale

Profilo

PostfixAdminInstall » Cronologia » Versione 47

Chiara Barbucci, 06-10-2016 14:45

1 37 Simone Piccardi
h1. Installare e configurare _Postfixadmin_
2 1 Amministratore Truelite
3 43 Chiara Barbucci
"PostfixAdmin":http://postfixadmin.sourceforge.net/ è una potente interfaccia di gestione per la posta elettronica che consente di mantenere su un database e gestire tramite interfaccia web gli utenti di un numero arbitrario di domini di posta elettronica. Il programma è pensato per essere usato in combinazione con postfix, supporta inoltre l'uso di _MySQL_, _PostgresSQL_ e _SQLite_ come database, a cui poi si dovrà appoggiare un server IMAP per l'accesso alle caselle di posta. In questo caso faremo riferimento ad una installazione basata su _MySQL_ per il database e _Dovecot_ per il server IMAP. A partire da Debian Wheezy non è necessaria l'installazione manuale, il programma viene fornito con il pacchetto @postfixadmin@ l'installazione del quale esegue automaticamente (appoggiandosi a _debconf_ e _dbconfig-common_) le operazioni del paragrafo seguente che può essere ignorato. 
4 1 Amministratore Truelite
5 42 Simone Piccardi
h2. Installazione di _Postfixadmin_ manuale
6 34 Amministratore Truelite
7 44 Chiara Barbucci
Fino a Squeeze il software viene distribuito direttamente in un pacchetto Debian dal mantainer, ma non tramite un repository, pertanto sarà necessario scaricare il @.deb@ a partire da "questo indirizzo.":https://sourceforge.net/projects/postfixadmin/files/ . Una volta ottenuto il pacchetto sarà opportuno installare preventivamente le dipendenze, queste si ottengono con il comando: 
8 34 Amministratore Truelite
9
<pre>
10
dpkg -f postfixadmin_*.deb Depends
11
</pre>
12 35 Simone Piccardi
13 44 Chiara Barbucci
che presenta però anche le alternative per quanto riguarda il server web ed il database di supporto da usare e non prevede esplicitamente l'installazione di un database sulla stessa macchina. Nel nostro caso sarà allora opportuno installare almeno i seguenti pacchetti:
14 35 Simone Piccardi
15 2 Amministratore Truelite
<pre>
16 34 Amministratore Truelite
aptitude install dbconfig-common wwwconfig-common  \
17 21 Amministratore Truelite
      libapache2-mod-php5 php5 php5-imap php5-mysql \
18 4 Amministratore Truelite
      mysql-client mysql-server postfix-mysql
19 5 Amministratore Truelite
</pre>
20 34 Amministratore Truelite
21 45 Chiara Barbucci
A questo punto sarà necessario creare un database ad uso di "PostfixAdmin":http://postfixadmin.sourceforge.net/ ed un utente dotato di adeguati privilegi per poterlo utilizzare. Questo può essere fatto manualmente con le seguenti istruzioni:
22 35 Simone Piccardi
23 1 Amministratore Truelite
<pre>
24 34 Amministratore Truelite
mysqladmin -u root -p create postfixadmin
25 1 Amministratore Truelite
mysql -u root -p
26 15 Amministratore Truelite
mysql> grant create, select, insert, update, delete, lock, index, alter, drop 
27
             on postfixadmin.* to 'postfixadmin'@'localhost' 
28 5 Amministratore Truelite
             identified by 'passsegretaedifficile';
29 1 Amministratore Truelite
mysql> flush privileges;
30
mysql> \q
31
</pre>
32 35 Simone Piccardi
33 1 Amministratore Truelite
dopo di che si potrà installare il pacchetto con:
34 35 Simone Piccardi
35 34 Amministratore Truelite
<pre>
36 1 Amministratore Truelite
dpkg -i postfixadmin_*.deb 
37 34 Amministratore Truelite
</pre>
38 1 Amministratore Truelite
39 46 Chiara Barbucci
ma si tenga presente che dalla versione 2.3 (ancora non rilasciata come stabile), con l'installazione di @dbconfig-common@ e @wwwconfig-common@, l'installazione del pacchetto consente di configurare automaticamente anche il database di appoggio ed il relativo utente (ed il passo precedente non serve più).
40 35 Simone Piccardi
41 42 Simone Piccardi
A seconda della versione che si installa si dovrà modificare a mano il file @/etc/postfixadmin/config.inc.php@ per inserire le credenziali di accesso al database, modificando le righe: 
42 35 Simone Piccardi
43 1 Amministratore Truelite
<pre>
44
$CONF['configured'] = true;
45 6 Amministratore Truelite
...
46 1 Amministratore Truelite
$CONF['database_type'] = 'mysql';
47
$CONF['database_host'] = 'localhost';
48
$CONF['database_user'] = 'postfixadmin';
49
$CONF['database_password'] = 'passsegretaedifficile';
50
$CONF['database_name'] = 'postfixadmin';
51
</pre>
52 7 Amministratore Truelite
53 35 Simone Piccardi
ma questo, con la 2.3, viene fatto da _debconf_ in maniera automatica con la richiesta della password di amministrazione di MySQL (quella impostata per root alla sua installazione) e di una altra password per l'utente usato da "PostfixAdmin":http://postfixadmin.sourceforge.net/, si ricordi però di rispondere, quando verrà richiesto, di installare la configurazione fornita dal pacchetto. 
54
55
Si tenga infine presente che se si vuole evitare di rendere leggibili ad Apache le credenziali di accesso al database questo può essere fatto aggiungendo creando un _Virtual Host_ specifico per Postfixadmin (leggibile solo da root) in cui si impostano delle variabili di ambiente con le direttive:
56
57 34 Amministratore Truelite
<pre>
58 35 Simone Piccardi
SetEnv DB_USER "postfixadmin"
59
SetEnv DB_PASS "passsegretaedifficile"
60 34 Amministratore Truelite
</pre>
61 35 Simone Piccardi
62 34 Amministratore Truelite
che poi si riusano nel file di configurazione con:
63 35 Simone Piccardi
64 34 Amministratore Truelite
<pre>
65 1 Amministratore Truelite
$CONF['database_user'] = $_SERVER['DB_USER'];
66
$CONF['database_password'] = $_SERVER['DB_PASS'];
67
</pre>
68
69 42 Simone Piccardi
70
h2. Configurazione di base di _Postfixadmin_
71
72 47 Chiara Barbucci
Una volta eseguita l'installazione di base la creazione della struttura del database e delle relative informazioni (o l'aggiornamento di eventuali modifiche della struttura del database in caso di installazioni di versioni successive del software) si fa puntando il browser all'indirizzo:
73 35 Simone Piccardi
74 1 Amministratore Truelite
<pre>
75 34 Amministratore Truelite
http://IP.DEL.MIO.SERVER/postfixadmin/setup.php
76 1 Amministratore Truelite
</pre>
77
78 47 Chiara Barbucci
che esegue lo script di setup che crea e popola le tabelle del database; 
79
anche qui le cose cambiano a seconda della versione, fino alla 2.2 questo script consente di modificare l'amministratore e deve essere rimosso dopo l'uso, con la 2.3 è prevista la generazione di una password per il setup e se questa non è impostata lo script la richiede e poi scrive in output l'hash crittografico che corrisponde da inserire nella configurazione (il file precedente) alla linea:
80 35 Simone Piccardi
81 1 Amministratore Truelite
<pre>
82
$CONF['setup_password'] = 'changeme';
83
</pre>
84
85 47 Chiara Barbucci
fatta la modifica si potrà usare con successo il setup per la creazione di un utente di amministrazione, associato ad un indirizzo di posta, anch'esso installato nel database. Si potrà verificare il funzionamento della configurazione collegandosi direttamente all'indirizzo @http://IP.DEL.MIO.SERVER/postfixadmin@ controllando che l'utente di amministrazione impostato funzioni. 
86 35 Simone Piccardi
87 47 Chiara Barbucci
Una volta eseguita la configurazione di base e verificato che la connessione al database funzioni, sarà necessario eseguire una serie di affinamenti. Innazitutto si dovrà impostare il programma per fare riferimento al proprio dominio, la cosa può essere fatto rapidamente con:
88 35 Simone Piccardi
89 34 Amministratore Truelite
<pre>
90 1 Amministratore Truelite
cd /etc/postfixadmin/
91
mv config.inc.php config.inc.php.orig
92
sed -e 's/change-this-to-your.domain.tld/miodominio.it/g' config.inc.php.orig > config.inc.php
93
</pre>
94 35 Simone Piccardi
95 47 Chiara Barbucci
ma si verifichi poi il file per controllare che i link alle pagine web siano corretti (nel caso saranno sempre nella forma @http://miodominio.it@). Si dovranno poi modificare le seguenti configurazioni per avere le cartelle associate all'indirizzo utente@miodominio.it (nella forma miodominio.it/utente) si dovrà usare la stessa forma anche nella configurazione del server IMAP: 
96 35 Simone Piccardi
97 1 Amministratore Truelite
<pre>
98
$CONF['domain_path'] = 'YES';
99
$CONF['domain_in_mailbox'] = 'NO';
100
</pre>
101 35 Simone Piccardi
102 1 Amministratore Truelite
se poi si vogliono usare le quote occorrerà impostare:
103 35 Simone Piccardi
104 34 Amministratore Truelite
<pre>
105
$CONF['quota'] = 'YES';
106
</pre>
107 35 Simone Piccardi
108
mentre per utilizzare @vacation@ sarà necessario impostare: 
109
110 34 Amministratore Truelite
<pre>
111
$CONF['vacation'] = 'YES';
112 15 Amministratore Truelite
$CONF['vacation_domain'] = 'autoreply.miodominio.it'
113 1 Amministratore Truelite
</pre>
114
115 35 Simone Piccardi
e configurare _Postfix_ per usare @autoreplay.miodominio.it@ come dominio per gestire @vacation@ (torneremo su questo nel seguito). 
116
117 6 Amministratore Truelite
Si possono poi cambiare le seguenti impostazioni per inserire dei default più adatti alle proprie esigenze: 
118 35 Simone Piccardi
119 1 Amministratore Truelite
<pre>
120 34 Amministratore Truelite
$CONF['default_language'] = 'it';
121 1 Amministratore Truelite
$CONF['min_password_length'] = 6;
122
$CONF['aliases'] = '10';
123
$CONF['mailboxes'] = '10';
124 18 Amministratore Truelite
$CONF['maxquota'] = '10';
125 34 Amministratore Truelite
</pre>
126 7 Amministratore Truelite
127 35 Simone Piccardi
Se si installa la versione 2.3 si tenga conto che questa permette anche di utilizzare una gestione semplificata per avere gli stessi alias su più domini, che però richiede più interrogazioni al database ed una diversa configurazione di postfix; se non si ha questa necessità è meglio non usarla e questa andrà disabilitata con:
128
129 34 Amministratore Truelite
<pre>
130 1 Amministratore Truelite
$CONF['alias_domain'] = 'NO';
131 32 Amministratore Truelite
</pre>
132 1 Amministratore Truelite
133 37 Simone Piccardi
h2. Configurare _Postfix_ per _Postfixadmin_
134 34 Amministratore Truelite
135 35 Simone Piccardi
Il passo successivo è configurare _Postfix_ per fare uso degli utenti e delle mailbox definite su _PostfixAdmin_, installando il pacchetto @postfix@ si abbia cura di rispondere alla configurazione automatica di utilizzare il profilo per il sito internet, specificando il proprio dominio principale. Per lo stoccaggio della posta si dovrà usare una directory apposita, la cui proprietà sarà di un utente dedicato; una volta che si sia scelto un filesystem con adeguato spazio, la si potrà creare con i comandi: 
136 34 Amministratore Truelite
137 1 Amministratore Truelite
<pre>
138
mkdir /var/mail/vmail
139
useradd -d /var/mail/vmail vmail
140
chown vmail:vmail /var/mail/vmail/
141
chmod o-xr /var/mail/vmail/
142 24 Amministratore Truelite
</pre>
143 1 Amministratore Truelite
144 35 Simone Piccardi
Si deve inoltre evitare l'uso di procmail come LDA per cui si dovrà commentare la seguente linea standard presente nella configurazione di _Postfix_ installata da Debian:
145
146 34 Amministratore Truelite
<pre>
147 1 Amministratore Truelite
#mailbox_command = procmail -a "$EXTENSION"
148 24 Amministratore Truelite
</pre>
149 1 Amministratore Truelite
150 35 Simone Piccardi
Poi si dovrà indicare a Postfix di usare i dati mantenuti su MySQL per le mailbox virtuali, per questo anzitutto si deve installare il pacchetto @postfix-mysql@, dopo di che si dovranno aggiungere le seguenti linee di configurazione al @main.cf@: 
151
152 34 Amministratore Truelite
<pre>
153
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
154 9 Amministratore Truelite
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
155 1 Amministratore Truelite
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
156
virtual_mailbox_base = /var/mail/vmail
157
virtual_minimum_uid = 106
158 7 Amministratore Truelite
virtual_transport = virtual
159 1 Amministratore Truelite
virtual_uid_maps = static:106
160 7 Amministratore Truelite
virtual_gid_maps = static:61
161 34 Amministratore Truelite
</pre>
162 1 Amministratore Truelite
163 36 Simone Piccardi
dove 106 e 61 sono rispettivamente uid e gid dell'utente @vmail@, questi possono essere diversi su ciascuna installazione si possono trovare con il comando @getent passwd|grep vmail@.
164 35 Simone Piccardi
165 36 Simone Piccardi
Si dovranno inoltre creare il vari file @mysql_*@ con le configurazioni per l'uso del database, il primo file, @mysql_virtual_alias_maps.cf@, è quello che consente di utilizzare gli alias definiti nel database, e deve essere qualcosa del tipo: 
166 35 Simone Piccardi
167 1 Amministratore Truelite
<pre>
168
user = postfixadmin
169
password = passsegretaedifficile
170
hosts = localhost
171
dbname = postfixadmin
172
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
173
</pre>
174 35 Simone Piccardi
175 36 Simone Piccardi
il secondo, @mysql_virtual_domains_maps.cf@, consente di ottenere l'elenco dei domini mantenuti nel database, e deve essere qualcosa del tipo:
176 35 Simone Piccardi
177 34 Amministratore Truelite
<pre>
178 1 Amministratore Truelite
user = postfixadmin
179
password = passsegretaedifficile
180
hosts = localhost
181
dbname = postfixadmin
182 34 Amministratore Truelite
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '0' and active = '1'
183 1 Amministratore Truelite
</pre>
184 35 Simone Piccardi
185 36 Simone Piccardi
il terzo, @mysql_virtual_mailbox_maps.cf@, consente di ottenere le directory con le mailbox che saranno create a partire dalla directory di base @/var/mail/vmail@, e deve essere qualcosa del tipo:
186 35 Simone Piccardi
187 31 Amministratore Truelite
<pre>
188 1 Amministratore Truelite
user = postfixadmin
189
password = passsegretaedifficile
190
hosts = localhost
191
dbname = postfixadmin
192
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
193
</pre>
194 26 Amministratore Truelite
195 35 Simone Piccardi
Se poi si vogliono gestire con _PostfixAdmin_ anche eventuali secondari di posta, si potrà aggiungere al @main.cf@ di Postfix la riga: 
196
197 1 Amministratore Truelite
<pre>
198
relay_domains = $mydestination, proxy:mysql:/etc/postfix/mysql_relay_domains_maps.cf
199 34 Amministratore Truelite
</pre>
200 35 Simone Piccardi
201
dove in @mysql_relay_domains_maps.cf@ ci dovrà essere qualcosa del tipo:
202
203 1 Amministratore Truelite
<pre>
204 15 Amministratore Truelite
user = postfixadmin
205 1 Amministratore Truelite
password = passsegretaedifficile
206 15 Amministratore Truelite
hosts = localhost
207
dbname = postfixadmin
208 34 Amministratore Truelite
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1' and active = '1'
209 15 Amministratore Truelite
</pre>
210 1 Amministratore Truelite
211
Poiché questi file contengono una password in chiaro si verifichi che non siano leggibili da chiunque ed eventualmente si sistemino adeguatamente i permessi con:
212 35 Simone Piccardi
213 1 Amministratore Truelite
<pre>
214 15 Amministratore Truelite
chgrp postfix /etc/postfix/mysql_*
215 1 Amministratore Truelite
chmod 640 /etc/postfix/mysql_*
216
</pre>
217 34 Amministratore Truelite
218 35 Simone Piccardi
A questo punto sarà possibile spedire una email ad un utente creato con Postfixadmi e verificarne la corretta ricezione nei log di @/var/log/mail.log@. 
219 34 Amministratore Truelite
220 37 Simone Piccardi
h2. Uso di _vacation_ con _Postfix_ e _Postfixadmin_
221 34 Amministratore Truelite
222 37 Simone Piccardi
Se si è scelto di usare _vacation_ la configurazione diventa leggermente più complessa, anzitutto si deve creare un utente apposito per la gestione dei delle risposte automatiche, questo lo si può fare con i seguenti comandi che assicurano che l'utente abbia i minimi privilegi: 
223 15 Amministratore Truelite
224 34 Amministratore Truelite
<pre>
225 15 Amministratore Truelite
groupadd -g 65501 vacation
226 34 Amministratore Truelite
useradd -g 65501 -u 65501 -c Vacation -s /sbin/nologin -d /nonexistent vacation
227 1 Amministratore Truelite
</pre>
228 35 Simone Piccardi
229 34 Amministratore Truelite
dopo di che si dovrà creare una directory ad accesso esclusivo di questo utente dove saranno mantenuti anche i suoi file temporanei, questo si fa con i comandi:
230 35 Simone Piccardi
231 1 Amministratore Truelite
<pre>
232
mkdir /var/spool/vacation
233 34 Amministratore Truelite
chown -R vacation.vacation /var/spool/vacation
234 1 Amministratore Truelite
chmod o-xr /var/spool/vacation 
235 16 Amministratore Truelite
</pre>
236 35 Simone Piccardi
237 1 Amministratore Truelite
infine si dovrà copiare lo script perl fornito con "PostfixAdmin":http://postfixadmin.sourceforge.net/ nella suddetta directory e renderlo eseguibile:
238 35 Simone Piccardi
239 16 Amministratore Truelite
<pre>
240
cd /usr/share/doc/postfixadmin/examples/VIRTUAL_VACATION/
241 1 Amministratore Truelite
zcat vacation.pl.gz > /var/spool/vacation/vacation.pl
242
chmod 700 /var/spool/vacation/vacation.pl
243
chown vacation.vacation /var/spool/vacation/vacation.pl
244
</pre>
245 35 Simone Piccardi
246
per farlo funzionare sono però necessari una serie di moduli per il Perl, che si dovranno installare con:
247
248 1 Amministratore Truelite
<pre>
249 34 Amministratore Truelite
aptitude install libemail-valid-perl libmime-encwords-perl libmime-perl \
250 40 Simone Piccardi
         libmail-sender-perl liblog-log4perl-perl libmail-sendmail-perl
251 16 Amministratore Truelite
</pre>
252 35 Simone Piccardi
253 41 Simone Piccardi
inoltre si dovranno modificare le prime righe dello script (o per le versioni più recenti metterle nel file @/etc/postfixadmin/vacation.conf@) dove sono impostate le credenziali di accesso al database, con qualcosa del genere:
254 35 Simone Piccardi
255 16 Amministratore Truelite
<pre>
256 1 Amministratore Truelite
our $db_type = 'mysql';
257
our $db_host = 'localhost';
258
our $db_username = 'postfixadmin';
259
our $db_password = 'passsegretaedifficile';
260 16 Amministratore Truelite
our $db_name     = 'postfixadmin';
261 34 Amministratore Truelite
262 10 Amministratore Truelite
our $vacation_domain = 'autoreply.miodominio.it';
263 1 Amministratore Truelite
</pre>
264 41 Simone Piccardi
265 1 Amministratore Truelite
266 37 Simone Piccardi
Occorre poi eseguire una configurazione ulteriore di Postfix, anzitutto occorre definire un nuovo tipo di trasporto ad uso di _vacation_, aggiungendo le righe seguenti a @/etc/postfix/master.cf@: 
267 35 Simone Piccardi
268 1 Amministratore Truelite
<pre>
269 34 Amministratore Truelite
vacation    unix  -       n       n       -       -       pipe
270
  flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} -- ${recipient}
271 10 Amministratore Truelite
</pre>
272 35 Simone Piccardi
273
dopo di che si dovrà utilizzarlo per il trasporto delle email indirizzate ad @autoreply.miodominio.it@, definendo dentro @/etc/postfix/transport@:  
274
275 10 Amministratore Truelite
<pre>
276 1 Amministratore Truelite
autoreply.miodominio.it       vacation:
277
</pre>
278 35 Simone Piccardi
279
ed infine aggiungere a @/etc/postfix/main.cf@: 
280
281 34 Amministratore Truelite
<pre>
282 10 Amministratore Truelite
transport_maps = hash:/etc/postfix/transport
283 34 Amministratore Truelite
</pre>
284 35 Simone Piccardi
285 1 Amministratore Truelite
fatto questo si dovrà fare usare a Postfix la nuova configurazione con:
286 35 Simone Piccardi
287 1 Amministratore Truelite
<pre>
288
postmap /etc/postfix/transport
289 10 Amministratore Truelite
postfix reload
290 34 Amministratore Truelite
</pre>
291
292 35 Simone Piccardi
h2. Configurare _Dovecot_ per _Postfixadmin_
293 34 Amministratore Truelite
294 35 Simone Piccardi
Per l'accesso alla posta mantenuta da _Postfixadmin_ è necessario un server IMAP, vedremo allora come configurare _Dovecot_ che fornisce comunque anche l'accesso con POP, ed il tutto sia in chiaro che con cifratura sotto SSL. Si inizi anzitutto con l'installare le varie componenti di _Dovecot_, questo si fa al solito con (si aggiunga sempre @ntp@ perché _Dovecot_ non gradisce situazioni in cui il tempo ha dei movimenti all'indietro):
295 34 Amministratore Truelite
296
<pre>
297
aptitude install dovecot-imapd dovecot-pop3d ntp
298 1 Amministratore Truelite
</pre>
299 35 Simone Piccardi
300 37 Simone Piccardi
la configurazione di base dovrà essere modificata anzitutto per il fatto che la posta deve essere trovate in delle maildir a partire dalla directory @/var/mail/vmail@ nella forma @mydomain.it/username@ ed acceduta con l'utente @vmail@ creato in precedenza. Nel nostro caso questo comporta la modifica delle seguenti righe de file di configurazione principale che è @/etc/dovecot/dovecot.conf@: 
301 35 Simone Piccardi
302 1 Amministratore Truelite
<pre>
303
mail_location = maildir:/var/mail/vmail/%d/%n
304 34 Amministratore Truelite
mail_privileged_group = vmail
305
first_valid_uid = 106
306 1 Amministratore Truelite
</pre>
307
308 35 Simone Piccardi
(dove 106 è l'uid dell'utente @vmail@). 
309
310
Occorre poi disabilitare l'autenticazione sugli utenti locali (via PAM) ed utilizzare i dati di MySQL, questo comporta la sostituzione delle direttive @userdb@ e @passdb@ che fan riferimento a PAM con le seguenti che indicano il file da usare per i parametri di accesso al database: 
311
312 27 Amministratore Truelite
<pre>
313 1 Amministratore Truelite
  passdb sql {
314
    args = /etc/dovecot/dovecot-mysql.conf
315 27 Amministratore Truelite
  }
316
  userdb sql {
317
    args = /etc/dovecot/dovecot-mysql.conf
318
  }
319 1 Amministratore Truelite
</pre>
320 35 Simone Piccardi
321
ed infine dovremo inserire nel file @/etc/dovecot/dovecot-mysql.conf@ le necessarie configurazioni per l'accesso al database ed ai relativi dati, con un contenuto del tipo di: 
322
323 34 Amministratore Truelite
<pre>
324
driver = mysql
325 27 Amministratore Truelite
connect = host=localhost dbname=postfixadmin user=postfixadmin password=passsegretaedifficile client_flags=0
326 1 Amministratore Truelite
default_pass_scheme = MD5
327 27 Amministratore Truelite
user_query = SELECT maildir, 106 AS uid, 61 AS gid FROM mailbox WHERE username = '%u'
328 1 Amministratore Truelite
password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1' 
329 30 Amministratore Truelite
</pre>
330
331 35 Simone Piccardi
(dove 106 e 61 sono _uid_ e _gid_ dell'utente @vmail@). 
332 34 Amministratore Truelite
333 35 Simone Piccardi
h2. Autenticazione SMTP
334 30 Amministratore Truelite
335 35 Simone Piccardi
L'autenticazione delle sessioni SMTP può essere eseguita da Postfix rivolgendosi direttamente al servizio fornito da Dovecot attraverso un socket. Per fare tutto ciò il primo passo è quello di configurare Dovecot perché metta a disposizione il socket nel chroot di Postfix; questo si ottiene aggiungendo le seguenti righe a /etc/dovecot/dovecot.conf: 
336 30 Amministratore Truelite
337 1 Amministratore Truelite
<pre>
338
socket listen {
339
        client {
340 34 Amministratore Truelite
        path = /var/spool/postfix/private/auth
341
        mode = 0660
342
        user = postfix
343
        group = postfix
344
        }
345 27 Amministratore Truelite
}
346
</pre>
347 35 Simone Piccardi
348
e poi bisogna anche, per consentire l'accesso a client bacati come Outlook, modificare la riga dei mechanisms in @/etc/dovecot/dovecot.conf@ come di seguito: 
349
350 1 Amministratore Truelite
<pre>
351 27 Amministratore Truelite
auth default {
352
   ...
353
   mechanisms = plain login
354 34 Amministratore Truelite
   ...
355
}
356
</pre>
357 35 Simone Piccardi
358
e dopo aver riavviato Dovecot si otterrà il socket all'interno del _chroot_ di Postfix come @private/auth@, come si potrà verificare con il comando: 
359
360 27 Amministratore Truelite
<pre>
361
# ls /var/spool/postfix/private/auth -l
362
srw-rw---- 1 postfix postfix 0 29 set 18:59 /var/spool/postfix/private/auth
363 34 Amministratore Truelite
</pre>
364
365 35 Simone Piccardi
Il secondo passo è configurare Postfix per usare questo socket, basterà aggiungere a @/etc/postfix/main.cf@ le linee seguenti: 
366
367 27 Amministratore Truelite
<pre>
368 34 Amministratore Truelite
smtpd_sasl_type = dovecot
369 27 Amministratore Truelite
smtpd_sasl_path = private/auth
370 34 Amministratore Truelite
</pre>
371
372 35 Simone Piccardi
Tutto il resto è la ordinaria configurazione di Postfix per abilitare l'uso di sessioni autenticate, e per far si che queste avvengano con connessioni cifrate sotto TLS; l'autenticazione si abilita aggiungendo a @/etc/postfix/main.cf@ le righe seguenti: 
373
374 34 Amministratore Truelite
<pre>
375 27 Amministratore Truelite
smtpd_sasl_auth_enable = yes
376 34 Amministratore Truelite
smtp_sasl_application_name = smtpd
377
smtpd_sasl_local_domain = $myhostname
378 27 Amministratore Truelite
broken_sasl_auth_clients = yes
379
</pre>
380 35 Simone Piccardi
381 27 Amministratore Truelite
mentre l'uso di TLS con le righe seguenti:
382 35 Simone Piccardi
383 1 Amministratore Truelite
<pre>
384 34 Amministratore Truelite
smtpd_use_tls = yes
385 1 Amministratore Truelite
smtpd_tls_auth_only = yes
386
smtpd_tls_loglevel = 1
387
smtpd_tls_received_header = yes
388
smtpd_tls_session_cache_timeout = 3600s
389
tls_random_source = dev:/dev/urandom
390
</pre>
391 35 Simone Piccardi
392
infine si deve dare l'accesso in spedizione agli utenti aggiungendo la direttiva @permit_sasl_authenticated@ al parametro @smtpd_recipient_restrictions@ che dovrà essere qualcosa del tipo: 
393
394 1 Amministratore Truelite
<pre>
395
smtpd_recipient_restrictions =
396
        permit_mynetworks,
397
        permit_sasl_authenticated,
398
        reject_rbl_client zen.spamhaus.org,
399
        reject_non_fqdn_sender,
400
        reject_non_fqdn_recipient,
401
        reject_unknown_sender_domain,
402 34 Amministratore Truelite
        reject_unauth_destination
403 1 Amministratore Truelite
</pre>
404 34 Amministratore Truelite
405
406 35 Simone Piccardi
h2. CLI script to massive account creation
407 38 Simone Piccardi
408
_Postfixadmin_ è un'ottima interfaccia di gestione utenti e domini via web, ma come tutte le interfacce grafiche non è tanto pratica quando si tratta di creare centinaia di account in una sola volta. Per questo motivo abbiamo sviluppato un semplice script in _Python_ che consente di eseguire creazioni di massa, disponibile a "questo indirizzo":http://labs.truelite.it/attachments/82/inspostadmusers.py. Il suo limite principale è che può essere usato soltanto se il database di appoggio per PostfixAdmin è MySQL.
409
410
Lo script è relativamente semplice da usare, richiede un file CSV con la lista degli account. Dovrebbe lavorare con qualunque tipo di CSV, ma è stato controllato solo con l'output di OpenOffice Calc. La prima riga del file deve contenere i nomi delle colonne e lo script prenderà in considerazione soltanto le colonne con nomi _user_, _domain_, _password_ e _name_ il cui significato è illustrato nella tabella seguente:
411
412
|_.Colonna |_.Significato|
413
|user     | parte utente dell'email (come user in @user@domain.com@)|
414
|password | password in chiaro|
415
|domain   | nome a dominio (come '@domain.com@')|
416
|name     | Nome completo ('Nome Cognome')|
417
418
E' necessario fornire almeno le colonne _user_, _domain_ e _password_ e lo script inizializzerà opportunamente le tabelle del database. Gli utenti di posta saranno nella forma @user@domain@ con la password presa dalla colonna omonima. Se non esistenti verranno creati automaticamente anche i domini citati nel file e, specificando l'opzione @-A@, verranno creati anche gli account di default (abuse, hostmaster, postmaster, webmaster) per ciascun dominio.
419
420
Lo script richiede un solo argomento, il nome del file CSV, e l'opzione @-p@ seguita dalla password di accesso per il database (cioè secondo le istruzioni precedenti, "passsegretaedifficile"). Ci sono ulteriori opzioni per impostare il nome del database, il relativo utente, l'indirizzo a cui connettersi, ecc. ma i valori di default dovrebbero essere già a posto essendo gli stessi usati dal pacchetto di PostfixAdmin. La lista completa delle opzioni può comunque essere stampata invocando lo script senza argomenti o con l'opzione @-h@.
421
422
Lo script non effettua nessuna validazione dei dati, pertanto è pubblicato senza garanzie sotto licenza GPL. Questo significa che fare un backup del database prima di usarlo sarebbe quantomai opportuno. Lo script stamperà un messaggio di errore se alcuni account o domini sono già presenti nel database, saltando la relativa creazione (non verranno cioè sovrascritti) ma proseguirà nella creazione degli altri account o domini non esistenti. Salterà anche la creazione di qualunque account duplicato.