Home giubbe.org


×

Attenzione!

Le parole scritte in rosso devono essere sostituite dai vostri parametri.

×

Beta!

Sto lavorando al sito e commetterò tanti errori: potete segnalarmeli all'indirizzo indicato in fondo pagina. Segnalatemi anche eventuali vostre richieste. Grazie. !!!



Dovecot, 1° parte



In un ipotetico Ufficio Postale, Dovecot è l'addetto allo smistamento della posta.

Controlla che gli indirizzi siano giusti, non casuali e che l'identità del destinatario esista nel suo casellario.

Può anche differenziare la pubblicità dalle lettere vere e proprie, contrassegnandole e smistandole in caselle postali diverse.

Tra i suoi compiti, vi rientra anche accogliere gli utenti ed indirizzarli alle proprie caselle postali.


Installeremo Dovecot con delle estensioni:

dovecot-mysql, il server di smistamento della posta con l'estensione per usare il database creato e fare richieste ad esso;

dovecot-imapd, estensione di Dovecot per permettere agli utenti di gestire le proprie caselle con il protocollo ; dovecot-pop3, estensione necessaria per chi vuole collegarsi alla sua casella postale tramite protocollo ;

dovecot-lmtpd, estensione necessaria per la migrazione delle mail da Postfix a Dovecot.


Come consueto, aggiorniamo il sistema:
sudo apt update && sudo apt upgrade

Ed installiamo Dovecot e le sue estensioni:
sudo apt install -y dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd
multi



Facciamo la prima modifica nel file di configurazione di Dovecot:
sudo nano /etc/dovecot/dovecot.conf
multi

multi

Sotto Enable installed protocols, inseriamo:
protocols = imap pop3 lmtp
multi

Abbiamo abilitato i tre protocolli.

Salviamo con i classici tasti Ctrl+X, Y, Invio.


Quasi tutta la restante configurazione avviene nei file con finale .conf, contenuti nella cartella /etc/dovecot/conf.d/ :

multi



Iniziamo dal file 10-auth.conf
sudo nano /etc/dovecot/conf.d/10-auth.conf
multi

Disabilitiamo la possibilità di autenticarsi in chiaro, togliendo il commento a disable_plaintext_auth = yes

multi


Come formato nome utente per l'autenticazione, scegliamo quello equivalente all'indirizzo mail: utente@dominio.tld. Togliamo il commento a auth_username_format e togliamo il carattere L tra % e u :

multi

multi


Per far si che anche gli utenti di Outlook riescano ad autenticarsi, aggiungiamo login ad auth_mechanisms = plain:

multi

multi


Alla fine del file, troviamo vari meccanismi di autenticazione. Disabilitiamo quello del sistema commentando auth-system con #,

multi


e abilitiamo quello attraverso il database mysql, togliendo il commento.

multi

Affronteremo il file auth-sql.conf.ext nella seconda parte di Dovecot.

Chiudiamo e salviamo il file.


Passiamo al file 10-logging.conf
sudo nano /etc/dovecot/conf.d/10-logging.conf
multi

Per chi ha scelto di avere i file di log con Rsyslog, possiamo indicare una cartella dove porre i file di log : /var/log/.

Perciò, la prima modifica sarà togliere il commento a log_path e cambiare il valore syslog con /var/log/dovecot.log

La seconda istruzione sarà abilitare, togliendo il commento, i log di messaggi informativi (info_log_path) e di debug (debug_log_path) sempre in dovecot.log

La terza ed ultima modifica sarà abilitare auth_verbose, togliendo # e dando yes come valore, per avere un log quando fallisce una autenticazione e la ragione del fallimento.
Oltre ad eventuali mal configurazioni, serve anche a scoprire eventuali attacchi "a dizionario", attuati con l'uso di database con parole compromesse note.

Una volta modificato, il file si dovrebbe presentare così:

multi

Chiudiamo, salvando le modifiche effettuate.

Prima di passare al prossimo file di configurazione di Dovecot, però finiamo la configurazione dei log indicando a Logrotate cosa fare dei file di log di Dovecot.

Apriamo la cartella di Logrotate e poniamo in essa un file:
sudo nano /etc/logrotate.d/dovecot
/var/log/dovecot.log {
   weekly
   rotate 4
   missingok
   notifempty
   compress
   delaycompress
   sharedscripts
   postrotate
   endscript
}
multi

Chiudiamo con Ctrl+X, Y, Invio .

Abbiamo finito con i log di Dovecot.


Ritorniamo a configurare Dovecot.


Passiamo al file 10-mail.conf
sudo nano /etc/dovecot/conf.d/10-mail.conf
multi


Togliamo il commento a mail_location = maildir:...

multi


Scegliendo Maildir, avremo un singolo file per ogni singola email.

Maildir avrà 3 sottocartelle:
cur : le email vengono messe qui quando sono aperte e quando sono segnate lette;
new : contiene le mail non ancora lette;
tmp : è la cartella che contiene i file temporanei, come i file allegati.

Sostituiamo mail_location = mbox:/var... con
mail_home = /var/vmail/%d/%n/
multi

dove %d rapresenta il domino.tld e %n il nome utente dell'indirizzo senza il dominio; perciò, avrà la forma /var/vmail/dominio.tld/utente/.


Commentiamo l'altro mail_location ...

multi

multi


Passiamo, subito sotto, a namespace inbox e decommentiamo type = private:

multi

multi


4 righe sotto, decommentiamo separator = ed aggiungiamo un . (punto) dopo = ; è la scelta di default per chi usa Maildir.

multi


Sotto inbox = yes, aggiungiamo dei namespace, cioè indichiamo ad Imap le cartelle che i client di posta potrebbero volere.

Alcuni client di posta segnano i file delle mail con una S, per segnare il file/mail seen=visto/letto.
Quando cancelliamo il file usando il mail client, questo dovrebbe segnare il file con una T, così che Dovecot capisca che il file è nella cartella ma segnato come da eliminare; cosicchè, quando il client di posta svuota definitivamente il "cestino", Dovecot possa eliminare il relativo file definitivamente.

Purtroppo, non tutti i client segnano con T i file messi nel loro "cestino".
Quando questi client cancellano i file svuotando il cestino, in realtà, questi file rimangono nella casella di posta.
In una eventuale reinstallazione del client di posta ,perciò senza "memoria" delle precedenti eliminazioni, questi rilegge tutti i file contenuti nella casella di posta: file zombie non cancellati.
Si aggiunge anche l'aggravio di spazio occupato immotivatamente.

Ad esempio, Apple Mail chiede esplicitamente di creare una cartella Trash dove destinare i file cancellati.

Potremmo esplicitare questi namespace in 15-mailboxes.conf, ma preferiamo dare continuità in questo file:

  mailbox Drafts {
     special_use = \Drafts
     auto = subscribe
   }

  mailbox Junk {
     special_use = \Junk
     auto = subscribe
     autoexpunge = 30d
   }

  mailbox spam {
     special_use = \Junk
     auto = no
   }

  mailbox Spam {
     special_use = \Junk
     auto = no
   }

  mailbox Trash {
     special_use = \Trash
     auto = subscribe
     autoexpunge = 30d
   }

  mailbox Sent {
     special_use = \Sent
     auto = subscribe
   }

  mailbox "Sent Mail" {
     special_use = \Sent
     auto = no
   }

  mailbox "Sent Messages" {
     special_use = \Sent
     auto = no
   }

  mailbox Archive {
     special_use = \Archive
     auto = create
   }

  mailbox "Archives" {
     special_use = \Archive
     auto = no
   }
multi

Le cartelle con auto = subscribe sono create da IMAP automaticamente.

Le cartelle con auto = create sono da sottoscrivere, anche se potrebbe sembrare l'inverso.

Ai namespace Junk e Trash, abbiamo aggiunto l'opzione autoexpunge = 30d, cioè le cartelle interessate saranno svuotate dei file più vecchi di 30 giorni, in modo da evitare un sovraccarico della macchina per "dimenticanze" degli utenti.
Anche se, queste dimenticanze possono essere mitigate con l'uso delle quote di spazio.
Autoexpunge è opzionale; a noi decidere se usarla o meno.


Alcune righe sotto, cerchiamo 2 righe commentate con #mail_uid = e #mail_gid = ;

multi


decommentiamole ed aggiungiamo ad entrambe 5000, l'UID ed il GID dell'utente e del gruppo vmail, creato antecedentemente, così non dovremo esplicitarli in altre occasioni:

multi

Salviamo le modifiche effettuate.


È venuto il turno del file 10-master.conf ad essere modificato:
sudo nano /etc/dovecot/conf.d/10-master.conf

Questo file si occupa soprattutto del "trasporto" delle mail.

Cerchiamo in esso la sezione riguardante service lmtp, (già affrontato nella configurazione di postfix) riguardante il "Gate" tra la "gabbia" di Postfix e Dovecot.

multi


e modifichiamo l'interno della sezione in questo modo:
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
   }

Abbiamo creato la porta per entrare nella "gabbia/chroot".

multi


Dobbiamo aprire un altro "Gate", affinchè Postfix possa usare il sistema di autenticazione di Dovecot.
Troviamo la sezione service auth ,

multi


e modifichiamola in questo modo:
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
   }

multi

Salviamo le modifiche effettuate.


Adesso, dobbiamo indicare a Dovecot dove trovare i certificati per poter cifrare le comunicazioni.

Modifichiamo il file 10-ssl.conf:
sudo nano /etc/dovecot/conf.d/10-ssl.conf
multi


Intanto, esigiamo di usare comunicazioni cifrate, perciò modifichiamo ssl = yes in ssl = required

multi


In seguito, modifichiamo l'origine dei certificati ssl_cert e ssl_key, inserendo quelli da noi già procurati:
ssl_cert = </etc/letsencrypt/live/mail.sitoprovaprimo.it/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.sitoprovaprimo.it/privkey.pem
multi

Fatto. Però, in Postfix avevamo impostato SNI, perchè volevamo gestire la posta di più nomi di dominio.

Per fare ciò, dobbiamo abilitare Dovecot ad usare più certificati TLS.

Aggiungiamo sotto la dichiarazione dei certificati primari, per ogni certificato di ogni singolo dominio, le seguenti righe:
local_name mail.sitoprovaprimo.it {
ssl_cert =</etc/letsencrypt/live/mail.sitoprovaprimo.it/fullchain.pem
ssl_key =</etc/letsencrypt/live/mail.sitoprovaprimo.it/privkey.pem
}

Perciò, per il nostro secondo dominio, sitoprovasecondo.it, aggiungeremo:
local_name mail.sitoprovasecondo.it {
ssl_cert =</etc/letsencrypt/live/mail.sitoprovasecondo.it/fullchain.pem
ssl_key =</etc/letsencrypt/live/mail.sitoprovasecondo.it/privkey.pem
}
multi

Possiamo continuare per quanti domini vogliamo gestire.


Cerchiamo la riga commentata ssl_min_protocol :

multi

e togliamo il commento, in modo che il protocollo minimo TLS sia 1.2


Facciamo la stessa cosa alla riga ssl_prefer_server_ciphers appena sotto, ma togliamo il no per aggiungere un yes

multi

Infine, salviamo con Ctrl+X, seguito da Y ed infine Invio.


Non dobbiamo dimenticarci del rinnovo dei certificati Let's Encrypt e del loro aggiornamento in Postfix e Dovecot.

Quando abbiamo richiesto ed inserito il primo certificato Let'Encrypt in Apache, abbiamo anche riscontrato che i certificati si auto-aggiornano, ma abbiamo dovuto creare un file che conteneva la modalità di aggiornamento dei certificati all'interno di Apache.

Perciò, dobbiamo aggiornare quel file, inserendo in esso i riferimenti a Postfix e Dovecot.
Ma, in Postfix, abbiamo usato l'applicazione Postmap per inserire i certificati in una mappatura di Postfix; perciò dobbiamo aggiornare anche questo file, ogni volta che qualsiasi certificato Let'Encrypt venga aggiornato.


Apriamo il file che gestisce i comandi da effettuare dopo ogni aggiornamento di qualsiasi certificato:
sudo nano /etc/letsencrypt/renewal-hooks/deploy/ricarica.sh

cert

e modifichiamolo:
#!/bin/bash
/usr/sbin/postmap -F /etc/postfix/sni_maps;
systemctl restart apache2 postfix dovecot

cert

Salviamo e chiudiamo


Rendiamoci nella cartella Deploy
cd /etc/letsencrypt/renewal-hooks/deploy/
cert


Fermiamo Dovecot :
sudo systemctl stop dovecot

Controlliamo lo stato di Dovecot:
systemctl status dovecot
cert

È fermo.

Diamo esecuzione al file modificato:
sudo ./ricarica.sh
cert

E ricontrolliamo lo status di Dovecot:
systemctl status dovecot
cert

L' aggiornamento dei certificati Let's Encrypt all'interno delle applicazioni che li usano è sistemato.


Nella seconda parte, finiremo la configurazione di Dovecot con altri file.