relecture
This commit is contained in:
parent
4c5cb148b1
commit
401221d78c
207
HowtoDovecot.md
207
HowtoDovecot.md
|
@ -112,9 +112,13 @@ mail_gid = 5000
|
||||||
protocol lda {
|
protocol lda {
|
||||||
mail_plugins = sieve
|
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
|
#!include auth-system.conf.ext
|
||||||
|
@ -235,8 +239,8 @@ namespace inbox {
|
||||||
|
|
||||||
## Sieve
|
## 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 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 le supporte : *Mozilla Thundebird* via une [extension](http://sieve.mozdev.org/), [Roundcube](HowtoMail/Roundcube), [Ingo](https://www.horde.org/apps/ingo) etc.
|
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) :
|
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
|
Il est également possible de définir des scripts sieve globaux à tous les
|
||||||
comptes, voir le fichier `90-sieve.conf`.
|
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>
|
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"];
|
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"];
|
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 :
|
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
|
> *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".
|
||||||
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 :
|
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"];
|
require ["fileinto", "mailbox"];
|
||||||
|
@ -361,7 +387,7 @@ if header :contains "subject" ["[SPAM]"] {
|
||||||
}
|
}
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
##### Redirection
|
#### Redirection
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
if header :contains "Subject" "Foo Bar"
|
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
|
#### managesieve
|
||||||
|
|
||||||
Dovecot supporte le protocole managesieve, qui permet d'éditer les règles
|
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 (Thunderbird, Roundcube avec le plugin du même nom,
|
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.
|
||||||
etc…). Il faut installer le paquet _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.
|
||||||
# apt install dovecot-managesieved
|
|
||||||
~~~
|
|
||||||
|
|
||||||
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
|
## Mode debug
|
||||||
|
|
||||||
|
@ -422,6 +417,7 @@ port TCP 4190.
|
||||||
|
|
||||||
<http://wiki.dovecot.org/Debugging/Rawlog>
|
<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_ :
|
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
|
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}`
|
||||||
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
|
### Debug pour l'authentification
|
||||||
|
|
||||||
Activer :
|
Activer :
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
# queries.
|
|
||||||
auth_debug = yes
|
auth_debug = yes
|
||||||
#auth_debug_passwords = yes
|
#auth_debug_passwords = yes
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
|
|
||||||
|
## Optimisations
|
||||||
|
|
||||||
## Nombre max de processus de login
|
## 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.
|
À 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
|
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 :
|
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>
|
<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 :
|
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
|
pop3_lock_session=no
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
## Munin
|
### doveadm
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
La commande _doveadm_ permet d'avoir différentes interactions avec le serveur Dovecot. Par exemple :
|
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
|
foo
|
||||||
~~~
|
~~~
|
||||||
|
|
||||||
## FAQ
|
### Lenteur à chaque requête POP/IMAP
|
||||||
|
|
||||||
### Erreur "Out of memory"
|
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` :
|
||||||
|
|
||||||
Si vous avez des erreurs du type :
|
|
||||||
|
|
||||||
~~~
|
~~~
|
||||||
dovecot: imap(foo): Fatal: block_alloc(16777216): Out of memory
|
#!include auth-system.conf.ext
|
||||||
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
|
|
||||||
~~~
|
~~~
|
Loading…
Reference in a new issue