Progetto

Generale

Profilo

PostfixAdminInstall » Cronologia » Versione 34

Amministratore Truelite, 10-12-2010 13:07

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