<> Dovecot est le service de boîte aux lettres recommandé à l'AuF. 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'') <> 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 <> créer un fichier (exemple dans `/etc/sysctl.d/local_dovecot.conf` dans votre CT contenant la valeur désirée ----