Partie 2 : Dovecot

Maintenant que nous avons notre serveur SMTP, Postfix, pour envoyer nos courriels, il nous faut un serveur IMAP/POP3 : Dovecot.

Installation

Pour installer Dovecot, ça va être rapide. lancez la commande suivante :

sudo aptitude install dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql dovecot-sieve dovecot-managesieved

Fin de l'installation.

Configuration

Ouvrez fichier dovecot.conf avec la commande suivante :

sudo nano /etc/dovecot/dovecot.conf

Ajoutez la ligne

protocols = imap lmtp sieve

. Cette ligne active IMAP, LMTP et Sieve. LMTP (Local Mail Transfer Protocol ou protocole local de transfert de courrier en français) sert à envoyer des courriels en local (à l'utilisateur root par exemple) et Sieve va nous permette de mettre en place des filtres et des règles de filtrage. Si vous souhaitez utiliser le protocole POP3, ajoutez pop3. Il vous faudra également installer le paquet dovecot-pop3d.

Ajoutez l'utilisateur dovecot au groupe mail pour qu'il ait accès en lecture au répertoire /var/mail (là ou seront stockés les courriels) :

sudo adduser dovecot mail

Ouvrez le fichier 10-master.conf avec la commande suivante :

sudo nano /etc/dovecot/conf.d/10-master.conf

Modifiez la ligne service lmtp afin d'avoir comme suit :

# Activer l'écoute des communications LMTP en provenance de Postfix
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0660 
    user = postfix
    group = postfix
  }
}

Ces lignes servent à indiquer à Dovecot qu'il doit écouter les communications LMTP en provenance de Postfix, pour les transferts de courriels, en utilisant le fichier de socket /var/spool/postfix/private/dovecot-lmtp.

Modifiez les lignes “service auth {” et suivante afin d'avoir comme suit :

# Authentification des utilisateurs pour les connexions SMTP
service auth { 
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660 
    user = postfix
    group = postfix
  }
}

Ces lignes servent à indiquer à Dovecot qu'il doit communiquer avec Postfix en utilisant le fichier de socket /var/spool/postfix/private/auth pour les authentifications SMTP, Dovecot gérant cette partie.

Ajoutez également les lignes suivantes qui vont activer les statistiques de Dovecot, utilisées par Postfixadmin :

service stats {
    unix_listener stats-reader {
    user = www-data
    group = www-data
    mode = 0660
}

unix_listener stats-writer {
    user = www-data
    group = www-data
    mode = 0660
  }
}

Ouvrez le fichier /etc/dovecot/conf.d/10-mail.conf et modifiez la ligne

mail_location = mbox:~/mail:INBOX=/var/mail/%u

afin d'avoir comme suit

mail_location = maildir:~/Maildir 
mail_home = /var/vmail/%d/%n/

Les courriels seront stockés dans le répertoire /var/vmail au lieu de /var/mail (nécessaire pour postfixadmin)

Ouvrez le fichier /etc/postfix/main.cf et ajoutez les lignes suivantes :

mailbox_transport = lmtp:unix:private/dovecot-lmtp
smtputf8_enable = no

On utilise Dovecot pour délivrer les courriels en local. smtputf8 est une extension qui n'est pas supportée par dovecot-lmtp

Ouvrez le fichier 10-auth.conf afin de configurer l'authentification :

sudo nano /etc/dovecot/conf.d//10-auth.conf

Désactivez l'authentification sans chiffrement TLS en décommentant la ligne suivante :

disable_plaintext_auth = yes

L'authentification se fait en clair mais comme la connexion IMAP et SMTP est chiffrée, nul besoin de chiffrer l'authentification.

Décommentez la ligne suivante :

#auth_username_format = %Lu

L'identifiant sera utilisateur@domaine.fr sans tenir compte des majuscules.

Décommentez la ligne suivante pour que Dovecot puisse interroger la base SQL pour récupérer les noms des utilisateurs authentifiés :

#!include auth-sql.conf.ext

Commentez la ligne suivante afin que les utilisateurs locaux, root par exemple, ne puisse pas envoyer de mail

!include auth-system.conf.ext

Vous pouvez également ajouter les lignes suivantes afin d'avoir plus de log dans /var/log/mail.log le temps de vérifier que les utilisateurs se connectent sans problème :

auth_debug = yes
auth_debug_passwords = yes

Ouvrez le fichier 10-ssl.conf pour configurer la partie TLS :

sudo nano /etc/dovecot/conf.d/10-ssl.conf

Modifiez les lignes ssl_cert et ssl_key pour avoir comme suit (remplacez domaine.fr par votre domaine) :

ssl_cert = </etc/letsencrypt/live/domaine.fr/fullchain.pem
ssl_key = </etc/letsencrypt/live/domaine.fr/privkey.pem 

Trouvez la ligne

#ssl_prefer_server_ciphers = no

Afin de laisser le serveur décider des algorithmes de chiffrement à utiliser plutôt que le client, remplacez-la par

ssl_prefer_server_ciphers = yes

Trouvez la ligne

#ssl_min_protocol = TLSv1

Afin de n'utiliser que les versions 1.2 ou supérieures du protocole TLS, remplacez-la par

ssl_min_protocol = TLSv1.2

Concernant les fichiers SSL let's encrypt, il faut que les utilisateurs postfix, dovecot et www-data aient accès à /etc/letsencrypt/live/domaine.fr/ et /etc/letsencrypt/archive/domaine.fr/

On va activer Sieve afin de pouvoir créer des filtres automatiques. Ouvrez le fichier 15-lda.conf :

sudo nano /etc/dovecot/conf.d/15-lda.conf

À la fin du fichier, décommenter la ligne mail_plugins et ajouter sieve :

protocol lda {
    # Space separated list of plugins to load (default is global mail_plugins).
    mail_plugins = $mail_plugins sieve
}

Ouvrez le fichier 20-lmtp.conf :

sudo nano /etc/dovecot/conf.d/20-lmtp.conf

À la fin du fichier, décommenter la ligne mail_plugins et ajouter sieve :

protocol lmtp {
  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = quota sieve   
}

Pensez à ouvrir le port 993 pour pouvoir vous connecter à Dovecot depuis un client via le protocole IMAP. Si vous souhaitez utiliser le protocole POP, c'est le port 995 qu'il vous faudra ouvrir.

Maintenant que Postfix et Dovecot sont installés, on passe à Postfixadmin.

Source : https://www.linuxbabe.com/mail-server/build-email-server-from-scratch-debian-postfix-smtp