Progetto

Generale

Profilo

Actions

PostfixAdminInstall » Cronologia » Versione 34

« Precedente | Versione 34/48 (diff) | Successivo »
Amministratore Truelite, 10-12-2010 13:07


TracNav(TOC)

Installare e configurare Postfixadmin


h3. Installazione di Postfixadmin

<pre>
<pre>
dpkg -f postfixadmin_*.deb Depends
</pre>
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:
<pre>
aptitude install dbconfig-common wwwconfig-common  \
      libapache2-mod-php5 php5 php5-imap php5-mysql \
      mysql-client mysql-server postfix-mysql
</pre>

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:
<pre>
mysqladmin -u root -p create postfixadmin
mysql -u root -p
mysql> grant create, select, insert, update, delete, lock, index, alter, drop 
             on postfixadmin.* to 'postfixadmin'@'localhost' 
             identified by 'passsegretaedifficile';
mysql> flush privileges;
mysql> \q
</pre>
dopo di che si potrà installare il pacchetto con:
<pre>
dpkg -i postfixadmin_*.deb 
</pre>
<pre>

<pre>
<pre>
$CONF['configured'] = true;
...
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'passsegretaedifficile';
$CONF['database_name'] = 'postfixadmin';
</pre>
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. 

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:
<pre>
[[SetEnv]] DB_USER "postfixadmin" 
[[SetEnv]] DB_PASS "passsegretaedifficile" 
</pre>
che poi si riusano nel file di configurazione con:
<pre>
$CONF['database_user'] = $_SERVER['DB_USER'];
$CONF['database_password'] = $_SERVER['DB_PASS'];
</pre>

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:
<pre>
http://IP.DEL.MIO.SERVER/postfixadmin/setup.php
</pre>
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:
<pre>
$CONF['setup_password'] = 'changeme';
</pre>
<pre>

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:
<pre>
cd /etc/postfixadmin/
mv config.inc.php config.inc.php.orig
sed -e 's/change-this-to-your.domain.tld/miodominio.it/g' config.inc.php.orig > config.inc.php
</pre>
<pre>
<pre>
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
</pre>
se poi si vogliono usare le quote occorrerà impostare:
<pre>
$CONF['quota'] = 'YES';
</pre>
<pre>
<pre>
$CONF['vacation'] = 'YES';
$CONF['vacation_domain'] = 'autoreply.miodominio.it'
</pre>
<pre>

Si possono poi cambiare le seguenti impostazioni per inserire dei default più adatti alle proprie esigenze: 
<pre>
$CONF['default_language'] = 'it';
$CONF['min_password_length'] = 6;
$CONF['aliases'] = '10';
$CONF['mailboxes'] = '10';
$CONF['maxquota'] = '10';
</pre>

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:
<pre>
$CONF['alias_domain'] = 'NO';
</pre>

h3. Configurare Postfix per Postfixadmin

<pre>
<pre>
mkdir /var/mail/vmail
useradd -d /var/mail/vmail vmail
chown vmail:vmail /var/mail/vmail/
chmod o-xr /var/mail/vmail/
</pre>

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:
<pre>
#mailbox_command = procmail -a "$EXTENSION" 
</pre>

<pre>
<pre>
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_base = /var/mail/vmail
virtual_minimum_uid = 106
virtual_transport = virtual
virtual_uid_maps = static:106
virtual_gid_maps = static:61
</pre>
<pre>

<pre>
<pre>
user = postfixadmin
password = passsegretaedifficile
hosts = localhost
dbname = postfixadmin
query = SELECT goto FROM alias WHERE address='%s' AND active = 1
</pre>
il secondo consente di ottenere l'elenco dei domini mantenuti nel database, e deve essere qualcosa del tipo:
<pre>
user = postfixadmin
password = passsegretaedifficile
hosts = localhost
dbname = postfixadmin
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '0' and active = '1'
</pre>
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:
<pre>
user = postfixadmin
password = passsegretaedifficile
hosts = localhost
dbname = postfixadmin
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
</pre>

<pre>
<pre>
relay_domains = $mydestination, proxy:mysql:/etc/postfix/mysql_relay_domains_maps.cf
</pre>
<pre>
<pre>
user = postfixadmin
password = passsegretaedifficile
hosts = localhost
dbname = postfixadmin
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '1' and active = '1'
</pre>

Poiché questi file contengono una password in chiaro si verifichi che non siano leggibili da chiunque ed eventualmente si sistemino adeguatamente i permessi con:
<pre>
chgrp postfix /etc/postfix/mysql_*
chmod 640 /etc/postfix/mysql_*
</pre>

<pre>

h3. Uso di vacation con Postfix e Postfixadmin

<pre>
<pre>
groupadd -g 65501 vacation
useradd -g 65501 -u 65501 -c Vacation -s /sbin/nologin -d /nonexistent vacation
</pre>
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:
<pre>
mkdir /var/spool/vacation
chown -R vacation.vacation /var/spool/vacation
chmod o-xr /var/spool/vacation 
</pre>
infine si dovrà copiare lo script perl fornito con "PostfixAdmin":http://postfixadmin.sourceforge.net/ nella suddetta directory e renderlo eseguibile:
<pre>
cd /usr/share/doc/postfixadmin/examples/VIRTUAL_VACATION/
zcat vacation.pl.gz > /var/spool/vacation/vacation.pl
chmod 700 /var/spool/vacation/vacation.pl
chown vacation.vacation /var/spool/vacation/vacation.pl
</pre>
per farlo funzionare sono però necessari una serie di moduli per il perl, che si dovranno installare con:
<pre>
aptitude install libemail-valid-perl libmime-encwords-perl libmime-perl \
         libmail-sender-perl liblog-log4perl-perl libmail-sendmail-perl
</pre>
inoltre si dovranno modificare le prime righe dello script dove sono impostate le credenziali di accesso al database, con qualcosa del genere:
<pre>
our $db_type = 'mysql';
our $db_host = 'localhost';
our $db_username = 'postfixadmin';
our $db_password = 'passsegretaedifficile';
our $db_name     = 'postfixadmin';

our $vacation_domain = 'autoreply.miodominio.it';
</pre>

<pre>
<pre>
vacation    unix  -       n       n       -       -       pipe
  flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} -- ${recipient}
</pre>
<pre>
<pre>
autoreply.miodominio.it       vacation:
</pre>
<pre>
<pre>
transport_maps = hash:/etc/postfix/transport
</pre>
fatto questo si dovrà fare usare a Postfix la nuova configurazione con:
<pre>
postmap /etc/postfix/transport
postfix reload
</pre>

h3. Configurare Dovecot per Postfixadmin

<pre>
<pre>
aptitude install dovecot-imapd dovecot-pop3d ntp
</pre>
<pre>
<pre>
mail_location = maildir:/var/mail/vmail/%d/%n
mail_privileged_group = vmail
first_valid_uid = 106
</pre>
<pre>

<pre>
<pre>
  passdb sql {
    args = /etc/dovecot/dovecot-mysql.conf
  }
  userdb sql {
    args = /etc/dovecot/dovecot-mysql.conf
  }
</pre>
<pre>
<pre>
driver = mysql
connect = host=localhost dbname=postfixadmin user=postfixadmin password=passsegretaedifficile client_flags=0
default_pass_scheme = MD5
user_query = SELECT maildir, 106 AS uid, 61 AS gid FROM mailbox WHERE username = '%u'
password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1' 
</pre>
<pre>

h3. Autenticazione SMTP

<pre>
<pre>
socket listen {
        client {
        path = /var/spool/postfix/private/auth
        mode = 0660
        user = postfix
        group = postfix
        }
}
</pre>
<pre>
<pre>
auth default {
   ...
   mechanisms = plain login
   ...
}

</pre>
<pre>
<pre>
# ls /var/spool/postfix/private/auth -l
srw-rw---- 1 postfix postfix 0 29 set 18:59 /var/spool/postfix/private/auth
</pre>

<pre>
<pre>
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
</pre>

<pre>
<pre>
smtpd_sasl_auth_enable = yes
smtp_sasl_application_name = smtpd
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes
</pre>
mentre l'uso di TLS con le righe seguenti:
<pre>
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
</pre>
<pre>
<pre>
smtpd_recipient_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_rbl_client zen.spamhaus.org,
        reject_non_fqdn_sender,
        reject_non_fqdn_recipient,
        reject_unknown_sender_domain,
        reject_unauth_destination
</pre>

h3. CLI script to massive account creation

Aggiornato da Amministratore Truelite quasi 14 anni fa · 34 revisions