back to top

Installare Postfix e Postfix Admin

Sono tanti i software che dovremo installare per mettere in piedi un mail server completo. Iniziamo con i pacchetti principali partendo da Postfix:

sudo apt-get install postfix

Ci verrà chiesto il tipo di configurazione da assegnare a postfix, selezioniamo Sito internet.

configurazione postfix

La richiesta successiva riguarda il mail name che deve essere anche il fully qualified domain name (FQDN). Come avvisato nelle note iniziali metteremo il nome mail.esempio.com, voi potete quindi sostituirlo con il vostro.

dominio postfix

E’ importante includere anche il pacchetto postfix-mysql che fornisce il supporto a postfix per interfacciarsi con MySQL. Ovviamente, affinché tutto funzioni, è necessario che Apache, PHP e MySQL siano installati sul server, se non lo abbiamo ancora fatto (non avete letto le lezioni precedenti della nostra guida???) possiamo installare tutto insieme:

sudo apt-get install dbconfig-common wwwconfig-common apache2 libapache2-mod-php5 php5 php5-common php5-imap php5-mysql mysql-client mysql-server postfix-mysql

Quando viene richiesta inseriamo la password dell’utente root, amministratore di MySQL:

password mysql

Ubuntu richiede di abilitare IMAP. Facciamo quindi quanto necessario e riavviamo poi apache2:

sudo php5enmod imap
sudo service apache2 restart

Ora eseguiamo l’accesso a MySQL per andare a creare il database postfix e l’utente che lo gestirà. Accediamo al DBMS digitando:

mysql -u root -p

ed inseriamo la password dell’utente root di MySQL impostata precedentemente.

Tramite le seguenti righe di istruzioni andiamo a creare il database postfix e l’utente postfixuser con la sua relativa password:

mysql> CREATE DATABASE postfix;
mysql> CREATE USER 'postfixuser'@'localhost' IDENTIFIED BY 'mia_password';
mysql> GRANT ALL PRIVILEGES ON `postfix`.* TO 'postfixuser'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit;

come vedete abbiamo dato all’utente postfixuser tutti i permessi per il database postfix, sarà pertanto questo utente quello incaricato a compiere le operazioni all’interno delle tabelle che dovremo specificare più avanti.

Installare Postfix Admin

Postfix Admin è un software opensource con interfeccia web per la gestione delle nostre caselle di posta, domini e alias. Il suo scopo è quindi quello di rendere più semplice e immediata la gestione delle funzioni del nostro server di posta, potremo infatti utilizzare un’intuitiva interfaccia grafica senza dover creare tutto da terminale.

Per prima cosa scarichiamo l’ultima versione dal sito sourceforge, poi scompattiamo il file, rinominiamo la cartella (per comodità) e spostiamola dove Apache2 possa leggerla:

sudo wget http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.93/postfixadmin-2.93.tar.gz
sudo tar -xf postfixadmin-2.93.tar.gz
sudo rm postfixadmin-2.93.tar.gz
sudo mv postfixadmin-2.93/ postfixadmin
sudo mv postfixadmin /var/www/html

Andiamo ora a editare il file di configurazione di Postfix Admin. Vedremo di seguito le modifiche necessarie e quelle opportune per adattare il software alle nostre esigenze.

Come al solito affidiamoci all’editor nano per le modifiche:

sudo nano /var/www/html/postfixadmin/config.inc.php

Come prima cosa dobbiamo assegnare il valore true al parametro configured per iniziare le modifiche.

$CONF['configured'] = true;

Impostiamo l’italiano come lingua di default

$CONF['default_language'] = 'it';

Come detto, gli utenti saranno virtuali, quindi presenti solo su database MySQL. Dal momento però che sarà Postfix Admin a gestirli, nella sua configurazione dobbiamo dargli l’accesso al database "postfix" creato in precedenza:

$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixuser';
$CONF['database_password'] = 'mia_password';
$CONF['database_name'] = 'postfix';

Impostiamo l’indirizzo mail dell’amministratore. Come vedremo più avanti verrà utilizzato come indirizzo mittente nelle mail di benvenuto che creeranno le caselle di posta degli utenti:

$CONF['admin_email'] = '[email protected]';

Impostiamo gli alias di default:

$CONF['default_aliases'] = array (
    'abuse' => '[email protected]',
    'hostmaster' => '[email protected]',
    'postmaster' => '[email protected]',
    'webmaster' => '[email protected]'
);

Tramite i parametri domain_path e domain_in_mailbox andiamo a impostare la struttura dell’archiviazione mail. Impostandoli come segue tutte le caselle saranno racchiuse dentro la directory recante il nome del dominio.

$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';

Definiamo ulteriori parametri come il numero di alias e il numero di caselle mail. Se vogliamo averne un numero illimitato impostiamo entrambi i valori a 0:

$CONF['aliases'] = '0';
$CONF['mailboxes'] = '0';

Può essere utile anche dare un limite, o quota, alla dimensione di una singola casella di posta o anche di un intero dominio. I valori sono espressi in MB. In questo esempio abbiamo abilitato la quota e settato il limite a 2GB per una singola casella di posta e 100GB per il dominio:

$CONF['maxquota'] = '2000';
$CONF['domain_quota_default'] = '100000';
$CONF['quota'] = 'YES';

Non è necessario cambiare altre impostazioni, ad ogni modo ciascuna istruzione è preceduta da una breve descrizione che ne delinea lo scopo nel caso si desideri qualche altro tipo di funzionalità.

Dopo aver salvato le modifiche e chiuso il file config.inc.php, è necessario anche cambiare i permessi di accesso alla directory templates_c:

sudo chmod -R 777 /var/www/html/postfixadmin/templates_c

La legge del buon sistemista Linux ci dice di non tenere mai 777, ma in questo cosa faremo un’eccezione. L’alternativa sarebbe quella di disabilitare AppArmor, un modulo di sicurezza installato di default sul nostro server Ubuntu. Ai fini della nostra guida direi che non è il caso di addentrarci in ulteriori complicazioni.

Colleghiamoci ora via browser al seguente indirizzo per continuare la configurazione:

http://ip_del_server/postfixadmin/setup.php

Da qui vediamo se tutto è andato bene o è necessario compiere operazioni ulteriori.

checker

Se tutto è OK, Postfix Admin creerà nel MySQL la struttura del database necessario al suo funzionamento. Noi gli abbiamo dato la password di accesso, quindi ci penserà lui a creare le tabelle che gli servono. In fondo alla pagina dobbiamo impostare la password di setup (la password deve contenere almeno 2 cifre):

setup

Dopo averla digitata facciamo click su "Generate password hash". Copiamo la password hash che ci viene fornita e torniamo a riaprire il file:

sudo nano /var/www/html/postfixadmin/config.inc.php

modifichiamo il seguente parametro incollando la hash copiata:

$CONF['setup_password'] = '80e552a7b13c7385c7203e7f4cdeb224:23c706e8073ad0d87ba7814426b105de02c29182';

Salviamo e chiudiamo il file. In questo modo abbiamo impostato una password di setup non leggibile neanche aprendo il file di configurazione. Torniamo ora sul browser e compiliamo i seguenti campi:

account superadmin

In "Setup password" inseriamo la password di setup e compiliamo i restanti campi con l’indirizzo mail dell’amministratore di Postfix Admin e la relativa password.

A questo punto, come possiamo vedere, anche l’utente amministratore è stato creato e possiamo accedere dalla pagina:

http://ip_del_server/postfixadmin/login.php

utilizzando le credenziali appena create.

conferma

Aspettiamo però a fare l’accesso, rimandiamo la creazione del dominio e degli utenti al termine della configurazione dell’intero mailserver.

Configurare le caselle di posta virtuali

Occupiamoci ora dello stoccaggio della posta, andando per prima cosa a creare una directory all’interno della quale contenere tutte le mailbox degli utenti. La proprietà di tale directory sarà di un singolo utente che chiameremo vmail.

Non ci sono percorsi obbligati dove andare a creare la nostra directory, in caso avessimo partizionato il disco, accertiamoci solamente che la partizione scelta abbia spazio a sufficienza. In questo caso creiamo la directory vmail così:

sudo mkdir /var/mail/vmail

Creiamo anche l’omonimo utente, assegnandogli (con l’opzione -d) la directory appena creata come sua home directory:

sudo useradd -d /var/mail/vmail vmail

assegnamogli poi la proprietà di tale directory:

sudo chown vmail:vmail /var/mail/vmail/

e modifichiamo opportunamente i permessi:

sudo chmod o-xr /var/mail/vmail/

Terminate queste operazioni, il passaggio successivo sarà quello di configurare Postfix affinché utilizzi la directory vmail e, soprattutto, si affidi a domini, utenti e alias virtuali opportunamente memorizzati su database MySQL.

Prima di procedere appuntiamoci lo UID (identificativo dello username) e il GID (identificativo del gruppo) dell’utente vmail che abbiamo creato. Questi dati ci verranno richiesti nelle successive configurazioni. Per avere il UID:

id -u vmail

Per avere il GID:

id -g vmail

Iniziamo la nostra configurazione di Postfix andando ad editare il file main.cf:

sudo nano /etc/postfix/main.cf

Inseriamo le seguenti righe di istruzione:

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 = 1001
virtual_transport = virtual
virtual_uid_maps = static:1001
virtual_gid_maps = static:1001

Salviamo e chiudiamo il file.

Come si vede abbiamo dato istruzione per utilizzare alcuni file di configurazione, andiamo quindi a scriverli.

Il primo file, mysql_virtual_alias_maps.cf, è quello che consente di utilizzare gli alias definiti nel database, creiamolo:

sudo nano /etc/postfix/mysql_virtual_alias_maps.cf

Scriviamo al suo interno i dati di accesso al database Postfix creato su MySQL e la query dedicata:

user = postfixuser
password = mia_password
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

Il secondo file, mysql_virtual_domains_maps.cf, consente di ottenere l’elenco dei domini mantenuti nel database. Anche qui andiamo a crearlo:

sudo nano /etc/postfix/mysql_virtual_domains_maps.cf

E inseriamo il seguente contenuto:

user = postfixuser
password = mia_password
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = '0' and active = '1'

Il terzo file, 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. Creiamolo:

sudo nano /etc/postfix/mysql_virtual_mailbox_maps.cf

E inseriamo il contenuto:

user = postfixuser
password = mia_password
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'

Con questo abbiamo terminato le prime configurazioni di postfix.

Pubblicitร 
Articolo precedente
Articolo successivo