Modifications entre les versions 7 et 8
Version 7 à la date du 2013-01-22 18:14:59
Taille: 6257
Éditeur: WillyManga
Commentaire: une manière de tester le traitement par sieve
Version 8 à la date du 2014-06-02 19:20:04
Taille: 7004
Éditeur: WillyManga
Commentaire: dovecot et Inotify (sur squeeze)
Texte supprimé. Texte ajouté.
Ligne 220: Ligne 220:

== Constats ==

=== Limites atteintes quant à l'usage d' Inotify ===

Avec dovecot 1.2.15-7 (''squeeze'') <<FootNote(A vérifier lors du passage à dovecot 2 sur wheezy)>> 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 <<FootNote('''A CONFIRMER''')>> créer un fichier (exemple dans `/etc/sysctl.d/local_dovecot.conf` dans votre CT contenant la valeur désirée
----

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) 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


  1. A vérifier lors du passage à dovecot 2 sur wheezy (1)

  2. A CONFIRMER (2)

Dovecot (dernière édition le 2014-06-02 19:20:04 par WillyManga)