Repository 32bit  Forum
Repository 64bit  Wiki

Dovecot, il server Imap e Pop3

Da Slacky.eu.

Indice

Introduzione

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.

Dovecot risulta molto leggero ed in grado di gestire caselle di posta di grandi dimensioni. La compatibilità è 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.

Configurazione 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 semplici 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
## 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.

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.

Conclusioni e considerazioni

Dovecot si è dimostrato un software completo e facile da configurare. Grazie ad un impiego di risorse ridotto e ad un supporto per molteplici metodi di autenticazione abbiamo potuto impiegarlo in sostituzione a Courier-Imap, certamente stabile ma difficile da debuggare e configurare. Il giudizio è sicuramente positivo e testandolo in produzione potremo in seguito esprimere un parere anche sull’affidabilità. In allegato trovate il pacchetto Tgz per Slackware ed i file citati nell’articolo.

Allegati

Dovecot 1.0rc8 Slackware 10.2 Package (SSL, MySql)

Configurazione principale

Configurazione accesso MySql

Script rc.dovecot


Autore: SlackDade

Strumenti personali
Namespace

Varianti