SM2TP : GT mutualisation SMTP

Si, enfin si je comprends bien ce que tu veux… Pour être plus clair je vais te donner un exemple :

  • On ajoute un blacklisté les mails qui sont refusés pour cause de « boîte mail inexistante » plus de 2 fois par défaut : config/rules.php · master · oMailgw / oMailgw-api · GitLab
  • Ensuite on distribue cette blacklistée aux passerelles. En utilisant smtpd_recipient_restrictions de postfix oMailgw / oMailgw-cli · GitLab :
    • omailgw-cli travail dans les 2 sens… il sait donner ces logs, son spooler à l’API et recevoir des data : transport_map, blackliste, authentification SMTP…

mailquiexistepas@gmai.com 550 Recipient Blacklisted by rules UserUnknown

Ainsi si (par exemple) au Retzien, (qui fait passer son trafic SMTP par mes passerelles oMailgw) un utilisateur tente d’envoyer plus de 2 fois un e-mail à mailquiexistepas@gmai.com, la 3ème fois c’est la passerelle qui refusera le message et ça n’ira plus demander à gmai.com… Sorte d’auto-nettoyage de liste de mail… J’ai envisagé faire un TTL sur les blackliste, mais j’ai pas pris le temps et au final est-ce que c’est pertinent ? La question se pose… pas simple ce type d’arbitrage quand on automatise…

David

1 « J'aime »

Ah oui j’avais loupé la blacklist dans postfix merci ! Par contre du coup si je comprends bien c’est des listes « statiques » donc on ne peut pas avoir un traitement différencié au cas par cas vu que les listes sont des fichiers textes mis à jour, et non des programmes appelés à chaque instance.

C’est effectivement un truc qui me semble super important pour améliorer notre délivrabilité à tous, par exemple chez un CHATONS qui aurait 100 mailings lists, une liste qui aurait l’adresse a@b.com inscrite : l’adresse est invalide, l’adresse est désinscrite de la liste, mais si 5 autres listes ont la même adresse inscrite, ça continuera à essayer d’envoyer, pour chaque liste… Et si l’adresse est réinscrite (import d’un carnet d’adresses par exemple) on renverra encore à une adresse invalide. Avoir une liste de blocage globale me semble donc super utile pour améliorer la délivrabilité d’un hébergeur.

Pour le TTL des adresses en hard bounce j’ai eu le cas chez Paheko : mail envoyé à une adresse le lundi, qui n’existait pas, mais créée le mercredi suivant… L’adresse était blacklistée car hard bounce (inexistante), mais devenue valide ensuite et voulant recevoir des mails…

Donc j’ai réglé le souci comme ça : on peut quand même envoyer un mail à une adresse en hard bounce (ou qui a trop de soft bounces, ou qui a fait un signalement pour spam), mais le seul mail qu’on peut envoyer c’est un mail généré par la plateforme du style « L’organisme XXX souhaite vous envoyer des e-mails. Cliquez ici pour confirmer que vous souhaitez recevoir ces messages : https://… ».

On ne peut pas envoyer ce type de mail plus d’une fois tous les X jours pour éviter les abus.

Merci du coup j’ai rajouté ce point à la liste des besoins / désirs dans le pad, parce que c’est important.

Pour info Amazon SES ont plusieurs niveau de blacklist :

  • global suppression list: c’est la liste qui s’applique à tous les clients, tu ne peux pas savoir si une adresses est dedans ou pas, mais si tu essaye d’envoyer à une adresse de cette liste, SES n’enverra rien en réalité (pour limiter son score auprès des destinataires), mais ça comptera dans ton quota d’envois à des adresses invalides. Une adresse reste dans cette liste jusqu’à 14 jours (plus il y a d’envois, plus ça reste longtemps, avec un max à 14 jours).
  • account-level suppression list: c’est la liste qui s’applique à ton compte client SES à toi, tu peux voir les adresses dans cette liste, les supprimer de la liste, mais si tu envoie et que ça bounce (ou que l’adresse est encore dans la global suppression list), ça joue dans ton score…

On pourrait s’inspirer d’un tel fonctionnement pour partager les adresses invalides entre nous, mais uniquement le hash (blacklist globale) pour préserver la vie privée, et avoir l’adresse en clair au niveau du CHATONS dès qu’il envoie un mail à cette adresse… Bon je réfléchit à voix haute là, c’est pas forcément super clair comme idée.

1 « J'aime »

La liste sont mises à jours par le « cli » qui demande les infos à l’API, je suis partie du principe que le « cli » était « bête » et que c’est l’API le moteur… la liste est mise à jour dès qu’un y a une nouvelle entrée en liste noir ou blanche.

ça fait ça, a@b.com sera toujours refusé au routage par la passerelle en répondant le message SMTP 550 Recipient Blacklisted by rules UserUnknown tant que personne ne l’a ajouté en liste blanche ou supprimé de la liste noir.

Ok, pas simple simple à gérer mais c’est une idée.

Bonne idée !

1 « J'aime »

Bonjour à tous,

Déjà, j’ai bien noté que l’on se retrouve ce soir, 21h, pour la première réunion de ce GT, chouette :slight_smile:

Je suis justement en train de préparer un petit mailing pour mon logiciel (annonçant une nouvelle mise à jour).
Et donc, je fais une passe sur les adresses en erreur (550, 450 ou même ‹ domain name not found ›) au précédent envoi, histoire de les virer pour « assainir » le nouveau.
Je m’apperçois que j’ai plusieurs adresse en « xxx@yyy.zzz.mailguardianpro.online », « xxx@yyy.zzz.webmaildirect.online », « xxx@yyy.zzz.mailsecurenet.online » ou « xxx@yyy.zzz.securemailboxnet.fun » et aucunes de ses adresses ne sont passées.
Du coup, je les enlève de mon prochain mailing.

Questions donc:

  • Est ce que ces domaines sont connus aussi chez vous comme « à problème » ?
  • Il y en a-t-il d’autres ?
  • Doit-on se faire une « black-list » des domaines douteux ?
  • Est-ce que ce genres d’actions simple ne seraient pas à identifier pour améliorer nos envois ?

Tous ces domaines semblent appartenir à la même personne, ont été créés très récemment, et semblent envoyer du spam : Stop Forum Spam Domain Report for nvda96.securemailboxnet.fun

Donc à mon avis c’est des spammeurs.

On pourrait faire un whois sur le nom de domaine et traiter comme suspect un domaine qui a moins d’un an d’existence.

Mais ici le serveur n’a même pas de MX dans son DNS, donc ça suffit à considérer comme spam. De mon côté je vérifie systématiquement que le domaine de l’adresse destinataire comporte bien un enregistrement MX.

De plus je blackliste les MX qui utilisent spamenmoins.com ou mailinblack.com, en effet ces providers demandent une validation manuelle de l’expéditeur (via un lien envoyé par mail, et un captcha à remplir) avant de pouvoir leur délivrer des mails. Ce qui est impossible à faire pour les mails de rappel de mot de passe etc. Avant j’autorisais ces services à l’inscription, mais après les gens ne pouvaient recevoir les mails donc maintenant je bloque toute utilisation de ces services, ça me limite le support.

2 « J'aime »

Bon, j’avais dit en juin à @apascale que j’étais chaud pour rejoindre le copil SM2TP (avec des contraintes de temps, et sachant que ce n’est pas moi l’adminsys de Framasoft).

Cependant, on a eu des événements un peu (beaucoup) complexes à gérer à Framasoft :-/
C’est en train de se tasser, mais clairement, de mon côté, j’ai pris plusieurs mois de retard sur mon plan de charge salarié.

En conséquence, je suis en train de revoir mon plan de charge pour les 6/12 prochains mois, et… il va falloir que je fasse du tri dans mes engagements pour remettre Framasoft au cœur de mes actions et de mon temps de travail :frowning:

Dans ce « tri », il m’apparaît assez clairement que ma participation au copil n’est plus appropriée.
Ca m’emmerde évidemment, d’abord parce que j’étais motivé, ensuite parce que ce projet me paraît important, mais aussi parce que j’aurai sans doute pu apporter des choses côté structuration et gestion de projets (qui reste mon métier quasi à temps plein).

Mais là, il faut que je prenne soin de moi (et de Frama), et ouvrir un nouveau chantier (nouvelles réunions, nouveaux CR, nouvelles idées à brasser, nouvelles propositions à mettre en œuvre, etc) ne me permettra pas de le faire correctement.

En conséquence, je préfère me retirer du copil (ça devrait avoir zéro impact, puisque je n’avais rien commencé :sweat_smile: ).

Cependant, si c’est OK, je propose de ne pas fermer la porte à double tour :

  1. j’essaierai de suivre les messages/échanges ici, pour me tenir informé
  2. je (et Framasoft) reste à votre disposition si vous avez des questions concernant notre infra (Je rappelais ici qu’on était en gros à 300 000 mails sortants par jour, ce qui a mon avis fait de nous le plus gros chaton en terme de mails sortants). Notre adminsys @Framasky est en congés jusqu’au 18/08, donc on sera pas hyper réactifs, mais si vous avez des questions, et ben ça sera avec plaisir qu’on essaiera d’y répondre.

Vala vala. Désolé pour ce « rendez-vous manqué », et je vous souhaite toute la réussite possible pour ce projet :slight_smile:

1 « J'aime »

Hello @pyg !
Il y a en ce moment deux groupes de travail sur les mails :

  • un sur une campagne de com’ pour promouvoir les hébergeurs de mail alternatifs (c’est celui où il y a le COPIL)
  • un sur la mutualisation de portes de sortie SMTP (ce fil)

Du coup je note que tu n’es plus dispo pour le COPIL sur la campagne. Bon courage à vous côté Frama, on espère vous croiser vite <3.

1 « J'aime »

Il y a un lien de connexion ?

Merci

1 « J'aime »

J’ai trouvé ce lien là dans l’agenda nextcloud, qui semble générique pour les CHATONS : CHATONS

Mais je suis tout seul pour le moment ^^

2 « J'aime »

La réunion vient de se terminer ! On a bien pris des notes, si des extés veulent savoir ce qui s’est dit, c’est ici : https://pad.hadoly.fr/p/SM2TP

@acnh38 tu nous as manqué ! Mais on s’est bien débrouillé pour cette première réunion, qui s’est finie avec 5 min de retard (je pense que ça va :yum:). On s’est mis d’accord pour refaire une réunion la semaine du 19 aout. Est-ce que tu veux bien mettre à jour le framadate pour n’inclure que cette semaine, et on voit qui est dispo ?

4 « J'aime »

Vraiment désolé de vous avoir fait faux bon.
C’est ça les retraités, incapable de gérer plus de 2 projets différents dans la même journée.
Je ne doute pas que vous avez autant avancé sans moi.
Je lirai le CR.
Je vous laisse le choix de l’amende :kissing_heart:

1 « J'aime »

Et je m’occupe du framadate

1 « J'aime »

Hello j’ai mis à jour le pad pour commencer d’établir une liste de questions fermées sur les objectifs qu’on veut atteindre.

Pour l’instant il n’y pas de notion de priorité dans ces objectifs, par contre identifier les risques peut se révéler utile : protection de la vie privée, utilisation par une structure mal intentionnée, ou juste problèmes de logique entre ce qu’on peut désirer.

Je vous invite à compléter / corriger / améliorer cette liste :slight_smile:

Bonjour à tous,

Petit retour, suite à mon mailing commencé hier pour annoncer une mise à jour de mon logiciel.
Quelques chiffres:

  • 2.169 messages prévus
  • envoi de 100 messages toutes les 5 min
  • ~1.600 déjà fait
  • Pour l’instant, juste 6 messages en grosses erreurs (code 55x)

La remarque que je fais est que j’ai eu ce genre d’erreur sur mes envoies:

[ ID 116] Erreur d’envoi du message Courrier Diacamma - Juillet 2024 à ---adresse-masque---@live.com | SMTP Error: data not accepted.SMTP server error: DATA END command failed Detail: Service shutting down, closing channel SMTP code: 421 Additional SMTP info: 4.3.2 SMTP Error: data not accepted. => Prochaine tentative dans 60 minutes
[ ID 116] Erreur d’envoi du message Courrier Diacamma - Juillet 2024 à ---adresse-masque---@gmail.com | The following From address failed: info@diacamma.org : MAIL FROM command failed,SMTP server error: MAIL FROM command failedSMTP server error: MAIL FROM command failed The following From address failed: info@diacamma.org : MAIL FROM command failed,SMTP server error: MAIL FROM command failed => Prochaine tentative dans 60 minutes

J’ai l’impression que c’est ce qu’évoquait @bohwaz sur le points « 1.6 Connaître et prendre en compte les seuils d’envoi (rate limiting) des destinataires type Orange, Gmail, etc. »
Là, mon système de mailing choisi de retenter d’envoyer ce message dans 60 min.
Par contre, je ne sais pas si ce délai correspond à ce qu’attend Google ou Microsoft.

A noter que mon envoi à une erreur: je n’ai pas d’entête « List-Unsubscribe » sur ce mailing (mais il y a bien un lien « vous désabonner » dans le message).
Avant envoie, j’ai pu teste mon message avec https://www.mail-tester.com : il m’avait donné 10/10 avec une petite réserve sur le « List-Unsubscribe » manquant.
Je prévois de remplacer mon système de Forum + mailing (actuellement via des extensions Joomla!) sur un solution basé du Discourse. J’espère, qu’alors, mes messages seront mieux construit.

J’ai pas l’impression que ça soit lié, j’ai l’impression plutôt que tu as un souci dans ton logiciel qui fait l’envoi en SMTP…

Normalement quand tu es bloqué tu as un message explicite qui te le dis, venant du SMTP destinataire.

1 « J'aime »

C’est bon, j’ai mis à jour le Framadate pour la prochaine réunion. J’ai simplement supprimé les dates de juillet mais j’ai gardé tous les créneaux à partir du 19 août. Bien évidemment, si vous avez décidé de faire sur cette semaine du 19 et pas sur la suivante, vous pouvez ne remplir que les dates qui vous intéressent.
Je n’ai encore pas lu le CR mais je devrais trouver un peu de temps dans le week-end pour le faire.
Miaou.

2 « J'aime »

Bonjour à tous
Désolé également j’ai eu un contre temps et je n’ai pas pu me rendre disponible.
J’espère pouvoir le faire pour la prochaine et je vais lire le CR.

Finalement, je crois que j’ai bien fait d’oublier cette 1ere réunion. Je pense que j’aurais coulé une bielle :joy:
Trop de boulot pour une réunion d’1 heure. Donc je n’aurais pas le temps de tout comprendre ce week-end. Mais j’aurais le temps d’ici le 19 août.
Ce que je peux dire tout de suite :

  • Je vais éviter de vous faire faux bond à la prochaine réunion
  • Si le binôme d’animation agréé tout le monde, je suis volontaire pour le faire avec @sekil.

De manière macro, la solution qui me botterait vraiment, c’est que le service mis en œuvre soit dupliqué pour chaque lien entre 2 structures. Par exemple, si 3 structures (A, B et C) ont décidé de partager le service, il y aurait quand même 3 services déployés. 1 entre A et B, 1 entre B et C et 1 entre A et C. Si la structure D a choisi de partager le service avec A mais pas avec B et C, il y aura un aussi un service entre A et D mais pas entre B et D, ni entre C et D. Du coup, si une structure disparaît, tout continue de fonctionner sans problème. L’idée c’est aussi que chaque service soir déployé sur les infra existantes de chaque structure et ne nécessite pas de serveur mutualisé. Donc le service entre A et B serait installé sur le serveur de A et sur le serveur de B.
De ce que je comprends, la seule chose qui me semble intéressant de partager entre tous, c’est la BDD des bounces, Pour ça, je pense qu’il doit exister des BDD qui sont capables de se consolider automatiquement.
Ce système est sans doute le plus complexe à réaliser, mais il devrait permettre de ne pas créer de service support/maintenance partagé. Chaque structure reste responsable du traitement des anomalies et l’utilisation d’un tel service entre les structures restent de leur propre responsabilité.
En espérant être clair.
Bonnes vacances à tous :beach_umbrella: avant une reprise sur les chapeaux de roue.

1 « J'aime »

A vrai dire ça a permis de préciser les besoins et objectifs de chacun.

Pour ma part je n’y vois pas du tout d’objection, au contraire, étant donné que je ne sais pas bien en quoi consiste l’activité d’animation ! :smiley:

A mon sens, créer un service par tuple d’organisation risque de faire exploser la combinatoire et de nous limiter. Si l’objectif est de permettre à chaque organisation de choisir avec qui s’appairer, il faudra imaginer une fédération sélective sur la base de données des bounces et sur le service de relai.

Je vais commencer à réfléchir à une architecture fonctionnelle et faire des schémas.

1 « J'aime »

A mon avis, ça commence par être présent aux réunions qu’on organise :rofl:
Pour le reste, on pourra en discuter ensemble.

1 « J'aime »