Faire en sorte que Postfix envoie les mails à Dovecot - Debian 9.0 Stretch
Rédigé par Marc GUILLAUME | Aucun commentaireTraduction de la page : https://workaround.org/ispmail/stretch/postfix-dovecot
Dans un chapitre précédent nous nous sommes assurés que Postfix sache quels emails il est autorisé à recevoir. Maintenant que faire avec ces emails ? Il faut les enregistrer sur le disque pour les utilisateurs. Vous pourriez laisser Postfix se charger de cela en utilisant sont agent de distribution intégré appelé virtual. Cependant, comparé aux possibilités fournies par Dovecot dans le traitement des règles sieve ou des quotas, l'agent de Postfix est un peu simpliste. De toute façon nous utilisons déjà Dovecot pour fournir le service IMAP (et optionnellement POP3). Donc autant l'utiliser aussi pour la distribution du courrier.
Il y a deux façons pratiques d'établir un lien entre Postfix et Dovecot.
- Une est d'utiliser le processus dovecot-lda (local delivery agent) qui démarre un nouveau processus pour chaque mail. Cela a été pendant longtemps la technique par défaut. Mais vous imaginez que cela suit difficilement la montée en charge.
- L'autre option est d'utiliser LMTP (Local Mail Transfer Protocol) qui a été conçu pour cet usage. Il peut traiter de multiples destinataires en même temps et est un processus tournant en permanence ce qui permet de bien meilleurs performances que le LDA. En bref LMTP est une variante de SMTP avec un peu moins de fonctionnalités. Il est fait pour la communication de mails entre des composants qui se font mutuellement confiance.
Vous vous en doutiez déjà, nous allons utiliser la seconde option. Le paquet dovecot-lmtpd devrait déjà être installé sur votre système. Començons donc par…
Dire à Dovecot d'écouter les connexions LMTP venant de Postfix
Éditez le fichier de configuration de Dovecot qui concerne le démon LMTP. Vous le trouverez à cet endroit /etc/dovecot/conf.d/10-master.conf. Cherchez la section service lmtp et modifiez la comme ceci :
service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { group = postfix mode = 0600 user = postfix } }
Ceci indique au démon lmtp de Dovecot de créer un socket UNIX dans le répertoire /var/spool/postfix/private/dovecot-lmtp. Comme dans la section traitant de la configuration de Dovecot nous lui faisons placer un socket dans le répertoire chrooté /var/spool/postfix car Postfix y est enfermé et ne peut accéder à rien en dehors de ce répertoire. Donc du point de vue de Postfix le socket est situé dans /private/dovecot-lmtp.
Relancez le service dovecot…
service dovecot restart
(En fait ce petit bout de configuration provient du wiki de Dovecot.)
Nous pouvons maintenant…
Dire à Postfix de transmettre les mails à Dovecot en utilisant LMTP
C'est simple comme bonjour. La variable virtual_transport de Postfix définit le service à utiliser pour délivrer le courrier au système local. Dovecot a créé un fichier de socket et est prêt à écouter les connexions LMTP entrantes. Il nous suffit de dire à Postfix d'envoyer les mails ici :
postconf virtual_transport=lmtp:unix:private/dovecot-lmtp
La syntaxe vous semble dingue ? C'est en fait très simple. Vous avez juste dit à Postix d'utiliser le protocole LMTP. Et que nous vouliez pour ça utiliser un socket UNIX sur le système (au lieu par exemple d'une connexion TCP). Et que ce fichier de socket se trouve à l'emplacement /var/spool/postfix/private/dovecot-lmtp.
(Vous trouverez de plus amples informations sur cette étape dans la documentation concernant la Configuration de Dovecot pour l'intégration à Postfix.)
Activez les règles de filtrage des mails côté serveur
Une de mes fonctionnalités préférées de Dovecot sont les règles de filtrage des mails entrants exécutées sur le serveur. Vous pouvez trier vos mails venant de listes de diffusion dans des répertoires différents. Vous pouvez rejeter certains expéditeurs. Ou vous pouvez mettre en place des répondeurs automatiques pendant vos vacances. Pas besoin d'avoir démarré un client de messagerie, tout se fait automatiquement, même quand les utilisateurs ne sont pas connectés.
Le standard Open-source (RFC 5228) pour ces règles s'appelle Sieve. Pour faire simple, Sieve est une façon de gérer les règles de filtrage côté serveur. Une règle consiste en conditions et actions. Par exemple si l'adresse de l'expéditeur correspond à « steve@example.org » (la condition) vous pourriez demander à Dovecot de le placer automatiquement dans votre dossier « steve » (l'action). Ces règles sont enregistrées sur le serveur Dovecot et exécutées automatiquement. Que vous vous connectiez depuis un smartphone, un portable ou par le webmail, les règles fonctionnent toujours et il n'y a besoin d'aucune configuration côté client.
Comme nous utilisons LMTP, c'est ce service que nous devons avertir que nous voulons utiliser le plugin sieve de Dovecot. Éditez le fichier /etc/dovecot/conf.d/20-lmtp.conf et dans la section protocol lmtp modifiez la ligne mail_plugins comme ceci :
mail_plugins = $mail_plugins sieve
Redémarrez Dovecot et ce sera terminé :
service dovecot restart