Simon Vieille

Développeur français animé par la culture du libre et du hacking

Installer un proxy SMTP transparent

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 :

  • Le serveur tourne avec Debian 11
  • Nom de domaine du proxy : relais-smtp.exemple.com
  • Il y a un certificat SSL généré par Let's Encrypt
  • Le serveur va écouter sur le port 587 avec la couche STARTTLS

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 🧐


Jouer à Motus dans Matrix

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


Murph, la version v1.0 est publiée

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 :

  • Une installation de Murph contient une ou plusieurs navigations représentées par des noms de domaines et des langues
  • Une navigation contient des menus dans lesquels on ajoute des nœuds
  • Un nœud peut représenter une URL et peut s'associer à une page ou un autre nœud
  • Une page contient des blocs de contenu
  • À coté de ça, on peut générer des CRUD pour éditer des données métiers (exemple : les articles d'un blog)

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


Les drones policiers autorisés par le Conseil constitutionnel

Les drones policiers autorisés par le Conseil constitutionnel

https://www.laquadrature.net/2022/01/21/les-drones-policiers-autorises-par-le-conseil-constitutionnel/

Le Conseil constitutionnel vient de rendre sa décision sur la loi « responsabilité pénale et sécurité intérieure ». Ce texte, adopté le 18 novembre 2021 par le Parlement, prévoyait notamment de ré-autoriser les drones policiers. Si les drones avaient été interdits à quatre reprises depuis 2020 (deux fois par le Conseil d’État, une fois par la CNIL et une fois par le Conseil constitutionnel), l’entêtement du gouvernement a porté ses fruits. Après deux années d’illégalité, les drones vont ré-occuper le ciel et restaurer la surveillance de masse.

Cette mauvaise nouvelle ne vient pas seule : le Conseil constitutionnel valide aussi les caméras embarquées sur les véhicules de police (hélicoptères, voitures…) ainsi que la vidéosurveillance des cellules de garde-à-vue.

Lien permanent


Nouvelle version majeure de Custom Menu

La version v2.3.2 de Custom Menu a été publiée il y a quelques jours. Cette version contient des mises à jours importantes qui rendent l'application à présent très complète.

Pour rappel, Custom Menu est une application qu'on installe dans Nextcloud. Elle permet de corriger un manque cruel de la mise en page du menu de navigation de Nextcloud. L'application permet de paramétrer 4 modes d'affichage du menu avec, à ce jour, une 40ène de de paramètres.

Parmis les dernières mises à jour, on retrouve la capacité de l'application à s'adapter aux couleurs de Nextcloud dès son installation. Mais le plus gros du travail s'est concentré autour la gestion des catégories. En effet, les applications sont organisées dans des catégories gérées par les développeurs Nextcloud. Custom Menu permet maintenant de créer de nouvelles catégories (dans toutes les langues utilisées dans votre Nextcloud) et de les affecter aux applications qui sont installées.