Réseau - Web - GNU/Linux

2018 30 janvier

Configuration de Dovecot - Debian 9.0 Stretch

Rédigé par Marc GUILLAUME | 6 commentaires
Article précédent Mail façon FAI - Debian 9.0 Stretch Article suivant

Traduction 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.

6 commentaires

#1  - Letouane a dit :

Poursuivant la mise en place, j'arrive au point "10-ssl.conf" où il est mentionné :
"Plus tôt dans ce guide vous avez créé une clé et un certificat pour pouvoir chiffrer les communications."

En effet, nous avons généré dans le dossier "/etc/letsencrypt/live/webmail.example.org/", pourquoi mentionnez-vous (tu ?) le chemin "</etc/ssl/certs/mailserver.pem" alors que le chemin créé précédemment est connu ?

Répondre
#2  - Marc GUILLAUME a dit :

"Tu" ira très bien ! Et bien tu as raison, lors des traductions je pars du texte de Christoph et il avait fait l'erreur que j'ai bêtement recopiée (je ne relis pas toujours en détail les bouts de code), et je vois que dans la configuration de mon serveur j'ai bien envoyé sur le bon chemin, ce qui était logique.
Et je vois dans ses commentaires que Christoph a eu la même remarque et a modifié sa page. Il faut donc que je corrige cela le plus vite possible. Merci de ta lecture si attentive, c'est comme ça qu'on va parvenir à un document vraiment exploitable.

Répondre
#3  - Letouane a dit :

Dans la partie "/etc/dovecot/dovecot-sql.conf.ext", est indiqué "Ce fichier se trouve à l'emplacement etc/dovecot/conf.d/auth-sql.conf.ext" et je pense que c'est trompeur...
C'est bel et bien dovecot-sql.conf.ext qui doit être modifié et non auth[...]

Répondre
#4  - Marc GUILLAUME a dit :

Oui, comme répondu ci-dessus, il faut que je corrige toutes ces erreurs... Merci encore !

Répondre
#5  - Marc GUILLAUME a dit :

Oui là c'était carrément n'importe quoi, j'ai corrigé le chemin des certificats let's encrypt et la rédaction du paragraphe sur /etc/dovecot/dovecot-sql.conf.ext, en fait ce fichier est appelé par auth-sql.conf.ext, comme on le lit dans son entête. Maintenant c'est correct.

Répondre
#6  - 2fr3.com a dit :

Bonjour a tous,
J'ai galéré un moment sur un warning dans les logs, si cela peut aider !

Warning: mysql: Query failed, retrying: Table 'mailserver.users' doesn't exist

La faute n'est evidement pas de l'auteur du tutoriel, encore moins de sa traduction, mais au fait de nombreuses configuration differentes avec des versions qui differerent et qui evoluent qui plus est.

Le remede est par ici : https://serverfault.com/questions/594974/dovecot-unable-to-perform-mysql-query

Dans le tutoriel ici présent, il faut dans certain cas appliquer :

-Ouvrir : /etc/dovecot/conf.d/auth-sql.conf.ext
-Commenter :
#userdb {
#driver = sql
#args = /etc/dovecot/dovecot-sql.conf.ext
#}

Bien a vous.

Répondre

Écrire un commentaire

Quelle est la cinquième lettre du mot hhwvqm ?

Fil RSS des commentaires de cet article

À propos

Yakati.info - Réseau - Web - GNU/Linux © 2017

Généré par PluXml en 0.032s  - Administration

Mes coordonnées

Marc Guillaume
contact[at]yakati.info
79150 ÉTUSSON

Crédits

Pour la gestion du contenu

Généré par PluXml, le Blog ou Cms sans base de données

Pour le contenu

Licence Creative Commons
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.

Pour le thème

Thème SOLID de blacktie.co adapté pour PluXml