TAGS CLOUD
Incrementa dimensioniDecrementa dimensioni
Server e-mail dalla A alla Z
Basta poco per creare e gestire uno o più domini di posta elettronica garantendo allo stesso tempo sicurezza e privacy degli utenti che utilizzano il servizio. Ecco come
(pagina 1 di 2)
Uno dei servizi più utilizzati su Internet è la posta elettronica, e non solo da parte dei singoli utenti. Oramai, anche all’interno delle aziende è diventata importante quasi quanto il telefono e rappresenta un servizio essenziale dell’intero sistema produttivo per quanto concerne la comunicazione. Generalmente, questo tipo di servizio viene offerto dai provider Internet, i cosiddetti ISP (Internet Services Provider) o da altre organizzazioni dedicate. In realtà, nessuno ci obbliga ad appoggiarci a strutture esterne e con un po’ di lavoro e un investimento praticamente nullo è possibile creare e gestire in proprio un servizio di posta sicuro, efficiente e facile da gestire.
Quando il “fai da te” conviene
Le ragioni che spingono una organizzazione a creare da zero un servizio di posta sono molteplici e dipendono da esigenze “specifiche”. Nonostante ciò, è possibile individuare i fattori più importanti riassumendoli in questo breve elenco:
  • Posta nella Intranet  - se gran parte della corrispondenza viene veicolata in account utilizzati solo all’interno della rete locale, è inutile sprecare banda per inviarla e riceverla su server esterni;
  • Garanzia della privacy - su server gestiti da terzi, nessuno può veramente garantire la riservatezza della nostra posta. Se la privacy è una necessità, la soluzione più semplice e disporre di un proprio server;
  • Servizi aggiuntivi - con un server gestito in proprio abbiamo la libertà di cambiare il software in ogni momento per cercare sempre la soluzione migliore, magari in grado di fornire anche servizi aggiuntivi come antispam e webmail;
  • Vendita del servizio  - gli strumenti utilizzati, in particolare in questo caso specifico, ci consentono di configurare un sistema di gestone delle e-mail professionale, per cui aprono la possibilità di dedicarci alla fornitura del servizio di posta anche a terzi.
Componenti del sistema
Fatte le dovute premesse, è chiaro che il nostro obiettivo è realizzare un server per la gestione di più domini di posta elettronica. In particolare, il sistema sarà composto dalle seguenti applicazioni perfettamente in grado di interfacciarsi tra loro:
  • Postfix  – questo componente, detto MTA (Mail Transfer Agent) ha il ruolo di ricevere la posta destinata ai domini gestiti dal sistema e depositarla nelle mailbox (caselle di posta) degli utenti;
  • Dovecot  – questo è il server incaricato di fornire agli utenti i servizi POP3 e IMAP per la ricezione della posta;
  • Postfix Admin  – si tratta di un’applicazione PHP che si appoggia a MySQL o PostgreSQL e permette di gestire il sistema di posta tramite interfaccia web. Il database utilizzato contiene le informazioni necessarie a Postfix e Dovecot per svolgere le funzioni di invio e lettura delle e-mail (http://postfixadmin.sourceforge.net).
Oltre a questi elementi, è necessario che sul sistema siano installati e attivi un server web, tipicamente Apache, e uno dei due database server supportati, in genere MySQL. Questa, in genere, è la configurazione più diffusa.
Il database prima di tutto
Il software usato per la gestione dell’intero sistema influenza la configurazione dei servizi di posta in uscita ed entrata. Nel nostro caso abbiamo scelto di usare Postfix Admin. Consigliamo vivamente di usare l’ultima release candidate, in quanto è molto più stabile della ormai obsoleta versione 2.1.x. Dopo aver decompresso l’archivio, la prima operazione da svolgere è installare il database. In particolare, sono necessari due utenti, uno dedicato alla gestione, quindi l’amministratore, e l’altro con solo i privilegi in lettura per Postfix e Dovecot. Gli utenti da creare sono rispettivamente “postfixadmin” e “postfix”. La creazione può essere eseguita dalla console di MySQL:
CREATE USER ‘postfix’@’localhost’ IDENTIFIED BY ‘pass1’;
CREATE USER ‘postfixadmin’@’localhost’ IDENTIFIED
BY ‘pass2’;
Dopo gli utenti, possiamo creare l’intero database utilizzando lo script fornito nel pacchetto di Postfix Admin:
 mysql -u root -p < DATABASE_MYSQL.TXT
A questo punto, il database è pronto per ospitare le definizioni dei domini e degli utenti di posta, ma l’applicazione di gestione necessita ancora di alcune modifiche prima di essere messa in produzione.
Postfix Admin in produzione
Prima di procedere con la configurazione, copiamo tutti i file di Postfix Admin in una directory accessibile ad Apache o nella sua Document Root:
cp -r postfixadmin-2.2.0-RC1 /var/www/postfixadmin
Se l’obiettivo è installare Postfix Admin in un virtualhost e/o cambiare il nome del percorso di accesso bisogna sostituire quello di destinazione con uno a nostra scelta, comunque presente nella Document Root del sito. A questo punto, nella directory di destinazione troveremo il file “config.inc. php” nel quale dobbiamo impostare le seguenti direttive:
CONF[‘postfix_admin_url’] = ‘http://miohost.
miodominio.it/postfixadmin/’;
CONF[‘database_password’] = ‘pass2’;
CONF[‘default_language’] = ‘it’;
CONF[‘admin_email’] = ‘postmaster@miodominio.it’;
CONF[‘emailcheck_resolve_domain’]=’NO’;
Questo primo blocco di direttive definisce l’URL (l’indirizzo) dal quale possiamo collegarci all’interfaccia di Postfix Admin, la password per l’accesso al database e un’e-mail che verrà posta sul sito per permettere agli utenti di contattare l’amministratore. L’ultima riga è obbligatoria in quanto l’attuale versione del software soffre di un bug che impedisce la corretta creazione degli account di amministrazione.
CONF[‘domain_path’] = ‘YES’;
CONF[‘quota’] = ‘YES’;
Queste direttive sono importanti per l’archiviazione (storage) della posta. La prima riga permette di memorizzare i messaggi in cartelle differenziate per domini, mentre la seconda abilita la possibilità di limitare lo spazio occupato su disco per ognuna delle mailbox degli utenti (quote). L’ultima direttiva riguarda gli alias di default, aggiunti automaticamente alla creazione di un nuovo dominio, contenuti nella voce “$CONF[‘default_aliases’]”. Gli indirizzi abuse, postmaser, webmaster e postmaster sono obbligatori per segnalare eventuali problemi amministrativi e di abusi perpetuati da utenti del dominio in oggetto. La direttiva permette di impostare gli indirizzi di default in attesa che essi vengano assegnati a persone responsabili per il dominio.
L’area dove salvare la posta
Prima di installare Postfix e Dovecot, dobbiamo ancora creare un utente non privilegiato ed un’area di storage su disco dove immagazzinare la posta. Possiamo eseguire entrambe queste operazioni con un unico comando:
adduser --system --group --home /var/spool/
 virtualmail virtualmail
A questo punto, annotiamo gli ID numerici dell’utente (UID) e del gruppo (GID) appena creati, in quanto serviranno nelle fasi successive. Nel seguito dell’articolo ipotizzeremo che l’UID e il GID siano pari a 510. Per quanto concerne la directory in cui verrà memorizzata la posta, assicuriamoci sempre che vi sia uno spazio adeguato al volume di mail che vogliamo gestire.
Adesso passiamo a Dovecot
L’installazione di Dovecot è semplice. Tutte le distribuzioni dispongono dei pacchetti precompilati, in caso contrario possiamo copiare i sorgenti (dovecot- 1.0.10.tar.gz), scompattarli con tar -xzf dovecot- 1.0.10.tar.gz, entrare nella nuova directory con cd dovecot-1.0.10, ed eseguire il comando seguente: “./configure && make && make install”. La configurazione di Dovecot va effettuata intervenendo sul file “/etc/dovecot/ dovecot.conf”, al quale dobbiamo apportare le seguenti modifiche:
protocols = imap imaps pop3 pop3s
mail_location = maildir:/var/spool/virtualmail/%h
Queste righe permettono di attivare i protocolli IMAP e POP3, sia in chiaro che via SSL. La seconda riga indica dove Dovecot dovrà cercare la posta degli utenti (nel nostro caso l’area di storage creata in precedenza). Per quanto concerne l’integrazione con il database di Postfix Admin, dobbiamo assicurarci di attivare l’autenticazione su server SQL, nel nostro caso MySQL:
auth default {
mechanisms = plain
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
userdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
}
Fatto ciò non rimane altro che creare il file “/etc/dovecot/dovecot-sql.conf”nel modo seguente:
driver = mysql
connect = host=localhost dbname=postfix user=
postfix password=pass1
default_pass_scheme = MD5
password_query = SELECT username as user,
password FROM mailbox
WHERE username = ‘%u’
user_query = SELECT maildir as home, 510 AS uid,
510 AS gid FROM
mailbox WHERE username = ‘%u’
Avviando Dovecot (/etc/init.d/dovecot start) il sistema è pronto per accogliere le richieste degli utenti, la cui mailbox è stata creata con Postfix Admin.
Interfaccia diversa
Modificare l’aspetto di Postfix Admin
Se l’aspetto dell’interfaccia di gestione non ci soddisfa, è sempre possibile modificarla per integrarla perfettamente con il nostro sito web. Per farlo bisogna intervenire su un unico file CSS, per l’esattezza si tratta di stylesheet.css.
Amministratori e domini di posta
Per configurarli basta collegarsi all’interfaccia web di Postfix Admin
Aggiungiammo il superadmin

Configurato Postfix Admin dobbiamo creare il primo superadmin nella pagina di setup all’indirizzo “http:// hostname/postfixadmin/setup.php”. A questo punto, dopo aver creato l’amministratore dobbiamo eliminare il file “setup.php” ed effettuare il login nella pagina principale.
Creazione dei domini

La creazione di un nuovo dominio avviene selezionando “Lista dei domini/Nuovo Dominio”. A questo punto, bisogna inserire nel form il nome di un dominio valido, una descrizione e le quote sul numero di caselle di posta, un alias e lo spazio complessivo su disco. Il valore 0 in questi campi equivale a infinito.
Nuovi amministartori

Selezioniamo “Lista degli amministratori/Nuovo Amministratore”. Nel nuovo modulo inseriamo l’e-mail, una password e i domini che l’amministratore può gestire. Questo permette di lasciare gestire al cliente la creazione delle mailbox e l’amministrazione degli alias solo per i domini in suo possesso.
Panoramica generale

Cliccando su “Lista degli amministratori” otteniamo la lista degli amministratori dalla quale è possibile procedere alla loro eliminazione o modifica. Questo permette di modificare i domini gestiti e da la possibilità di promuovere un admin in superadmin, operazione non attuabile nella fase di creazione.
Un modo più semplice
 Postfix con le quote da pacchetti DEB e RPM
Se compilare Postfix dovesse risultare troppo complicato, possiamo sempre utilizzare come base i pacchetti sorgenti per la nostra distribuzione. Per quelli in formato DEB possiamo seguire questa guida “www.besy.co.uk/doku.php/debian:postfix_quota”, mentre per gli RPM bisogna attenersi alle informazioni presenti sul seguente forum: www.netadmintools.com/art492.html.
Per finire installiamo postfix
L’installazione di Postfix prevede prima l’applicazione di una patch ai sorgenti, indispensabile se vogliamo disporre del supporto per le quote. I sorgenti e la patch sono  dei file postfix-2.4.6.tar.gz e postfix-2.4.6-vda-ng.patch.gz. In realtà nella stessa directory è presente anche il pacchetto relativo all’ultima versione del server, Postfix 2.5.0, ma la patch non è ancora disponibile, per cui bisogna utilizzare una release precedente. Di seguito la procedura per applicare la patch e installare Postfix dopo aver posizionato i file nella stessa cartella:
tar -xzf postfix-2.4.6.tar.gz
cd postfix-2.4.6
zcat ../postfix-2.4.6-vda-ng.patch.gz | patch -p1
make makefiles -DHAS_MYSQL -I/usr/include/mysql
Ovviamente se volete fare a meno delle quote, i pacchetti precompilati dispongono già di tutto il necessario per creare e gestire il servizio di posta.
Configurazione generale di postfix
La prima modifica necessaria è l’eliminazione del chroot di esecuzione nel quale Postfix è abitualmente “confinato” durante il suo funzionamento. Questo componente aumenta la sicurezza del server, ma anche se eliminarlo può sembrare una scelta negativa, il sistema non corre rischi in quanto Postfix è comunque molto sicuro. Per “liberare” Postfix dalla sua “gabbia” dobbiamo modificare la riga relativa a “smtp” presente nel file “/etc/postfix/master.cf” settandola nel seguente modo: smtp inet n - n - - smtpd. Ovviamente, possiamo anche lasciare il chroot, ma al costo di complicare troppo la configurazione degli altri componenti che costituiscono il sistema di posta, e questo non è sicuramente il nostro obiettivo. Per quanto riguarda il resto della configurazione, il file “/etc/postfix/main.cf” è costituito da una prima parte “generica” così composta:
myhostname = miohost.miodominio.it
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = miohost.miodominio.it, localhost
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a “$EXTENSION”
Queste opzioni permettono al servizio di capire come comportarsi alla richiesta di invio di una e-mail da parte di uno dei domini e capire di chi si tratta. In particolare, il servizio accetterà solo messaggi per i domini di sua competenza o creati da un eventuale servizio di webmail installato sul server. L’interfacciamento a Postfix Admin, invece, avviene nel seguente blocco:
virtual_alias_maps = proxy:mysql:/etc/postfix/
sql/alias.cf
virtual_mailbox_domains = proxy:mysql:/etc/
postfix/sql/domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/
sql/mailbox.cf
virtual_mailbox_limit_inbox = no
virtual_mailbox_limit_maps = mysql:/etc/postfix
/sql/quota.cf
virtual_mailbox_limit_override = yes
virtual_create_maildirsize = yes
virtual_uid_maps=static:510
virtual_gid_maps=static:510
virtual_mailbox_base=/var/spool/virtualmail/
In queste righe sono contenute tutte le informazioni necessarie su come determinare se un utente è presente nel sistema, dove depositare la posta e l’ammontare di spazio su disco concesso.
Ricerca dei dati all’interno del database
Nella configurazione generale non sono presenti le query da eseguire sul database, le quali sono inserite in file esterni composti da un blocco iniziale sempre uguale che riporta le informazioni generiche di accesso al database secondo la configurazione seguente:
user = postfix
password = pass1
hosts = localhost
dbname = postfix
Subito dopo, è presente una riga di query che varia a seconda delle informazioni da ottenere dal database. Per quanto riguarda il file “alias.cf” è:
query = SELECT goto FROM alias WHERE address=’%s’
AND active = ‘1’
Nel caso del file “domains.cf” la richiesta diventa questa:
query = SELECT domain FROM domain WHERE domain=’%u’
E ancora, per quanto riguarda “mailbox.cf” avremo:
Pagina 1/2
Lascia un commento
Tag: Server e-mail, database, dovecot, domini, postfix
Condividi