Yunohost comme serveur de mails – Billet N°1

Dans ce billet, je parlerai d'une expérimentation en cours que j'ai qui est d'utiliser YunoHost comme serveur de mails.

Mon instance YunoHost est un petit serveur autohebergé : comprendre un PC physiquement branché derrière ma Freebox (qui me sert de routeur et de connexion à Internet, en ADSL).

Introduction

YunoHost intègre les services Dovecot pour la gestion de l'IMAP et Postfix pour la gestion de la réception / envoi des mails. Ces services sont automatiquement configurés en fonction des domaines et des utilisateurs de ces domaines créés sur YunoHost, au niveau du serveur. Par défaut, avec les noms de domaines qui sont associés à l'instance YunoHost, pour chaque utilisateur, YunoHost crée un compte mail.

Dans le mail, il faut distinguer la réception de mail et l'envoi.
- Réception de mail : j'écris à utilisateur@mondomaine.com, il faut que les serveurs de mails qui envoient les mails sachent où trouver la boite mail de réception. Pour ce faire, ils interrogent le champ MX des entrées DNS du domaine mondomaine.fr, ce qui donnent l'adresse IP du serveur à qui adresser les mails.
- Envoi de mail : j'écris un mail depuis un client (Thunderbird) ou un webmail, le logiciel se connecte au serveur d'envoi (ici le service Postfix sur l'instance YunoHost) et envoie le mail au destinataire, en se basant sur le domaine indiqué dans le mail.
Dans les deux cas, c'est

Mise en place

Comme indiqué en introduction, la majorité de la configuration est déjà faite J'ai suivi les 3 pages de documentation suivantes de la documentation de YunoHost,à savoir :
- Messagerie électronique
- Configuration de la zone DNS
- Configurer la redirection des ports

Modification et validation des DNS

J'ai modifié le champ MX de mon nom de domaine, loué chez Gandi, pour que l'adresse ne soit plus chez Gandi mais sur mon domaine.

Remarque : Gandi n'autorise pas l'usage de ses serveur de mail en tant que MX secondaire, il n'est pas possible d'avoir un autre serveur de secours le mail de Gandi lié au domaine.

Avant modification, si on fait la commande

dig MX mondomaine.fr

On a en résultat

(...)
;; ANSWER SECTION:
mondomaine.fr. 10800 IN MX 10 spool.mail.gandi.net.
mondomaine.fr. 10800 IN MX 50 fb.mail.gandi.net.

Ce sont les serveurs mails de Gandi qui gèrent la réception des mails envoyés depuis l'extérieur

Après modification du DNS et propagation (1h à 3h ou plus, tout dépend de la configuration initiale)

;; ANSWER SECTION:
mondomaine.fr. 3600 IN MX 10 mondomaine.fr.

La machine derrière mondomaine.fr est devenue la machine de réception des mails.

Ouverture des ports

Dans la configuration de la Freebox, j'ai du ajouter la redirection des ports suivants vers le serveur YunoHost :
- 25 - SMTP : nécessaire pour que les serveurs Postfix parlent entre eux (cf un peu plus bas dans
- 587 - SMTP authentifié : nécessaire pour la connexion et l'envoi de mail depuis Thunderbird par exemple, via une connexion "depuis Internet"
- 993 - IMAP

Remarque : dans la configuration de ma Freebox, dans mon espace abonné Free, j'ai bien le blocage du SMTP sortant d'actif (blocage du port 25)

Pas de soucis car lors de l'envoi d'un mail, on peut voir que le port sortant est le port 587.

# nethogs

21223 postfix smtp eth0 0.000 0.000 KB/sec ? root 192.168.0.1:587-192.168.0.254:42898

Avec 192.168.0.1 l'IP locale de mon serveur YunoHost, 587 le port utilisé en sortie sur ce serveur et 192.168.0.254 l'IP locale de la Freebox qui est le point de sortie.

Pour la réception des mails, envoi d'un mail depuis free.fr sur compte@mondomaine.fr

# nethogs
21362 postfix smtp eth0 0.000 0.000 KB/sec
? root 192.168.0.1:25-212.27.42.2:51185

Avec
- 192.168.0.1:25 : requête sur le port 25 (postfix) du serveur de mail YunoHost
- 212.27.42.2:51185 : la machine smtp2-g21.free.fr (le test a été fait depuis un mail free.fr)

On a donc bien le serveur SMTP de Free qui a parlé à mon serveur de mails.

Autre test de réception, envoi d'un mail depuis mon adresse framasoft.org vers mon compte@domaine.fr

# nethogs
21552 postfix smtp eth0 0.000 0.000 KB/sec
? root 192.168.0.1:25-138.201.XXX.XXX:37907

Avec
- 192.168.0.1:25 : le serveur de mail YunoHost
- 138.201.XXX.XXX:37907 : l'IP du serveur SMTP de Framasoft

On a donc bien le serveur mail de Framasoft qui parle là aussi sur le port 25.

Testé et fonctionnel

- Envoi et réception à une adresse correct : monutilisateur@mondomaine.fr reçoit bien des mails envoyés depuis une autre adresse mail
- Envoi et réception à une adresse incorrect : si on écrit à exitepas@mondomaine.fr, l'expéditeur reçoit par mail un message d'erreur lui indiquant que l'adresse n'existe pas
- Réception en double dans une boite mail de secours : dans la partie gestion des comptes YunoHost, il est possible de définir un mail de secours. Les mails reçus sur le compte sont retransmis en copie sur ce compte de secours. Remarque : cela nécessite que le serveur soit fonctionnel vu que c'est lui qui fait le renvoi.

Webmail

L'application Roundcube s'installe comme n'importe quelle application et permet l'envoi, la consultation, le classement des mails, comme n'importe quel webmail.

Configuration d'un client mail comme Thunderbird

Depuis la version 3.1 (version stable mineure), YunoHost apporte Autoconfiguration des clients mails (e.g. Thunderbird) (#495 7)

Pour la configuration dans Thunderbird, il suffit donc d'indiquer son adresse mail utilisateur@mondomaine.com, son mot de passe YunoHost, et Thunderbird interroge le serveur et sait faire automatiquement sa configuration pour l'IMAP et le SMTP en utilisant les bons ports et les bons noms de serveurs. Pratique.

Non testé, à faire et en projet

Ce seront des sujets de billets de blog à venir je pense.
- Regarder les entêtes des mails reçus (envoyés via le serveur YunoHost) pour voir les métadonnées du mail
- Configuration DKIM, DMarc, SPF... : n'autoriser / ne certifier les mails envoyés via une adresse mondomaine.fr que les mails étant envoyés depuis le serveur YunoHost.
- Envoi d'un mail sur des mails de GAFAM (Gmail, Hotmail - Microsoft, Yahoo) : normalement les mails sont reconnus à défaut comme SPAM.
- Avoir un serveur mail de secours : si mon serveur ne marche plus pendant plusieurs jours, il faut qu'un serveur de mail autre soit un serveur temporaire qui puisse accueillir les mails.
- Vérifier la bonne configuration du serveur postfix : valider qu'il ne peut pas être utilisé comme relais smtp
- Surveillance et supervision des logs