PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Simon Vieille : Installer un proxy SMTP transparent

jeudi 3 février 2022 à 18:50

Il y a quelques temps. j'expliquais que des applications métiers qui envoient du mail n'arrivaient plus à ouvrir de connexion vers les serveurs SMTP de Microsoft : Microsoft 365 - Problème de connexion aux serveurs SMTP.
La solution de contournement avait été de placer en liste verte la plage IP des serveurs qui hébergent ces applications.

Deux mois et demi sont passés et ça ne fonctionne plus. Évidemment, toujours pas d'explication du pourquoi du comment. Je travaille avec Microsoft depuis 5 ans et je ne m'y suis toujours pas habitué 🤬

Après quelques heures de tests et de bidouilles, j'ai décidé d'installer un proxy qui fera l'intermédiaire entre les applications bloquées et Microsoft. Pour ne pas avoir à gérer d'avantages d'accès, ce proxy sera totalement transparent.

Il n'existe (à priori) pas beaucoup de logiciels qui font ça et s'ils le font, ils ne sont plus maintenus. On retrouve beaucoup d'articles sur Nginx et Haproxy mais ils ne conviennent pas. Nginx n'est pas un proxy SMTP transparent et mes tests avec Haproxy ont échoués.
J'ai réussi à dénicher tuck1s/go-smtpproxy. Bien qu'il n'est pas reçu de mise à jour depuis 2 ans, il ne fait qu'utiliser une librairie qui elle a un développement actif : emersion/go-smtp.

Contexte / Prérequis :

Pour compiler le projet, il suffit d'installer Go, récupérer les sources et lancer le build. À l'issue du build, le binaire proxy sera généré dans le répertoire go/src/github.com/tuck1s/go-smtpproxy.

apt update
apt install golang
go get github.com/emersion/go-smtp-proxy
go get gopkg.in/natefinch/lumberjack.v2
go get github.com/tuck1s/go-smtpproxy
cd go/src/github.com/tuck1s/go-smtpproxy
./build.sh

Il ne reste plus qu'à lancer le proxy :

./proxy
  -certfile /etc/letsencrypt/live/relais-smtp.exemple.com/fullchain.pem \\
  -privkeyfile /etc/letsencrypt/live/relais-smtp.exemple.com/privkey.pem \\
  -in_hostport 0.0.0.0:587 \\
  -insecure_skip_verify \\
  -out_hostport smtp.office365.com:587 \\
  -verbose

Coté application, le serveur SMTP change de smtp.office365.com à relais-smtp.exemple.com. Si on envoie un mail, le proxy va afficher du log et on pourra s'assurer que ça fonctionne. Il faut également améliorer tout ça avec un compte utilisateur dédié au proxy, gérer son démarrage avec un service Systemd/SysvInit/OpenRC/Whatever, etc.

On verra combien de temps ça dure 🧐

Gravatar de Simon Vieille
Original post of Simon Vieille.Votez pour ce billet sur Planet Libre.

Simon Vieille : Jouer à Motus dans Matrix

mardi 1 février 2022 à 17:45

Je reconnais que ce titre peut générer un gros mind fuck mais laissez moi vous expliquer !

Depuis quelques temps, je joue quotidiennement à Sutom, une copie du jeu vieux jeu télévisé Motus. Le principe du jeu est simple : nous devons découvrir un mot avec comme indices sa taille et la première lettre qui le compose. On peut faire maximum 6 propositions qui permettent de découvrir les lettres. Une lettre découverte sera affichée dans un carré rouge, une lettre découverte mais mal placée sera dans un rond jaune. Les autres lettres resteront en bleu. Seuls des mots du dictionnaire peuvent être proposés.

Sutom est addictif...mais pas tant que ça car il n'y a qu'un seul mot à découvrir par jour !

Cela m'a donné un bon prétexte pour monter un nouveau projet : écrire un bot avec lequel je pourrai jouer via Matrix, ma messagerie instantanée. Le bot se connecte avec un compte utilisateur créé pour l'occasion puis accepte les invitations à rejoindre une conversation. Le bot va ensuite lire les messages qu'on envoit et va réagir quand c'est nécessaire. Ainsi on peut lancer ou relancer une partie et tester des mots. À chaque proposition, on retrouve un affichage comme dans Motus 🥸

Le code source du projet est dispo ici, c'est vraiment sans prétention !

Motus sur Matrix

Gravatar de Simon Vieille
Original post of Simon Vieille.Votez pour ce billet sur Planet Libre.

Articles similaires

Chimrod : Une aide de jeu pour Wordle / Sutom

mardi 1 février 2022 à 00:00

J’ai entendu parler du jeu Wordle récemment, dans un article qui abordait le phénomène. Le jeu, consiste à deviner un mot, à l’aide d’indices sur le placement des lettres. J’ai depuis découvert qu’une version française existe également: sutom, et je vais continuer l’article sur la base des mots français.

Comme nous avons un nombre de coups limités, il nous faut trouver des propositions qui nous donnent le plus d’informations sur les coups suivants. On est d’accord pour dire que yoyos n’est pas le meilleur coup à jouer: déjà il ne contient que trois lettres différentes, c’est pas top, en plus, il y a de forte chance que le y soit déclaré comme absent, ce qui ne nous donne pas beaucoup d’information pour la suite.

Mais si l’on est capable de déterminer qu’un mot n’est pas le plus pertinent, est-ce qu’il est possible de trouver le meilleur mot possible? Celui qui nous donne le maximum d’information?

Si l’on regarde la distribution des lettres parmi les mots de cinq lettres, on se rend compte que certaines lettres sont à privilégier parmi d’autres:

Distribution des lettres dans les mots de 5 lettres

Partant du principe que l’on ne connait pas le mot à trouver, si l’on choisit un mot contenant un A lors de notre première proposition, quel que soit le résultat, valide ou non, on élimine d’emblée la moitié des mots possibles. Dans l’ordre, les lettres les plus intéressantes pour proposer un premier mot sont les suivantes: { a, e, s, i, r }. Nous pouvons donc proposer siéra, serai ou raise.

Distribution des lettres dans les mots de 5 lettres

En prenant seulement trois lettres (sur les cinq de la proposition), on se rend compte que même dans le pire des cas, on divise le nombre de mots par 5, en passant de 7470 mots à 1398! À chaque proposition, nous réduisons les mots possibles et la seconde proposition sera déjà plus précise. Comme la distribution des lettres va changer, nous allons pouvoir présenter une nouvelle proposition qui va de nouveau diviser le nombre de mots restants, et ainsi de suite jusqu’à arriver à une proposition unique: le résultat.

Note

J’ai utilisé ici les lettres qui identifiées au moment de la répartition générale sur l’ensemble des mots. Si l’on refait le calcul à chaque branche de l’arbre ci-dessus, nous allons obtenir une répartition finale plus équilibrée (mais qui nécessite un recalcul des fréquences à chaque fois).

S’il est possible de préparer des tables (ou de les apprendre!), il est plus efficace de laisser l’ordinateur calculer de lui-même quelle est la fréquence de chaque lettre, et donc de nous proposer le mot à chaque coup.

Si l’on comprend intuitivement comment choisir chaque lettre, on peut aller plus loin en cherchant comment calculer le mot contenant le plus d’information. C’est Claude Shannon qui a posé les bases de cette approche mathématique, et ses calculs sont encore utilisés aujourd’hui (par exemple pour identifier si un mot de passe est faible ou non). Je n’irai pas ici dans le détail du calcul du gain d’entropie, l’idée étant d’expliquer le mécanisme de manière simple.

J’ai mis en place une application en ligne qui fait ces calculs et permet de trouver le mot en quelques coups (parfois en deux coups!), exemple avec une partie de sutom :

🟥🟦🟦🟡🟡🟡🟦
🟥🟥🟥🟥🟥🟥🟥

Il n’y a pas de mécanisme d’apprentissage dans cette application, tout est statistiquement explicable et entièrement reproductible, pour autant le principe des arbres de décision est à la limite de l’intelligence artificielle de part l’aide qu’il apporte à l’analyse. On le voit ici, que ce soit en termes de temps de traitement, ou en nombre de propositions: il ne s’agit pas seulement d’évaluer toute une liste de propositions rapidement, mais également d’aiguiller la décision le plus rapidement possible.

Si vous souhaitez quelque chose de plus manuel cet article vous expliquera comment jouer avec un terminal et grep !

Gravatar de Chimrod
Original post of Chimrod.Votez pour ce billet sur Planet Libre.

Journal du hacker : Liens intéressants Journal du hacker semaine #4

lundi 31 janvier 2022 à 00:01

Pour la 4ème semaine de l'année 2022, voici 10 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

Pour ne plus rater aucun article de la communauté francophone, voici :

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker :)

Gravatar de Journal du hacker
Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

Articles similaires

Simon Vieille : Murph, la version v1.0 est publiée

mercredi 26 janvier 2022 à 08:25

Murph est un framework open-source pour construire des CMS. Il est développé à l'aide de Symfony et permet de gérer des sites web avec plusieurs noms de domaines et en plusieurs langues. Il possède un gestionnaire de navigations et de menus, il met à diposition un générateur de CRUD et intègre quelques outils indispensables comme un gestionnaire de fichiers, un gestionnaire de tâches, un panneau de configuration, la double authentification, etc.

La procédure d'installation est simple et rapide. Toutes les informations essentielles sont sur la documentation et les sources sont sur gitnet.

composer create-project murph/murph-skeleton MonProjet ^1 # Installation du projet
cp .env .env.local
vim .env.local 
make doctrine-migration # Configuration de la base de données
make asset # Création des assets
php bin/console murph:user:create # Création d'un compte
symfony server:start -d # On lance le serveur web de dev

À partir de là, Murph est opérationnel. L'interface d'administration est accessible sur https://127.0.0.1:8080.
Tout le reste du travail s'articule dans la conception de votre CMS via du code. Je vous invite à lire la documentation du projet.

L'idée générale de Murph se résume dans ces quelques points :

Beaucoup de travail a été mené et Murph peut couvrir beaucoup de cas d'usages rencontrés par les développeurs de sites web sur-mesure. J'ai par exemple réalisé mon blog, un site de recrutement, un outil pour s'inscrire à un évènement et un site qui présente les services d'un hôtel dont voici quelques images du backoffice :

Murph

Gravatar de Simon Vieille
Original post of Simon Vieille.Votez pour ce billet sur Planet Libre.

Articles similaires