Project

General

Profile

PostfixAdminInstall » History » Version 32

Amministratore Truelite, 11/08/2010 03:53 PM

1 1 Amministratore Truelite
[[TracNav(TOC)]]
2
3 7 Amministratore Truelite
== Installare e configurare Postfixadmin ==
4 2 Amministratore Truelite
5 4 Amministratore Truelite
[http://postfixadmin.sourceforge.net/ PostfixAdmin] è 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 su Debian Lenny.
6 1 Amministratore Truelite
7 7 Amministratore Truelite
=== Installazione di Postfixadmin ===
8 6 Amministratore Truelite
9 2 Amministratore Truelite
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 [http://sourceforge.net/project/showfiles.php?group_id=191583&package_id=225300 questo indirizzo]. Una volta ottenuto il pacchetto sarà opportuno installare preventivamente le dipendenze, queste si ottengono con il comando:
10
{{{
11
dpkg -f postfixadmin_*.deb Depends
12
}}}
13 15 Amministratore Truelite
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 2 Amministratore Truelite
{{{
15 3 Amministratore Truelite
aptitude install dbconfig-common wwwconfig-common  \
16
      libapache2-mod-php5 php5 php5-imap php5-mysql \
17 21 Amministratore Truelite
      mysql-client mysql-server postfix-mysql
18 1 Amministratore Truelite
}}}
19 4 Amministratore Truelite
20 6 Amministratore Truelite
A questo punto sarà necessario creare un database ad uso di [http://postfixadmin.sourceforge.net/ PostfixAdmin], ed un utente dotato di adeguati privilegi per poterlo utilizzare, questo può essere fatto manualmente con le seguenti istruzioni:
21 1 Amministratore Truelite
{{{
22 5 Amministratore Truelite
mysqladmin -u root -p create postfixadmin
23 1 Amministratore Truelite
mysql -u root -p
24 15 Amministratore Truelite
mysql> grant create, select, insert, update, delete, lock, index, alter, drop 
25
             on postfixadmin.* to 'postfixadmin'@'localhost' 
26
             identified by 'passsegretaedifficile';
27 5 Amministratore Truelite
mysql> flush privileges;
28
mysql> \q
29 1 Amministratore Truelite
}}}
30
dopo di che si potrà installare il pacchetto con:
31
{{{
32
dpkg -i postfixadmin_*.deb 
33
}}}
34 6 Amministratore Truelite
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 creare configurare automaticamente anche il database di appoggio ed il relativo utente (ed il passo precedente non serve più).
35
36
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:
37
{{{
38
$CONF['configured'] = true;
39
...
40
$CONF['database_type'] = 'mysql';
41
$CONF['database_host'] = 'localhost';
42
$CONF['database_user'] = 'postfixadmin';
43
$CONF['database_password'] = 'passsegretaedifficile';
44
$CONF['database_name'] = 'postfixadmin';
45
}}}
46 1 Amministratore Truelite
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 [http://postfixadmin.sourceforge.net/ PostfixAdmin], si ricordi però di rispondere, quando verrà richiesto, di installare la configurazione fornita dal pacchetto. 
47
48 7 Amministratore Truelite
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 VirtualHost specifico per Postfixadmin (leggibile solo da root) in cui si impostano delle variabili di ambiente con le direttive:
49
{{{
50
SetEnv DB_USER "postfixadmin"
51
SetEnv DB_PASS "passsegretaedifficile"
52
}}}
53
che poi si riusano nel file di configurazione con:
54
{{{
55
$CONF['database_user'] = $_SERVER['DB_USER'];
56
$CONF['database_password'] = $_SERVER['DB_PASS'];
57
}}}
58
59 6 Amministratore Truelite
Fatto questo 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:
60
{{{
61
http://IP.DEL.MIO.SERVER/postfixadmin/setup.php
62
}}}
63
che esegue lo script di setup che crea e popola le tabelle del database; 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 è previsto 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:
64
{{{
65
$CONF['setup_password'] = 'changeme';
66 1 Amministratore Truelite
}}}
67 6 Amministratore Truelite
una volta 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.
68
69 11 Amministratore Truelite
Una volta eseguita la configurazione di base e verificato che la connessione al database funziona, sarà necessario eseguire una serie di affinamenti; anzititto si dovrà impostare il programma per fare riferimento al proprio dominio, la cosa può essere fatto rapidamente con:
70
{{{
71 17 Amministratore Truelite
cd /etc/postfixadmin/
72
mv config.inc.php config.inc.php.orig
73
sed -e 's/change-this-to-your.domain.tld/miodominio.it/g' config.inc.php.orig > config.inc.php
74 11 Amministratore Truelite
}}}
75
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):
76
{{{
77
$CONF['domain_path'] = 'YES';
78
$CONF['domain_in_mailbox'] = 'NO';
79
}}}
80 1 Amministratore Truelite
se poi si vogliono usare le quote occorrerà impostare:
81 11 Amministratore Truelite
{{{
82
$CONF['quota'] = 'YES';
83 1 Amministratore Truelite
}}}
84 15 Amministratore Truelite
mentre per utilizzare {{{vacation}}} sarà necessario impostare:
85 11 Amministratore Truelite
{{{
86
$CONF['vacation'] = 'YES';
87 16 Amministratore Truelite
$CONF['vacation_domain'] = 'autoreply.miodominio.it'
88 1 Amministratore Truelite
}}}
89 16 Amministratore Truelite
e configurare Postfix per usare {{{autoreplay.miodominio.it}}} come dominio per gestire vacation (torneremo su questo nel seguito).
90 1 Amministratore Truelite
91
Si possono poi cambiare le seguenti impostazioni per inserire dei default più adatti alle proprie esigenze: 
92
{{{
93
$CONF['default_language'] = 'it';
94 11 Amministratore Truelite
$CONF['min_password_length'] = 6;
95 1 Amministratore Truelite
$CONF['aliases'] = '10';
96 13 Amministratore Truelite
$CONF['mailboxes'] = '10';
97
$CONF['maxquota'] = '10';
98
}}}
99
100 15 Amministratore Truelite
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; questa andrà disabilitata con:
101
{{{
102
$CONF['alias_domain'] = 'NO';
103
}}}
104 13 Amministratore Truelite
105 15 Amministratore Truelite
106 7 Amministratore Truelite
=== Configurare Postfix per Postfixadmin ===
107 6 Amministratore Truelite
108
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:
109
{{{
110 18 Amministratore Truelite
mkdir /var/mail/vmail
111 20 Amministratore Truelite
useradd -d /var/mail/vmail vmail
112 18 Amministratore Truelite
chown vmail:vmail /var/mail/vmail/
113
chmod o-xr /var/mail/vmail/
114 7 Amministratore Truelite
}}}
115
116 32 Amministratore Truelite
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:
117
{{{
118
#mailbox_command = procmail -a "$EXTENSION"
119
}}}
120
121 8 Amministratore Truelite
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}}}:
122 7 Amministratore Truelite
{{{
123
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
124
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
125
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
126 20 Amministratore Truelite
virtual_mailbox_base = /var/mail/vmail
127 24 Amministratore Truelite
virtual_minimum_uid = 106
128 7 Amministratore Truelite
virtual_transport = virtual
129 24 Amministratore Truelite
virtual_uid_maps = static:106
130
virtual_gid_maps = static:61
131 7 Amministratore Truelite
}}}
132 24 Amministratore Truelite
(dove 106 e 61 sono rispettivamente uid e gid dell'utente {{{vmail}}}).
133
134
Si dovranno inoltre creare il vari file {{{mysql_*}}} con le configurazioni per l'uso del database, il primo file è quello che consente di utilizzare gli alias definiti nel database, e deve essere qualcosa del tipo:
135 7 Amministratore Truelite
{{{
136
user = postfixadmin
137 9 Amministratore Truelite
password = passsegretaedifficile
138 7 Amministratore Truelite
hosts = localhost
139
dbname = postfixadmin
140
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
141
}}}
142
il secondo consente di ottenere l'elenco dei domini mantenuti nel database, e deve essere qualcosa del tipo:
143
{{{
144
user = postfixadmin
145 9 Amministratore Truelite
password = passsegretaedifficile
146 7 Amministratore Truelite
hosts = localhost
147
dbname = postfixadmin
148
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '0' and active = '1'
149
}}}
150
il terzo consente di ottenere le directory con le mailbox che saranno create a partire dalla directory di base, e deve essere qualcosa del tipo:
151
{{{
152
user = postfixadmin
153 9 Amministratore Truelite
password = passsegretaedifficile
154 7 Amministratore Truelite
hosts = localhost
155
dbname = postfixadmin
156
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
157
}}}
158
159
Se poi si vogliono gestire con [http://postfixadmin.sourceforge.net/ PostfixAdmin] anche eventuali secondari di posta, si potrà aggiungere al {{{main.cf}}} di Postfix la riga:
160
{{{
161
relay_domains = $mydestination, proxy:mysql:/etc/postfix/mysql_relay_domains_maps.cf
162 1 Amministratore Truelite
}}}
163
dove in {{{mysql_relay_domains_maps.cf}}} dovrà essere qualcosa del tipo:
164
{{{
165
user = postfixadmin
166
password = passsegretaedifficile
167
hosts = localhost
168
dbname = postfixadmin
169
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1' and active = '1'
170
}}}
171
172 31 Amministratore Truelite
Poiché questi file contengono una password in chiaro si verifichi che non siano leggibili da chiunque ed eventualmente si sistemino adeguatamente i permessi con:
173
{{{
174
chgrp postfix /etc/postfix/mysql_*
175
chmod 640 /etc/postfix/mysql_*
176
}}}
177
178
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}}}.
179
180 26 Amministratore Truelite
=== Uso di vacation con Postfix e Postfixadmin ===
181 16 Amministratore Truelite
182 15 Amministratore Truelite
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:
183
{{{
184
groupadd -g 65501 vacation
185
useradd -g 65501 -u 65501 -c Vacation -s /sbin/nologin -d /nonexistent vacation
186
}}}
187
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:
188
{{{
189
mkdir /var/spool/vacation
190
chown -R vacation.vacation /var/spool/vacation
191
chmod o-xr /var/spool/vacation 
192
}}}
193
infine si dovrà copiare lo script perl fornito con [http://postfixadmin.sourceforge.net/ PostfixAdmin] nella suddetta directory e renderlo eseguibile:
194
{{{
195
cd /usr/share/doc/postfixadmin/examples/VIRTUAL_VACATION/
196
zcat vacation.pl.gz > /var/spool/vacation/vacation.pl
197
chmod 700 /var/spool/vacation/vacation.pl
198
}}}
199
per farlo funzionare sono però necessari una serie di moduli per il perl, che si dovranno installare con:
200
{{{
201
aptitude install libemail-valid-perl libmime-encwords-perl libmime-perl \
202 29 Amministratore Truelite
         libmail-sender-perl liblog-log4perl-perl libmail-sendmail-perl
203 15 Amministratore Truelite
}}}
204
inoltre si dovranno modificare le prime righe dello script dove sono impostate le credenziali di accesso al database, con qualcosa del genere:
205
{{{
206
our $db_type = 'mysql';
207
our $db_host = 'localhost';
208
our $db_username = 'postfixadmin';
209
our $db_password = 'passsegretaedifficile';
210
our $db_name     = 'postfixadmin';
211
212
our $vacation_domain = 'autoreply.miodominio.it';
213 1 Amministratore Truelite
}}}
214 16 Amministratore Truelite
215
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}}}:
216
{{{
217
vacation    unix  -       n       n       -       -       pipe
218
  flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} -- ${recipient}
219
}}}
220
dopo di che si dovrà utilizzarlo per il trasporto delle email indirizzate ad {{{autoreply.miodominio.it}}}, definendo dentro {{{/etc/postfix/transport}}}:
221
{{{
222
autoreply.miodominio.it       vacation:
223
}}}
224
ed infine aggiungere a {{{/etc/postfix/main.cf}}}:
225
{{{
226
transport_maps = hash:/etc/postfix/transport
227
}}}
228
fatto questo si dovrà fare usare a Postfix la nuova configurazione con:
229
{{{
230
postmap /etc/postfix/transport
231
postfix reload
232
}}}
233
234
235 10 Amministratore Truelite
=== Configurare Dovecot per Postfixadmin ===
236
237 28 Amministratore Truelite
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):
238 10 Amministratore Truelite
{{{
239 28 Amministratore Truelite
aptitude install dovecot-imapd dovecot-pop3d ntp
240 10 Amministratore Truelite
}}}
241 1 Amministratore Truelite
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}}} 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}}}:
242 22 Amministratore Truelite
{{{
243 23 Amministratore Truelite
mail_location = maildir:/var/mail/vmail/%d/%n
244 10 Amministratore Truelite
mail_privileged_group = vmail
245
first_valid_uid = 106
246
}}}
247
(dove 106 è l'uid dell'utente {{{vmail}}}). 
248
249 25 Amministratore Truelite
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:
250 10 Amministratore Truelite
{{{
251
  passdb sql {
252
    args = /etc/dovecot/dovecot-mysql.conf
253
  }
254
  userdb sql {
255
    args = /etc/dovecot/dovecot-mysql.conf
256
  }
257
}}}
258 25 Amministratore Truelite
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:
259 10 Amministratore Truelite
{{{
260
driver = mysql
261
connect = host=localhost dbname=postfixadmin user=postfixadmin password=passsegretaedifficile client_flags=0
262
default_pass_scheme = MD5
263 14 Amministratore Truelite
user_query = SELECT maildir, 106 AS uid, 61 AS gid FROM mailbox WHERE username = '%u'
264 1 Amministratore Truelite
password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1' 
265
}}}
266
(dove 106 e 61 sono uid e gid dell'utente {{{vmail}}}).
267 27 Amministratore Truelite
268
269
=== Autenticazione SMTP ===
270
271
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}}}:
272
{{{
273
socket listen {
274
        client {
275
        path = /var/spool/postfix/private/auth
276
        mode = 0660
277
        user = postfix
278
        group = postfix
279
        }
280
}
281
}}}
282 30 Amministratore Truelite
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:
283
{{{
284
auth default {
285
   ...
286
   mechanisms = plain login
287
   ...
288
}
289
290
}}}
291 27 Amministratore Truelite
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:
292
{{{
293
# ls /var/spool/postfix/private/auth -l
294
srw-rw---- 1 postfix postfix 0 29 set 18:59 /var/spool/postfix/private/auth
295
}}}
296
297
Il secondo passo è configurare Postfix per usare questo socket, basterà aggiungere a {{{/etc/postfix/main.cf}}} le linee seguenti:
298
{{{
299
smtpd_sasl_type = dovecot
300
smtpd_sasl_path = private/auth
301
}}}
302
303
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:
304
{{{
305
smtpd_sasl_auth_enable = yes
306
smtp_sasl_application_name = smtpd
307
smtpd_sasl_local_domain = $myhostname
308
broken_sasl_auth_clients = yes
309
}}}
310
mentre l'uso di TLS con le righe seguenti:
311
{{{
312
smtpd_use_tls = yes
313
smtpd_tls_auth_only = yes
314
smtpd_tls_loglevel = 1
315
smtpd_tls_received_header = yes
316
smtpd_tls_session_cache_timeout = 3600s
317
tls_random_source = dev:/dev/urandom
318
}}}
319
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:
320
{{{
321
smtpd_recipient_restrictions =
322
        permit_mynetworks,
323
        permit_sasl_authenticated,
324
        reject_rbl_client zen.spamhaus.org,
325
        reject_non_fqdn_sender,
326
        reject_non_fqdn_recipient,
327
        reject_unknown_sender_domain,
328
        reject_unauth_destination
329
}}}
330
331
=== CLI script to massive account creation ===