From 4c5cb148b12389fb6f31a0537fe1f18a6eba4459 Mon Sep 17 00:00:00 2001 From: gcolpart Date: Fri, 13 Oct 2017 05:36:08 +0200 Subject: [PATCH] relecture --- HowtoDovecot.md | 215 ++++++++++++++++++++++++++++++------------------ 1 file changed, 137 insertions(+), 78 deletions(-) diff --git a/HowtoDovecot.md b/HowtoDovecot.md index 808bad81..bd80f2a2 100644 --- a/HowtoDovecot.md +++ b/HowtoDovecot.md @@ -5,59 +5,122 @@ title: Howto Dovecot * Documentation : -[Dovecot](https://www.dovecot.org/) est un puissant serveur POP et IMAP et -écrit en ayant comme but la sécurité. Les autres objectifs sont la légèreté et -la rapidité ainsi que la facilité à le mettre en place ; la configuration de -base, après installation, fournit un serveur POP/IMAP fonctionnel. +[Dovecot](https://www.dovecot.org/) est un serveur permettant l'accès à des emails avec les protocoles [POP](https://fr.wikipedia.org/wiki/Post_Office_Protocol) et [IMAP](https://fr.wikipedia.org/wiki/Internet_Message_Access_Protocol). Il possède toutes les fonctionnalités indispensables pour nous : la couche [SSL/TLS](HowtoSSL) pour sécuriser les échanges réseau, l'intégration avec [Postfix](HowtoPostfix), la gestion de l'authentification avec [LDAP](HowtoLDAP), le support du format de stockage [Maildir](https://fr.wikipedia.org/wiki/Maildir) et les filtres [Sieve](https://fr.wikipedia.org/wiki/Sieve). Nous aimons sa légèreté et sa rapidité, nous l'avons définitivement adoptés sur nos serveurs de messagerie en remplacement de [Courier POP/IMAP](http://www.courier-mta.org/). + ## Installation ~~~ # apt install dovecot-pop3d dovecot-imapd dovecot-sieve dovecot-ldap dovecot-managesieved + +# dovecot --version +2.2.27 (c0f36b0) + +# systemctl status dovecot +● dovecot.service - Dovecot IMAP/POP3 email server + Loaded: loaded (/lib/systemd/system/dovecot.service; enabled; vendor preset: enabled) + Active: active (running) since Wed 2017-10-11 02:37:57 CEST; 2 days ago + Docs: man:dovecot(1) + http://wiki2.dovecot.org/ + Main PID: 10102 (dovecot) + Tasks: 6 (limit: 4915) + CGroup: /system.slice/dovecot.service + ├─10102 /usr/sbin/dovecot + ├─10111 dovecot/anvil + ├─10112 dovecot/log + ├─13327 dovecot/config + ├─13329 dovecot/auth + └─20212 dovecot/auth -w ~~~ -`dovecot-ldap` est à installer si l'authentification se fait sur un annuaire -LDAP mais il est également possible d'utiliser une base MySQL ou PostgreSQL, -avec le paquet adapté en conséquence. +> * Note* : le paquet `dovecot-ldap` est utile uniquement pour gérer l'authentification avec un annuaire [LDAP](HowtoLDAP). Il est également possible de gérer l'authentification avec une base de données SQL, il faudra alors installer le paquet `dovecot-mysql` ou `dovecot-pgsql`. + ## Configuration -La configuration de Dovecot se trouve dans le répertoire `/etc/dovecot`. Le -fichier principal est `dovecot.conf` mais la configuration se fait dans des -fichiers séparés dans `/etc/dovecot/conf.d/`. - -Les paramètres globaux se définissent notamment dans `10-mail.conf`. Dans le -cas d'un compte Unix unique pour tous les comptes : +Fichiers de configuration : ~~~ -mail_location = maildir:/home/vmail/%d/%n - -mail_uid = 5000 -mail_gid = 5000 +/etc/dovecot/ +├── dovecot.conf +├── conf.d/ +│   ├── 10-auth.conf +│   ├── 10-director.conf +│   ├── 10-logging.conf +│   ├── 10-mail.conf +│   ├── 10-master.conf +│   ├── 10-ssl.conf +│   ├── 10-tcpwrapper.conf +│   ├── 15-lda.conf +│   ├── 15-mailboxes.conf +│   ├── 20-imap.conf +│   ├── 20-managesieve.conf +│   ├── 20-pop3.conf +│   ├── 90-acl.conf +│   ├── 90-plugin.conf +│   ├── 90-quota.conf +│   ├── 90-sieve.conf +│   ├── 90-sieve-extprograms.conf +│   ├── auth-checkpassword.conf.ext +│   ├── auth-deny.conf.ext +│   ├── auth-dict.conf.ext +│   ├── auth-ldap.conf.ext +│   ├── auth-master.conf.ext +│   ├── auth-passwdfile.conf.ext +│   ├── auth-sql.conf.ext +│   ├── auth-static.conf.ext +│   ├── auth-system.conf.ext +│   ├── auth-vpopmail.conf.ext +│   └── z-evolinux-defaults.conf +├── dovecot-dict-auth.conf.ext +├── dovecot-dict-sql.conf.ext +├── dovecot-ldap.conf.ext +├── dovecot-sql.conf.ext +└── private/ ~~~ -Pour utiliser LDAP comme backend d'authentification, ajouter ceci dans `10-auth.conf` : +La configuration se trouve dans le fichier `/etc/dovecot/dovecot.conf` qui inclut de nombreux fichiers séparés dans `/etc/dovecot/conf.d/*.conf`. + +Le fichier `/etc/dovecot/conf.d/z-evolinux-defaults.conf` contient notre configuration de base : ~~~ +# Autorise les mécanismes PLAIN/LOGIN même sans SSL/TLS +disable_plaintext_auth = no +auth_mechanisms = plain login + +# Authentification LDAP + intégration avec Postfix pour l'auth SMTP !include auth-ldap.conf.ext service auth { - unix_listener auth-userdb { - mode = 0600 - user = vmail - group = vmail - } + unix_listener auth-userdb { + mode = 0600 + user = vmail + group = vmail + } + unix_listener /var/spool/postfix/private/auth-client { + mode = 0666 + user = postfix + group = postfix + } +} + +# Stockage des emails dans /home/mail avec UID/GID 5000/5000 +mail_location = maildir:/home/vmail/%d/%n +mail_uid = 5000 +mail_gid = 5000 + +# Activation Sieve +protocol lda { + mail_plugins = sieve } ~~~ -Et commenter la ligne suivante si on utilise pas du tout l'authentification via -PAM (important autrement PAM introduit un lag lors de l'authentification) : +Il est également important de commenter la ligne suivante si on utilise pas du tout l'authentification via PAM car cela évite d'avoir plusieurs secondes de lag lors de l'authentification : ~~~ #!include auth-system.conf.ext ~~~ -Les paramètres de connexion à LDAP ainsi que la correspondance des champs -doivent être indiqués dans le fichier `/etc/dovecot/dovecot-ldap.conf.ext` : +Les paramètres de connexion à LDAP ainsi que la correspondance des champs doivent être indiqués dans le fichier `/etc/dovecot/dovecot-ldap.conf.ext` : ~~~ hosts = 127.0.0.1 @@ -71,13 +134,8 @@ pass_attrs = uid=user,userPassword=password ### Authentification SMTP sur Dovecot -Il est possible de déléguer l'authentification SMTP de Postfix à Dovecot, ce -qui est pratique pour ne pas définir à 2 endroits différents les paramètres du -backend d'authentification utilisé. Dans Dovecot, il s'agit de faire écouter -Dovecot sur un socket Unix, sur lequel on pourra récupérer la liste des comptes -et tester l'authentification. - -Dans le fichier `10-master.conf`, décommenter/adapter les lignes suivantes : +On conseille de déléguer l'authentification SMTP à Dovecot, ce qui est pratique pour ne pas définir à deux endroits différents les paramètres du +backend d'authentification utilisé. Cela consiste à faire écouter Dovecot sur une socket Unix (comme utilisé dans notre notre configuration de base) : ~~~ service auth { @@ -92,31 +150,64 @@ service auth { } ~~~ -Puis indiquer le chemin vers le socket dans la configuration de Postfix, relatif à son chroot : +puis indiquer le chemin vers la socket dans la configuration de Postfix : ~~~ smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth-client ~~~ -### Configuration TLS +### Configuration SSL/TLS -La configuration se fait dans le fichier `10-ssl.conf` : +Il est fortement recommandé d'activer la couche [SSL/TLS](HowtoSSL). +Cela se fait ainsi : ~~~ -ssl = required +ssl = yes ssl_cert = *Note* : la directive `ssl_cert` doit inclure le certificat du domaine ainsi que tous ceux de sa chaîne de certification. -La directive `ssl_cert` doit inclure le certificat du domaine ainsi que tous ceux de sa chaine de certification. +À noter que si l'on veut forcer toutes les connexions POP/IMAP à utiliser SSL/TLS (sauf les connexions depuis *localhost*) , on utilise : -### Créer des boîtes IMAP automatiquement +~~~ +ssl = required +~~~ -Voir +### Livraison avec Dovecot LDA + +Dovecot fournit un agent de livraison (LDA) nommé `dovecot-lda` via la commande `deliver`. +Il est notamment important de l'utiliser pour pouvoir utiliser les filtres Sieve. + +Avec Postfix, on ajoutera la ligne suivante dans le fichier `/etc/postfix/master.cf` : + +~~~ +dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -a ${recipient} -d ${user}@${nexthop} +~~~ + +et dans le fichier `/etc/postfix/main.cf` : + +~~~ +virtual_transport = dovecot +dovecot_destination_recipient_limit = 1 +~~~ + +> *Note* : cela suppose que tous les comptes sont gérés par un unique compte Unix _vmail_. + +Il également possible d'utiliser le démon *dovecot-lmtp* via le package `dovecot-lmtp`. + + +### Mailboxes Sent, Trash, Drafts, Junk + + + +On peut créer automatiquement des sous-boîtes pour les clients IMAP. +Les noms sont à peu près normalisés dans la [RFC 6154](https://tools.ietf.org/html/rfc6154). + +Voici comment créer automatiquement Sent, Trash, Drafts et Junk : ~~~ namespace inbox { @@ -141,48 +232,16 @@ namespace inbox { } ~~~ -## Utiliser Dovecot comme LDA -Dovecot fournit un agent de livraison (LDA) nommé `dovecot-lda` via la commande -`deliver`. +## Sieve -Note : il est également possible d'utiliser le démon `dovecot-lmtp` (paquet _dovecot-lmtp_). +Sieve est un langage permettant d'écrire des règles de tri d'emails, du même type que [procmail](https://fr.wikipedia.org/wiki/Procmail). +Sieve est normalisé via la [RFC 5228](https://tools.ietf.org/html/rfc5228) et plusieurs clients email le supporte : *Mozilla Thundebird* via une [extension](http://sieve.mozdev.org/), [Roundcube](HowtoMail/Roundcube), [Ingo](https://www.horde.org/apps/ingo) etc. -Ajouter la ligne suivante dans le fichier `/etc/postfix/master.cf` : - -~~~ -dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient} -~~~ - -Note : cela suppose que tous les comptes de courriels sont gérés par un unique compte unix _vmail_. - -Puis dans `/etc/postfix/main.cf`, ajouter : - -~~~ -virtual_transport = dovecot -dovecot_destination_recipient_limit = 1 -~~~ - -### Support du + dans les adresses - -Il faut modifier les options de `deliver` dans le fichier `master.cf` de Postfix ainsi : - -~~~ -- flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient} -+ flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -a ${recipient} -d ${user}@${nexthop} -~~~ - -### Gestion de Sieve - -Sieve est un langage permettant d'écrire des règles de tri de courriel, du même -type que se que `procmail` offre. Il a cependant l'avantage d'être normalisé -dans le RFC 5228 et donc supporté par plusieurs clients. - -Pour utiliser sieve, il faut l'ajouter à la directive `mail_plugins` dans le fichier `15-lda.conf` : +Pour activer Sieve, il faut utiliser Dovecot LDA et ajuster la directive *mail_plugins* (comme utilisé dans notre notre configuration de base) : ~~~ protocol lda { - # Space separated list of plugins to load (default is global mail_plugins). mail_plugins = sieve } ~~~