Configurare Dovecot
Questo capitolo del nostro viaggio ci porta a Dovecot – un software che…
- riceve le mail da Postfix e le salva sul disco
- esegue filtri “sieve” definiti dall’utente (usati per esempio per spostare le mail in cartelle differenti in base a criteri o spedire risposte automatiche “fuori ufficio”)
- Permette all’utente di prelevare la posta usando POP3 o IMAP
Prima di procedere vi consiglio per ragioni di sicurezza di creare un utente di sistema che sarà il proprietario tutte le mailbox virtuali. I prossimi comandi shell creeranno il gruppo di sistema “vmail” con GID (group ID) 5000 e un utente di sistema “vmail” con UID (user ID) 5000. (Assicuratevi che questi UID e GID non siano già in uso, altrimenti sceglietene altri – questo numero può essere uno libero qualsiasi tra 1000 e 65000):
groupadd -g 5000 vmail useradd -g vmail -u 5000 vmail -d /var/vmail -m
Se la cartella /var/vmail esiste già perché è un punto di mount dedicato allora assicuratevi che i permesso siano settati correttamente:
chown -R vmail.vmail /var/vmail
I file di configurazione di Dovecot sono in /etc/dovecot/conf.d/. Tutti questi file sono caricati da Dovecot grazie a questa magica linea in dovecot.conf:
!include conf.d/*.conf
Carica tutti i file in /etc/dovecot/conf.d/ che finiscono con “.conf” in ordine alfabetico. Quindi “10-auth.conf” è caricato per primo e “90-quota.conf” è caricato per ultimo. Un grande vantaggio è che possiamo modificare o sostituire parti della configurazione senza dover sovrascrivere l’intera configurazione. Il file principale /etc/dovecot/dovecot.conf non richiede modifiche. Gli altri in conf.d/ invece devono essere modificati…
conf.d/
10-auth.conf
Se i vostri utenti usano ancora Outlook Express (Windows XP) o Microsoft Mail (Windows Vista) allora dovete aggiungere il meccanismo di autenticazione “LOGIN” in aggiunta a quello standard “PLAIN”:
auth_mechanisms = plain login
In questo modo la password di un utente mail viene trasmessa in chiaro. Ma non preoccupatevi. Di default Dovecot setta “disable_plaintext_auth = yes” che assicura che l’autenticazione è accettata solo su connessioni cryptate con TLS.
Alla fine del file trovate i vari backend per l’autenticazione che Dovecot usa. Di default usa gli utenti di sistema (elencati in /etc/passwd). Ma noi vogliamo usare il backend per il database MySQL quindi cambiamo questo blocco:
#!include auth-system.conf.ext !include auth-sql.conf.ext #!include auth-ldap.conf.ext #!include auth-passwdfile.conf.ext #!include auth-checkpassword.conf.ext #!include auth-vpopmail.conf.ext #!include auth-static.conf.ext
Adesso modifichiamo il file di configurazione SQL:
auth-sql.conf.ext
Cambiamo la sezione “userdb” in:
userdb { driver = static args = uid=vmail gid=vmail home=/var/vmail/%d/%n }
La variabile %d sta per il dominio e %n per l’utente in un indirizzo tipo “utente@dominio”. Le variabili di Dovecot sono documentate nel loro sito web.
10-mail.conf
Cambiamo l’opzione mail_location in:
mail_location = maildir:/var/vmail/%d/%n/Maildir
Questa è la cartella dove Dovect cercherà le mail di uno specifico utente. Quindi per john@example.org questo porta a “/var/vmail/example.org/john/Maildir”.
Più sotto troverete sezioni che definiscono lo spazio dei nomi. Questo è la struttura di cartelle che il vostro client email vede quando si connette al server di posta. Se usate POP3 potete solo accedere alla posta in arrivo – dove vengono salvate tutte le mail in arrivo. Usando il protocollo IMAP avete accesso ad una gerarchia di cartelle e sottocartelle. E potete usare perfino cartelle condivise tra utenti. Oppure cartelle pubbliche accessibili da chiunque – anche in forma anonima.
Cercate la sezione “namespace inbox”. Se avete già mail salvate nel vostro server dalle versioni precedenti di questa guida ISPmail, dovete cambiare così:
separator = .
Di default il separatore è “/” che crea una struttura delle cartelle del tipo “/var/vmail/example.org/john/Maildir/INBOX/staff/marketing/simon”. Questo va benissimo. Ma le precedenti guide ISPmail usavano “.” come separatore quindi la cartella menzionata sarebbe “/var/vmail/example.org/john/Maildir/.INBOX.staff.marketing.simon”.
10-master.conf
Questa configurazione riguarda i servizi che permettono la comunicazione con altri processi. Per esempio abilita o disabilita POP3 o IMAP. Non preoccupatevi delle porte non criptate standard TCP 110 (POP3) e 143 (IMAP). Rimarranno accessibili. Se gli utenti si connettno a queste porte, devono dare il comando STARTTLS per cambiare in modalità criptata prima che possano mandare la loro password. In buona sostanza non c’è differenza tra usare un porta in chiaro tipo la 110 per POP3 e poi usare STARTTLS – o connettersi alla porta criptata per POP3s (=sicura). Fate riferimento alla documentazione di Dovecot per ulteriori spiegazioni.
La maggior parte delle opzioni qui sono sensate e non serve cambiarle. Tuttavia una modifica è necessaria nella sezione “service auth” perché vogliamo che Postfix usi Dovecot come servizio di autenticazione. Ecco cosa serve inserire:
# Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix }
Percorso strano? Beh, Postfix gira in un ambiente chroot situato in /var/spool/postfix. Non può accedere a nulla al di fuori di questa cartella. Quindi per permettere la comunicazione con Postfix, diciamo a Dovecot di usare quel socket di comunicazione nella area chroot.
10-ssl.conf
Prima in questa guida abbiamo creato una chiave ed un certificato per criptare la comunicazione POP3s, IMAPs e HTTPS tra gli utenti e il nostro server di posta. Dobbiamo dire a Dovecot dovre trovare questi file:
ssl_cert = webmail.example.org/fullchain.pem ssl_key = webmail.example.org/privkey.pem
E abilitare la criptazione TLS/SSL settando:
ssl = yes
Potremmo anche mettere “ssl=required” ma non ne abbiamo bisogno in quanto Dovecot impedisce l’invio di password in chiaro su connessioni non criptate. Fate riferimento alla documentazione di dovecot sulla criptazione SSL per maggiori informazioni.
15-mailboxes.conf
Dobbiamo aggiungere anche queste linee nella sezione “namespace inbox”:
mailbox INBOX.Junk { auto = subscribe special_use = Junk } mailbox INBOX.Trash { auto = subscribe special_use = Trash }
Questo assicura che le cartelle “Junk” e “Trash” siano create dentro la inbox quando un utente si logga. L’utente è automaticamente sottoscritto a queste cartelle. (Quando usate IMAP potete scegliere quali cartelle vedere sottoscrivendole.) La cartella “Junk” è necessaria così possiamo metterci lo spam dentro – lo configureremo dopo. E la cartella “Trash” è necessaria così gli utenti che usano Roundcube possono cancellare le mail.
I nomi usati in “special_use” fanno riferimento a mailbox speciali descritte in RFC 6154.
/etc/dovecot/dovecot-sql.conf.ext
Questo è file è riferito da /etc/dovecot/conf.d/auth-sql.conf.ext. Dice è Dovecot come accedere al database MySQL e dove trovare le informazioni su utenti/account email. E’ ben documentato, inoltre trovate tutte le direttive di configurazione come commenti.
Aggiungiamo queste linee alla fine del file:
driver = mysql
connect = host=127.0.0.1 dbname=mailserver user=mailuser password=ChangeMe #usate la vostra password del database
default_pass_scheme = SHA256-CRYPT
password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';
Coda fanno queste linee:
- driver: il tipo di database
- connect: dove trovare il database MySQL e come usarlo (username, password)
- default_pass_scheme: formato delle password (noi usiamo hash SHA256 molto “salati”)
- password_query: una query SQL che ritorna l’utente (=indirizzo email) e la password (hash SHA256) dal database dove “%u” è lo username del login (noi usiamo l’indirizzo email come username dell’account). Quando Dovecot deve controllare la password di un utente email, lancia la query sopra e verifica la password con l’hash del database.
Mosse finali
Assicuriamoci che solo root possa accedere al file di configurazione SQL e che nessun altro possa leggere le password di accesso al database.
chown root:root /etc/dovecot/dovecot-sql.conf.ext
chmod go= /etc/dovecot/dovecot-sql.conf.ext
Rilanciamo Dovecot dalla shell:
service dovecot restart
Nel file di log /var/log/mail.log dovremmo vedere:
... dovecot: master: Dovecot v2.2.27 (c0f36b0) starting up for imap, lmtp, sieve, pop3 (core dumps disabled)
Se ottenete errori ricontrollate i vostri file di configurazione.