L'erreur "Recipient address rejected : User unknown in virtual mailbox table" est subtile ! Avant de la résoudre, on reçoit les mails de tout le monde, on peut envoyer des mails à tout le monde... sauf aux adresses mails gérées par OVH, alors que le domaine est hébergé par yunohost. Cela renvoie cette erreur :
Erreur SMTP 550 5.1.1 : Recipient address rejected : User unknown in virtual mailbox table.
Pourquoi cette erreur ?
Voici le contexte : Disons que j'ai deux domaines, avec leurs sites respectifs, que je veux auto-hérberger avec yunohost. Jusque là tout va bien.
Mon serveur à la maison a une adresse fixe IPv4, donnée par Free dans mon cas, mais aucune IPv6. Pour les mails, ça peut être un problème, face à certains gros mastodontes, qui classent sans scrupules les adresses mails pas configurées comme ils le veulent dans les spams.
Autant pour une adresse, cela n'est pas un problème, pour l'autre, je ne veut pas risquer que les gens ne reçoivent pas mes mails. Je laisse donc OVH gérer les mails (même si eux-mêmes ne font pas ça super bien, puisqu'ils ne mettent pas en place de clé DKIM, mais ça a l'air de moins poser soucis que le serveur auto-hébergé...)
J'ai donc un domaine dont les mails sont gérés par mon serveur local, et un autre installé aussi sur mon serveur local, mais dont les mails sont gérés par OVH.
La réception des mails extérieurs se fait sans soucis, de même que l'envoi de mails vers des adresses extérieures. Le problème survient à partir du moment où j'essaie d'écrire avec l'adresse hébergée en local, à l'adresse gérée par OVH.
Yunohost, qui gère le domaine, part du principe que l'adresse mail devrait exister en local. S'il ne la trouve pas, il répond juste qu'elle n'existe pas, Sans chercher à savoir si c'est lui qui gère les mails...
Comment résoudre l'erreur "Recipient address rejected : User unknown in virtual mailbox table" ?
Pour pouvoir résoudre cette erreur, deux étapes sont importantes :
- Pour utiliser le MX de OVH d’un domaineB.tld
éditer/etc/dnsmasq.d/domaineB.tld
avec cette lignemx-host=ssl0.ovh.net,5
- Pour permettre un utilisateur du domaineA.tld d’écrire un mail au domaineB.tld qui utilise les MX de OVH, exclure la requête LDAP de Postfix, ce qui empêche d’envoyer un message du domaineA.tld (qui lui utilise le mail de Yunohost) vers domaineB.tld.
Éditer le fichier/etc/postfix/ldap-domains.cf
avec cette ligne:query_filter = (&(&(objectClass=mailDomain)(virtualdomain=%s))(!(virtualdomain=domaineB.tld)))
Enfin, relancer les services concernés :
Il ne vous reste plus qu'à essayer de renvoyer votre mail, et ça y est, tout fonctionne !