Envisager l'AgentJ ?

J'ai découvert récemment la solution anti-spam AgentJ.

Techniquement c'est principalement du standard : Postfix/Amavisd-new/Spamassassin. Par contre ils ont ajouté un contrôle supplémentaire : l'expéditeur d'un courriel doit prouver son « humanité » (Captcha). Ce n'est pas la première fois que je vois un logiciel du genre sous licence libre, mais celui-là semble plutôt bien abouti et maintenu. Le tout installable via docker-compose.

L'installation est donc simplifié il faut juste Docker (enfin Podman dans mon cas) et docker-compose.

Par contre Postfix ne démarrait pas chez moi (bizarre) j'ai dû créer deux répertoires à la main :

mkdir /var/lib/containers/storage/volumes/agentj_postqueue/_data/hold
mkdir /var/lib/containers/storage/volumes/agentj_postqueue/_data/trace

Rapidement me vient deux questions :

  • peut-on installer avec autre chose que Docker ?
  • puis-je installer cela dans mon infrastructure existante (sans avoir plusieurs relay SMTP bien entendu) ?

Je n'ai pas de réponse définitive à ces deux questions parce que je n'ai pas fait une étude de la solution assez poussé pour le moment mais voici mes remarques :

  • l'application est en PHP symfony, rien de particulier dedans
  • l'application se configure via des variables d'environnement
  • il y a deux conteneurs pour les logs : agentj-syslogng-1 et agentj-logspout-1, j'ai pas bien compris l'utilité/la différence entre ces deux conteneurs mais cela ne semble pas nécessaire pour l'application
  • il y a une base de donnée partagée entre amavisd-new et l'application
  • le moteur de base de donnée est du MariaDB, à priori on peut le remplacer sans soucis par Postgresql (Amavisd-new le gère et c'est Doctrine qui est utilisé par l'application)
  • l'interaction entre amavid-new et l'application semble se faire uniquement par trois moyens :
  1. la configuration d'amavisd-new se fait via la base de données partagée entre les deux services
  2. amavisd-new ajoute les mails des expéditeurs inconnus dans la base de données, puis l'application envoi le Captcha via un script lancé par un cron qui lit la base de données
  3. l'application lance directement "amavisd-release" dans son conteneur (sans passer par le conteneur d'amavisd-new)
  • il me semble pas y avoir de lien direct avec spamassassin
  • il y a deux serveurs postfix : 1 comme serveur SMTP accessible depuis l'extérieur, 1 comme relai, je n'ai pas bien compris exactement le but du second pour le moment (de ce que j'ai compris c'est pour éviter des boucles)
  • on peut visiblement importer des comptes LDAP (pas testé)

Donc pour répondre à ma question, il semble possible de :

  • déployer sans Docker
  • déployer dans mon infrastructure mais il faut :
  1. que je remette amavisd-new (ca va me rappeler ma jeunesse)
  2. gérer les changements de configuration des différents services
  3. gérer moi même les cron (enfin ... systemd-timer) et la mise à jour de ces timers
  4. packager l'application proprement

Par contre je vois quelques points génant :

  • il y a partage d'un volume entre amavisd-new et l'application et ceux pour trois raisons :
  1. la libération du mail mis en quarantaine se faire dans le conteneur de l'application (comme vu plus haut)
  2. la suppression, via cron, des répertoires "tmp/amavis-*" pas modifié depuis plus de 30 jours => ce cron peut être déplacé dans le conteneur d'amavisd-new sans soucis non ?
  3. la suppression, via cron + l'application, des fichiers "quarantine/*" pas modifié depuis plus de jours que définit dans la variable d'envionnement "AMAVIS_QUARANTINE_NBDAYS_BEFORE_DELETE" (avec une condition un peut bizarre ... si le nombre de jours est inférieur ou égale à 10, c'est finalement 30 jours qui est pris) => je n'ai pas compris pourquoi c'est pas fait directement via la commande find comme le cron précédent ... ca me semble bien plus simple à faire comme cela
  • il n'est pas possible de créer les domaines, utilisateurs, ... via la console, c'est vraiment dommage
  • il y bien une intégration LDAP mais pas de SSO pour la page d'authentification

Maintenant la question est ... vais-je installer AgentJ dans mon infrastructure ? Je n'ai pas encore la réponse à cette question !

Écrire un client Bitwarden en python : créer une organisation et une collection

Je suis en train d'écrire un logiciel qui va interagir avec Bitwarden. Il existe plusieurs clients Bitwarden, mais peu sont suffisamment complet pour mon besoin. Ce billet fait suite au premier billet écrire un client Bitwarden en python : créer, connecter, valider un compte et au deuxième billet  […]

Lire la suite

Corriger les fichiers GPX et les coordonnées GPS d'une photographie avec Viking

Depuis de nombreuses années, j'utilise le logiciel libre viking pour modifier mes fichiers GPX. En effet très souvent le GPS se désynchronise (passage sous un pont, montagne, ...) et ma trace GPX ne ressemble plus à rien. Sans parler du début de la trace qui parfois est très fantaisiste. Depuis que  […]

Lire la suite

Raconter son circuit touriste avec Piwigo

Je pars bientôt visiter un pays étranger pendant deux semaines. Les enfants resteront en france, donc je voulais mettre en place un site permettant de diffuser des photographies et nos impressions. Voilà mes besoins : tout doit être privé donc accessible uniquement par mot de passe ; le site est  […]

Lire la suite

Piratons la démocratie

Le parti pirate présente un candidat dans la 2eme circonsccription de Côte d'Or. Une réunion d'information est prévu le mercredi 23 mai 2012. Voici l'annonce : Le bar l'Antre II Mondes de Dijon nous a proposé d'animer une réunion de présentation du Parti Pirate le mercredi 23 mai prochain à 18h30.  […]

Lire la suite

Mécanisme de "clef obligatoire" par utilisateur avec dconf (GNOME 3)

Contrairement à GNOME 2, GNOME 3 n'utilise plus GConf pour gérer les éléments de configuration. Maintenant c'est Gsettings. Gsettings est en réalité une API de configuration. Le stockage des configurations se fait par un backend. Sous GNU/Linux, le backend est dconf. Avec GConf il était facile  […]

Lire la suite

Copier n'est pas voler

"Copier n'est pas voler" est le titre d'un documentaire monté par l'association COAGUL (1). Tout part d'une réunion de préparation des 10 ans de l'association. Au moment de lister les possibilités d'événement on a ressorti une ancienne idée : pourquoi pas faire une projection/débat à  […]

Lire la suite

Sita Sings The Blues en VOST avec mplayer

Sita Sings The Blues ? Écrit et réalisé par Nina Paley, Sita Sings The Blues est un film d'animation américain de 1h22mn. Le film remporte le Cristal du long métrage (le premier prix) au Festival international du film d’animation d’Annecy en 2008. Entièrement réalisé, scénarisé, animé et monté par  […]

Lire la suite

"Celle-ci sera centrée sur Ubuntu, afin de ne pas faire doublon avec la COAGUL"

CE TEXTE NE REPRÉSENTE QUE CELUI QUI L'A ÉCRIT Voici la justification principale lors de la réunion de création de l'association Ubuntu-Dijon (1) : "Celle-ci sera centrée sur Ubuntu, afin de ne pas faire doublon avec la COAGUL". En effet, j'avais essayé de convaincre les autres  […]

Lire la suite

Les choix Gaspacho

Le choix est l'élément central de Gaspacho. Sans choix ... il n'y a aucun intérêt de l'utiliser. Le choix est le lien entre la règle (1 et 2) et le groupe (3). Le choix Le choix est donc la configuration particulière d'une règle pour un groupe ou un template (et éventuellement le groupe  […]

Lire la suite

Les groupes Gaspacho

Après avoir présenté les règles Gaspacho (1 et 2), il faut s'attarder sur la notion de groupe. Si l'administrateur ne devrait pas avoir besoin de gérer lui même les règles (sauf si la règle dont il a besoin n'existe pas encore), il devra créer les groupes. Un groupe est un ensemble de machines  […]

Lire la suite

Haut de page