Demande d'aide pour docker (avec email)

Bonjour à vous,

Il fut un temps oú je cherchais un endroit oú poser mes questions IT qui me causent du chagrin ; Nicole m'a conseillé ce canal.
Cette question n'est pas liée au NNCR.

J'ai un souci re docker (je suis une toute débutante avec docker, donc...)

La question :

  • comment faire en sorte qu'une appli dockerisée puisse envoyer des emails ? (pas en recevoir, donc une connection avec un service smtp est suffisant)
  • l'appli n'est pas devéloppée par moi
  • la config docker-compose serait un plus

J'ai beaucoup cherché, sans succès : je suis certaine qu'une question aussi basique doit avoir une réponse simple.... Merci !

Paulette.

I forgot to specify that sendmail is running on the host and is operational.

Salut,

A priori il n'y a pas de lien entre docker et l'envoie d’émail.

Je pense que tu peux essayer de mettre l'adresse du serveur smtp directement dans le fichier de configuration de l'application.

Ou alors donner + de precision sur ce que tu essaye de faire.

Merci François.

Je vais essayer de détailler le contexte et d'apporter des précisions :

  • j'ai une appli (DSW) qui est dockerisée ; elle est configurée par le fichier docker-compose.yml et application.yml
  • cette appli a besoin d'accéder à un serveur smtp : dans mon cas c'est sendmail qui est ici a daemon (sendmail est fonctionnel)
  • pour que l'appli parle à sendmail il me suffit de préciser le host dans le fichier de configuration
  • donc (nous avions déjà eu cette conversation) ici le host c'est localhost ; localhost qui est accessible par la gateway du docker network associé à l'appli (typiquement 172.17.0.1)

mais raté, je me retrouve avec
"[Mailer ] Failed to send email: Network.Socket.connect: <socket: 7>: does not exist (Connection refused)"

dans les logs.....

Ton serveur sendmail ecoute sur quel port et sur quel interface réseau ? (c'est probablement pas le même réseau que docker)

Pourquoi est-ce que tu as besoin d'un serveur sendmail sur le host en question ?

Par exemple il n'y a pas de serveur de mail sur ton pc personnel, et pourtant tu arrive a envoyer des mails, non ?

Peut-être que tu pourrais utiliser directement l'adresse du serveur smtp dans la configuration de ton application. (tu peux sans doute trouver l'adresse du serveur smtp dans la configuration de ton sendmail)

  • sendmail écoute sur 127.0.0.1:25
  • je pourrai utiliser smtp.cnrs.fr mais je ne veux pas faire d'authentication
  • sur mon pc je connecte avec smtp.cnrs.fr ou le perso mais avec authentication

Il est très probable que ma compréhension email est très limitée.... :frowning:

Est-ce que tu peux essayer en configurant sendmail pour qu'il écoute sur :

172.17.0.1:25

J'ai (aussi) fait cela. Je donne plus de précisions demain re les erreurs. Merci pour ton temps.

Bonjour,
Juste une précision. Dans tous les cas, si vous voulez envoyer des email vers l'extérieur, il faudra configurer un serveur SMTP (par exemple smtp.cnrs.fr), que ce soit au niveau de l'application ou dans la configuration du serveur sendmail (relay host).

Bonjour !
Merci à tous.

  • pour sendmail : je fais
    DAEMON_OPTIONS(Family=inet, Name=MTA-v4, Port=25, Addr=172.17.0.1')dnl

  • et je me retrouve avec

    sendmail.service - LSB: powerful, efficient, and scalable Mail Transport Agent
    Loaded: loaded (/etc/init.d/sendmail; generated)
    Active: active (running) since Fri 2021-04-16 08:16:21 CEST; 12s ago
    Docs: man:systemd-sysv-generator(8)
    Process: 1400965 ExecStart=/etc/init.d/sendmail start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 4618)
    Memory: 9.0M
    CGroup: /system.slice/sendmail.service
    └─1401040 /usr/sbin/sendmail-mta -Am -L sm-mta -bd -q10m

    Apr 16 08:16:20 fairwiki sm-mta[1401040]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon MTA-v4: cannot bind: Cannot assign requested address
    Apr 16 08:16:20 fairwiki sm-mta[1401040]: daemon MTA-v4: problem creating SMTP socket
    Apr 16 08:16:21 fairwiki sendmail[1400965]: ...done.
    Apr 16 08:16:21 fairwiki systemd[1]: Started LSB: powerful, efficient, and scalable Mail Transport Agent.
    Apr 16 08:16:25 fairwiki sm-mta[1401040]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon MTA-v4: cannot bind: Cannot assign requested address
    Apr 16 08:16:25 fairwiki sm-mta[1401040]: daemon MTA-v4: problem creating SMTP socket
    Apr 16 08:16:30 fairwiki sm-mta[1401040]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon MTA-v4: cannot bind: Cannot assign requested address
    Apr 16 08:16:30 fairwiki sm-mta[1401040]: daemon MTA-v4: problem creating SMTP socket
    Apr 16 08:16:35 fairwiki sm-mta[1401040]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon MTA-v4: cannot bind: Cannot assign requested address
    Apr 16 08:16:35 fairwiki sm-mta[1401040]: daemon MTA-v4: problem creating SMTP socket
    root@fairwiki:/etc/mail# journalctl -xe sendmail.service
    Failed to add match 'sendmail.service': Invalid argument

(pardon pour la présa : comment preformater un bloc ?)

  • j'avais donc déjà essayé cela croyant avoir trouvé la réponse ... nope

  • pour répondre à David :
    je ne veux pas configurer smtp.cnrs.fr en relay car cela demande une authentication.
    Bon je n'y comprend pas grand chose ici, mais j'ai un autre service (php mail) qui utilise sendmail (sur 127.0.0.1:25) pour envoyer des mails avec from: mon adresse. --et qui fonctionne sans pbs.

Merci !

Salut,

Tu peux peut-être utiliser un autre relay que smtp.cnrs.fr. En fonction du réseau ou tu installe ton application, il y a de forte chance pour qu'il y ai un serveur smtp de disponible chez ton hébergeur.

L'envoie de mail, ce n'est pas simple, il y a pas mal de chose à faire en plus que juste installer un package comme sendmail.

Si tu n'utilise pas de relay smtp bien configuré, avec des champs dns spécifique et de l'authentification forte, et un firewall strict ...
Alors l'adresse ip de ton serveur va être très vite banni par les serveur mail avec lequel il est en contact...
Banni ca veux dire que les mail apparaissent même pas dans les spam, ca veux dire que les mail sont juste dropper.

Qui plus est ce bannissement aura probablement un impact aussi sur l'ensemble de la plage ip de l’hébergeur de ton serveur, qui sera flagguer comme spammeur.

Tout ca pour dire que c'est beaucoup de boulot de faire marcher un serveur mail sur le long terme !

Du coup je pense que tu devrais te poser une question : est-ce que tu veux que ton serveur soit un serveur mail ou un serveur applicatif ?

Mais a mon avis ce n'est pas une bonne pratique d'essayer de faire les deux au même endroit.

ps: pour formater les bloc c'est du markdown classique ``` > et autre fonctionne (a priori)

Coucou !

Bon, François : poor me, je ne suis pas sûre de comprendre ce que tu écris :frowning:
Je crois pouvoir te répondre :

  • non je ne veux pas de serveur mail
  • je veux un simple serveur applicatif : uniquement envoyer les mails de l'appli ; dans un sens donc.

BONNE nouvelle : j'ai trouvé une solution : intégrer un service mail dans le docker-compose network
Par ex. comme ceci :

mail:
image: eeacms/postfix:latest
restart: always

et ensuite je configure le host comme 'mail' (pour configurer l'appli elle-même)

et ça marche !
Mais il m'a fallu du temps pour trouver un conteneur et un exemple adéquat

Bien :

  • je ne comprends pas pourquoi je n'ai pas pu répliquer la situation d'une appli non-dockerisée qui transmet ces mails par sendmail (127.0.0.1:25) sans souci
  • j'ai lu des tonnes de pages sur les configurations des docker network etc... et de la manière de communiquer avec le host, mais visiblement, il y a quelque chose qui m'échappe
  • un cours docker me ferait le plus grand bien

Cela fait des jours que j'essaie de résoudre cela :frowning: bouh...

MERCI à vous :slight_smile:

Désolé j'ai essayé de faire au plus simple mais visiblement je n'ai pas reussi.

En gros ce que je voulais dire, c'est que utiliser sendmail ou postfix, dockerisé ou pas. C'est une trés mauvaise pratique !

La bonne pratique c'est utiliser un relay smtp "officiel"

1 « J'aime »

Très bien : mais comment faire pour l'authentication sur smtp.cnrs.fr ?
c'est bien la seule manière de communiquer avec ?
Ce que je veux dire je ne veux pas mettre mes accès dans un fichier ?
Peut-être que vous avez des manières de faire.

D'autre part, pouquoi est-ce un risque sécuritaire ? bon ce n'est pas l'endroit ici peut-être d'en discuter...

Merci en tout les cas.

C'est pas obligatoirement ce serveur la qu'il faut que tu utilise.

Il faut demander a ton hébergeur comment envoyer des mails. C'est a lui de fournir ce service.

Ton serveur est hebergé ou ? (Si c'est a l'ifb alors on a des serveurs mail)

Pas forcement, mais du coup ca dependra de l'hebergeur, qui devrait te dire quel methode utiliser.

Surtout pas tes credentials a toi. Il faut que ce soit des credentials spécifique pour ton applicatif.

D'un coté tout ce qui est capable d'envoyer des mails et la cible privilégié des robots 'hacker". Il y a énormément d'attaque sur ces serveurs et sur les logiciels utilisés, en permanence tout les jours. Vraiment beaucoup

D'un autre coté les gros fournisseur de mail n’hésite pas a bannir sans chercher a comprendre (en prétextant la lutte contre le spam et les méchants robots)
Et c'est très compliqué de regagner leur confiance, les procédures sont très longues et compliqué d'un point de vue administratif.

De plus les mails sont souvent plein de données personnels. (Par exemple si tu envoie un lien pour reset un mot de passe)

Donc du fait du caractère très sensible du contenu, et des attaques très fréquente sur ces services. Le mail a prendre au sérieux d'un point de vue sécurité.

Si tu veux à l'occasion on pourra en discuter de vive voix, ça sera plus facile pour se comprendre mutuellement.

Bon, merci beaucoup à vous, surtout à François d'avoir passé tout ce temps sur mon problème.

Merci pour la réponse re la sécurisation (j'en encore beaucoup à apprendre dans ce domaine).

Finalement, Nicole m'a donné la réponse :

smtp_server: "smtprelay.cnrs.fr"
smtp_port: 25
smtp_rewrite_sender_domain: 'france-bioinformatique.fr'

J'ai l'air toute c.. voilà un exemple parfait de ne pas connaitre la bonne question à poser... I feel quite stupid to have wasted your time...
Et bien sûr, ce relay marche !
(je ne savais pas que cela existait --même si réflexion faite, c'est évident).

Bref.... bon weekend tout le monde !

C'est en discutant entre être humain qu'on trouve les bonnes questions à poser, n’hésite pas a revenir discuter :wink: