almet / copanier

A minimalist collective buying software.
GNU General Public License v3.0
24 stars 10 forks source link

email.py: added message id and local_hostname to get better formed me… #172

Closed manu5801 closed 11 months ago

manu5801 commented 11 months ago

J'ai modifié le fichier emails.py afin que les mails générés fournissent un MID. J'ai aussi ajouté un paramètre optionnel: DOMAIN, qui sera mis avec ligne HELO lors de l'envoi du mail. Un no de domaine est généré automatiquement à partir du fqdn si le paramètre n'est pas spécifié, mais dans certains cas le fqdn ne correspond à rien (utilisation dans un conteneur par exemple). Ces deux modifications permettent d'espérer que les mails émis par copanier ne seront pas confondus avec des spams

almet commented 11 months ago

Bonjour Manu,

Merci pour ces modifications. J'espère que ça suffira. Je merge ça et je le déploie dans le foulée.

almet commented 11 months ago

Par curiosité, quel est le problème exact que tu rencontre ?

Est-ce que tu pourrais me le décrire, pour voir si on peut peut-être trouver une solution ?

manu5801 commented 11 months ago

Bonjour Alexis

Ici, au pic (https://le-pic.org) nous avons installé récemment un antispam (rspamd) sur notre serveur de mails: en effet ce serveur est utilisé pour envoyer les mails issus des formulaires de contact de plus de 80 sites web, et aussi pour faire fonctionner plus de 600 listes sympa. Donc il reçoit souvent des spams (13% environ des mails qui arrivent sur le serveur sont des spams).

Mais il est alors apparu que les mails envoyés par copanier étaient considérés par rspamd comme du spam, pour plusieurs raisons:

  1. Pas de Message Id
  2. Commande HELO mal formée
  3. problème avec le Multipart/Mixed (Multipart/Mixed without non-textual part)
  4. Contenu du mail avec essentiellement un lien et très peu de texte (il s'agit du mail qui envoie un Césame à un utilisateur)

Je me suis alors rendu compte qu'en résolvant les points 1/ et 2/  le "score" attribué par rspamd passait en-dessous du seuil pour lequel on considère qu'on est en présence d'un spam. Je ne me suis pas intéressé au point 3/, et je ne vois pas comment on peut résoudre le point 5/

Concernant le point 2/, il faut savoir que chez nous copanier vit dans un conteneur docker. Donc si on ne spécifie pas le domaine à mettre en paramètre de la commande HELO, il va utiliser suivant les cas l'IP ou l'id du conteneur. En aucun cas cela ne convient au système de mail, qui est censé faire une résolution DNS inverse sur ce nom. D'où l'idée de passer par un paramètre DOMAIN afin de forcer le nom de domaine. Sachant que ce paramètre est optionnel, s'il n'est pas fourni le système utilise le fqdn de son hôte ce qui est sans doute correct dans beaucoup de cas.

Bonne soirée,

Emmanuel

Le 18/10/2023 à 19:40, Alexis Métaireau a écrit :

Par curiosité, quel est le problème exact que tu rencontre ?

Est-ce que tu pourrais me le décrire, pour voir si on peut peut-être trouver une solution ?

— Reply to this email directly, view it on GitHub https://github.com/almet/copanier/pull/172#issuecomment-1769033097, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJA62OAJQ3F7JR242OC3AV3YAAIBLAVCNFSM6AAAAAA6F4QYG6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONRZGAZTGMBZG4. You are receiving this because you authored the thread.Message ID: @.***>

almet commented 11 months ago

Super, merci pour toutes ces informations, je suis ravi d'apprendre que copanier est utilisé ailleurs que vers chez nous :-) N'hésitez pas si vous avez d'autres retours / questions, etc.

A bientôt, Alexis

manu5801 commented 11 months ago

Bonjour

Pendant que j'y suis, j'ai essayé de mettre à jour le Dockerfile, qui repose sur Debian:buster... c'est un peu vieillot. J'ai donc simplement remplacé Debian:buster par Debian:bookworm mais l'étape pip install -e ne passe pas:

Building wheels for collected packages: debts, MarkupSafe, python-slugify, PyYAML, ujson, autoroutes, biscuits, httptools, multifruits, websockets   Building wheel for debts (setup.py): started   Building wheel for debts (setup.py): finished with status 'done'   Created wheel for debts: filename=debts-0.5-py3-none-any.whl size=4638 sha256=befd12414b3fb29c06cd4514c136399340f761b9f04e7ce3a95676c98c623ddf   Stored in directory: /root/.cache/pip/wheels/b1/c2/29/2cfd92ccbf93325763dc3198e655d755492318da815f935db7   Building wheel for MarkupSafe (setup.py): started   Building wheel for MarkupSafe (setup.py): finished with status 'done'   Created wheel for MarkupSafe: filename=MarkupSafe-2.0.1-cp311-cp311-linux_x86_64.whl size=27082 sha256=9bddbe434d1e68f624218efcd29f5c2b7f819a17a36579cabdfe51ba4e3ef4a7   Stored in directory: /root/.cache/pip/wheels/ea/18/79/6266ea508b8164a77b95aa19534c77eb805f2878612c37efca   Building wheel for python-slugify (setup.py): started   Building wheel for python-slugify (setup.py): finished with status 'done'   Created wheel for python-slugify: filename=python_slugify-4.0.1-py2.py3-none-any.whl size=6761 sha256=b3493d689aab1c89ac02e59c41165782fa36d57571ef227f48dad5c74939a75d   Stored in directory: /root/.cache/pip/wheels/10/57/4a/51c367b083bace5912a288695544fe0b718d19e222c555574a   Building wheel for PyYAML (setup.py): started   Building wheel for PyYAML (setup.py): finished with status 'done'   Created wheel for PyYAML: filename=PyYAML-5.3.1-cp311-cp311-linux_x86_64.whl size=44635 sha256=0758be5f0cac626afcc6481caee5d267b3c2fd9a3a94695799007c300f21b1b9   Stored in directory: /root/.cache/pip/wheels/93/d0/25/0923993e11f9273a21be3d272ca3dfe97c757a255a55c56bad   Building wheel for ujson (pyproject.toml): started   Building wheel for ujson (pyproject.toml): finished with status 'done'   Created wheel for ujson: filename=ujson-3.2.0-cp311-cp311-linux_x86_64.whl size=214207 sha256=9d125eeb94c09d5c2893f32eb98237c4e05f0081e6e3d5cdaa00606a00c8b4af   Stored in directory: /root/.cache/pip/wheels/3d/06/34/256c526e145d602460d1f78976bb9d533f07a3689faed79920   Building wheel for autoroutes (setup.py): started   Building wheel for autoroutes (setup.py): finished with status 'error'   error: subprocess-exited-with-error

  × python setup.py bdist_wheel did not run successfully.   │ exit code: 1   ╰─> [12 lines of output]       running bdist_wheel       running build       running build_ext       building 'autoroutes' extension       creating build       creating build/temp.linux-x86_64-cpython-311       x86_64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -I/srv/copanier-venv/include -I/usr/include/python3.11 -c autoroutes.c -o build/temp.linux-x86_64-cpython-311/autoroutes.o -O3       autoroutes.c:196:12: fatal error: longintrepr.h: Aucun fichier ou dossier de ce type         196 |   #include "longintrepr.h"             |            ^~~~~~~       compilation terminated.       error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1       [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.   ERROR: Failed building wheel for autoroutes   Running setup.py clean for autoroutes   Building wheel for biscuits (setup.py): started   Building wheel for biscuits (setup.py): finished with status 'error'   error: subprocess-exited-with-error

  × python setup.py bdist_wheel did not run successfully.   │ exit code: 1   ╰─> [12 lines of output]       running bdist_wheel       running build       running build_ext       building 'biscuits' extension       creating build       creating build/temp.linux-x86_64-cpython-311       x86_64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -I/srv/copanier-venv/include -I/usr/include/python3.11 -c biscuits.c -o build/temp.linux-x86_64-cpython-311/biscuits.o -O3       biscuits.c:196:12: fatal error: longintrepr.h: Aucun fichier ou dossier de ce type         196 |   #include "longintrepr.h"             |            ^~~~~~~       compilation terminated.       error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1       [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.   ERROR: Failed building wheel for biscuits

etc.

Cordialement,

Emmanuel

almet commented 11 months ago

Merci pour ces retours,

J'avoue ne pas utiliser Docker moi même de manière générale (ou alors de manière très sporadique), et du coup je montre rapidement mes limites.

Le problème dont tu fais part semble lié au fait que les dépendances ne sont probablement plus mises à jour, et qu'il faudrait que je fasse un tour la dedans pour régler le souci.

Le mieux serait de continuer cette discussion dans une nouvelle conversation pour qu'on s'y retrouver plus facilement.

Je viens d'ouvrir https://github.com/almet/copanier/issues/173 pour suivre si tu veux.