PostfixAdminInstall » Cronologia » Versione 23
Amministratore Truelite, 24-09-2009 17:24
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 | 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}}}: |
117 | 7 | Amministratore Truelite | {{{ |
118 | virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf |
||
119 | virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf |
||
120 | virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf |
||
121 | 20 | Amministratore Truelite | virtual_mailbox_base = /var/mail/vmail |
122 | 21 | Amministratore Truelite | virtual_minimum_uid = 1001 |
123 | 7 | Amministratore Truelite | virtual_transport = virtual |
124 | virtual_uid_maps = static:vmail |
||
125 | virtual_gid_maps = static:vmail |
||
126 | }}} |
||
127 | e si dovranno 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: |
||
128 | {{{ |
||
129 | user = postfixadmin |
||
130 | 9 | Amministratore Truelite | password = passsegretaedifficile |
131 | 7 | Amministratore Truelite | hosts = localhost |
132 | dbname = postfixadmin |
||
133 | query = SELECT goto FROM alias WHERE address='%s' AND active = 1 |
||
134 | }}} |
||
135 | il secondo consente di ottenere l'elenco dei domini mantenuti nel database, e deve essere qualcosa del tipo: |
||
136 | {{{ |
||
137 | user = postfixadmin |
||
138 | 9 | Amministratore Truelite | password = passsegretaedifficile |
139 | 7 | Amministratore Truelite | hosts = localhost |
140 | dbname = postfixadmin |
||
141 | query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '0' and active = '1' |
||
142 | }}} |
||
143 | 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: |
||
144 | {{{ |
||
145 | user = postfixadmin |
||
146 | 9 | Amministratore Truelite | password = passsegretaedifficile |
147 | 7 | Amministratore Truelite | hosts = localhost |
148 | dbname = postfixadmin |
||
149 | query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1 |
||
150 | }}} |
||
151 | |||
152 | 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: |
||
153 | {{{ |
||
154 | relay_domains = $mydestination, proxy:mysql:/etc/postfix/mysql_relay_domains_maps.cf |
||
155 | 1 | Amministratore Truelite | }}} |
156 | dove in {{{mysql_relay_domains_maps.cf}}} dovrà essere qualcosa del tipo: |
||
157 | {{{ |
||
158 | user = postfixadmin |
||
159 | password = passsegretaedifficile |
||
160 | hosts = localhost |
||
161 | dbname = postfixadmin |
||
162 | query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1' and active = '1' |
||
163 | }}} |
||
164 | |||
165 | 16 | Amministratore Truelite | === Uso di vacation === |
166 | |||
167 | 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: |
168 | {{{ |
||
169 | groupadd -g 65501 vacation |
||
170 | useradd -g 65501 -u 65501 -c Vacation -s /sbin/nologin -d /nonexistent vacation |
||
171 | }}} |
||
172 | 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: |
||
173 | {{{ |
||
174 | mkdir /var/spool/vacation |
||
175 | chown -R vacation.vacation /var/spool/vacation |
||
176 | chmod o-xr /var/spool/vacation |
||
177 | }}} |
||
178 | infine si dovrà copiare lo script perl fornito con [http://postfixadmin.sourceforge.net/ PostfixAdmin] nella suddetta directory e renderlo eseguibile: |
||
179 | {{{ |
||
180 | cd /usr/share/doc/postfixadmin/examples/VIRTUAL_VACATION/ |
||
181 | zcat vacation.pl.gz > /var/spool/vacation/vacation.pl |
||
182 | chmod 700 /var/spool/vacation/vacation.pl |
||
183 | }}} |
||
184 | per farlo funzionare sono però necessari una serie di moduli per il perl, che si dovranno installare con: |
||
185 | {{{ |
||
186 | aptitude install libemail-valid-perl libmime-encwords-perl libmime-perl \ |
||
187 | libmail-sender-perl liblog-log4perl-perl |
||
188 | }}} |
||
189 | inoltre si dovranno modificare le prime righe dello script dove sono impostate le credenziali di accesso al database, con qualcosa del genere: |
||
190 | {{{ |
||
191 | our $db_type = 'mysql'; |
||
192 | our $db_host = 'localhost'; |
||
193 | our $db_username = 'postfixadmin'; |
||
194 | our $db_password = 'passsegretaedifficile'; |
||
195 | our $db_name = 'postfixadmin'; |
||
196 | |||
197 | our $vacation_domain = 'autoreply.miodominio.it'; |
||
198 | 1 | Amministratore Truelite | }}} |
199 | 16 | Amministratore Truelite | |
200 | 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}}}: |
||
201 | {{{ |
||
202 | vacation unix - n n - - pipe |
||
203 | flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} -- ${recipient} |
||
204 | }}} |
||
205 | dopo di che si dovrà utilizzarlo per il trasporto delle email indirizzate ad {{{autoreply.miodominio.it}}}, definendo dentro {{{/etc/postfix/transport}}}: |
||
206 | {{{ |
||
207 | autoreply.miodominio.it vacation: |
||
208 | }}} |
||
209 | ed infine aggiungere a {{{/etc/postfix/main.cf}}}: |
||
210 | {{{ |
||
211 | transport_maps = hash:/etc/postfix/transport |
||
212 | }}} |
||
213 | fatto questo si dovrà fare usare a Postfix la nuova configurazione con: |
||
214 | {{{ |
||
215 | postmap /etc/postfix/transport |
||
216 | postfix reload |
||
217 | }}} |
||
218 | |||
219 | |||
220 | 10 | Amministratore Truelite | === Configurare Dovecot per Postfixadmin === |
221 | |||
222 | 15 | 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: |
223 | 10 | Amministratore Truelite | {{{ |
224 | aptitude install dovecot-imapd dovecot-pop3d |
||
225 | }}} |
||
226 | 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}}}: |
227 | 22 | Amministratore Truelite | {{{ |
228 | 23 | Amministratore Truelite | mail_location = maildir:/var/mail/vmail/%d/%n |
229 | 10 | Amministratore Truelite | mail_privileged_group = vmail |
230 | first_valid_uid = 106 |
||
231 | }}} |
||
232 | (dove 106 è l'uid dell'utente {{{vmail}}}). |
||
233 | |||
234 | 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: |
||
235 | {{{ |
||
236 | passdb sql { |
||
237 | args = /etc/dovecot/dovecot-mysql.conf |
||
238 | } |
||
239 | userdb sql { |
||
240 | args = /etc/dovecot/dovecot-mysql.conf |
||
241 | } |
||
242 | }}} |
||
243 | ed infine dovremo inserire nel file {{{/etc/dovecot/dovecot-mysql.conf}}} le necessarie configurazione per l'accesso al database ed ai relativi dati, con un contenuto del tipo di: |
||
244 | {{{ |
||
245 | driver = mysql |
||
246 | connect = host=localhost dbname=postfixadmin user=postfixadmin password=passsegretaedifficile client_flags=0 |
||
247 | default_pass_scheme = MD5 |
||
248 | 14 | Amministratore Truelite | user_query = SELECT maildir, 106 AS uid, 61 AS gid FROM mailbox WHERE username = '%u' |
249 | 1 | Amministratore Truelite | password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1' |
250 | }}} |
||
251 | 14 | Amministratore Truelite | (dove 106 e 61 sono uid e gid dell'utente {{{vmail}}}). |
252 |