diff --git a/HowtoDovecot.md b/HowtoDovecot.md
index 0e5cf8bb..27b2ae24 100644
--- a/HowtoDovecot.md
+++ b/HowtoDovecot.md
@@ -4,42 +4,116 @@ title: Howto Dovecot
...
* Documentation :
-* Rôle Ansible :
-[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.
+[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.
## Installation
~~~
-# apt install dovecot-pop3d dovecot-imapd dovecot-sieve dovecot-managesieved dovecot-ldap
+# apt install dovecot-pop3d dovecot-imapd dovecot-sieve dovecot-ldap dovecot-managesieved
~~~
+`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.
+
## Configuration
-La configuration de Dovecot se trouve dans le répertoire `/etc/dovecot` et notamment le fichier `dovecot.conf`.
+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/`.
-Pour activer les protocoles POP(S) et IMAP(S) :
+Les paramètres globaux se définissent notamment dans `10-mail.conf`. Dans le
+cas d'un compte Unix unique pour tous les comptes :
~~~
-protocols = imap imaps pop3 pop3s
+mail_location = maildir:/home/vmail/%d/%n
+
+mail_uid = 5000
+mail_gid = 5000
~~~
-Pour autoriser l'authentification en clair même sans SSL/TLS (attention, les identifiants circuleront donc en clair !!) :
+Pour utiliser LDAP comme backend d'authentification, ajouter ceci dans `10-auth.conf` :
~~~
-disable_plaintext_auth = no
+!include auth-ldap.conf.ext
+service auth {
+ unix_listener auth-userdb {
+ mode = 0600
+ user = vmail
+ group = vmail
+ }
+}
~~~
-### Support du + dans les adresses
-
-Il faut patcher le master.cf de postfix ainsi :
+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) :
~~~
-- 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}
+#!include auth-system.conf.ext
~~~
-### Crée des boîtes IMAP automatiquement
+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
+auth_bind = yes
+ldap_version = 3
+base = dc=example,dc=com
+user_attrs = homeDirectory=home
+user_filter = (&(isActive=TRUE)(uid=%u))
+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 :
+
+~~~
+service auth {
+ […]
+
+ # Postfix smtp-auth
+ unix_listener /var/spool/postfix/private/auth {
+ mode = 0666
+ user = postfix
+ group = postfix
+ }
+}
+
+Puis indiquer le chemin vers le socket dans la configuration de Postfix, relatif à son chroot :
+
+~~~
+smtpd_sasl_type = dovecot
+smtpd_sasl_path = private/auth-client
+~~~
+
+### Configuration TLS
+
+La configuration se fait dans le fichier `10-ssl.conf` :
+
+~~~
+ssl = required
+ssl_cert =
@@ -66,103 +140,68 @@ namespace inbox {
}
~~~
-### SSL/TLS
+## Utiliser Dovecot comme LDA
+
+Dovecot fournit un agent de livraison (LDA) nommé `dovecot-lda` via la commande
+`deliver`.
+
+Note : il est également possible d'utiliser le démon `dovecot-lmtp` (paquet _dovecot-lmtp_).
+
+Ajouter la ligne suivante dans le fichier `/etc/postfix/master.cf` :
~~~
-ssl_cert =
+
+On peut aussi utiliser des outils pour générer les règles comme Roundcube, Horde/Ingo, etc. voir
+
+##### Ajouter un message d'absence
~~~
require ["vacation"];
@@ -184,14 +223,8 @@ Cordialement,
~~~
~~~
-require ["fileinto", "copy", "vacation", "variables"];
+require ["vacation", "variables"];
-# Exemple d'une règle de filtrage
-if header :contains ["Subject"] ["testsieve"] {
- fileinto "Test";
-}
-
-# Exemple de message "vacation"
if header :matches "subject" "*" {
vacation :days 3 :subject "Re: ${1}" "Bonjour,
@@ -201,19 +234,18 @@ Je suis indispo jusqu'au DD/MM/YYYY.
}
~~~
-### Langage Sieve
+##### Tri sur le sujet
-On peut écrire des règles Sieve dans le fichier `/home/vmail/example.com/jdoe/.dovecot.sieve` pour un utilisateur en particulier ou dans `/etc/dovecot/sieve.global` pour que cela soit général au serveur.
+~~~
+require ["fileinto", "copy"];
-Voici quelques liens pour écrire les règles :
+if header :contains ["Subject"] ["testsieve"] {
+ fileinto "Test";
+}
-On peut aussi utiliser des outils pour générer les règles comme Roundcube, Horde/Ingo, etc. voir
+~~~
-#### Debug
-
-Regarder dans le fichier *.dovecot.sieve.log*
-
-### Déduplication des mails entrants
+##### Déduplication des mails entrants
Pour réaliser un équivalent de la règle procmail suivante :
@@ -224,7 +256,7 @@ Pour réaliser un équivalent de la règle procmail suivante :
Testé avec Dovecot 2.2.13 en Jessie.
-Ajouter le plugin sieve duplicate dans /etc/dovecot/conf.d/90-sieve.conf :
+Ajouter le plugin sieve duplicate dans `/etc/dovecot/conf.d/90-sieve.conf` :
~~~
sieve_extensions = +vnd.dovecot.duplicate
@@ -234,16 +266,19 @@ Puis dans les règles sieve :
~~~
require ["fileinto","vnd.dovecot.duplicate"];
+
if duplicate {
fileinto "Trash";
}
+
# Si on est sûr de vouloir les supprimer
#if duplicate {
# discard;
#}
~~~
-Note : la ligne require doit être unique et en début de fichier, si des modules sont déjà chargés il suffit d'ajouter "vnd.dovecot.duplicate".
+Note : la ligne require doit être unique et en début de fichier, si des modules
+sont déjà chargés il suffit d'ajouter "vnd.dovecot.duplicate".
En Jessie-backports, version 2.2.27, « duplicate » est intégré. Et il faut mettre dans une règle sieve :
@@ -251,12 +286,12 @@ En Jessie-backports, version 2.2.27, « duplicate » est intégré. Et il faut m
require ["duplicate", "variables"];
if header :matches "message-id" "*" {
if duplicate :uniqueid "${0}" {
- discard;
+ discard;
}
}
```
-### Déplacer les emails avec un certain sujet dans une sous-boîte Junk
+##### Déplacer les emails avec un certain sujet dans une sous-boîte Junk
~~~
require ["fileinto", "mailbox"];
@@ -266,7 +301,7 @@ if header :contains "subject" ["[SPAM]"] {
}
~~~
-### Redirection
+##### Redirection
~~~
if header :contains "Subject" "Foo Bar"
@@ -275,7 +310,7 @@ if header :contains "Subject" "Foo Bar"
}
~~~
-### Syntaxe
+##### Syntaxe
Conditions :
@@ -300,6 +335,27 @@ if CONDITION1 {
> *Note* : le else {keep;} est le comportement par défaut
+
+#### managesieve
+
+Dovecot supporte le protocole managesieve, qui permet d'éditer les règles
+depuis un client compatible (Thunderbird, Roundcube avec le plugin du même nom,
+etc…). Il faut installer le paquet _dovecot-managesieved_ :
+
+~~~
+# apt install dovecot-managesieved
+~~~
+
+Et, si on utilise Roundcube :
+
+~~~
+# apt install roundcube-plugins php-net-sieve
+~~~
+
+La configuration se fait dans le fichier `20-managesieve.conf`. Celle fournie
+par défaut est fonctionnelle. Le démon `managesieved` écoute par défaut sur le
+port TCP 4190.
+
## Mode debug
### Activer le raw logging