Permettre aux apps d'envoyer du mail même si le serveur de mail principal est ailleurs

Je vois 3 cas:

  • Le serveur doit pouvoir envoyer des mails en sub1.domain.tld et on gardes les boites mail et le site en domain.tld chez le registrar
  • Le serveur doit pouvoir envoyer des mails en domain.tld mais on garde les boites mail et le site en domain.tld chez le registrar
  • Le serveur doit pouvoir envoyer des mails en domain.tld et héberger le site en domain.tld mais on garde les boites mail en domain.tld chez le registrar

Cas numéro 1: Envoyer des mail en XXX.domain.tld et avoir des boites mail en domain.tld chez le registrar

Spoiler pas besoin de modification de configuration.

On installe donc le YunoHost avec n’importe quel sous-domaine. YunoHost est multi domain, il peut envoyer des mails avec n’importe quels domaines configurées dans la liste des domaines de YunoHost (voir webadmin).

Par contre il y a un point d’attention important : la config DNS proposée par YunoHost est un peu piège même si en un sens elle peut être exact dans certaines situations.

En effet, si on a installé avec sub1.domain.tld, YunoHost propose actuellement (YunoHost 3.8.1.1) :

; Basic ipv4/ipv6 records
@ 3600 IN A XXX.YYY.ZZZ.AAA

; Mail
@ 3600 IN MX 10 sub1.domain.tld.
@ 3600 IN TXT "v=spf1 a mx -all"
mail._domainkey 3600 IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIGfM[...]CAC"
_dmarc 3600 IN TXT "v=DMARC1; p=none"

; Extra
* 3600 IN A XXX.YYY.ZZZ.AAA
@ 3600 IN CAA 128 issue "letsencrypt.org"

Mais en réalité, si vous configurez votre domaine chez un registrar, celui-ci vous propose de gérer une zone DNS par domaine, et non pa sune zone pour chaque sous-domaine… Donc il faut interpréter les @ car le @ signifie “le domaine courant de la zone DNS”.

Du coup pour un sous-domaine configuré chez un registrar cette configuration serait plus exacte:

; Basic ipv4/ipv6 records
sub1.domain.tld. 3600 IN A XXX.YYY.ZZZ.AAA

; Mail
sub1.domain.tld. 3600 IN MX 10 sub1.domain.tld.
sub1.domain.tld. 3600 IN TXT "v=spf1 a mx -all"
mail._domainkey.sub1.domain.tld. 3600 IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIGfM[...]CAC"
_dmarc.sub1.domain.tld. 3600 IN TXT "v=DMARC1; p=none"

; Extra
*.sub1.domain.tld. 3600 IN A XXX.YYY.ZZZ.AAA
sub1.domain.tld. 3600 IN CAA 128 issue "letsencrypt.org"

Le serveur doit pouvoir envoyer des mails en domain.tld mais on gardes les boites mail en domain.tld chez le registrar

Cas numéro 2: Envoyer des mail en domain.tld et avoir des boites mail et le site en domain.tld chez le registrar

Spoiler il faut modifier les fichiers dnsmasq uniquement.
Il faut faire tout ce qui est fait dans le cas numéro c’est à dire installer sur sub1.domain.tld + configurer les DNS comme expliqué.

Une fois qu’on a fait ça on peut ajouter le domaine domain.tld dans YunoHost. Par contre, on ne modifie pas tous les enregistrements DNS. En particulier on ne vas pas ajouter de MX ni modifier le A ou le AAAA.

On modifie donc juste les enregistrement SPF et DMARC du registrar

@ 3600 IN TXT "v=spf1 a mx include:sub1.domain.tld  -all"

Et on ajoute DKIM (comme demandé dans la configuration proposée par YunoHost (donc avec la bonne clé)

@ 3600 IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIGfM[...]CAC"

A ce stade là on doit pouvoir ajouter un alias mail à un user, qui lui permettra d’envoyer du mail en @domain.tld. Par contre le user ne pourra pas recevoir de mail en @domain.tld via YunoHost.

Reste que si on essaie d’envoyer un mail vers un mail @domain.tld, ça ne va pas marcher, car le serveur YunoHost va interpréter qu’il est domain.tld. Ne connaissant pas l’utilisateur de destination il va refuser l’envoi. Il faut donc modifier le dnsmasq menteur de YunoHost:
/etc/dnsmasq.d/domain.tld en indiquant la vraie IP et le vraie MX des serveurs gandi

Cas numéro 3: Envoyer des mails en domain.tld et héberger le site en domain.tld mais on garde les boites mail en domain.tld chez le registrar

Concrètement on peut installer le YunoHost avec le nom de domaine principal.

Il faut ensuite configurer les DNS comme proposé par YunoHost sauf l’enregistrement MX qu’il faut laisser comme le registrar l’a configuré. Si il y a déjà un DKIM on ne le supprime pas, on rajoute une autre clé DKIM.

Reste que si on essaie d’envoyer un mail vers un mail @domain.tld, ça ne va pas marcher, car le serveur YunoHost va interpréter qu’il est le MX pour domain.tld. Ne connaissant pas l’utilisateur de destination il va refuser l’envoi. Il faut donc modifier le dnsmasq menteur de YunoHost:
/etc/dnsmasq.d/domain.tld en indiquant le vraie MX des serveurs du registrar

A faire dans tous les cas

Avec une de ces configurations et à condition d’avoir un port 25 ouvert dans les 2 sens + un reverse DNS en IPv4 et IPv6 configuré sur le domaine principal de YunoHost + une IP non résidentielle + une IP non listée dans une blackliste + remplissage de la white liste de microsoft et gmail, vous devriez pouvoir envoyer du mail.

1 Like