Sommaire
Il supporte IMAP et POP3, ainsi que ManageSieve et SSL/TLS.
Principe
- Sur un serveur IMAP, les messages restent toujours sur le serveur de courrier : seuls les en-têtes sont téléchargés en local, puis les composantes des messages eux-mêmes (corps et attachements).
- Il gère plusieurs accès simultanés : possibilité de récupérer son courrier à partir de plusieurs postes.
- Comme les messages restent sur le serveur, leur gestion peut se faire également sur le serveur : possibilité de tri, de classement, à partir du lieu de travail ou de chez soi, etc.
- Il permet la synchronisation des changements effectués hors-ligne, entre chaque connexions.
Installation
Pour installer Dovecot :
# aptitude install dovecot-imapd
Configuration
Quelques paramètres sont à ajuster dans /etc/dovecot/dovecot.conf.
Global
les protocoles à activer :
protocols = imap imaps managesieve
puis :
protocol imap { # connexion sans SSL autorisée uniquement pour les tests locaux listen = 127.0.0.1, [::1] ssl_listen = *, [::] } protocol managesieve { # http://lists.debian.org/debian-user/2009/12/msg00380.html # port 2000 attribué à Cisco SCCP depuis 2003 ! listen = *:4190, [::]:4190 }
quelques paramètres de sécurité :
disable_plaintext_auth = yes
et :
shutdown_clients = yes
activation de SSL/TLS, rendu obligatoire :
ssl = required
puis les certificats :
# note : http://wiki.auf.org/wikiteki/PKI#Obtenir_un_certificat ssl_cert_file = /etc/ssl/certs/mail.XX.auf.org-cert.pem ssl_key_file = /etc/ssl/private/mail.XX.auf.org-key.pem ssl_ca_file = /etc/ssl/certs/ca-certificates.crt
et en cas de besoin de débogage des connexions SSL/TLS :
#verbose_ssl = yes
emplacement des boîtes aux lettres par défaut (peut être revu par utilisateur) :
# home = /var/mail/%Ld/%Ln mail_location = maildir:~/Maildir
et privilège d'accès au dossier des boîtes :
mail_uid = vmail mail_gid = vmail
pour la performance d'écriture dans les boîtes :
fsync_disable = yes
pour une meilleure visibilité des processus en cours :
verbose_proctitle = yes
utilisateurs autorisés, à supposer que 888 est l'UID de l'utilisateur vmail :
first_valid_uid = 888 last_valid_uid = 888
et groupes autorisés, à supposer que 888 est le GID du groupe vmail :
first_valid_gid = 888 last_valid_gid = 888
pour la performance des copies de messages :
maildir_copy_with_hardlinks = yes maildir_copy_preserve_filename = yes maildir_very_dirty_syncs=yes
LDA
pour permettre à Dovecot de livrer les messages dans les boîtes (LDA), avec filtrage Sieve à l'arrivée :
protocol lda { postmaster_address = postmaster@XX.auf.org hostname = mail.XX.auf.org mail_plugins = sieve mail_plugin_dir = /usr/lib/dovecot/modules/lda quota_full_tempfail = yes auth_socket_path = /var/run/dovecot/auth-master }
Voir aussi la partie service d'authentification pour Postfix dans la section Authentification
Authentification
pour faciliter l'analyse des problèmes :
auth_verbose = yes #auth_debug = yes auth_debug_passwords = no
configurer l'authentification par défaut :
auth default { mechanisms = plain login … # commenter l'authentification via PAM si on ne l'utilise pas #passdb pam { … #} … # dé-commenter l'authentification via LDAP si on l'utilise passdb ldap { args = /etc/dovecot/dovecot-ldap.conf } … # commenter les infos utilisateurs via PAM si on ne l'utilise pas #userdb pam { … #} … # dé-commenter les infos utilisateurs via LDAP si on l'utilise userdb ldap { args = /etc/dovecot/dovecot-ldap.conf } … # dé-commenter les infos utilisateurs via SQL si on l'utilise userdb sql { args = /etc/dovecot/dovecot-sql.conf } … # service d'authentification pour Postfix socket listen { master { path = /var/run/dovecot/auth-master mode = 0600 user = vmail # User running Dovecot LDA group = vmail } client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } }
Sieve
configurer l'extension Sieve :
plugin { … # filtre en cours d'utilisation (lien vers un fichier dans le sieve_dir) sieve=~/dovecot.sieve # dossier de stockage des filtres Sieve sieve_dir=~/sieve # filtre imposé à toutes les boîtes sieve_before = /var/lib/dovecot/sieve/discard-spams.sieve … }
créer le dossier /var/lib/dovecot/sieve avec ces commandes (sous root) :
mkdir -p /var/lib/dovecot/sieve chmod 0750 /var/lib/dovecot chgrp vmail /var/lib/dovecot
créer le filtre imposé sur toutes les boîtes dans /var/lib/dovecot/sieve/discard-spams.sieve :
require ["fileinto"]; if header :contains "X-Spam-Flag" "YES" { fileinto "Junk"; stop; } #if header :comparator "i;ascii-casemap" :contains "Subject" "***SPAM***" { # fileinto "Junk"; # stop; #} #à décommenter pour tester des envois à moi+spam@... #if header :contains ["To"] ["+spam@"] { # fileinto "Junk"; # stop; #}
puis le compiler avec cette commande (sous root) :
sievec /var/lib/dovecot/sieve/discard-spams.sieve
pour pouvoir utiliser la gestion des filtres Sieve par SOGo, créer un lien dans chaque boîte utilisateur avec cette commande (sous root) :
cd /var/mail/ ; for bal in */*; do ln -s sieve/sogo.sieve $bal/dovecot.sieve ; done
Kerberos
Ne pas mettre en place sans maîtriser Kerberos !
configurer le nom et les clés :
auth_gssapi_hostname = mail.XX.auf.org auth_krb5_keytab = /etc/dovecot/krb5.keytab
ajouter le support GSSAPI aux mécanismes d'authentification :
mechanisms = plain login gssapi
Constats
Limites atteintes quant à l'usage d' Inotify
Avec dovecot 1.2.15-7 (squeeze) 1 vous pouvez avoir ceci un jour
Inotify instance limit for user exceeded, disabling. Increase /proc/sys/fs/inotify/max_user_instances
Il faudrait donc augmenter la valeur contenue dans ce fichier. Il faudrait qu'elle soit ≥ à celle de la variable login_max_processes_count de dovecot.
La modification doit se faire depuis l'hôte si vous utilisez OpenVZ et pour que ça soit durable il faudrait 2 créer un fichier (exemple dans /etc/sysctl.d/local_dovecot.conf dans votre CT contenant la valeur désirée