From b00e91b0be57dec3d5fe4d659c3ab04ae39fcce0 Mon Sep 17 00:00:00 2001 From: shirenn <shirenn@crans.org> Date: Sat, 24 Jul 2021 21:36:03 +0200 Subject: [PATCH] [critical/mail] Ajout de dovecot.md --- critical/mail/dovecot.md | 165 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 critical/mail/dovecot.md diff --git a/critical/mail/dovecot.md b/critical/mail/dovecot.md new file mode 100644 index 0000000..9b41e1e --- /dev/null +++ b/critical/mail/dovecot.md @@ -0,0 +1,165 @@ +# 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 +deovecot 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 +``` -- GitLab