sabato 24 maggio 2008

Dovecot 1.0.13, server Pop3-Imap di ultima generazione in grado di funzionare su sistemi Linux/UNIX

Maria Susana Diaz | 22:36 |
Rilasciata la nuova versione 1.0.13 di Dovecot, server di posta in entrata in grado di utilizzare i protocolli IMAP e POP3, anche se il primo è sicuramente il sistema che privilegia.

Le caratteristiche più importanti sono stabilità, sicurezza e velocità di esecuzione.

Dovecot è un server Pop3-Imap di ultima generazione in grado di funzionare su sistemi Linux/UNIX, è scritto in C e particolare attenzione è stata data alla sicurezza ed alle risorse necessarie per il suo utilizzo.

Dovecot risulta infatti leggero, stabile e completo. Vediamo meglio le sue caratteristiche principali:

  • Supporto completo IMAP4rev1 e POP3;
  • Supporto per i formati mbox e Maildir;
  • Possibilità di utilizzare un formato ad altre prestazioni dbox;
  • Supporto per SSL/TSL;
  • Pronto per il protocollo IPv6;
  • Funzionalità avanzate come quote e ACL;
  • Supporto autenticazione Sql, LDAP.
sky8_468x601.gif

Dovecot risulta molto leggero ed in grado di gestire caselle di posta di grandi dimensioni. La compatiblità è testata con la maggior parte dei client di posta.

In questo breve articolo vedremo tutte le fasi necessarie per renderlo operativo, dal download del software alla sua installazione e configurazione.La distribuzione utilizzata è Slackware 10.2 con Postfix come mailserver, gli utenti vengono gestiti da un database MySql e le password vengono memorizzate in chiaro.

Installazione del software

Dovecot è disponibile per il download diretto dal sito ufficiale o tramite CVS, se utilizzate una distribuzione con tool Apt o Yum potrete facilmente trovare il pacchetto precompilato ed installarlo. Nel nostro caso procediamo con il download dei sorgenti e con la creazione del pacchetto tgz per Slackware tramite checkinstall.

wget http://www.dovecot.org/releases/dovecot-1.0.rc8.tar.gz
tar xzvf dovecot-1.0.rc8.tar.gz
cd dovecot-1.0.rc8
./configure --with-mysql --with-ssl
make
checkinstall

Seguendo la procedura guidata otterremo il pacchetto tgz che installeremo con l’apposito tool e che potrà essere facilmente aggiornato in seguito.

upgradepkg --install-new dovecot-1.0.rc8-i386-1.tgz

Se tutto è andato a buon fine possiamo procedere alla configurazione del server. Se la compilazione non dovesse andare a buon fine è necessario verificare che i tool di sviluppo siano installati correttamente e che le librerie OpenSSL e MySql siano nella posizione corretta. Per ulteriori informazioni è disponibile una guida dettagliata all’indirizzo http://wiki.dovecot.org/CompilingSource.

fiat500_300x250.gifConfigurazione del server

La configurazione che andremo ad eseguire è piuttosto complessa ma Dovecot ci viene incontro con una sintassi chiara ed efficace. Sul nostro sistema è infatti presente Postfix che utilizza MySql per la gestione degli utenti, i messaggi di posta vengono memorizzati in formato Maildir (dominio/utente) e ad ogni Maildir è assegnata una quota utente gestita a livello di database. Creiamo innanzitutto il file necessario per reperire tutte le informazioni dal database MySql.

cd /usr/local/etc
vi dovecot-sql.conf

Nel file andremo ad indicare come reperire utenti, password e quote disco. Le quote dovranno essere restituite in KBytes. Di seguito il contenuto del file.

driver = mysql
default_pass_scheme = plain
connect = host=/var/run/mysql/mysql.sock user=postfix password=1234 dbname=postfix password_query = SELECT password FROM mailbox WHERE username = '%u' AND domain = '%d' AND active = 1
user_query = SELECT maildir, 76 AS uid, 76 AS gid, CONCAT('dirsize:storage=', ROUND(quota/1024)) AS quota FROM mailbox WHERE username = '%u'

Uid e Gid vengono impostati a 76 in quanto corrispondono all’utente con cui gira il server Postfix. Le query sono molto semplice e facilmente adattabili ad una struttura di database differente. Generiamo ora i certificati OpenSSL auto firmati; per farlo utilizziamo il tool presente nella directory doc dei sorgenti.

cd dovecot-1.0.rc8/doc
vi dovecot-openssl.cnf
chmod +x mkcert.sh && ./mkcert.sh

Passiamo alla configurazione generica che potete trovare come file sample nella directory /usr/local/etc.

vi dovecot.conf

Di seguito trovate la configurazione adattata ai requisiti esposti precedentemente; per una consultazione più semplice trovate tutti i files in allegato alla pagina.

base_dir = /var/run/dovecot/
protocols = imap imaps pop3 pop3s
listen = *
disable_plaintext_auth = no
shutdown_clients = yes

## LOG
log_path = /var/log/dovecot
info_log_path = /var/log/dovecot
log_timestamp = "%b %d %H:%M:%S "
syslog_facility = mail

## SSL
ssl_disable = no
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem

## Login processes
login_dir = /var/run/dovecot/login
login_chroot = yes
login_user = postmaster
login_process_size = 32
login_process_per_connection = yes
login_processes_count = 3
login_max_processes_count = 128
login_max_connections = 256
login_greeting = Welcome to MailServer - Dovecot ready.
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
login_log_format = %$: %s

## Mailbox locations and namespaces
default_mail_env = maildir:/var/vmail/%d/%n
mail_extra_groups = mail

subito300x250sell2.jpg

## Mail processes
mail_debug = no
first_valid_uid = 76

## Authentication processes
auth_debug = yes
auth_debug_passwords = yes
auth default {
mechanisms = plain digest-md5 cram-md5 login
passdb sql {
args = /usr/local/etc/dovecot-sql.conf
}
userdb sql {
args = /usr/local/etc/dovecot-sql.conf
}
user = root
count = 2
}

## POP3
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
mail_plugins = quota
}

## IMAP
protocol imap {
mail_plugins = quota imap_quota
}

## PLUGIN
plugin {
quota = dirsize:storage=102400
}

Dovecot sarà ora in grado di collegarsi al database MySql e di accettare autenticazioni plain, digest-md5, cram-md5 e login. Per maggiori informazioni sull’argomento visitate la pagina http://wiki.dovecot.org/Authentication. Sono stati abilitati i plugin quota e imap_quota, il valore di default è stato impostato a 102400 KBytes.

Avvio del demone

Il servizio può essere gestito tramite inetd o attraverso il demone dovecot, nel primo caso dovremo associare i processi imap-login e pop3-login mentre nel secondo lanciare semplicemente un comando.

/usr/local/sbin/dovecot

In allegato trovate il file rc.dovecot in grado di gestire le operazioni di avvio, stop e riavvio su Slackware.

Test e Debug

Come avrete notato nella configurazione è stato abilitato il debug delle query Sql e dell’intero processo di autenticazione. Osserviamo il file di log in tempo reale:

tail -f /var/log/dovecot

Se il demone è partito correttamente troveremo corrispondenza nel log.

Dovecot v1.0.rc8 starting up
auth-worker(default): mysql: Connected to /var/run/mysql/mysql.sock (postfix)
auth-worker(default): mysql: Connected to /var/run/mysql/mysql.sock (postfix)

Se così non fosse verificate il file di configurazione ed assicuratevi che il demone sia in grado di collegarsi al database. Verifichiamo la connessione al server su protocollo Pop3:

telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Welcome to MailServer - Dovecot ready.
user davide@pippo.net
+OK
pass 1234
+OK Logged in.
list
+OK 1 messages:
1 7515453
.
quit
+OK Logging out.
Connection closed by foreign host.

XBlaster 728x90

Il server funziona correttamente, non ci resta che effettuare le operazioni di posta con il nostro client preferito, Pop3 o Imap che sia. L’autore ha dedicato una pagina della wiki per analizzare la compatibilità con i prodotti più diffusi disponibile all’indirizzo http://wiki.dovecot.org/Clients.

Download

Checking the PGP signature is always a good idea, especially nowadays when so many software packages have been trojaned. I verify the signature automatically twice a day, but that might not be enough for you. You should find my public key 40558AC9 from wwwkeys.pgp.net with a signature path leading to Debian developers (CAEAAF03 one).

Stable releases


AsteClick - Canon ixus960

TiPI (Ti Potrebbe Interessare)

LinuxLinks

Trovato questo articolo interessante? Condividilo sulla tua rete di contatti in Twitter, sulla tua bacheca su Facebook, in Linkedin, Instagram o Pinterest. Diffondere contenuti che trovi rilevanti aiuta questo blog a crescere. Grazie!

LINKEDIN