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

Mon serveur YunoHost

Matériel: VPS x86_64bit acheté en ligne
Version de YunoHost: 3.7.1.1 (stable)
J’ai accès à mon serveur : En SSH | Par la webadmin
Êtes-vous dans un contexte particulier ou avez-vous effectué des modificiations particulières sur votre instance ? : non

Description du problème

J’ai un peu de mal à configurer le serveur mail.

J’ai un nom de domaine chez Gandi et j’utilise Gandi Mail. Sur mon serveur YH je n’utilise pas encore l’apex (je suis en phase de test) mais je n’utiliserai pas les emails, qui resteront configuré chez Gandi.

Par contre, je veux que les apps puissent envoyer des emails (confirmation d’inscription, récupération de mot de passe…). J’ai donc un sous-domaine configuré par défaut pour le portail YH mais ce n’est pas avec ce sous-domaine que je veux que les emails s’envoient. J’ai donc configuré un autre sous-domaine pour lequel j’ai configuré les dns chez Gandi.

Problème, le serveur mail est visiblement configuré avec le sous-domaine par défaut (correct ?). Du coup, je peux recevoir sans problème mais pas envoyer. Puis-je configurer le serveur mail pour qu’il utilise un nom de domaine qui n’est pas celui par défaut ?

Aussi, je reçois un " Undelivered Mail Returned to Sender" avec notamment cette ligne :

Diagnostic-Code: X-Postfix; mail for domaine.tld loops back to myself

Qui me faire penser que je fais probablement n’importe quoi…

J’imagine que tu veux dire le domaine par défaut ?

Probablement, mais il te faut bricoler la conf postfix à la main dans /etc/postfix/

Mon domaine par défaut est un sous-domaine. C’est un problème ?

C’est bien ce que je me disais…

Quand je regarde les en-têtes des mails reçus, c’est le domaine par défaut qui est affiché pour “Delivered-To:” alors qu’ils sont envoyés sur un autre sous-domaine. Donc, il se passe un truc au niveau de la config dns qui m’échappe.

Est-ce un problème que j’ai configuré le dns pour le (sous)-domaine par défaut et un autre sous-domaine ? Peut-il y avoir conflit ?

En tout cas, je ne sais toujours pas envoyer de mail.

P.S. : peut-être une question idiote mais pourquoi n’y a-t-il pas une option pour choisir le domaine configuré pour le serveur mail ?

Nope pas spécialement, c’est juste qu’actuellement YunoHost n’a pas vraiment de distinction de domaine vs. sous-domaine (pour lui toto.example.com n’a aucun lien avec example.com)

Pas sur que les en-tetes du mail soient liés à la conf DNS, a mon avis c’est surtout lié à la conf postfix…

Je ne pense pas mais difficile à dire sans savoir de quoi tu parles exactement :confused:

Parce qu’il y a environ douzmille autres sujets sur lesquels travailler et que ça n’a pas encore été traité :stuck_out_tongue_winking_eye:

Bonjour,

Hum, va falloir que je m’intéresse de plus près à la conf de postfix.

Je vais essayer d’être plus clair. Mon domain.tld est configuré chez Gandi (Simple Hosting) pour les mails et le site web de l’association dans laquelle je travaille. J’ai installé YH chez Scaleway afin de tester des apps qui seront, pour certaines, destinées à notre public. Je souhaite donc que des visiteurs puissent accéder à ces apps (jusque là, pas de problème) et s’y inscrire. Il est donc nécessaire que la partie mail soit opérationnelle pour valider des inscriptions, récupérer des mots de passe etc…

Chez Gandi, j’ai donc ajouté les enregistrements dns porposés par YH pour ce qui est des mails. Ceci pour le domaine par défaut (qui est un sous-domaine, sd1.domain.tld) mais aussi pour un autre sous-domaine sd2.domain.tld. J’ai fait ça parce que je voulais que l’adresse d’envoi soit plus explicite que celle par défaut.

Actuellement, je sais envoyer des emails sauf dans un cas (voir plus bas). Pourquoi ça ne fonctionnait pas ? Je vous le donne en mille et je prépare mes doigts : mon fournisseur vps bloquait les mails sortants. Jusque-là, oui, vous avez à faire à un pigu :grimacing:

Donc à priori l’envoi de mails fonctionne sauf si j’envoi un mail sur l’apex, sur lequel sont configurées les adresses du personnel de l’association et dont j’aimerais qu’elles puissent être utilisées dans les apps puisque ce sont celles qui serront utilisées par mes collègues.

A savoir qu’entre des adresses configurée sur YH, cela fonctionne. C’est là que je ne comprends pas…

Ce que j’aimerais arriver à faire :

  • configurer postfix avec le sous-domaine que j’ai configuré sur YH uniquement pour les mails. Il y a /etc/postfix/main.cf à modifier mais y’en a-t-il d’autre(s) ? J’ai vraiment peur de casser le mail :worried:

  • Pouvoir envoyer des mails sur l’apex

Voici une partie de ma config dns anonymisée et annottée :

@ 3600 IN A IPV4_GANDI
@ 3600 IN AAAA IPV6_GANDI
@ 10800 IN MX 10 sd1.domain.tld. => domaine par défaut
@ 10800 IN MX 10 sd2.domain.tld. => domaine pour mails
@ 10800 IN MX 10 GANDI
@ 10800 IN MX 50 GANDI
@ 10800 IN TXT “v=spf1 a mx ip4:IP_VPS ip6:IP_VPS -all”
@ 10800 IN TXT “v=spf1 include:GANDI ?all”
_dmarc 3600 IN TXT “v=DMARC1; p=none”
sd1 3600 IN A IP_VPS
sd2 3600 IN A IP_VPS
mail._domainkey 3600 IN TXT “v=DKIM1; h=sha256; k=rsa;KEY”

Un idée ?

Uuuuh en lisant en diagonal ça a l’air legit … Pas sur de piger la partie pour l’apex, mais bref, a mon avis vasy et edit la conf postfix/main.cf … A mon avis c’est le seul fichier à éditer (n’oublie pas de reload postfix avant chaque test). Dans le pire des cas tu peux voir tes changements avec yunohost tools regen-conf postfix --dry-run --with-diff et forcer le retour à la conf par défaut avec yunohost tools regen-conf postfix --force

En fait j’aimerais que les apps puissent envoyer des mails sur les adresses configurées sur le root domain (apex) chez Gandi. Donc, d’envoyer de adresse@mon.domaine.tld (YH) vers adresse@domaine.tld (Gandi). J’utilise le root domaine pour héberger un site web (que je déménagerai probablement sur YH) et des mails chez Gandi, et des sous-domaines sur YH. Mais j’ai peut-être une piste avec ce post.

Plus qu’à tester tout ça.

Merci pour ton aide :wink:

Par contre, je me posais la question de savoir comment Gandi savait à quel domaine était liée ces lignes :

_dmarc 3600 IN TXT “v=DMARC1; p=none”
mail._domainkey 3600 IN TXT “v=DKIM1; h=sha256; k=rsa;KEY”

?

Implicitement ici, “_dmarc” est en fait “_dmarc.ton.domaine.tld.” (avec un . a la fin pour signifier que c’est un nom absolu et pas relatif)

Mais étant donné que dans ma config dns il y a des enregistrements MX pour Gandi Mail et pour YH, comment être sûr que Gandi associe cet enregistrement _dmarc au domaine configuré sur YH. Même question pour mail._domainkey ?

Désolé, je pose beaucoup de question. Les emails sont très complexes en fait !

Quand tu est dans ton interface Gandi, tu configures la zone d’un domaine précis. Je ne sais pas comment est fichue l’interface de Gandi (chaque registrar a son interface…) mais si ce n’est pas explicite dans l’interface, alors si tu ajoute un enregistrement “toto”, il correponds à “toto.tondomaine.tld.”

Maintenant si tu parles d’ajouter un enregistrement _dmarc pour un sous domaine de tondomaine.tld (appelons-le sub.tondomaine.tld) alors tu dois effectivement faire attention à en réalité ajouter l’enregistrement _dmarc.sub (qui correspondra du coup à _dmarc.sub.tondomaine.tld)

YunoHost anéfé n’explique pas spécialement ça car n’a pas de distinction de sous-domaine vs. domaine “racine” et ne sais donc pas adapter la configuration recommandée en fonction … Mais ça viendra.

Oui, ou même tout l’écosystème d’administration système + DNS + les spécificités du protocoles (le mail en l’occurence) …

Le pari de YunoHost est de dire que tout ça c’est trop le bordel et qu’il faut (et qu’on peut) standardiser et automatiser le plus possible si l’on veut permettre au plus grand nombre de s’approprier le fait d’avoir un serveur pour s’affranchir des mégacorpos :wink:. Là la partie complexe est de gérer les enregistrements DNS car c’est traditionnellement rempli “à la main” et par des techniciens qui ont fait 3 thèses en réseaux … Ceci dit dans le turfu™ on vise d’automatiser la gestion de ces enregistrements DNS via les différentes API des registrars

Oui j’utilise un sous-domaine alors je viens d’adapter ma config (_dmarc et mail._domainkey). Mais je ne sais pas trop ce que faisait Gandi des enregistrements avant modif puisque du coup ça s’appliquait à l’apex…

:+1:

Et vous faites un super boulot !

Great !

Bon moins great maintenant, j’ai cassé le serveur mail…

J’ai d’abord fait des modifs pour tâcher de changer le domaine par défaut mais ça ne fonctionnait plus (j’utilise Roundcube pour mes tests) alors j’ai rapidement restauré la config de base. Peut-être un peu vite sans avoir vraiment cherché l’origine du problème mais je voulais être sûr que ça refonctionne et ce fut le cas (cool ce système de restauration de config).

Ensuite j’ai voulu essayer la piste du post partagé dans un précédent message. A savoir, ajouter le nom de domaine à la section “mydestination” du main.cf.

Avant : mydestination = localhost
Après : mydestination = localhost , mon.domaine.tld

Cata :scream: ! La liste des emails dans RoundCube s’est vidée et j’ai droit à 2 jolis cadres rouge en bas à droite avec :

  • Erreur de serveur : LIST: Internal error occurred. Refer to server log for more information
  • Erreur de serveur : STATUS: Internal error occurred. Refer to server log for more information

J’ai relancé une restauration de la config postfix mais ça n’a pas résolu le problème.

Voici ce que dit le log (toutes les minutes) :

Apr 15 21:49:44 yunohost dovecot: imap-login: Login: user=, method=PLAIN, rip=::1, lip=::1, mpid=5282, secured, session=
Apr 15 21:49:44 yunohost dovecot: imap(user): Error: chdir(/var/mail/user) failed: Not a directory
Apr 15 21:49:44 yunohost dovecot: imap(user): Error: open(/var/mail/user/maildirsize) failed: Not a directory
Apr 15 21:49:44 yunohost dovecot: imap(user): Error: stat(/var/mail/user/tmp) failed: Not a directory
Apr 15 21:49:44 yunohost dovecot: imap(user): Error: stat(/var/mail/user/tmp) failed: Not a directory
Apr 15 21:49:44 yunohost dovecot: imap(user): Error: stat(/var/mail/user/tmp) failed: Not a directory
Apr 15 21:49:44 yunohost dovecot: imap(user): Logged out in=108 out=817

Le problème semble venir de dovecot alors j’ai essayé un yunohost tools regen-conf dovecot --force qui n’a rien renvoyé ni rien résolu…

A ce propos, en regardant dans le fichier dovecot.conf j’ai vu qu’il y avait des références au domaine par défaut dans une section ssl qui indique l’emplacement du cert et key.
Je me trompe peut-être mais il semblerait que le main.cf de postfix ne soit pas le seul fichier à modifier. N’y a-t-il pas un script pour le changement de domaine par défaut ? Il me semble avoir vu ça sur github mais je ne trouve plus où. Dedans je devrais pouvoir trouver les différents fichiers impactés non ?

Quoi qu’il en soit, cassé le mail… :cry:

Bonjour,

Quelqu’un aurait une idée ?

Salut,

Desole je ne peux t’apporter d’aide ici. Je poste juste pour dire que je suis presque dans la meme situation que toi (DNS chez Gandi mais mails chez Free). Je suis aussi interesse par cette fonctionnalite pour que mes apps puissent envoyer des emails (notamment pour les liens de partage de Nextcloud). Je vais me pencher sur tes reglages pour permettre cela (merci donc d’avoir poste!)

Salut Vinz,

L’envoi de mails par les apps semble fonctionner avec la configuration de base de YH. Il faut pour cela que ton serveur puisse évidemment envoyer des emails et dans mon cas, j’ai du demander à mon fournisseur VPS d’ouvrir les ports.

J’ai notamment testé avec Mattermost en envoyant une invitation sur une de mes adresses et je reçois bien l’invitation avec comme expéditeur no-reply@mattermost.mondomaine.tld. Bien sûr si tu regardes l’en-tête du message, l’envoi se fait à partir du domaine configuré par défaut sur YH.

Parenthèse, mon problème avec Dovecot n’empêche pas l’envoi de mail mais RoundCube n’affiche plus ma boîte et j’ai un joli message d’erreur. Honnêtement, je ne comprends pas ce qu’il s’est passé ni ce que cela implique au-delà de RoundCube. Je suis toujours preneur d’une piste de réflexion.

Ce que je voulais faire, c’est configurer le serveur mail sur un autre domaine (sous-domaine en réalité) que le domaine configuré par défaut sur YH pour que l’adresse d’envoi soit plus “parlante”. A y réfléchir, ce n’est peut-être pas si important que cela. Il serait tout de même pratique de pouvoir le changer via l’interface d’administration et visiblement c’est prévu dans le futur.

Là où la config actuelle me pose problème (au-delà de mes soucis avec Dovecot que j’aimerais résoudre) c’est qu’il m’est impossible d’envoyer un mail sur une adresse qui est configurée sur le même domaine mais sur un autre serveur. En gros, je ne peux pas envoyer de user@mon.domaine.tld (configuré sur YH) à user@domaine.tld (configuré chez Gandi). Etant donné que je ne veux pas déplacer les adresses professionnelles des employés de l’association dans laquelle je travaille sur YH (c’est un serveur de test) mais que ces employés utilisent leur adresse pro pour les app sur le serveur YH, c’est un problème (récupération de mot de passe, notifications…).

Je ne sais pas si je suis bien clair mais donc, de base, les apps devraient pouvoir envoyer des mails dans ton cas (si ports ouverts sur le serveur et/ou routeur) via le domaine par défaut configuré sur ton YH.

Salut @unsui!

Merci pour ta reponse et pour la longue explication, effectivement le truc #1 c’etait de regarder pour le port 25 sur ma box (BBox), qui etait effectivement ferme. Je l’ai ouvert et continue mes tests.

Je dois regarder comment faire envoyer un simple email par les apps YNH, j’ai teste avec Nextcloud mais la seule erreur que j’ai en effectuant un partage avec une adresse mail c’est ‘Sharing has failed’ dans l’interface graphique. Je suis donc en train de regarder dans les forums/doc Nextcloud comment avoir plus d’infos …

Bonjour @Vinz,

Je viens d’essayer de faire comme toi mais il semblerait que le partage soit désactivé sur mon instance Nextcloud. Vérifie que l’application “File sharing” soit bien activée mais si tu as accès a des options de partage ça devrait être le cas.

Pour ceux que ça pourrait intéresser, j’ai réglé le problème avec Dovecot. L’erreur, dont je ne connais pas vraiment l’origine si ce n’est d’avoir modifié le paramètre mydestination du fichier de configuration de postfix main.cf, était due au fait que le répertoire du compte mail situé dans /var/mail/ qui porte le nom de l’utilisateur a été renommé BOGUS.user.abcd. Ce qui aurait dû être un dossier user était un fichier. J’ai donc renommé ce répertoire en utilisant ces commandes :

  • cp user user.bak (sauvegarde le fichier user qui devrait être un dossier au cas où)
  • rm user (supprime le fichier user sinon on ne pourra pas renommer le dossier)
  • cp -r BOGUS.user.abcd BOGUS.user.abcd.bak (sauvegarde le dossier au cas où)
  • mv BOGUS.user.abcd user (renomme le dossier)

Après ça, j’ai retrouvé ma boîte mail dans Roundcube.

Bonsoir @unsui,

merci pour ta reponse. Le partage est bien active car je peux obtenir des liens de partage que j’envoie ensuite manuellement par email. C’est le partage directement en entrant une adresse email qui ne fonctionne pas.

J’ai trouve dans l’interface d’admin de Nextcloud (sous les reglages de mon utilisateur) la partie ‘logging’ et effectivement une erreur est enregistree:

Swift_TransportException: Expected response code 354 but got code "554", with message "554 5.5.1 Error: no valid recipients "

(avec dessous la bactrace PHP complete de l’arbre d’appel).

Donc clairement je pense un probleme de config d’email (l’adresse que j’utilise comme destinataire du partage est sur le domaine de mon serveur et est valide, passant par Gandi/Free). Reste a savoir ou est le souci dans la config. Je continue de chercher …

Bonsoir @Vinz,

Désolé pour ma réponse tardive.

Je n’ai aucune idée de ce dont tu parles :thinking:

Tu veux dire que de YH tu essaies d’envoyer un mail sur une adresse configurée chez Gandi ? Tu utilises le même domaine (et sous-domaines on s’entend) sur YH et sur Gandi ?