relecture

This commit is contained in:
gcolpart 2017-10-13 05:36:08 +02:00
parent 91e62456ba
commit 4c5cb148b1

View file

@ -5,59 +5,122 @@ title: Howto Dovecot
* Documentation : <http://wiki2.dovecot.org/>
[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 = </etc/ssl/certs/example.com.crt
ssl_key = </etc/ssl/private/example.com.key
ssl_dh_parameters_length = 2048
~~~
Avec `ssl = required`, toutes les connexions POP/IMAP doivent être chiffrées. Un exception est cependant faite pour localhost, où les connexions en clair restent possibles.
> *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 <http://wiki2.dovecot.org/MailboxSettings>
### 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
<http://wiki2.dovecot.org/MailboxSettings>
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
}
~~~