
Cliquez sur un ou plusieurs tags pour appliquer un filtre sur la liste des notes de type "Journaux" :
Résultat de la recherche (40 notes) :
Mercredi 3 septembre 2025
J'ai découvert l'outil de build Javascript avec cache remote nommé "nx"
En étudiant un projet privé professionnel, #JaiDécouvert le projet nx qui est comme Turborepo un outil de build pour Javascript et TypeScript.
Pour commencer, je dois préciser que je n'apprécie pas du tout comment le projet se présente. On voit partout :
Cela me donne l'impression que ce "pitch" a été créé par une équipe marketing 🙉 !
J'ai découvert ce tout petit thread Hacker News qui date du 18 août 2022 sur Hacker News qui, je trouve, explique très bien le but de Nx :
I'm a core team member of Nx (nx.dev) and one of the core features we implemented quite a while ago, is "computation caching". Basically to speed up things, we get all the input to a given computation, which our case as a devtool means running your Jest tests, Webpack/esbuild/... build etc, and cache the result (logs & potential build artifacts).
Next time when the same computation is run, we look it up and restore it from the cache, obviously tremendously improving the speed of the run. The real value is when you distribute that cache among co-workers, CI agents etc., which you can do with Nx Cloud (nx.app).
We had played with the idea of potentially mapping this to CO2 emissions. If you start saving a lot of computation, this reduces the number of times a machine gets spin up & executed on your CI. Well, earlier this week we aggregated some stats of how much time we saved and we were pretty by the result ourselves!
I summed it up in this blog article: https://blog.nrwl.io/helping-the-environment-by-saving-two-centuries-of-compute-time-feea8e1ce22?source=friends_link&sk=9b1259d0b171a7b95ebe95b3795660b5
But basically we saved:
- last 7 days: ~5 years of compute time
- last 30 days: ~23 years
- since beginning of Nx Cloud: ~200 years
Je pense que ces mesures font référence à ce qu'on peut voir dans ce screenshot :
Je trouve cela très intéressant. Après avoir testé Bazel sans résultat concluant, sur la période 2018 à 2022, j'ai souvent cherché un outil comme Nx ou Turborepo, c'est-à-dire :
- Build distribué en parallèle sur différentes machines
- Partage de cache entre l'équipe de développement et les pipelines CI/CD
By default, Nx caches task results locally. The biggest benefit of caching comes from using remote caching in CI, where you can share the cache between different runs. Nx comes with a managed remote caching solution built on top of Nx Cloud.
To enable remote caching, connect your workspace to Nx Cloud by running the following command...
Je me demande si Nx permet de self host un composant de remote caching et si oui, je me demande si ce composant est open source ou non 🤔.
À noter que Turborepo permet de self host son propre service de remote cache : voir Turborepo - Remote Cache Self-hosting.
D'après mes recherches, Nx a été créé en juillet 2017, par Victor Savkin, un ancien développeur d'Angular chez Google. Selon cette description :
Software Engineer at Google (San Francisco Bay Area) between Jul 2014 - Dec 2016
One of the main developers of Angular 2. I've developed the dependency injection, change detection, forms, and router modules.
je pense que c'est pendant cette mission qu'il a eu l'idée de créer nx.
En janvier 2018, un second développeur Jason Jean, l'a rejoint sur le projet.
J'ai l'impression que Victor Savkin le CEO, n'a plus le temps de développer sur le projet depuis juillet 2023. Je pense que c'est à partir de là que le projet a eu de la traction.
Lundi 1 septembre 2025
Quel impact Tailwind CSS a-t-il sur la taille des pages d'un site de contenu ?
En février 2023, j'écrivais ceci :
Par ailleurs, je m'interroge sur l'impact du paradigme Tailwind CSS (utility CSS) concernant l'empreinte mémoire des pages.
J'ai le sentiment que la profusion d'attributsclass="..."
va probablement augmenter considérablement la taille des pages.
#JaimeraisUnJour prendre le temps de mesurer cet aspect.
Cette question continue de me trotter dans la tête et mon intuition a évolué au fil du temps. J'ai maintenant l'intuition qu'une compression Brotli fonctionnerait efficacement avec le code Tailwind CSS.
Ce matin j'ai enfin pris le temps de faire des mesures.
J'ai choisi d'effectuer mes mesures sur le site de Blast qui est un site de contenu implémenté en Tailwind CSS.
Voici les mesures que j'ai effectuées :
- Home page https://www.blast-info.fr
- Taille mémoire brute (non compressée) de la page complète sans dépendances :
453 Ko
- Taille mémoire du HTML du
body
, récupéré avec l'inspecteur Firefox via "copier l'intérieur du HTML" :178Ko
- En supprimant tous les attributs
class="..."
, je passe à145Ko
, soit une empreinte brute des attributsclass
de33Ko
(environ 18% du body) - Taille mémoire du texte seul :
5ko
(2%) - Taille du body compressé Brotli :
25Ko
- Taille du body sans attributs
class="..."
compressé Brotli :23Ko
, soit2Ko
pour les attributs classe (environ8%
)
- Taille mémoire brute (non compressée) de la page complète sans dépendances :
- Page intérieure https://www.blast-info.fr/articles/2025/macron-bayrou-vers-un-jour-sans-fin-I0AwyT5KTf6_0ywKmLShVQ
- Taille mémoire brute (non compressée) de la page complète sans dépendances :
404 Ko
- Taille mémoire brute du HTML du
body
, récupéré avec l'inspecteur Firefox via "copier l'intérieur du HTML" :281ko
- En supprimant tous les attributs
class="..."
, je passe à251Ko
, soit une empreinte brute des attributsclass
de30Ko
(environ 10% du body) - Taille mémoire du texte seul :
34ko
(environ 12%) - Taille du body compressé Brotli :
43Ko
- Taille du body sans attributs
class="..."
compressé Brotli :40Ko
, soit3Ko
pour les attributs classe (environ6%
)
- Taille mémoire brute (non compressée) de la page complète sans dépendances :
Une fois compressé, la partie Tailwind CSS représente 2Ko
à 3Ko
par page. Il faut noter que ces valeurs constituent probablement une estimation haute, car un site utilisant le paradigme CSS traditionnel emploie généralement aussi des class="…"
dans ses pages HTML.
Mon constat : je pense que le surcout de Tailwind CSS sur la taille des pages d'un site de contenu demeure négligeable après compression.
Une autre question que je me pose : quel est l'impact de Tailwind CSS sur l'utilisation mémoire du navigateur ?
Samedi 30 août 2025
Journal du samedi 30 août 2025 à 20:17
Je viens de publier : Projet 33 - "POC serveur Git HTTP qui injecte du contenu dans OpenSearch".
Journal du samedi 30 août 2025 à 16:50
#JaiDécouvert la formalisation du concept de content-modeling as code :
Mercredi 27 août 2025
Bilan de mon temps de travail de ma première année de Freelance
Après ma note "Retour XP posts LinkedIn et mes canaux d'acquisition de mission Freelance", voici ma seconde note bilan de ma première année d'activité Freelance.
En 2022, ma dernière année complète en CDI qui me sert de référence, j'ai travaillé 219 jours. Cette année-là, 6 jours fériés sur 10 sont tombés en semaine et j'ai pris en tout 35 jours de congé.
Pour ma première année de Freelance, du 1er juillet 2024 au 30 juin 2025 :
- J'ai travaillé l'équivalent de 206 journées complètes :
- J'ai facturé 168 jours de prestation
- À cela s'ajoute 39 journées complètes non facturées. Il s'agit soit de prestations supplémentaires que je n'ai pas facturées, soit du temps consacré à la prospection et aux échanges avec des prospects.
- 266 jours où j'ai travaillé plus de 30min
- 288 jours où j'ai travaillé au moins 1min
- 59 jours de vacances officielles, dont 18 qui sont tombés en weekend, donc j'ai posé l'équivalent de 41 jours de congés. Pendant ces 59 jours, j'ai au moins travaillé 18 jours durant plus de 30 minutes.
Si je fais le bilan, pour ma première année, j'ai travaillé 13 jours de moins que ma dernière année en CDI, pour un chiffre d'affaires qui correspond approximativement à un CDI à 75 K€ brut par an.
Répartition des jours que j'ai facturée de juillet 2024 à fin mai 2025 :
Journal du mercredi 27 août 2025 à 09:57
Dans le livre "Politikon - Tout ce qu'il faut savoir sur les idéologies qui ont façonné notre monde", #JaiDécouvert le mouvement philosopique nommé le "convivialisme".
Autour du noyau du M.A.U.S.S. s'élabore depuis quelques années une idéologie politique qui ambitionne de s'opposer massivement à l'idéologie économique dominante : le convivialisme. Plusieurs manifestes et ouvrages sont parus et ont été soutenus par de nombreuses personnalités internationales aussi différentes que Noam Chomsky, Jean-Claude Michéa, Chantal Mouffe ou Edgar Morin.
Le terme « convivialisme » trouve sa source dans l'ouvrage La convivialité du philosophe Ivant Illich.
Il s'agit ici de penser une société fondée sur une volonté commune de vivre ensemble en dehors du principe de l'utilité à maximiser et de l'illimitation de la croissance économique.
Mardi 26 août 2025
Journal du mardi 26 août 2025 à 21:45
Voici une note pour présenter la seconde #iteration du Projet 32 - "POC serveur Git HTTP avec exécution de scripts au push".
J'ai tout d'abord implémenté dans ce commit un mécanisme qui exécute du code JavaScript automatiquement après chaque git push
.
Pour cela, j'ai choisi de me baser sur le mécanisme Server-Side Hooks natif de Git : post-receive
.
Voici le contenu de ce script hook en Bash :
#!/bin/bash
while read oldrev newrev refname; do
branch=$(git rev-parse --symbolic --abbrev-ref $refname)
curl -X POST \
-H "Content-Type: application/json" \
-d "{
\"oldrev\": \"${oldrev}\",
\"newrev\": \"${newrev}\",
\"refname\": \"${refname}\",
\"branch\": \"${branch}\",
\"repository\": \"$(basename $(pwd))\"
}" \
"${POST_RECIEVE_HOOK_URL}" >> /dev/null
done
Chaque événement git push déclenche un appel HTTP vers le endpoint http://localhost:3334/post_recieve_hook_url/
exposé par le serveur NodeJS. Le payload contient notamment :
oldrev
: l'identifiant du dernier commit présent dans le repository avant le pushnewrev
: l'identifiant du commit le plus récent envoyé lors du push
L'intervalle entre oldrev
et newrev
permet d'identifier précisément l'ensemble des commits qui ont été poussés lors de cette opération.
J'ai ensuite implémenté une version SvelteKit iso-fonctionnelle de node-git-http-server
. Voici le repository poc-node-git-server-in-sveltekit
.
Contrairement à ce que j'avais prévu initialement, pour cette implémentation, je ne me suis pas basé sur SvelteKit Custom Server, mais sur la fonctionnalité Server hooks : src/hooks.server.js#L11
.
Dimanche 24 août 2025
Retour XP posts LinkedIn et mes canaux d'acquisition de mission Freelance
J'ai prévu de publier quelques notes de bilan de ma première année d'activité Freelance. Voici la première, une note d'analyse de mes canaux d'acquisition de missions.
Il y a environ un an, fin septembre 2024, j'ai publié 3 posts sur LinkedIn dans le but de faire connaître ma nouvelle activité Freelance :
Bien que ces messages aient généré 78 réactions, 23 reposts et 7163 impressions cumulées, ils ne m'ont apporté aucune mission directe.
Cependant, j'ai observé qu'ils ont efficacement informé l'ensemble de mon réseau professionnel de ma nouvelle activité.
Malgré cet échec sur ce canal d'acquisition, j'ai tout de même facturé 168 jours de prestation sur une période de 12 mois, du 1er juillet 2024 (jour du dépôt légal de ma micro-entreprise) au 30 juin 2025, en utilisant d'autres approches d'acquisition client.
Voici la répartition de ces 168 jours selon le canal d'acquisition :
- Mon réseau direct, des anciens collègues très proches : 3 clients pour un total de 98 jours
- Des candidatures spontanées : 2 clients pour un total de 50 jours
- Recommandation indirecte d'un client qui n'était pas dans mon cercle de connaissance avant d'avoir travaillé avec lui : 1 client pour un total de 20 jours
Je n'ai reçu aucune proposition de mission sur Malt, pas même un message. Mon taux journalier de 700 € est peut-être trop élevé, ou alors c'est un problème de positionnement de profil. Je dois reconnaitre que je n'ai fait aucun effort à améliorer mon profil Malt depuis ma dernière phase d'optimisation présentée dans cette note du 25 septembre 2024.
Je n'ai répondu à aucune annonce de mission.
J'ai fait seulement deux candidatures spontanées et toutes les deux ont abouti.
Pour la première, j'ai ciblé un service que j'apprécie beaucoup et dont je suis client depuis presque 10 ans. J'avais repéré par leurs posts qu'ils avaient peut-être un budget pour des missions de développement.
Pour la seconde, j'ai visé un collectif que j'avais identifié il y a plus de 10 ans et pour lequel j'avais toujours eu envie de travailler.
Dans les deux cas, mes messages étaient parfaitement sincères, très éloignés des modèles de lettres de motivation qu'on trouve en ligne. J'avais fait mes recherches sur ces organisations et j'ai soigneusement détaillé mes motivations ainsi que les compétences que je pouvais leur apporter.
En repensant à ma stratégie d'acquisition de missions Freelance, je constate qu'elle ressemble étonnamment à ma façon d'obtenir mes CDI durant ma carrière :
- J'ai répondu à une annonce d'emploi
- J'ai répondu à une annonce d'emploi (Jobboard : Lolix)
- Une amie proche m'a contacté pour une mission
- Un ami proche m'a contacté pour un emploi
- Une amie proche m'a contactée pour un emploi
- J'ai ciblé une organisation en contactant une connaissance d'une communauté
- J'ai lancé une bouteille à la mer à une connaissance d'une communauté
- J'ai eu une proposition autour d'une bière alors que je n'avais rien prévu
- J'ai lancé une bouteille à la mer à une connaissance d'une communauté
Voir aussi : Bilan de mon temps de travail de ma première année de Freelance
Journal du dimanche 24 août 2025 à 12:42
Je viens de publier la première #iteration du Projet 32 - "POC serveur Git HTTP avec exécution de scripts au push" dans le repository node-git-http-server
.
L'implémentation d'un serveur Git HTTP via Apache ou nginx, en s'appuyant sur git-http-backend
, paraît plutôt simple à réaliser.
Comme mon objectif est d'intégrer cette fonctionnalité dans le projet sklein-pkm-engine et que j'ai une préférence pour les monolith, j'ai exploré les solutions basées sur NodeJS.
J'ai dans un premier temps étudié le projet node-git-http-server
et ensuite node-git-server
.
Ces deux projets semblent peu actifs.
J'ai échoué à faire fonctionner le projet node-git-server, probablement à cause d'une erreur de ma part — j'ai sans doute oublié d'initialiser au préalable les dépôts Git en mode bare
.
Par la suite, en utilisant Claude Sonnet 4, j'ai créé une implémentation basée uniquement sur les modules natifs de NodeJS et l'exécutable git-http-backend
, sans recourir à aucun package NodeJS externe.
Voici le résultat : node-git-http-server/server.js
.
Prochaines étapes
- Implémenter un système qui exécute du code JavaScript automatiquement après chaque
git push
, en lui transmettant la branche concernée et la liste des nouveaux commits publiés. - Implémenter une déclinaison de ce projet dans un SvelteKit Custom Server.
Samedi 23 août 2025
Journal du samedi 23 août 2025 à 18:29
Je viens de publier : Projet 32 - "POC serveur Git HTTP avec exécution de scripts au push".
Journal du samedi 23 août 2025 à 14:13
Dans l'épisode "Une nouvelle histoire du Moyen Âge, avec Florian Mazel " de la web radio Storiavoce, #JaiDécouvert l'ouvrage collectif dirigé par Florian Mazel : "Nouvelle Histoire du Moyen Âge" (https://www.seuil.com/ouvrage/nouvelle-histoire-du-moyen-age-collectif/9782021460353 ).
L'émission m'a donné envie de l'acheter et de le feuilleter.
Mardi 19 août 2025
Journal du mardi 19 août 2025 à 11:05
Ces derniers jours, j'ai lu :
- le thread Hacker News : "Sunny days are warm: why LinkedIn rewards mediocrity"
- et le billet "Le personal branding, c’est fini " de Laëtitia Vitaud
à propos de LinkedIn.
Cela me rassure d'observer que d'autres partagent mon opinion sur la médiocrité générale des posts LinkedIn.
Dès les années 2010, j'avais remarqué une dérive : la plupart des gens cherchaient à gonfler leur réseau en acceptant toutes les connexions, y compris de parfaits inconnus.
Selon moi, LinkedIn devrait représenter les relations authentiques entre les gens. J'ai toujours suivi cette règle personnelle pour accepter une connexion : si je croise cette personne dans la rue, est-ce que je prendrais le temps de la saluer ?
J'utilise LinkedIn essentiellement comme carnet d'adresses et base de données de CV dynamiques, ainsi que pour comprendre la structure et la dynamique des organisations.
En revanche, je consulte très peu mon feed. Pour éviter de le voir, j'ai installé l'extension Browser "LinkedIn Feed Locker".
Dimanche 17 août 2025
J'ai découvert Badsender, une agence spécialisée en e-mailing et email deliverability
Il y a quelques semaines, un ami m'a demandé si je connaissais quelqu'un pour réaliser un audit Email deliverability. N'ayant personne de confiance à lui recommander dans ce domaine, je lui ai proposé de faire moi-même une prestation d'une demi-journée sur le sujet, malgré le fait que ce ne soit pas mon cœur de métier.
Pendant mes études, pour monter en compétence sur ce sujet (voir mes notes dans Email deliverability), j'ai découvert l'agence "d'emailing" nommée Badsender (https://www.badsender.com) via leur excellent billet sur BIMI.
Badsender, c’est une équipe de 10 spécialistes du numérique dotés d’une forte expertise en emailing et newsletter. Nous intervenons sur toute la chaîne email : délivrabilité, conseils stratégiques, rédaction, conception et production de campagnes.
J'ai beaucoup apprécié leur démarche de transparence : "Cap à 9 mois : Quel cap dans les 9 prochains mois ?".
J'ai beaucoup aimé le contenu de leurs billets d'analyse de newletters : https://www.badsender.com/newsletter/exemples/.
J'ai l'impression que Sébastien Fischer a produit la majorité des bons articles de Badsender pendant sa période chez eux (2021-2024).
En étudiant les dépôts de comptes sur INPI jusqu'à 2019 et les profils LinkedIn, il me semble que Badsender repose principalement sur 3 experts, notamment Jonathan Loriaux , le fondateur qui paraît avoir une solide expérience en Email deliverability.
Avec leur marge brute de 2019 d'environ 220 K€ et un panier moyen qui tourne autour de 2000 €, j'estime leur portefeuille client entre 100 et 150 comptes.
Après mon audit de délivrabilité d'e-mail pour mon client, si mon tarif à la journée est trop élevé, si mes disponibilités ne correspondent pas à ses besoins, ou s'il souhaite établir un partenariat à long terme avec un prestataire, alors je lui recommanderai sans doute de se tourner vers l'agence Badsender ou Sébastien Fischer.
Je vais informer Badsender de la publication de cette note pour savoir si elle contient des informations qui leur posent un problème.
Vendredi 15 août 2025
Pour le moment, je n'ai pas d'avis sur l'intérêt des services d'email warming
Je continue mes explorations sur l'Email deliverability avec cette note dédiée à l'email warming (pour rappel, mes notes précédentes : 2025-08-04_1449, 2025-08-08_2222, 2025-08-14_2229).
Quel est le fonctionnement technique des services d'email warming ?
L'email warming consiste à établir progressivement une réputation positive pour une nouvelle adresse e-mail, d'un nouveau domaine ou d'une nouvelle IP SMTP auprès des ESP.
Mon hypothèse sur le fonctionnement de ces services :
- Ces plateformes créent en premier lieu des comptes e-mail chez un maximum d'email service providers (Gmail, Yahoo (Mail), Fastmail, La Poste (mail)…).
- Elles expédient graduellement, sur plusieurs jours, des e-mails vers ces adresses, avec des contenus variés.
- Elles simulent via un headless browser des interactions utilisateur dans les webmails de ces boîtes : ouverture de mails, clics sur des liens, etc.
J'imagine qu'elles doivent créer des scénarios aléatoires au niveau des timings et des actions pour éviter d'être trop facilement détectées par les email service providers 🤔.
J'ai essayé d'en savoir plus sur l'efficacité de l'email warming. J'ai effectué des recherches sur le Subreddit EmailMarketing. J'ai par exemple trouvé les threads suivants :
- Do I need to warm up domain before sending behavioral emails?
- What exactly has email warming changed for you?
- Is there any evidence that domain/IP warm up actually works?
Une minorité d'utilisateurs (exemple ) affirment que l'email warming est un scam, tandis qu'une majorité soutient que l'email warming reste indispensable pour toute nouvelle adresse e-mail. Cependant, je me demande si ces avis positifs ne viennent pas principalement des fournisseurs de services d'email warming 🤔.
Idéalement, j'aimerais trouver une étude d'un cas concret, menée par quelqu'un dont je ne pourrais pas questionner la crédibilité. Sinon, il me reste l'option de mener un test par moi-même.
Les systèmes SPF, DKIM, et DMARC me paraissent efficaces, mais les outils non officiels d'inbox placement et d'email warming ressemblent plutôt à du bricolage dans un écosystème incomplet.
Ces pratiques obscures me font penser à l'univers du SEO.
Il s'agit d'un système de coévolution antagoniste, semblable au jeu du chat et de la souris, ou plus précisément, un jeu séquentiel à somme variable avec des composantes antagonistes.
Dans ce genre d'écosystème, chaque acteur investit massivement en énergie pour maintenir le statu quo. Je trouve cette dynamique absurde et n'y vois aucun intérêt.
Concernant les tarifs, je trouve que le prix de MailReach est correct, $25 par mois pour "faire chauffer" une adresse mail :
Journal du vendredi 15 août 2025 à 08:59
En étudiant le service DMARCwise, #JaiDécouvert et étudié le mécanisme SMTP MTA Strict Transport Security.
Jeudi 14 août 2025
J'ai testé des services de inbox placement
Toujours dans le contexte d'une mission freelance d'audit de délivrabilité d'e-mail (voir notes : 2025-08-04_1449 et 2025-08-08_2222), j'ai creusé le sujet de inbox placement.
À l'origine, je croyais qu'un test d'inbox placement permettait de simuler l'envoi d'emails vers différents providers de messagerie pour déterminer leur destination finale, par exemple :
- Boîte de réception principale
- Dossier spam/indésirables
- Dossier "Promotions"
- Dossier "Social"
- Dossier "Notifications"
Après avoir testé GlockApps, MailReach et MailerCheck, j'ai l'impression que leurs fonctionnalités d'inbox placement se limitent à vérifier si l'email atterrit en "spam" ou en "inbox", sans distinguer entre "Boite de réception principale", "Promotions" ou "Social". Cependant, j'ai un doute pour GlockApps, car j'ai aperçu "Other" sur un screenshot .
Cette fonctionnalité inbox placement est parfois appelée "spam checker" ou "Inbox insight".
Mes recherches sur le Subreddit EmailMarketing m'ont également permis d'identifier plusieurs autres services : Gwarm, Folderly, Warmup Inbox, MailGenius et Mail-Tester. Je n'ai pas pris le temps de les tester.
Comment les services d'inbox placement fonctionnent techniquement ?
Mon hypothèse sur le fonctionnement de ces services :
- Ces services créent d'abord des boîtes mail chez un maximum de email service providers (Gmail, Yahoo (Mail), Fastmail, La Poste (mail)…).
- Ils mettent en place un système de surveillance IMAP pour monitorer les mails reçus sur chacune de ces boîtes.
- Ils demandent à leurs utilisateurs d'envoyer un mail sur ces boîtes avec un code d'identification dans le corps pour faire le lien entre l'utilisateur et le mail reçu dans les mailbox.
- Ils communiquent ensuite à l'utilisateur les résultats observés : placement dans le dossier principal ou dans le spam pour chaque boîte.
Voici quelques exemples de résultats de mes tests d'inbox placement.
Pour l'instant, GlockApps semble être le service qui teste le plus grand nombre de types de boîtes e-mail différentes.
J'ai observé quelque chose de surprenant lors de mon premier test de MailReach avec mon adresse mail contact@stephane-klein.info
.
J'ai envoyé un mail avec ce contenu et il a atterri dans le dossier spam des boîtes Microsoft Office 365 Mail, des boîtes qui appartiennent à la catégorie Professionnal.
J'ai écrit au support technique de MailReach car je n'arrivais pas à bien saisir le sens du message de tooltip qui s'affiche au survol des pastilles "spam" :
« Not good BUT the question is : do you really target professional inboxes? Because if not, it's not relevant to take it into account. Spam filters work differently between Professional and Personal inboxes. »
J'ai demandé si le style du contenu du message envoyé pouvait être pris en compte par les règles de spam et j'ai eu comme réponse :
Ca peut tre lié a ton contenu ou la réputation de ta boite mail.
Suite à cela, un jour après, j'ai fait un nouveau test, avec ce contenu plus professionnel et cette fois, tous les mails ont été placés dans le dossier principal, aucun spam :
3 jours plus tard, j'ai fait un test en envoyant à nouveau le premier contenu mail dans un style plus personnel et cette fois le mail a été placé dans inbox dans toutes les boites mails.
Pour le moment, je n'ai pas d'explication. Est-ce une illustration de l'intérêt de la fonctionnalité email warming 🤔 ?
J'ai également testé le service MailTester, mais je n'ai pas réussi à le faire fonctionner. Tous les mails que j'ai envoyés m'ont été renvoyés avec un message d'erreur indiquant que les boîtes mail n'existaient pas :
Voici quelques informations concernant les tarifs de ces services d'inbox placement.
- $9,6 pour 25 tests
- $28 pour 100 tests
La tarification de MailerCheck est un peu compliquée :
- $10 pour 1000 crédits, un test d'inbox placement coûte 200 crédits, cela fait donc $2 par test.
GlockApps paraît être l'outil qui teste la plus large gamme de email service providers et qui détecte le classement des e-mails dans les dossiers "Promotions", "Social"… mais c'est probablement aussi la solution la plus coûteuse :
- $16.99 pour 3 tests
- $47,99 pour 10 tests
- $75,99 pour 20 tests
GlockApps offre 2 tests gratuits à la création du compte, mais j'ai mal utilisé les miens.
J'ai contacté leur service commercial pour demander des crédits gratuits supplémentaires, en leur expliquant que je voulais uniquement tester mon adresse personnelle sans visée commerciale, peut-être avant de suggérer leur outil à un client. Ils ont décliné ma demande 😔.
Je n'ai donc pas pu explorer davantage cette solution.
Dans un premier temps, je vais probablement proposer à mon client la solution MailReach et éventuellement GlockApps par la suite s'il souhaite des tests plus approfondis.
Pour effectuer mes tests, j'ai utilisé ce script d'envoi d'e-mail : https://github.com/stephane-klein/send-mail-to-test-inbox-placement.
Pour l'instant, je ne sais pas encore quelle approche je suggérerai à mon client pour qu'il puisse réaliser des tests d'inbox placement de façon autonome, par exemple mensuellement.
#UnJourPeuxÊtre je développerai un POC de fonctionnalité d'inbox placement. Il me semble qu'en dehors de la création de nombreuses adresses mail, les vérifications basées sur l'imap ne doivent pas être très compliquées à implémenter.
Journal du jeudi 14 août 2025 à 11:20
J'ai cherché en Javascript, l'équivalent de la fonction inspect.cleandoc
de la librairie standard de Python (voir note 2025-06-13_1437).
J'ai trouvé la librairie string-dedent
.
Exemple d'utilisation (source) :
const info = await transporter.sendMail({
from: `"${process.env.FROM_NAME}" <${process.env.FROM_EMAIL}>`,
to: toEmail,
subject: 'Nouvelle et projet',
text: dedent`
Salut ${firstname},
Comment vas-tu ? Ça fait un bail qu'on ne s'est pas parlé ! J'espère que tu vas bien et que tout se passe pour le mieux de ton côté. De mon côté, ça tourne plutôt bien. Je suis toujours sur Fedora, et j'ai pas mal bidouillé avec la ligne de commande ces derniers temps. J'ai réussi à automatiser quelques trucs qui me simplifient la vie, c'est toujours un plaisir de pouvoir tout configurer comme on veut.
En ce moment, je suis replongé dans Neovim. J'essaie de configurer un workflow un peu plus efficace pour le développement. J'ai découvert quelques plugins géniaux qui me font gagner pas mal de temps. C'est un peu chronophage de tout configurer, mais le résultat en vaut la peine. Plus besoin de sortir de l'éditeur pour pas mal de tâches !
Quoi de neuf de ton côté ? Des projets intéressants en cours ? On devrait essayer de se voir bientôt pour en discuter autour d'un verre. Dis-moi ce que tu en penses !
${codeId}
À bientôt,
Stéphane
`,
html: dedent`
<p>Salut ${firstname},</p>
<p>Comment vas-tu ? Ça fait un bail qu'on ne s'est pas parlé ! J'espère que tu vas bien et que tout se passe pour le mieux de ton côté. De mon côté, ça tourne plutôt bien. Je suis toujours sur Fedora, et j'ai pas mal bidouillé avec la ligne de commande ces derniers temps. J'ai réussi à automatiser quelques trucs qui me simplifient la vie, c'est toujours un plaisir de pouvoir tout configurer comme on veut.</p>
<p>En ce moment, je suis replongé dans Neovim. J'essaie de configurer un workflow un peu plus efficace pour le développement. J'ai découvert quelques plugins géniaux qui me font gagner pas mal de temps. C'est un peu chronophage de tout configurer, mais le résultat en vaut la peine. Plus besoin de sortir de l'éditeur pour pas mal de tâches !</p>
<p>Quoi de neuf de ton côté ? Des projets intéressants en cours ? On devrait essayer de se voir bientôt pour en discuter autour d'un verre. Dis-moi ce que tu en penses !</p>
<p>${codeId}</p>
<p>À bientôt,<br>
Stéphane</p>
`
});
Vendredi 8 août 2025
J'ai pris conscience de l'intérêt de DMARC et de l'alignement SPF et DKIM
Dans le contexte de ma mission Freelance, je poursuis l'actualisation de mes compétences en délivrabilité d'e-mail. J'en profite pour rédiger une note sur DMARC.
DMARC existe depuis 2012, mais je n'avais jamais vraiment creusé le sujet. Je l'avais seulement survolé. Jusqu'à récemment, je n'avais en tête que la fonction "monitoring" :
Sans avoir mesuré l'importance de la partie policy
:
If the email fails the check, depending on the instructions held within the DMARC record the email could be delivered, quarantined or rejected.
Je pensais naïvement que les vérifications SPF et DKIM réalisées par les email service providers étaient suffisantes.
Je n'avais pas réalisé l'importance du SPF alignment and DKIM alignment.
Le problème vient du fait que SPF et DKIM vérifient le domaine contenu dans MailFrom
(connu aussi sous les noms Return-Path
, Bounce Address
, ou Envelope From
). Ces contrôles s'assurent que le serveur émetteur peut légitimement envoyer des emails pour ce domaine et que le message n'a pas été modifié durant le transport.
Cependant, ces vérifications ne protègent pas du spoofing. Les clients mail n'affichent pas le champ MailFrom
, mais le champ From:
. Un attaquant peut donc envoyer un email avec un domaine validé par SPF et DKIM tout en utilisant un champ From:
qui ne lui appartient pas.
L'alignement vérifie que le domaine utilisé pour les contrôles SPF et DKIM correspond au domaine du champ From:
.
Si les domaines diffèrent, le serveur receveur exécute la politique DMARC : reject
pour rejeter l'email ou quarantine
pour le diriger vers les spam.
De plus, j'ai découvert que DMARC était devenu petit à petit obligatoire :
Comply with email providers requirements: in 2024, Google and Yahoo started requiring DMARC on incoming mail from high-volume senders, and Microsoft followed in 2025. If you send emails to Gmail addresses, you may be affected by this. Even if you aren’t, this is likely just Google’s and Yahoo’s first step in a path to enforce DMARC checks on all incoming email, and organizations must prepare in advance.
Je viens de réaliser que c'est sans doute à cause de l'absence de DMARC sur mon domaine (stephane-klein.info
) qui explique pourquoi en janvier 2024, un ami ne recevait aucun de mes mails sur sa boite mail Orange.
$ dig TXT _dmarc.stephane-klein.info +short
;; communications error to 127.0.0.53#53: timed out
Il y a quelques jours, je me suis lancé dans la configuration DMARC de mon domaine.
J'ai commencé par chercher des services de DMARC reporting.
Je suis dans un premier temps tombé sur Google Postmaster Tools, mais celui-ci est limité aux boites mails Gmail.
En cherchant des outils d'inbox placement dans le Subreddit EmailMarketing, j'ai découvert GlockApps qui permet aussi de faire du DMARC reporting.
Ensuite, en étudiant l'excellente documentation dmarc.wiki
, j'ai découvert le service DMARCwise réalisé par un Indie Hacker italien : Matteo Contrini.
Il est gratuit pour un usage personnel :
J'ai testé ce service et je l'ai trouvé excellent !
Au départ, j'ai commencé par activer graduellement DMARC comme conseillé ici :
$ dig TXT _dmarc.stephane-klein.info +short
"v=DMARC1; p=none; rua=mailto:rua+v1c8xvv8a2yv@dmarcwise.email;"
L'adresse mail de collecte rua+v1c8xvv8a2yv@dmarcwise.email
m'a été donné par DMARCwise :
J'ai ensuite lancé un "DMARC diagnostics" :
Et j'ai constaté que tout était parfaitement configuré :
Après réflexion, étant donné que je suis le seul émetteur d'e-mail pour mon domaine, j'ai jugé que je pouvais directement passer de pas de policy
(p=none
) à p=reject; pct=100;
.
$ dig TXT _dmarc.stephane-klein.info +short
"v=DMARC1; p=reject; pct=100; rua=mailto:rua+v1c8xvv8a2yv@dmarcwise.email;"
Après 3 jours d'utilisation de DMARCwise, l'expérience utilisateur me plaît énormément. Il me semble que tout est soigneusement conçu, Matteo Contrini fait clairement attention aux détails !
Voici à quoi cela ressemble :
J'ai bien envie de conseiller DMARCwise à mon client.
Je sais qu'il envoie environ 3 millions d'e-mails par mois, ce qui ferait une facture de 1188 € HT par an.
Une autre option serait GlockApps, à $1548 HT par an mais avec une plus 1800 crédit de tests de inbox placement.
#JaimeraisUnJour prendre le temps de tester le free software de DMARC reporting nommé parsedmarc.
Ma prochaine note sur l'Email deliverability portera probablement sur l'inbox placement.
Lundi 4 août 2025
J'ai découvert la spécification "Brand Indicators for Message Identification"
En travaillant sur une mission freelance d'audit de délivrabilité d'e-mail, #JaiDécouvert la spécification "Brand Indicators for Message Identification".
Il s'agit de la spécification la plus récente qui s'ajoute aux spécifications de lutte contre l'usurpation d'identité email : SPF, DKIM, DMARC, ARC.
BIMI permet d'afficher le logo "certifié" de l'expéditeur du mail dans un certain nombre de clients mails (Apple, Fastmail, Gmail, La Poste, Yahoo).
Par exemple, cela donne ceci pour l'email noreply@notif-colissimo-laposte.info
avec mon client mail Fastmail :
Autre exemple avec Gmail avec le "badge certifié" :
Pour avoir plus d'exemples concrets, je vous conseille de consulter la section [« Quelques exemples d’affichage de BIMI chez les fournisseurs de messagerie »](https://www.badsender.com/guides/bimi-pourquoi-et-comment-le-deployer/#:~:text=les fournisseurs de-,messagerie,-Apple Icloud (Mail) de l'excellent article « Formation BIMI : pourquoi et comment déployer BIMI ? » de l'agence française Badsender, qui offre entre autre des services d'audit de délivrabilité d'e-mail.
Vous pouvez, par exemple, vérifier la configuration BIMI sur cette page, voici le résultat, toujours avec l'adresse mail noreply@notif-colissimo-laposte.info
:
Voici la configuration DNS TXT BIMI du domaine notif-colissimo-laposte.info
:
$ dig TXT default._bimi.notif-colissimo-laposte.info +short
"v=BIMI1;l=https://notif-colissimo-laposte.info/logo.svg;a=https://notif-colissimo-laposte.info/la_poste_sa.pem;"
v=BIMI1
indique le numéro de version de la spécification.l=https://notif-colissimo-laposte.info/logo.svg
contient l'URL vers le logo au format SVGa=https://notif-colissimo-laposte.info/la_poste_sa.pem
contient l'URL du certificat qui permet de certifier que l'expéditeur d'un email est autorisé à utiliser le logo Colissimo.
Voici ce que contient le certificat :
Issuer: CN=DigiCert Verified Mark RSA4096 SHA256 2021 CA1, O="DigiCert, Inc.", C=US
Expires: 3 months
Valid From: 9/30/2024
Valid To: 11/1/2025
Ce certifact a été généré par DigiCert.
Liste des entreprises de type Mark Verifying Authority pouvant actuellement générer des Verified Mark Certificate ou Common Mark Certificate :
D'après ce que j'ai compris, pour obvenir un Verified Mark Certificate, il est nécessaire de fournir au Mark Verifying Authority une preuve de dépôt de marque, par exemple via l'INPI.
Je pense que "Common" dans Common Mark Certificate est en lien avec le système juridique "Common law". Pour obtenir un Common Mark Certificate, il suffit de prouver qu'on utilise le logo depuis plus de 12 mois. DigiCert indique qu'ils effectuent une vérification en utilisant archive.org.
Depuis fin 2024, un autre type de certificat est disponible. C’est le CMC(Common Mark Certificate). Celui-ci permet de s’affranchir du dépôt de marque. Avoir une marque et un logo déposé sont donc maintenant optionnels. Néanmoins, le certificat CMC ne permet pas de garantir le même niveau de légitimité au destinataire. Certaines messageries, même si elles afficheront le logo BIMI dans le cas d’un certificat CMC n’ajouteront pas de certification de la marque (par exemple, dans Gmail, le checkmark bleu n’est pas affiché en cas de certificat CMC).
Lorsqu’un certificat VMC est choisi, une marque bleue est affichée dans Gmail afin de renforcer le sentiment de légitimité pour le destinataire. Ce qui ne sera pas le cas avec un certificat CMC.
Voici les prix d'un Verified Mark Certificate chez DigiCert : 1668 € par an.
Et 1236 € par an pour un Common Mark Certificate.
Jusqu'à maintenant, je croyais que les services Gravatar ou Libravatar permettaient d'afficher un avatar dans les clients mail, mais je réalise que ce n'est pas le cas et il semble que je ne sois pas le seul à avoir cette idée fausse :
Many users set up their Gravatar expecting it to be shown when sending emails from their email address. This is not always the case, this page explains why.
Truth be told, there aren’t many email clients (meaning the app or platform your users use to read their emails) that support Gravatar. Most popular email services (like Gmail, Outlook or Apple Mail) don’t. Unfortunately there is nothing we can do.
If you have confirmed your reader’s email client support, then there might be some setting (or addon) that your readers will need to tweak.
Je me suis demandé si BIMI pouvait améliorer l'Email deliverability.
En parcourant le Subreddit EmailMarketing, j'ai découvert ce thread : Is BIMI & VMC worth it? . Tous les contributeurs s'accordent à dire que BIMI n'apporte aucune amélioration à l'Email deliverability.
Pour le moment, aucune information ne suggère que BIMI présente un avantage pour l'Email deliverability.
À ce stade, il me semble que la mise en place d'un Verified Mark Certificate est pertinente pour tout service ciblé par des attaques d'arnaque numérique.
Pour les autres services aux moyens limités, je pense qu'investir 1668 € annuels dans un Verified Mark Certificate n'est probablement pas justifié.
Je conseille néanmoins de configurer un logo BIMI sans certificat. Cette approche permet d'améliorer l'User experience en affichant le logo dans les boîtes mail avec un effort minimal.
Je compte configurer prochainement un logo BIMI sans certificat pour mon domaine personnel stephane-klein.info.
Pendant que j'écrivais cette note, je me suis encore interrogé sur l'absence d'acteurs qui tentent d'intégrer correctement une authentification mail via PKI étatique 🤔.
#JaimeraisUnJour creuser cette question dans une note dédiée.
Samedi 2 août 2025
Journal du samedi 02 août 2025 à 13:07
#JaiÉcouté l'épisode « Open Source Experts : conseiller et faire du support Open Source » du podcast Projets Libres.
J'y ai découvert :
- La société Open Source Experts nommée aussi OSE
- Le projet Qualification and Selection of Open Source Software
J'ai trouvé cette interview à 3 intéressante.
Si je décide de continuer à vendre des prestations freelance à l'avenir, j'aimerais prendre le temps de les contacter pour leur demander si mes compétences pourraient être utiles à l'un de leurs clients.
Pas de notes plus récentes | [ Notes plus anciennes (20) >> ]