Configuration de Dovecot - Debian 6.0 Squeeze
Rédigé par Marc GUILLAUME | Aucun commentaireConfigurer le logiciel Dovecot chargé de la distribution du courrier aux utilisateurs.
Il est maintenant temps de configurer Dovecot qui sera chargé :
- de récupérer les mails depuis Postfix et les sauver sur le disque,
- d'exécuter les règles de filtrage utilisateur sieve (qui peuvent être utilisées pour distribuer les mails dans différents dossiers),
- de permettre aux utilisateurs de récupérer leur courrier en utilisant POP3 ou IMAP.
Avant d'en venir à la configuration proprement dite, je vous suggère, pour des questions de sécurité, de créer un nouvel utilisateur système qui possèdera toutes les boites à lettre vrituelles. la commande shell suivante va créer un group vmail avec le GID 5000 et un utilisateur système vmail avec l'UID 5000. (Assurez-vous avant que cet UID et ce GID ne sont pas déjà utilisés sur votre système. Dans ce cas choisissez-en un autre, le nombre peut être un nombre inutilisé quelconque entre 1000 et 65000.)
$> groupadd -g 5000 vmail $> useradd -g vmail -u 5000 vmail -d /var/vmail -m
Assurez-vous également que ce répertoire possède les bons droits d'accès :
chown -R vmail:vmail /var/vmail chmod u+w /var/vmail
Les fichiers de configuration de Dovecot se trouvent sous /etc/dovecot. Commencez avec le fichier principal...
Le fichier /etc/dovecot/dovecot.conf
Intérressons-nous d'abord à la ligne des protocoles et définissez ceux que vous voulez offrir. Par défaut cette ligne est :
protocols = imap imaps pop3 pop3s
de telle sorte que Dovecot démarre les services IMAP et POP3 et leurs équivalents fonctionnant avec une connexion cryptée SSL (secur socket layer).
bien qu'il s'agisse d'un règlage moins sécure, vous en aurez certainement besoin :
disable_plaintext_auth = no
Cela autorisera les mots de passe en clair sur un connexion non sécurisée (sans SSL). Par défaut le réglage est 'yes' pour des raisons de sécurité. Le mettre à 'no' apportera une moins grande sécurité, mais aidera les utilisateurs d'un "certain" logiciel de courrier de Microsoft très bogué qui pose de nombreux problèmes.
Un réglage plus important est :
mail_location = maildir:/var/vmail/%d/%n/Maildir
Qui signifie que les boîtes des utilisateurs se trouvent toujours dans /var/vmail/DOMAIN/USER/Maildir et doivent utiliser le format maildir.
Il existe une section namespace private dans votre fichier dovecot.conf qui est désactivée par des signes "#" de commentaire. L'espace de nom "privé" désigne une boîte à lettre utilisable uniquement par un certain utilisateur. Vous pouvez laisser cette section désactivée et utiliser un schéma de répertoires maildir dans ce genre :
/var/vmail/christoph.haas/email/Maildir/.spam
Si vous aviez suivi une version précédente de ce tutoriel, alors il est possible que vos répertoires soient un peu différents. Si vous avez plutôt :
/var/vmail/christoph.haas/email/Maildir/.INBOX.spam
alors il faut que vous le déclariez dans la section "namespace private" comme indiqué ci-dessous. Activez cette section et assurez vous d'assigner une valeur à ces variables :
namespace private { separator = . inbox = yes }
Ensuite recherchez une section appellée "auth default". Commencez par définir les méchanismes d'identification autorisés.
mechanisms = plain login
Normalement le méchanisme utilisé est "plain" mais un certain client de mail de Microsoft insiste pour utiliser "login". Les deux méchanismes utilisent du texte en clair, donc il est fortement recommandé que vos utilisateurs utilisent IMAPS et POP3S qui sont les équivalents encodés SSL/TLS d'IMAP et POP3.
En parcourant cette section du fichier vous pouvez voir les nombreux systèmes que Dovecot peut utiliser pour récupérer les informations sur les utilisateurs. Nous utilisons des requêtes SQL pour l'information passdb (=password) mais des informations statiques pour les informations sur les utilisateurs (parce que nous utilisons toujours le même schéma pour chaque utilisateur). Dans cette section vous devez fixer :
passdb sql { args = /etc/dovecot/dovecot-sql.conf }
Ce qui indique à Dovecot que les mots de passe sont stockés dans une base SQL et :
userdb static { args = uid=5000 gid=5000 home=/var/vmail/%d/%n allow_all_users=yes }
pour indiquer à Dovecot où sont situées les boîtes aux lettres. C'est semblable au règlage de mail_location. L'utilisateur est identifié via la section "passdb sql". Ainsi la section "userdb static" définit où sont situés les répertoires de courrier. L'utilisation de "userdb sql" n'est pas nécessaire tant que toutes les boîtes à lettre respectent un schéma d'arborescence défini de manière fixe. Ceci économise une requête SQL pour chaque accès. Le règlage "allow_all_users=yes" indique que Dovecot n'a pas besoin de vérifier si un utilisateur existe. On peut se permettre cela car Postfix a déjà vérifié (par une requête sur la table virtual_mailbox_maps) l'existance des utilisateurs avant de transmettre leurs mails à l'agent de distribution Dovecot.
Vous devrez également commenter la section appelée "passdb pam" qui correspond aux utilisateurs du système. Si vous ne le faites pas, Dovecot cherchera également dans les utilisateurs système lorsqu'un utilisateur viendra récupérer son courrier, ce qui entraînera des messages d'alerte dans votre fichier de log.
Cherchez maintenant une autre section appellée "socket listen". A cet endroit vous définissez des fichiers de socket qui sont utilisés pour se connecter au méchanisme d'identification de Dovecot. Rédigez ainsi cette section :
socket listen { master { path = /var/run/dovecot/auth-master mode = 0600 user = vmail } client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } }
La section "master" est nécessaire pour autoriser l'agent de distribution de Dovecot (le programme qui enregistre les nouveaux messages dans les boîtes à lettres des utilisateurs) à accéder aux informations userdb. La section client crée un socket à l'intérieur du répertoire "chroot" de Postfix. Ce fichier de socket sera utilisé par Postfix pour l'identification SMTP quand les utilisateurs enverront leurs email par votre serveur utilisé en tant que relais (s'ils se trouvent à l'extérieur de votre réseau).
Note : Chroot signifie que certains processus de Postfix sont emprisonnés dans /var/spool/postfix et ne peuvent accéder qu'à des fichiers de ce répertoire ou de ses sous-répertoires. C'est une bonne mesure de sécurité car ainsi, même si Postfix avait un bug et pouvait être hacké l'attaquant ne pourrait pas atteindre par exemple /etc/passwd car il est en dehors de /var/spool/postfix.
Et pour finir, la section "protocol lda" doit être personnalisée. Le LDA (local delivery agent : agent de distribution local) est plus puissant que l'agent de distribution virtuel inclus dans Postfix. Il autorise l'utilisation de quotas et du filtre Sieve (qui fait partie du paquet dovecot-common). La section doit ressembler à :
protocol lda { auth_socket_path = /var/run/dovecot/auth-master postmaster_address = postmaster@example.com mail_plugins = sieve log_path = }
Bien entendu changez l'adresse mail ci-dessus pour une adresse valide où l'administrateur peut être joint.
L'option log_path (chemin des logs) est facultative, mais peut vous aider à comprendre pourquoi un certain filtre côté serveur ne fonctionne pas comme vous l'attendiez. La laisser vide comme ci-dessus entraînera l'enregistrement des logs de distribution de courrier dans votre fichier de log normal /var/log/mail. Mais vous pouvez aussi saisir un nom de fichier ici pour créer un fichier de log séparé.
Éditez le fichier /etc/dovecot/dovecot-sql.conf et modifiez ces réglages :
driver = mysql connect = host=127.0.0.1 dbname=mailserver user=mailuser password=mailuser2011 default_pass_scheme = PLAIN-MD5 password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';
Chaque fois que Dovecot aura besoin de vérifier le mot de passe d'un utilisateur il lancera la requête ci-dessus. Il commencera par créer un hash MD5 du mot de passe fourni par l'utilisateur et cherchera sa correspondance dans la table virutal_users de la base de données.
Redémarrez Dovecot :
$> /etc/init.d/dovecot restart
Maintenant vous devriez lire dans votre fichier journal /var/log/mail.log :
... dovecot: Dovecot v1.2.15 starting up (core dumps disabled) ... dovecot: auth-worker(default): mysql: Connected to 127.0.0.1 (mailserver)
Avant d'envoyer un premier mail de test vous devez régler les permissions du système de fichier pour le fichier /etc/dovecot/dovecot.conf de manière à ce que l'utilisateur vmail puisse accéder à la configuration de Dovecot. Ceci parce que Postfix démarre l'agent de distribution avec les permissions de vmail.
$> chgrp vmail /etc/dovecot/dovecot.conf $> chmod g+r /etc/dovecot/dovecot.conf
Il faut également s'assurer que seul root peut accéder à la configuration SQL pour que personne d'autre ne puisse lire les mots de passe d'accès à la base de données :
chown root:root /etc/dovecot/dovecot-sql.conf chmod go= /etc/dovecot/dovecot-sql.conf