Configuration de Dovecot - Debian 9.0 Stretch
Rédigé par Marc GUILLAUME | 6 commentairesTraduction de la page : https://workaround.org/ispmail/stretch/setting-up-dovecot
Ce chapitre de notre voyage nous conduit vers Dovecot, le logiciel qui…
- reçoit les mails de Postfix et les enregistre sur le disque ;
- exécute les règles de filtrage « sieve » des utilisateurs (qui peuvent, par exemple être utilisés pour enregistrer les mails dans différents répertoires sur la base de certains critères ou envoyer une réponse mail automatique pendant vos congés) ;
- Permet aux utilisateurs de récupérer leur courrier en utilisant soit POP3 soit IMAP.
Avant de passer à la configuration en elle-même, et pour des raisons de sécurité, je vous invite à créer un nouvel utilisateur système qui aura la main sur vos boîtes aux lettres. Les commandes qui suivent vont créer un utilisateur vmail avec un UID (user ID ou identifiant d'utilisateur sur le système) 5000 avec un GID (group ID ou identifiant de groupe sur le système) aussi de 5000 (assurez-vous que ces UID et GID ne soient pas déjà utilisés sur votre système et sinon choisissez en d'autres - ce nombre doit être compris entre 1000 et 65000 et ne pas être déjà utilisé) :
groupadd -g 5000 vmail useradd -g vmail -u 5000 vmail -d /var/vmail -m
Si le répertoire /var/vmail existait déjà car vous l'aviez-attribué comme point de montage à une partition pendant l'installation,-alors assurez-vous qu'il appartienne à l'utilisateur-vmail :
chown -R vmail.vmail /var/vmail
Les fichiers de configuration de Dovecot se trouvent dans le répertoiret/etc/dovecot/conf.d/. Tous les fichiers qu'il contient seront chargés par Dovecot. C'est la ligne magique suivante dans le fichier dovecot.conf qui permet cela :
!include conf.d/*.conf
Ceci charge tous les fichiers présents dans /etc/dovecot/conf.d/ qui se terminent en .conf triés par nom. Ainsi le fichier 10-auth.conf est chargé avant 90-quota.conf. Le grand avantage est que vous pouvez modifier ou remplacer des parties de la configuration sans avoir à complètement la modifier. Le fichier principal /etc/dovecot/dovecot.conf n'a besoin d'aucun changement. Par contre les fichiers situés dans conf.d/ ont besoin d'être édités…
conf.d/
10-auth.conf
Si vos utilisateurs utilisent encore Outlook Express (Windows XP) ou Microsoft Mail (Windows Vista) alors vous devez ajouter le mécanisme d'authentification « LOGIN » (précisions dans la documentation de Dovecot : authentication mechanism) en plus du standard « PLAIN » :
auth_mechanisms = plain login
Ce sont des façons d'envoyer des mots de passe de comptes mail en clair (non chiffrés). Mais n'ayez crainte, par défaut Dovecot est configuré pour désactiver les mots de passe en clair : disable_plaintext_auth = yes. Ce qui assure que l'identification soit seulement acceptée au travers d'une connexion chiffrée TLS.
A la fin de ce fichier vous trouverez différentes supports d'authentification qu'utilise Dovecot. Par défaut il se base sur les utilisateurs système listés dans /etc/passwd. Mais nous nous voulons utiliser comme support notre base MySQL, donc modifions ce bloc de fichier comme ceci :
#!include auth-system.conf.ext !include auth-sql.conf.ext #!include auth-ldap.conf.ext #!include auth-passwdfile.conf.ext #!include auth-checkpassword.conf.ext #!include auth-vpopmail.conf.ext #!include auth-static.conf.ext
Maintenant éditons le fichier de configuration SQL :
auth-sql.conf.ext
Modifions la section userdb pour :
userdb { driver = static args = uid=vmail gid=vmail home=/var/vmail/%d/%n }
Le garde place %d représente la partie domaine et %n la partie utilisateur pour une adresse comme « user@domain ». Les variables de Dovecot sont documentées sur leur site web.
10-mail.conf
Changeons les réglages de mail_location (emplacement des mails) pour :
mail_location = maildir:/var/vmail/%d/%n/Maildir
Il s'agit du répertoire dans lequel Dovecot cherchera les mails d'un utilisateur donné. Par exemple pour l'utilisateur « john@example.org » ce sera /var/vmail/example.org/john/Maildir.
Plus loin vous trouverez des sections de définition des espaces de nom (namespaces). Ces espaces de nom sont les structures de répertoires que votre programme de mail voit quand il se connecte au serveur de mail. Si vous utilisez POP3 vous ne pouvez atteindre que le dossier inbox qui est celui dans lequel arrivent tous les mails entrants. En utilisant le protocole IMAP vous avez accès à toute un hiérarchie de répertoires et de sous-répertoires. Et vous pouvez même avoir des dossiers partagés entre utilisateurs ou des répertoires accessible à tous les utilisateurs, même anonymement.
Cherchez la section namespace inbox. Si vous avez déjà des mails sur votre serveur provenant des précédentes versions de ce guide vous devez changer le séparateur par défaut :
separator = .
Ici le séparateur sera le point (« . »). Par défaut le séparateur est le slash (« / ») qui crée des structures de répertoires du genre /var/vmail/example.org/john/Maildir/INBOX/staff/marketing/simon. C'est absolument parfait. Mais dans les vesions précédentes du guide c'est le « . » qui était utilisé comme séparateur. Du coup le chemin mentionné ci-dessus aurait plutôt été /var/vmail/example.org/john/Maildir/.INBOX.staff.marketing.simon.
10-master.conf
Ce fichier de configuration concerne les services qui entrent en communication avec d'autres processus. Par exemple il active ou désactive POP3 ou IMAP. Ne vous souciez pas des port TCP standard non chiffrés utilisés par POP3 (port 110) et IMAP (port 143). On peut les laisser accessibles. Si un utilisateur se connecte sur un de ces ports ils devra accepter une commande « STARTTLS » pour basculer en mode chiffré avant d'être autorisé à envoyer son mot de passe. Il n'y a sur le principe aucune différence entre utiliser un port en clair comme 110 pour POP3 et ensuite utiliser STARTTLS ou se connecter sur le port 995 pour POP3S (S=sécurisé). Pour plus d'explications voyez la documentation de Dovecot.
La plupart des réglages par défaut sont bons ici et n'ont pas besoin d'être changés. Cependant un changement est obligatoire dans la section service auth parce que nous voulons que Postfix confie le service d'authentification à Dovecot. C'est pourquoi il faut saisir :
# Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix }
Pourquoi ce chemin bizarre ? Et bien Postfix tourne dans un environnement chrooté situé dans /var/spool/postfix. Il ne peut accéder à rien en dehors de ce répertoire. Donc pour toutes les communications avec Postfix, nous disons à Dovecot d'utiliser le fichier de socket situé dans cette zone chrootée.
10-ssl.conf
Plus tôt dans ce guide vous avez créé une clé et un certificat pour pouvoir chiffrer les communications POP3, IMAP et HTTPS entre les utilisateurs et votre serveur de mail. Vous devez dire à Dovecot où trouver ces fichiers :
ssl_cert = </etc/letsencrypt/live/webmail.example.org/fullchain.pem ssl_key = </etc/letsencrypt/live/webmail.example.org/privkey.pem
Et activer le chiffrement TLS/SSL en ajoutant :
ssl = yes
Vous pourriez aussi mettre ssl=required mais dans la mesure où de toute façon Dovecot interdit l'envoi de mots de passe en clair sur des connexions non chiffrées nous n'en avons pas vraiment besoin. Voyez la documentaton de Dovecot sur le chiffrement ssl pour plus de détails.
15-mailboxes.conf
Vous devriez également ajouter ces lignes dans votre section namespace inbox :
mailbox INBOX.Junk { auto = subscribe special_use = \Junk } mailbox INBOX.Trash { auto = subscribe special_use = \Trash }
Elles assurent que les répertoires Junk (rebut) et Trash (poubelle) seront créés dans le répertoire inbox lorsqu'un utilisateur s'y connecte. L'utilisateur est également automatiquement abonnés à ces répertoires (quand on utilise IMAP on peut choisir les fichiers que l'on veut voir et s'y abonner). Le dossier Junk est nécessaire pour pouvoir y placer les spams, ce que nous configurerons tout à l'heure. Et le dossier Trash est obligatoire pour que les utilisateurs du webmail Roundcube puisse effectivement effacer des mails.
Les noms utilisés pour un special_use font référence aux boîtes à lettre à usage spécial (special-use mailboxes) décrites dans la RFC 6154.
/etc/dovecot/dovecot-sql.conf.ext
Ce fichier, comme cela est indiqué dans son entête, est appelé par le fichier /etc/dovecot/conf.d/auth-sql.conf.ext. Il indique à Dovecot comment il peut accéder à la base de données MySQL et où il peut trouver les informations concernant les comptes d'utilisateur des adresses mail. En le parcourant vous verrez qu'il est bien documenté, bien que toutes les directives de configuration soient commentées par défaut. Ajoutez ces lignes en fin de fichier :
driver = mysql connect = host=127.0.0.1 dbname=mailserver user=mailuser password=ChangeMe <- utilisez votre propre mot de passe utilisateur ici default_pass_scheme = SHA256-CRYPT password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';
Que signifient ces lignes :
- driver : le type de base de données
- connect : où trouver la base de données et comment l'utiliser (nom d'utilisateur, mot de passe)
- default_pass_scheme : le format dans lequel le mot de passe est enregistré dans la base de données (nous utilisons un hachage SHA256 avec un sel fort)
- password_query : une requête SQL qui retourne l'utilisateur (=l'adresse mail) et le mot de passe (hachage SHA256 ) depuis la base de données où %u” est le nom d'utilisateur de connexion (=nous utilisons l'adresse mail comme nom d'utilisateur d'un compte). Chaque fois que Dovecot a besoin du mot de passe correspondant à une adresse mail il lancera cette requête pour vérifier le mot de passe en comparant son hachage avec celui enregistré dans la base de données.
La touche finale
Vous devez également vous assurer que seul root peut accéder au fichier de configuration de la base de données de sorte que personne d'autre ne puisse lire le mot de passe secret de votre base de données :
chown root:root /etc/dovecot/dovecot-sql.conf.ext chmod go= /etc/dovecot/dovecot-sql.conf.ext
Redémarrez le processus dovecot depuis le shell :
service dovecot restart
Regardez votre fichier de log /var/log/mail.log. Vous devriez y lire :
... dovecot: master: Dovecot v2.2.27 (c0f36b0) starting up for imap, lmtp, sieve, pop3 (core dumps disabled)
Si vous trouvez quelque erreur re-vérifiez vos fichiers de configuration.