dbarzin / mercator

Mapping the information system / Cartographie du système d'information
GNU General Public License v3.0
275 stars 43 forks source link

Impossible de tester l'envoi de mail #838

Closed krptg0 closed 3 weeks ago

krptg0 commented 1 month ago

Bonjour,

Lors du déploiement de mercator, nous avons setté les variables d'env MAIL* afin de correspondre à notre setup.

Cela dit, lorsqu'un test de mail est réalisé depuis la page "CVE" bouton "Test Mail", l'erreur suivante apparaît dans les logs :

mercator-75c7b45b54-rknwr:mercator sendmail: Cannot open mail:25

La seule référence trouvée de "mail" est dans le fichier /etc/ssmtp/ssmtp.conf, qui contient la config par défaut pour sendmail. Cela fait sens, mais cela explique également que la librairie mailer utilisée ne semble pas reprendre les variables et les interpréter pour ensuite appeler sendmail.

Merci d'avance,

PS: nous utilisons l'image Docker sans modifications

dbarzin commented 1 month ago

C'est la fonction mail de php qui est utilisée pour envoyer des mails. Cette fonction appelle la commande sendmail. sendmail n'est as configuré dans l'image docker qui est fournie.

J'ai trouvé ceci pour la configuration de sendmail dans une image docker :

FROM php:7-fpm

RUN apt-get update && \
    apt-get install -y \
        zlib1g-dev libzip-dev sendmail

RUN echo "sendmail_path=/usr/sbin/sendmail -t -i" >> /usr/local/etc/php/conf.d/sendmail.ini 

RUN docker-php-ext-install pdo_mysql
RUN docker-php-ext-install zip

RUN sed -i '/#!\/bin\/sh/aservice sendmail restart' /usr/local/bin/docker-php-entrypoint
RUN sed -i '/#!\/bin\/sh/aecho "$(hostname -i)\t$(hostname) $(hostname).localhost" >> /etc/hosts' /usr/local/bin/docker-php-entrypoint

# And clean up the image
RUN rm -rf /var/lib/apt/lists/*
krptg0 commented 1 month ago

Impossible d'utiliser cette méthode, il n'y a pas de systemd ou de sysvinit dans le container qui pourrait faire vivre le service sendmail.

Je me pose toutefois la question : https://github.com/dbarzin/mercator/blob/77c6be13053f3187e8cae812ac79fb5b6f648d4e/config/mail.php#L16

Dans ce fichier de conf on voit bien que par défaut la lib mailer est censée utiliser SMTP directement, sendmail n'est qu'une autre méthode à activer manuellement. J'ai bien passé l'env MAIL_MAILER=smtp mais ceci ne change rien.

dbarzin commented 1 month ago

Ce fichier de configuration est un fichier de configuration standard qui vient de Laravel. Il n'est pas utilisé dans Mercator.

C'est la fonction mail de PHP qui est utilisée pour envoyer des mails. Cette fonction appelle la commande sendmail. sendmail n'est as configuré dans l'image Docker qui est fournie.

Le plus simple pour corriger ce qui se passe est de lancer sendmail en ligne de commande dans le Docker.

krptg0 commented 1 month ago

Entendu, mais ça paraît sacrément compliqué de faire fonctionner sendmail dans Docker. Je vais quand même y jeter un oeil. Possible pour toi de faire en sorte d'utiliser le mailer laravel ? Merci.

dbarzin commented 1 month ago

Cela me semble simple pourtant : https://r.je/sendmail-php-docker

L'utilisation du mail dans Laravel m'avait semblé fort compliqué : https://laravel.com/docs/11.x/mail

dbarzin commented 3 weeks ago

Nous allons passer à PHPMail pour améliorer l'envoi de mails depuis Mercator. Ce sera disponible rapidement.

dbarzin commented 3 weeks ago

C'est disponoble !