_Ecco la seconda parte della guida al buon server mail. Come preannunciato nella <atitle="BgLUG"href="http://bglug.it/2008/07/24/postfix-nirvana-parte-i/"target="_blank">prima parte</a>, qui parleremo dei programmi accessori che permettono di creare facilmente mailbox virtuali e di rendere la posta (e non solo) disponibile all'utente tramite una interfaccia web avanzata. Voglio anche qui ringraziare Manuel per il decisivo contributo alla realizzazione della guida._
È giunto il momento di installare Postfixadmin, che permette di gestire domini virtuali, mailboxes e alias tramite una interfaccia web costruita in PHP. Postifxadmin è pacchettizzato in Debian Etch, quindi l'installazione dei file avviene con un semplice "`apt-get install postfixadmin`".
L'operazione successiva è la creazione del database e dell'utente amministratore. È possibile farlo semplicemente con <atitle="phpMyAdmin"href="http://www.phpmyadmin.net"target="_blank">phpMyAdmin</a>, oppure direttamente tramite il prompt di MySQL con i comandi:
sostituendo gli opportuni valori, ed inserendo poi gli stessi valori nel file di configurazione `/etc/postfixadmin/config.inc.php`. Nello stesso file, oltre ai dati del database, è necessario cambiare il valore di `$CONF['configured']` da _false_ a _true_ per poter inizializzare l'applicazione. Io preferisco avere le varie maidir degli utenti suddivise in directory separate per dominio, per cui imposto:
A questo punto imposto un VirtualHost sul server web che punti alla directory del programma, nel caso di Debian `/usr/share/postfixadmin/`, dirigo il browser su `http://INDIRIZZO_DI_POSTFIXADMIN/setup.php` e, dopo la creazione delle tabelle, mi appare una lista di 'OK' e il form per la creazione dell'utente amministratore. Lo inserisco e posso eseguire il login.
Postfixadmin offre all'utente la possibilità di impostare gli inoltri automatici dei messaggi e un autorisponditore (Vacation). Mentre il primo è già abilitato, per abilitare il secondo dobbiamo effettuare alcune modifiche.
Quindi creo una directory di base per l'autorisponditore, vi copio il file `vacation.pl`, che in Debian si trova in `/usr/share/doc/postfixadmin/VIRTUAL_VACATION/`, e cambio i permessi di tutto:
mentre il terzo non è incluso nei repository di _Debian Etch_. È però possibile scaricare il pachetto dai repository di _Debian Lenny_ (testing) ed installarlo senza incontrare problemi di dipendenze con:
In ultimo dobbiamo definire il servizio _vacation_ e fare in modo che i messaggi indirizzari al domino _vacation.nomedominio_ vi siano girati. Per fare questo aggiungo al file `/etc/postfix/master.cf` le righe:
che indicano rispettivamente gli indirizzi delle mappe del database, l'indirizzo della directory dove verrannno create le mailbox virtuali, e l'utente e gruppo proprietari delle mailbox. L'utente e il gruppo devono esistere nel file /etc/passwd:
Ora sono pronto a inserire, tramite l'interfaccia di Postfixadmin, il mio primo dominio virtuale e i relativi alias e mailboxes. Dopo averlo riavviato Postfix è pronto a ricevere mail per gli account impostati. Posso testare il tutto in locale con telnet:
È possibile attivare facilmente i server imap, imaps, pop3 e pop3s aggiungendo a `/etc/dovecot/dovecot.conf`:
<pre>protocols = imap imaps pop3 pop3s</pre>
ed eventualmente modificando le sezioni dedicate nello stesso file. Per fare in modo che Dovecot utilizzi le mailbox virtuali modifico seguenti righe di
Dovecot fornisce anche un programma per la consegna dei messaggi agli utenti virtuali, chiamato Dovecot **L**ocal **D**elivery **A**gent, che può sostituire _virtual_ fornito dal Postfix, con alcune funzionalità aggiuntive, come l'indicizzazione delle mailbox, l'utilizzo di quote utente e di Sieve tramite appositi plugin. Per abilitarlo devo aggiungere al file `/etc/dovecot/dovecot.conf` le righe:
<pre>protocol lda {
..
# UNIX socket path to master authentication server to find users.
#auth_socket_path = /var/run/dovecot/auth-master
}
auth default {
..
socket listen {
# Note that we're setting a master socket. SMTP AUTH for Postfix uses client sockets.
master {
path = /var/run/dovecot/auth-master
# Auth master socket can be used to look up userdb information for
# given usernames. This probably isn't very sensitive information
# for most systems, but still try to restrict the socket access if possible.
mode = 0600
user = vmail # User running deliver
group = vmail # Or alternatively mode 0660 + deliver user in this group
Con queste impostazioni _deliver_, che funziona da utente non privilegiato, genera un errore. Per evitarlo nella <atitle="Dovecot MarkMail"href="http://dovecot.markmail.org/"target="_blank">mailing list</a> di Dovecot consigliano di impostare _deliver_ a SUID con il comando:
<pre># chmod u+s /usr/lib/dovecot/deliver</pre>
Riavvio Dovecot e Postfix, e alla prima ricezione posso trovare nei log qualcosa di simile a questo:
Manca ora l'ultimo pezzo, l'interfaccia web per gli utenti tramite Horde, un framework con numerosi moduli in PHP. Anche questa applicazione è pacchettizzata da Debian, e l'installazione è banale se si seguono le indicazioni del <atitle="Debian"href="http://wiki.debian.org/Horde"target="_blank">Wiki</a>.
Avendo cura di modificare in `create.mysql.sql.gz` i dati di accesso dell'amministratore di Horde. Fatto ciò puntando il browser su `http://nomemacchina.nomedominio/horde3` compare la maschera iniziale di Horde. Per il debug di eventuali problemi posso puntare il browser su: `http://nomemacchina.nomedominio/horde3/test.php`
La configurazione di Horde3 avviene creando nelle directory sotto `/etc/horde/horde3` i file config.php e config.php.bak con maschera dei permessi 777, configurando poi tramite intefaccia web le opzioni nella maschera in `Amministrazione-->Impostazione-->Horde`, salvando e riportando i permessi dei due file a 644 e 700 rispettivamente.
Per un corretto funzionamento è indispensabile impostare correttamente i parametri nelle maschere _Database_, _Authentication_ e _Preference System_
Horde mette a disposizione, tra gli altri, i seguenti moduli:
Tutti questi moduli sono presenti nei repository Debian ad eccezione di MIMP, che può essere facilmente installato per Debian con le seguenti operazioni:
Queste due scelte permettono di autenticarsi con le credenziali create in _Postfixadmin_ ed effettualre il _Login_ una sola volta anzichè dover inserire due volte i dati per leggere la posta. In questo caso è importante creare un utente amministratore e inserire il suo nome nella prima casella.
**IMP**
Modifico il file `/etc/horde/imp4/servers.php` inserendo i dati del o dei server mail. Nel file originale sono contenuti diversi esempi, ricordatevi di commentare o cancellare quelli non necessari.
Nel file `/etc/horde/imp4/mime_drivers.php` modifico la linea:
Questo mi permette di vedere in linea le mail composte in HTML, anche se non meriterebbero 😉 È una scelta giustamente sconsigliata, ma altrimenti le mail HTML vengono formattate in modo impossibile da leggere.
**Ingo**
Nel file `/etc/horde/ingo1/backends.php` specifico quale backend utilizzare per i filtri. Le scelte possibili sono _null_ (applica le regole su richiesta), o regole per _Maildrop_, _Procmail_ o _Sieve_. La scelta più semplice è:
È un ottimo programma per ritirare mail da server POP3 o IMAP e consegnarla al server locale. Sia Postfixadmin che Horde hanno dei plugin che gestiscono fetchmail in modi leggermente diversi. Con Horde l'utente inserisce i dettagli del server remoto e scarica la posta mentre è collegato, mentre con Postfixadmin in base ai dati inseriti dall'amministratore nel database vengono creati dei file `~/.fetchmailrc` al volo che possono essere usati inserendo in crontab lo script `fetchmail.pl`.
Purtroppo entrambi hanno due limitazioni che me ne impediscono l'utilizzo: non implementano [Freepops][7] e non permettono l'uso di autenticazioni SSL. Freepops è un programmino che permette di scaricare le mail diretamente dalla webmail, aggirando la limitazione all'uso del server POP per gli abbonamenti free adottato, ad esempio, da Libero e Inwind. L'uso del protocollo SSL è indispensabile invece per scaricare mail dai server di Gmail o Autistici/Inventati.
La versione di Fetchmail pacchettizzata da Debian ci permette di avviare il programma in modalità demone con il tipico script `/etc/init.t/fetchmail`. Il pacchetto di Freepops purtroppo fa riferimento ad una versione troppo datata e non più funzionante, e bisogna quindi installare la versione offerta dai [Backports][8]. Una volta installati entrambi avremo il demone _freepopsd_ in ascolto alla porta 2000 (di default), e possiamo modificare il file `/etc/fetchmailrc` aggiungendo le sezioni relative ai vari server. Alcuni utilizzi tipici sono:
Normalmente le mail spedite da un server casalingo con IP dinamico vengono rifiutate per motivi di sicurezza, e si è quindi costretti ad usare un server che vi faccia da _relay_, che vi permetta cioè di spedire mail attraverso il suo servizio. Vi dovesse capitare di non avere a disposizione un relay, o di volerne utilizzare uno alternativo, potete usufruire del servizio offerto da Gmail, il quale però richiede un'autenticazione sicura via SSL. Per implementarla aggiungo o modifico le seguenti righe di `/etc/postfix/main.cf`: