relecture

This commit is contained in:
gcolpart 2017-10-13 05:58:51 +02:00
parent 4c5cb148b1
commit 401221d78c

View file

@ -112,9 +112,13 @@ mail_gid = 5000
protocol lda {
mail_plugins = sieve
}
# Optimisations
login_max_processes_count = 256
mail_max_userip_connections = 42
~~~
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 :
Il est important de commenter la ligne suivante si on n'utilise pas du tout l'authentification via PAM car cela évite d'avoir plusieurs secondes de lag à chaque requête POP/IMAP ! Cela se fait en commentant la ligne suivante dans le fichier `/etc/dovecot/conf.d/10-auth.conf` :
~~~
#!include auth-system.conf.ext
@ -235,8 +239,8 @@ namespace inbox {
## Sieve
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.
Sieve est un langage permettant d'écrire des règles de filtrage 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 supportent la gestion de règles Sieve (*Thunderbird*, *Roundcube, *Ingo*…).
Pour activer Sieve, il faut utiliser Dovecot LDA et ajuster la directive *mail_plugins* (comme utilisé dans notre notre configuration de base) :
@ -255,13 +259,36 @@ sont journalisées dans le fichier *.dovecot.sieve.log* à la racine du compte.
Il est également possible de définir des scripts sieve globaux à tous les
comptes, voir le fichier `90-sieve.conf`.
#### Exemple de règles
### Syntaxe
Un filtre Sieve a la forme suivante :
~~~
if CONDITION1 {
ACTION1;
} elsif CONDITION2 {
ACTION2;
} else {
keep;
}
~~~
> *Note* : le else {keep;} est le comportement par défaut
Exemples de condition :
~~~
if header :contains "Subject" "Foo"
if header :contains "Subject" ["Foo", "Bar"]
if address :domain "From" "qq.com"
if anyof (header :contains "X-Foo" "Bar", header :contains "X-Baz" "Qux")
~~~
### Exemple de règles
Voici quelques liens pour écrire les règles : <http://support.tigertech.net/sieve>, <http://sieve.info/tutorials>
On peut aussi utiliser des outils pour générer les règles comme Roundcube, Horde/Ingo, etc. voir <http://sieve.info/clients>
##### Ajouter un message d'absence
#### Ajouter un message d'absence
~~~
require ["vacation"];
@ -294,7 +321,7 @@ Je suis indispo jusqu'au DD/MM/YYYY.
}
~~~
##### Tri sur le sujet
#### Tri sur le sujet
~~~
require ["fileinto", "copy"];
@ -305,7 +332,7 @@ if header :contains ["Subject"] ["testsieve"] {
~~~
##### Déduplication des mails entrants
#### Déduplication des mails entrants
Pour réaliser un équivalent de la règle procmail suivante :
@ -337,8 +364,7 @@ if 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".
> *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 :
@ -351,7 +377,7 @@ if header :matches "message-id" "*" {
}
```
##### 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"];
@ -361,7 +387,7 @@ if header :contains "subject" ["[SPAM]"] {
}
~~~
##### Redirection
#### Redirection
~~~
if header :contains "Subject" "Foo Bar"
@ -370,51 +396,20 @@ if header :contains "Subject" "Foo Bar"
}
~~~
##### Syntaxe
Conditions :
~~~
if header :contains "Subject" "Foo"
if header :contains "Subject" ["Foo", "Bar"]
if address :domain "From" "qq.com"
if anyof (header :contains "X-Foo" "Bar", header :contains "X-Baz" "Qux")
~~~
Enchainement de conditions :
~~~
if CONDITION1 {
ACTION1;
} elsif CONDITION2 {
ACTION2;
} else {
keep;
}
~~~
> *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_ :
Si l'on a bien installé le package `dovecot-managesieved`, Dovecot supporte le protocole *managesieve* qui permet d'éditer les règles
depuis un [client compatible](http://sieve.info/clients) : *Mozilla Thundebird* via une [extension](http://sieve.mozdev.org/), [Roundcube](HowtoMail/Roundcube), Horde [Ingo](https://www.horde.org/apps/ingo) etc.
~~~
# apt install dovecot-managesieved
~~~
La configuration par défaut de Dovecot active le démon **managesieved** qui écoute par défaut sur le port réseau TCP/4190.
Et, si on utilise Roundcube :
> *Note* : si on utilise Roundcube, il faut installer les packages suivants :
>
> ~~~
> # apt install roundcube-plugins php-net-sieve
> ~~~
~~~
# 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
@ -422,6 +417,7 @@ port TCP 4190.
<http://wiki.dovecot.org/Debugging/Rawlog>
Le raw logging est très utile pour effectuer du debug poussé car il permet de voir toutes les commandes jouées par un client.
Par exemple en IMAP, il faut activer cela dans le _dovecot.conf_ :
~~~
@ -430,20 +426,20 @@ protocol imap {
}
~~~
Ensuite, il suffit de créer un répertoire _dovecot.rawlog_ dans le $HOME
de l'utilisateur (accessible en écriture évidemment), et toutes les commandes
IMAP passées seront stockées dans des fichiers : `<annee><mois><jour>-.*.{in,out}`
Ensuite, il suffit de créer un répertoire _dovecot.rawlog_ dans le $HOME de l'utilisateur (accessible en écriture évidemment), et toutes les commandes IMAP passées seront stockées dans des fichiers : `<annee><mois><jour>-.*.{in,out}`
### Debug pour l'authentification
Activer :
~~~
# queries.
auth_debug = yes
#auth_debug_passwords = yes
~~~
## Optimisations
## Nombre max de processus de login
À chaque login, dovecot fork un processus. Afin d'éviter les fork-bomb s'il y a trop de connexions il y a une limite par défaut à 128. L'augmenter peut résoudre des problèmes si le serveur reçoit de nombreuses connexions.
@ -458,9 +454,9 @@ Il faut en parallèle augmenter la limite sur le nombre de fichiers ouverts, dan
ulimit -n 5696
~~~
## Nombre max de connexion par IP+Login
### Nombre maximum de connexions par IP
Dovecot limite également le nombre de connexion IMAP d'une même IP avec un même compte.
Dovecot limite également le nombre de connexions IMAP d'une même adresse IP avec un même compte.
Cette limite est de 10 par défaut, il est possible de l'augmenter en ajoutant dans la section IMAP :
~~~
@ -474,12 +470,59 @@ dovecot: imap-login: Maximum number of connections from user+IP exceeded (mail_m
~~~
## Mountpoints
## Monitoring
### Nagios
TODO
### Munin
Plusieurs plugins Munin sont disponibles sur <https://github.com/munin-monitoring/contrib/search?q=dovecot>
Nous utilisons principalement <https://raw.githubusercontent.com/munin-monitoring/contrib/master/plugins/mail/dovecot>
à télécharger dans /etc/munin/plugins/ avec les droits 755 que l'on fait tourner avec le groupe adm via
/etc/munin/plugin-conf.d/munin-node :
~~~
[dovecot]
group adm
~~~
## FAQ
### Erreur "Out of memory"
Si vous avez des erreurs du type :
~~~
dovecot: imap(foo): Fatal: block_alloc(16777216): Out of memory
dovecot: imap(foo): Fatal: master: service(imap): child 666 returned error 83 (Out of memory (service imap { vsz_limit=256 MB }, you may need to increase it))
~~~
il faut augmenter la mémoire `vsz_limit = 512M` dans la section `imap` de la configuration.
### Vérifier la conf
Pour vérifier qu'il n'y a pas d'erreur dans la configuration
~~~
# doveconf -n
~~~
Il se peut que la configuration soit bonne mais qu'il y ait tout de même une erreur (un certificat SSL/TLS qui n'existe pas, par exemple), on peut alors lancer dovecot en mode debug :
~~~
# dovecot -F
~~~
### Mountpoints
<http://wiki2.dovecot.org/Mountpoints>
## Erreurs de LOCK
### Erreurs de LOCK
Si vous avez des chargements très longs à l'authentification ou des erreurs de type :
@ -494,20 +537,7 @@ elle bloques les autres connexions POP3... et même IMAP. Pour résoudre cela, s
pop3_lock_session=no
~~~
## Munin
Plusieurs plugins Munin sont disponibles sur <https://github.com/munin-monitoring/contrib/search?q=dovecot>
Nous utilisons principalement <https://raw.githubusercontent.com/munin-monitoring/contrib/master/plugins/mail/dovecot>
à télécharger dans /etc/munin/plugins/ avec les droits 755 que l'on fait tourner avec le groupe adm via
/etc/munin/plugin-conf.d/munin-node :
~~~
[dovecot]
group adm
~~~
## doveadm
### doveadm
La commande _doveadm_ permet d'avoir différentes interactions avec le serveur Dovecot. Par exemple :
@ -521,31 +551,10 @@ kicked connections from the following users:
foo
~~~
## FAQ
### Lenteur à chaque requête POP/IMAP
### Erreur "Out of memory"
Si vous avez des erreurs du type :
Si vous constatez une lenteur à chaque requête avec votre client POP/IMAP (Roundcube, Thunderbird etc.), vérifiez que vous avez désactivé l'authentification via PAM qui rajoute plusieurs secondes de lag si elle n'est pas utile ! La ligne suivante doit être commentée dans le fichier `/etc/dovecot/conf.d/10-auth.conf` :
~~~
dovecot: imap(foo): Fatal: block_alloc(16777216): Out of memory
dovecot: imap(foo): Fatal: master: service(imap): child 666 returned error 83 (Out of memory (service imap { vsz_limit=256 MB }, you may need to increase it))
~~~
Vous pouvez augmenter la mémoire _vsz_limit = 512M_ dans le service imap.
### Vérifier la conf
Pour vérifier qu'il n'y a pas d'erreur dans la conf
~~~
# doveconf -n
~~~
Il se peut que la configuration soit bonne mais qu'il y ait tout de
même une erreur (un certificat ssl qui n'existe pas, par exemple), on
peut alors lancer dovecot en mode debug
~~~
# dovecot -F
~~~
#!include auth-system.conf.ext
~~~