documentation/services/mail/dovecot.md

5.9 KiB

Dovecot

Dovecot est entre autre une implémentation de serveur IMAP, de serveur POP3 et de serveur d'authentification SASL. Les deux premiers protocoles permettent à un utilisateur de consulter ces mails (soit en les consultant sur le serveur pour IMAP, soit en les téléchargeant localement pour POP3) tandis que le dernier sert à authentifié l'utilisateur, authentification qui pourra être utilisé par d'autre logiciels comme par exemple postfix pour vérifier l'idendité d'une personne souhaitant envoyer un mail.

Installation

On tire les différents composants logiciels des repository debian : sudo apt install dovecot-imapd dovecot-ldap dovecot-pop3d dovecot-sieve.

Configuration

La configuration initiale packagée par debian est morcellée en une série de fichier commentée dans /etc/dovecot/conf.d qui permette de segmenter la configuration en fonction des différents mécanismes du logiciel.

10-auth.conf

Ce fichier contrôle l'authentification des utilisateurs au serveur. On configure dans le fichier directement les options de connexions puis en incluant des fichiers auth-{{ mecanisme }}.conf.ext on précise les différents bas d'utilisateurs et de mot de passe à utiliser.

# On autorise les clients à utiliser une authentification en claire car on
# configurera par la suite le fait que tous les échanges entre le client
# et le serveur soient chiffrées par TLS.
disable_plaintext_auth = no
# On configure deux méthodes d'authentification pour le client plain et login.
auth_mechanisms = plain login
# On souhaite tirer les utilisateurs du ldap. On inclue donc le fichier de
# backend ldap qui va définir les bases d'utilisateurs et de mot de passes.
!include auth-ldap.conf.ext

Le fichier auth-ldap.conf.ext va lui même inclure le fichier de configuration de connexion au ldap.

# Addresse du serveur ldap
uris = ldap://172.16.10.157/
# Nom d'utilisateur et mot de passe utilisés pour s'authentifer auprès du
# serveurs
dn = cn=Utilisateurs,dc=crans,dc=org
dnpass = "erdnaxe_aime_debian"
# Base de noms en dessous de laquelle se trouve les utilisateurs dans le ldap
base = cn=Utilisateurs,dc=crans,dc=org
# Les options de configurations user_filter et pass_filter permettent de filtrer
# les ojets ldap à inclure dans les bases d'utilisateurs et de mot de passes.
user_filter = (&(objectClass=posixAccount)(uid=%u))
pass_filter = (&(objectClass=posixAccount)(uid=%u))
# Les options de configurations user_attrs et pass_attrs permettent de savoir
# quels champs récupérer de l'objet ldap et d'altérer certains pour qu'ils
# correspondent mieux à l'installation de la machine.
user_attrs = homeDirectory=home={{ dovecot.home_path }}/%u,uidNumber=uid,gidNumber=gid
pass_attrs = uid=user,userPassword=password

10-logging.conf

C'est le fichier de configuration qui gère l'écriture des logs du daemon. Il permet de séléctionner quels événèments doivent être loggé et quels champs de l'objet doivent être inclus dans les logs.

plugin {
  mail_log_events = delete undelete expunge copy mailbox_delete mailbox_renam
  mail_log_fields = uid box msgid size
}
log_timestamp = "%Y-%m-%d %H:%M:%S "

10-mail.conf

Dans ce fichier de configuration on définit les boites mails avec lesquels dovecot va travailler.

# Emplacement des boites mails et des indexes de dovecot
mail_location = maildir:~/Mail:INBOX=/var/mail/%u/:INDEX=/var/dovecot-indexes/%u
# Structure initiale à donner à une boite mail
namespace inbox {
  inbox = yes
}
# Nom du groupe gérant les boites mails
mail_privileged_group = mail
# Listes de plugins génériques à charger. On inclue mail_plugins pour ajouter
# des plugins dans la liste et pas écraser le contenu actuel de la variable. Le
# plugin notify est une dépendance du plugin mail_log qui a été configuré dans
# le fichier 10-logging.conf
mail_plugins = $mail_plugins mail_log notify
# Limite le nombre de connections qu'un utilisateur peut réaliser au serveur
mail_max_userip_connections = 15

TODO: documenter ce que font mail_log et notify; documenter la dernière ligne de la conf.

10-master.conf

C'est le fichier de configuration principal de dovecot. C'est ici qu'on va définir les différents services que proposeront notre installation. Au crans il s'agit d'un serveur IMAP(s), d'un serveur POP3(s) et d'un serveur SASL.

IMAP

La configuration du service se décompose en deux partie : le service de connexion et d'authentification au daemon imap et la configuration imap.

service imap-login {
# Notre service écoute en clair sur le port 143 seulement sur le réseaux
# d'administration (pour les webmails) et il écoute en chiffré sur le 993 pour
# le reste du monde.
  inet_listener imap {
    address = 127.0.0.1, [::1], 172.16.10.126, [fd00::10:0:ff:fe01:2610]
    port = 143
  }
  inet_listener imaps {
    address = *, [::]
    port = 993
    ssl = yes
  }
  service_count = 0
  process_min_avail = 6
}
service imap {
  process_limit = 16384
}

POP3

Le service pop3 se configure de manière analogue.

service pop3-login {
  inet_listener pop3 {
    address = 127.0.0.1, [::1], 172.16.10.126, [fd00::10:0:ff:fe01:2610]
    port = 110
  }
  inet_listener pop3s {
    address = *, [::]
    port = 995
    ssl = yes
  }
  process_min_avail = 6
  service_count = 0
}
service pop3 {
  process_limit = 16384
}

SASL

Pour le service d'authentification SASL, on souhaite qu'il ne soit accessible qu'en local et en clair. On ne définit donc qu'un seul bloc d'écoute en local sur le port 4242 (il n'y a pas de port réservé par l'IANA pour le protocole).

service auth {
  client_limit = 1024
  inet_listener {
     address = 127.0.0.1, [::1], {{ dovecot.inet_listener }}
     port = 4242
  }
}

10-ssl.conf

Dans ce fichier on se contente de dire à dovecot où trouver nos certificats pour les connextions chiffrées :

ssl_cert = </etc/letsencrypt/live/crans.org/fullchain.pem
ssl_key = /etc/letsencrypt/live/crans.org/privkey.pem