Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Postfix e MySQL: gestire il mail server con un database

Configurare il server di posta elettronica Postfix per gestire i dati con MySQL: installazione e configurazione passo per passo
Configurare il server di posta elettronica Postfix per gestire i dati con MySQL: installazione e configurazione passo per passo
Link copiato negli appunti

Il matrimonio, in ambiente Linux, tra il noto MTA (Mail Transfer Agent) Postfix e il database MySQL, consente di realizzare un server di posta elettronica facilmente amministrabile. Utenti, domini, alias ed altre configurazioni verranno memorizzati direttamente nelle tabelle del database. I vantaggi di una simile soluzione sono innumerevoli, proviamo ad elencarne alcuni:

  • Il nostro server gestirà solo utenti virtuali e non utenti reali rendendo maggiormente sicuro il sistema
  • Per aggiungere una mailbox o un alias basterà un semplice INSERT senza dover riavviare il servizio o lanciare altri comandi
  • Sarà possibile scrivere una semplice applicazione, ad esempio in PHP, per consentire l'ordinaria amministrazione anche ad utenti non molto esperti
  • Risulterà facile scalare dalla gestione di centinaia a migliaia di caselle email: non sarebbe altrettanto semplice, ad esempio, con i classici file virtusertable e aliases di Sendmail
  • Se il carico di lavoro aumentasse risulterebbe possibile (e facile) gestire mailer e database con macchine distinte aumentando le prestazioni
  • Entrambi i software sono open source e distribuiti gratuitamente (per lo meno la Community Edition di MySQL) di qui la possibilità di ottenere una soluzione altamente professionale, ma a bassi costi

L'elenco potrebbe continuare, ma penso che ci siano ragioni a sufficienza per testare la soluzione proposta. Il sistema operativo di riferimento sarà Fedora 9 ed utilizzeremo YUM per l'installazione dei pacchetti precompilati. Non sarà comunque difficile adattare le indicazioni fornite alla vostra distribuzione preferita.

Installiamo Postfix

Prima di passare all'azione è d'obbligo fare qualche considerazione su questo MTA open source, sviluppato da Wietse Venema nei laboratori IBM. Postfix nasce come naturale sostituto di Sendmail, se volessimo aggiornare un mail server il passaggio dall'uno all'altro risulterebbe praticamente indolore. I più temerari potrebbero addirittura farlo su una macchina in produzione con bassissime probabilità di blocco del servizio. Postfix può infatti gestire le mailbox ed alcuni file di configurazione, come /etc/aliases, esattamente nello stesso formato di Sendmail.

Quali sono le ragioni che potrebbero spingerci ad adottare questo software? Innanzitutto il fatto che sia stato sviluppato con moderni criteri di sicurezza, poi le ottime prestazioni con carichi di lavoro elevati anche su hardware non potentissimo. Quest'ultima caratteristica non va sottovalutata infatti la quantità di Spam che circola in Rete rende trafficato anche il mail server di una piccola azienda. Ancora da segnalare la facilità d'installazione e configurazione: pur disponendo di moltissimi parametri, mantenendo i valori predefiniti e impostandone solo due o tre, potremo ottenere un mail server di base, perfettamente funzionante.

In realtà Postfix è costituito da un insieme di programmi, ciascuno con un proprio compito preciso, che interagiscono tra loro e molte delle sue caratteristiche positive derivano proprio da quest'architettura.

Cominciamo con l'installare il software, apriamo una console, assumiamo i privilegi di root e digitiamo:

[root]# yum install postfix

YUM ci avviserà se il pacchetto è già presente nel sistema o necessita semplicemente di aggiornamento. Al momento della stesura dell'articolo risulta disponibile la versione 2.5.1-2.fc9. Il mail server che vogliamo realizzare non è proprio standard, ma dovrà interfacciarsi con il database MySQL. Con Fedora 9 siamo fortunati, il pacchetto installato è già predisposto allo scopo. Nel caso di Fedora 8 o precedenti l'opzione non sarà invece disponibile.

Per verificare se la versione di Postfix installata soddisfa o meno alle nostre esigenze possiamo procedere così:

[root]# ldd /usr/libexec/postfix/smtpd | grep mysql
libmysqlclient.so.15 => /usr/lib/mysql/libmysqlclient.so.15 (0x001aa000)

Se la risposta ottenuta è simile alla seconda riga, ovvero riporta il riferimento a libmysqlclient, allora siamo tranquilli. In caso contrario bisognerà trovare una strada alternativa come vedremo nel prossimo paragrafo. L'installazione da pacchetto precompilato provvede alla creazione di un utente di sistema postfix appartenente al gruppo postfix e privo dei privilegi di login.

Il supporto a MySQL

Qualora il pacchetto precompilato a nostra disposizione non garantisca il supporto a MySQL possiamo ricorrere a diverse soluzioni di seguito brevemente descritte. La prima strada, percorribile qualunque sia la distribuzione adottata, consiste nella classica compilazione a partire dai sorgenti. In questo caso avremo il vantaggio di utilizzare l'ultimissima versione stabile del programma che potremo scaricare dal sito del progetto. La documentazione ufficiale riporta tutte le informazioni necessarie, in particolare le opzioni da specificare nella creazione del makefile, prima di procedere con make && make install.

[root]#  make -f Makefile.init makefiles 
>       'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include' 
>       'AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm'

Per evitare problemi è vivamente consigliata la lettura preventiva del documento denominato INSTALL. Nel caso di Fedora (non nella versione 9 ovviamente) può risultare utile creare un pacchetto personalizzato ed installarlo con gli strumenti consueti. Così non si perderanno i vantaggi offerti dal packet manager. Per questo sarà necessario procurarsi il source rpm, ad esempio raggiungendo l'area download della distribuzione, scegliendo la versione del sistema operativo e spostandosi nella directory Fedora/source/SRPMS/.

Il pacchetto avrà un nome del tipo postfix-XXXX.src.rpm, dove XXXX sostituisce la versione del programma. Procediamo all'installazione ricordando che non deve mancare rpm-build per generare l'rpm:

[root]# yum install rpm-build
[root]# rpm -ivh postfix-XXXX.src.rpm

In /usr/src/redhat/SPECS/ troveremo il file di configurazione postfix.spec, editiamo la riga seguente ponendo a 1 il valore del flag MYSQL, per default a 0:

%define MYSQL 1

infine costruiamo il pacchetto rpm ed installiamolo:

[root]# rpmbuild -ba postfix.spec
[root]# cd /usr/src/redhat/RPMS/i386
[root]# rpm -ivh postfix-XXXX.i386.rpm

Per questioni di spazio le indicazioni fornite sono un po' sintetiche, se non avete familiarità con gli strumenti descritti consultate la documentazione ufficiale.....oppure pensate seriamente ad un aggiornamento del sistema operativo.

A questo punto in un modo o nell'altro Postfix risulterà installato, ricordate di creare manualmente utente e gruppo postfix se avete scelto la compilazione dai sorgenti. Per avviare automaticamente il servizio al boot della macchina dovremo impostare ad on il/i runlevel d'interesse ad esempio:

[root]# chkconfig --level 2345 postfix on

Costruiamo il database

Diamo per scontato che MySQL sia già installato e funzionante, sarebbe molto poco probabile il contrario. Di seguito procederemo utilizzando la console, se preferite uno strumento visuale potete ricorrere a mysql-query-browser:

[root]# yum install mysql-query-browser

Effettuiamo il login con i privilegi necessari e dalla console di MySQL creiamo il database:

mysql>  CREATE DATABASE mailserver DEFAULT CHARSET utf8;

Ora passiamo alla prima tabella destinata a memorizzare gli account utente virtuali. Nel nostro caso indirizzo email e nome utente coincideranno, come sono soliti fare gli ISP:

mysql> use mailserver
Database changed
mysql>  CREATE TABLE `users` (
    ->   `email` varchar(200) NOT NULL,
    ->   `password` varchar(100) NOT NULL,
    ->   `quota` int(10) default '52428800',
    ->   `active` char(1) NOT NULL default '1',
    ->   `created` timestamp NOT NULL default '0000-00-00 00:00:00',
    ->   `updated` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
    ->   PRIMARY KEY  (`email`)
    -> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Mailbox virtuali';
Query OK, 0 rows affected (0.01 sec)

Notate il campo active, potremo utilizzarlo come flag per disattivare un utente senza eliminare le informazioni relative alla sua casella di posta.

Proseguiamo con la successiva tabella destinata a contenere i domini per i quali il nostro server sarà abilitato a ricevere posta. Non dimenticate di far puntare al suo indirizzo IP i corrispondenti record MX dei DNS.

mysql> CREATE TABLE `domains` (
    ->   `domain` varchar(200) NOT NULL,
    ->   `active` char(1) NOT NULL default '1',
    ->   `created` timestamp NOT NULL default '0000-00-00 00:00:00',
    ->   `updated` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
    ->   PRIMARY KEY  (`domain`)
    -> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Domini virtuali';
Query OK, 0 rows affected (0.00 sec)

Passiamo ora alla creazione della tabella degli alias, dove il campo "source" conterrà l'alias mentre "destination" la casella email verso cui verrà effettuata la ridirezione:

mysql> CREATE TABLE `alias` (
    ->   `source` varchar(200) NOT NULL,
    ->   `destination` text NOT NULL,
    ->   `active` char(1) NOT NULL default '1',
    ->   `created` timestamp NOT NULL default '0000-00-00 00:00:00',
    ->   `updated` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
    ->   PRIMARY KEY  (`source`)
    -> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Tabella degli Alias' ;
Query OK, 0 rows affected (0.01 sec)

Terminiamo creando un utente che consentirà a Postfix di agire sul database:

mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON mailserver.* TO postfix@localhost IDENTIFIED BY 'miapass'; 
mysql> FLUSH PRIVILEGES;

POP3 e IMAP

Gli utenti del nostro server di posta utilizzeranno il protocollo POP3 o meglio ancora il più moderno IMAP, per gestire la propria casella email. Purtroppo Postfix è un MTA puro e non integra tali caratteristiche tra le sue funzioni. Non ci resta che ricorrere ad un programma esterno, ma sufficientemente flessibile da poter essere utilizzato in combinazione con MySQL.

Il mondo dell'open source è ricco di prodotti che possono fare al caso nostro, tra questi sceglieremo Dovecot un server POP3 e IMAP veloce, sicuro, semplice da configurare e che utilizza poca memoria. Gestisce, come del resto Postfix, entrambi i formati di posta mailbox e maildir. Nel primo caso tutti i messaggi di un utente vengono archiviati in un unico file, tipicamente posizionato in /var/spool/mail. Nel secondo ad ogni messaggio corrisponde un file separato e a ciascuna casella corrisponde una directory che solitamente si trova nella home dell'utente. Procediamo con il consueto:

[root]# yum install dovecot

Anche in questo caso assicuriamoci che il demone si avvii automaticamente:

[root]# chkconfig --level 2345 dovecot on

La memorizzazione delle email

Come vedremo meglio più avanti, in fase di configurazione, ci proponiamo di gestire le email in formato maildir. Dobbiamo però considerare che i nostri utenti sono virtuali, esistono solo in database e quindi non posseggono una home directory. Gestiremo tutto con un unico utente che chiameremo vmail, appartenente al gruppo vmail e con home directory in /home/vmail:

groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail -m  -s /sbin/nologin
chgrp postfix /home/vmail

Vogliamo memorizzare la posta per l'account ermanno@miodominio.com in un percorso di questo tipo: /home/vmail/miodominio.com/ermanno. In questo modo ciascun dominio avrà una propria directory al cui interno troveranno posto solo le directory relative ai suoi account. Con quest'accortezza la gestione di un server multidominio risulterà molto più semplice. Infine, per permettere a Postfix di operare, abbiamo assegnato la directory /home/vmail al gruppo postfix.

A questo punto possiamo considerare conclusa la prima fase ovvero l'installazione di tutti gli strumenti che ci consentiranno di realizzare il nostro mail server. Il passo successivo, che vedremo nella prossima puntata dell'articolo, sarà configurare Postfix e Dovecot perché, appoggiandosi a MySQL, possano svolgere il proprio lavoro.

La configurazione

Dopo aver installato l'MTA Postfix, il server POP3/IMAP Dovecot ed aver creato alcune tabelle con MySQL passiamo alla configurazione del nostro server di posta elettronica. Considereremo una situazione molto semplice: una piccola azienda con un unico dominio, miazienda.it, che vuole fornire il servizio email ai propri impiegati. Ci concentreremo solo sugli aspetti essenziali della configurazione, per sfruttare al meglio lo spazio a disposizione su queste pagine. Schematizzando:

  • non adotteremo l'accortezza di eseguire Postfix in una gabbia di chroot, a dire il vero le caratteristiche di sicurezza del programma non lo rendono essenziale;
  • il formato scelto per le mailbox sarà maildir: un file per messaggio anziché un unico file contenente tutte le e-mail;
  • solamente i client della LAN aziendale potranno utilizzare il servizio SMTP, quindi non implementeremo tecniche di protezione come POP before SMTP o IMAP before SMTP;
  • tralasceremo anche il supporto a TLS (Transport Layer Security), utilizzato per cifrare le comunicazioni tra server e server o tra server e client;
  • renderemo disponibili agli utenti sia il protocollo POP3 che IMAP;
  • salteremo a piè pari le problematiche del filtraggio antivirus ed antispam (essenziali in un server di posta moderno) e accenneremo solo al problema della "quota" per gli utenti.

Malgrado le semplificazioni introdotte ci sarà da rimboccarsi le maniche.

Colleghiamo Postfix a MySQL

La flessibilità, come già detto, è una delle migliori caratteristiche di questo software. Per questo Postfix, oltre alle tradizionali tabelle hash e ai file di testo, stile Sendmail, può utilizzare tabelle di lookup di vari formati. Tra le tante abbiamo scelto quelle di MySQL: ora dobbiamo opportunamente istruirlo su come accedere al database e con quali query interrogarlo.

Spostiamoci nella directory /etc/postfix, dove risiedono tutti i file di configurazione del programma, e creiamo un file di testo che chiameremo mysql-domains.cf. Tale file servirà ad accedere alla tabella domains, precedentemente creata, per verificare se Postfix sia autorizzato a ricevere posta per il dominio in oggetto. Ricordo che dovremo aver preventivamente configurato i DNS perché i record MX del dominio puntino al nostro server. Inseriamo in mysql-domains.cf le seguenti istruzioni:

user = postfix
password = miapass
dbname = mailserver
query = SELECT domain AS virtual FROM domains WHERE domain='%s'
hosts = 127.0.0.1

La sintassi è molto semplice: con le prime tre righe indichiamo a Postfix le credenziali ed il database a cui collegarsi. Resta inteso che le password scelte dovranno essere un po' più robuste di quelle utilizzata negli esempi!
La quarta riga rappresenta la query di selezione vera e propria. Se aggiungessimo AND active=1 potremmo sfruttare questo campo per attivare o disattivare velocemente un dominio. L'ultima riga indica l'host su cui gira MySQL, in questo caso l'host locale. Se il database si trovasse su una macchina diversa basterebbe scrivere il corrispondente numero IP.

Inseriamo nella tabella domains il dominio della nostra azienda, come vedete gestirne altri risulterebbe banale:

mysql> INSERT INTO domains VALUES('miazienda.it',1,NULL,NULL);
Query OK, 1 row affected (0.00 sec)

Ora passiamo alla tabella degli utenti, l'unica forse che necessita di qualche spiegazione dettagliata. Creiamo il file mysql-users.cf con la seguente sintassi:

user = postfix
password = miapass
dbname = mailserver
query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s' AND active=1
hosts = 127.0.0.1

La funzione SUBSTRING_INDEX permette di suddividere una stringa in sottostringhe utilizzando un carattere come separatore, nel nostro caso "@". Supponendo che l'indirizzo email sia ermanno@miazienda.it SUBSTRING_INDEX(email,'@',-1) corrisponderà a miazienda.it mentre SUBSTRING_INDEX(email,'@',1) a ermanno. Il risultato della query sarà il percorso miazienda.it/ermanno/ ed è il sistema di memorizzazione scelto per la posta: una directory per il dominio al cui interno si trovano tante directory quanti sono gli utenti. Questo ci permetterà di gestire facilmente molti domini isolandoli e raggruppando i rispettivi account.

Inseriamo nella tabella users un indirizzo email per effettuare le prime prove di funzionamento del server. La password, non in chiaro, ma memorizzata come hash MD5, ci servirà per l'autenticazione quando attiveremo i protocolli POP3 e IMAP:

mysql> INSERT INTO users VALUES('ermanno@miazienda.it',md5('segreta'),NULL,1,NULL,NULL);
Query OK, 1 row affected (0.00 sec)

Passiamo ora agli alias per cui creiamo i file mysql-aliases.cf e mysql-email2email.cf , anche in questo caso il significato delle direttive risulta subito evidente:

user = postfix
password = miapass
dbname = mailserver
query = SELECT destination FROM alias WHERE source='%s'
hosts = 127.0.0.1
user = postfix
password = miapass
dbname = mailserver
query = SELECT email FROM users WHERE email='%s' AND active=1
hosts = 127.0.0.1

Sempre per i nostri test inseriamo un alias che punta alla casella precedentemente creata:

mysql> INSERT INTO alias VALUES ('info@miazienda.it','ermanno@miazienda.it',1,NULL,NULL);
Query OK, 1 row affected (0.00 sec)

Infine modifichiamo i permessi sui file appena creati:

[root]# chmod 640 /etc/postfix/mysql-*.cf
[root]# chgrp postfix /etc/postfix/mysql-*.cf

Ricordo che in fase d'installazione erano stati generati l'utente ed il gruppo postfix.

Configuriamo Postfix

Ora, sempre in /etc/postfix, dovremo aprire e modificare main.cf, il file di configurazione principale di Postfix. Potremmo anche utilizzare il comando postconf, ad esempio con la sintassi seguente:

[root]# postconf -e 'myhostname = mail.miazienda.it'

che aggiunge automaticamente la direttiva myhostname = mail.miazienda.it a main.cf.

Di seguito le istruzioni fondamentali da inserire nel file di configurazione corredate da commenti:

#utilizzare tutte le interfacce di rete
inet_interfaces = all

#deve essere un FQDN (Fully Qualified Domain Name)
myhostname = mail.miazienda.it

#gli indirizzi IP autorizzati a spedire messaggi
mynetworks = 192.168.0.0/24, 127.0.0.0/8

#le direttive necessarie ad utilizzare MySQL
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-aliases.cf, mysql:/etc/postfix/mysql-email2email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-users.cf

#l'utente con cui postfix deve operare
#ovvero vmail che avevamo creato
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

#la directory base da utilizzare per la posta
virtual_mailbox_base = /home/vmail
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes

#massima dimensione di una casella
virtual_mailbox_limit = 512000000

#alcune restrizioni di sicurezza sull'SMTP 
#la seconda e' commentata per possibili
#problemi su pc win con outlook(!!)
smtpd_helo_required = yes
#smtpd_helo_restrictions = reject_invalid_hostname, reject_unknown_hostname
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_invalid_hostname, reject_unknown_sender_domain, reject_unauth_pipelining

#le tabelle di lookup cui il server proxymap puo' accedere
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks

Ovviamente le opzioni di configurazione utilizzabili sono molte di più ed uno sguardo alla documentazione risulterà sicuramente consigliabile.

Un breve cenno merita il problema della quota ovvero la dimensione massima consentita per le caselle di posta. Nel nostro caso potremmo solo utilizzare un unico valore valido indistintamente per tutti gli utenti. Nella realtà spesso però accade che quanto previsto per gli impiegati non valga per i grandi capi. Per personalizzare tale limite dovremmo installare una patch, Postfix VDA, che consente di gestire la quota prelevandola dal campo omonimo della tabella users. Risulta comunque agevole trovare documentazione su tale patch qualora doveste utilizzarla.

Infine per sicurezza controllate che nel file /etc/master.cf il flag chroot sia impostato a n per tutti i programmi elencati.

Configuriamo Dovecot

Passiamo ora a Dovecot, il server POP3 e IMAP, il cui file di configurazione è /etc/dovecot.conf. Prima di modificarlo creiamo in /etc un file di testo denominato dovecot-sql.conf analogo a quelli visti per Postfix:

driver=mysql
default_pass_scheme = MD5
connect= host=127.0.0.1 port=3306 dbname=mailserver user=postfix password=miapass
password_query = SELECT password FROM users where email='%u' AND active='1'
user_query = SELECT '/home/vmail/%d/%n' AS home, 'maildir:/home/vmail/%d/%n' AS mail, 5000 AS uid, 5000 AS gid FROM users WHERE email='%u' AND active='1'

Si intuisce dalla sintassi che %u rappresenta l'indirizzo email completo (ermanno@miazienda.it), %d il dominio (miazienda.it), %n il nome (ermanno). Vediamo ora il file di configurazione principale con commenti alle direttive:

#protocolli abilitati
protocols = imap pop3

#operazioni di log
log_path =/var/log/dovecot.log
info_log_path =/var/log/dovecot.log

#posizione della mailbox 
mail_location = maildir:/home/vmail/%d/%n

#range degli utenti validi
#mettiamo l'uid di vmail
first_valid_uid = 5000

protocol pop3 {
  #inserire qui le configurazioni 
  #specifiche del pop3
  
  #formato dell'uid del messaggio
  pop3_uidl_format = %08Xv%08Xu
}

protocol imap {
  #configurazioni specifiche di imap
}

#autenticazione
auth default {

  mechanisms = md5

  passdb sql {
    # percorso del file di configurazione
    # con la query sql per la password
    args = /etc/dovecot-sql.conf
  }
  
  user = mysql
  
  userdb sql {
    # percorso del file di configurazione
    # con la query sql per l'utente  
    args = /etc/dovecot-sql.conf
  }
  
}

Merita una breve considerazione l'istruzione pop3_uidl_format = %08Xv%08Xu. Un server pop3 per alcune operazioni, come individuare la posta già scaricata, si basa su un identificativo univoco assegnato ai messaggi. Passando da un software ad un altro potremmo avere brutte sorprese se non c'è corrispondenza nell'assegnazione degli id. Dovecot però consente di specificarne il formato mantenendo la compatibilità con altri programmi, nell'esempio UW-POP3.

Testiamo la configurazione

A questo punto facciamo qualche prova per vedere se tutto funziona. Avviamo Postfix e controlliamo i messaggi nel file di log:

[root]# service postfix start
[root]# tail -f /var/log/maillog

Se c'è qualche problema correggiamolo interpretando i messaggi ricevuti. Per far rileggere a Postfix il file di configurazione digitiamo semplicemente postfix reload. Supponendo che il servizio sia partito correttamente interroghiamolo sulla porta 25:

[root]#  telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.miazienda.it ESMTP Postfix
^]

telnet> quit
Connection closed.

Tutto bene, ora passiamo a Dovecot:

[root]# service dovecot start
[root]#  telnet localhost pop3
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
^]

telnet> quit
Connection closed.

A questo punto il funzionamento di base è testato non resta che cominciare ad inviare qualche email al server, sia all'account reale che all'alias, verificandone la corretta consegna. Inizialmente proviamo in locale con il comando mail:

[root]# mail -s 'test funzionamento' ermanno@miazienda.it

Cc: 
Null message body; hope that's ok

Dopo aver digitato il comando mail premiamo invio, poi con CRTL + d indichiamo che l'immissione di testo è terminata, un nuovo invio dopo "Cc:" finalizza la spedizione dell'email. Facciamo un'analoga prova con l'alias info@miazienda.it. A questo punto controlliamo la directory /home/vmail dovremmo trovarci le nuove directory miazienda.it/ermanno/cur, miazienda.it/ermanno/new, miazienda.it/ermanno/tmp. In caso di corretta consegna all'interno di new ci saranno due file corrispondenti ai messaggi ricevuti.

Successivamente passiamo a qualche test d'invio da un altro mail server e infine facciamo qualche prova d'accesso alla mailbox con uno o più client di posta POP3 e IMAP. Se tutto funziona il nostro server è pronto.

Conclusioni

In queste pagine abbiamo visto una possibile configurazione di base per il nostro mail server. Dico una possibile configurazione perché, come avrete intuito, la duttilità di Postfix consente di ottenere risultati analoghi operando in maniera diversa. Potremmo spingerci molto oltre aggiungendo tutte quelle caratteristiche di contorno che tanto piacciono agli utenti come risponditori automatici, forward verso altri server, filtri di vario genere e via discorrendo. In particolare affiancando alla terna Postfix, MySQL e Dovecot Amavisd-new con SpamAssassin e ClamAV si può realizzare un efficiente controllo antispam ed antivirus. Il tutto naturalmente sempre con software open source e gratuito.

Terminando ribadisco la semplicità di sviluppare un'applicazione web che consenta di aggiungere domini, gestire utenti ed alias anche a persone non particolarmente esperte....lasciando in pace l'indaffarato amministratore del server.

Ti consigliamo anche