relecture
This commit is contained in:
parent
4c5cb148b1
commit
401221d78c
1 changed files with 109 additions and 100 deletions
209
HowtoDovecot.md
209
HowtoDovecot.md
|
@ -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
|
||||
~~~
|
Loading…
Reference in a new issue