-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
email.py: added message id and local_hostname to get better formed me… #172
Conversation
…ssages, far from spams
Bonjour Manu, Merci pour ces modifications. J'espère que ça suffira. Je merge ça et je le déploie dans le foulée. |
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 ? |
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
<#172 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AJA62OAJQ3F7JR242OC3AV3YAAIBLAVCNFSM6AAAAAA6F4QYG6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONRZGAZTGMBZG4>.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
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, |
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
|
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 #173 pour
suivre si tu veux.
|
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