Alinto · 2024 – 2026 · architecture et développement

Étude de cas : la refonte de SOGo 6, groupware open source

SOGo est une messagerie collaborative open source utilisée par des entreprises et des communautés depuis plus de vingt ans. Sébastien Mizrahi, architecte logiciel à Lyon, participe à sa refonte complète : études, architecture, prototypes, puis développement de la nouvelle API en Python.

Le contexte

SOGo réunit webmail, agendas et carnets d’adresses, avec partage de ressources et gestion des droits. Il s’appuie sur des standards documentés (IMAP, CalDAV, CardDAV) et se connecte nativement à de nombreux clients : Microsoft Outlook, Apple Calendar, iPhone, Thunderbird et une foule d’appareils mobiles.

La version 5, écrite en Objective-C sur le framework SOPE, rassemble plus de 2 100 étoiles sur GitHub. Avec SOGo 6, Alinto a choisi une refonte totale : une API moderne en Python et une nouvelle interface web.

L’enjeu

Refondre un logiciel installé depuis vingt ans, ce n’est pas repartir d’une page blanche. Il faut garder ce qui fait sa valeur (les standards, la compatibilité avec les clients existants, l’administration) tout en offrant une base de code que de nouveaux développeurs peuvent comprendre et faire évoluer.

Avant SOGo 6, j’avais déjà contribué au développement de SOGo, à l’animation de sa communauté et à des outils anti-spam.

Démarche

Prototyper avant de construire

Le projet n’a pas commencé par du code de production, mais par les décisions qui conditionnent tout le reste.

  1. Études techniques

    Analyse de l’existant, des protocoles à conserver et des options technologiques pour la nouvelle version.

  2. Proposition d’architecture

    Découpage de la nouvelle plateforme, séparation entre l’API et l’interface, choix des briques d’infrastructure.

  3. Prototypes

    Un POC de serveur MAPI, le protocole de Microsoft Outlook, pour lever les points à risque avant de s’engager.

  4. Développement

    Calendrier, contacts et agent asynchrone, sur une API Python déployée en conteneurs.

Architecture

La plateforme SOGo 6

L’interface et l’API sont deux projets séparés : l’API peut servir la nouvelle interface, des scripts ou toute autre application.

Interface webNext.js, React, TypeScript
API RESTPython et Flask, documentation Swagger
Traitements asynchronesAgent asynchrone et tâches Celery
DonnéesPostgreSQL
CacheRedis
UtilisateursAnnuaire LDAP
MessagerieIMAP et SMTP (Dovecot, Postfix)
ExploitationDocker, Kubernetes, devcontainer

Source : dépôts publics Alinto/SOGo6-server et Alinto/SOGo6-UI, documentation SOGo 6.

Ma contribution

  • Études techniques et proposition d’architecture de la nouvelle plateforme.
  • POC d’un serveur MAPI, pour évaluer la connexion des clients Outlook.
  • Développement de l’API : calendrier, contacts et agent asynchrone.
  • Industrialisation : conteneurs, déploiement sur Kubernetes, tâches Celery.

Sur GitHub, je suis le principal contributeur du dépôt SOGo6-server, avec plus de cent commits (septembre 2026). Le code est public, sous licence GPL v3 : chacun peut juger sur pièce.

Ce que ce projet illustre

  • Séparer l’API de l’interface rend la plateforme ouverte et remplaçable morceau par morceau.
  • Prototyper les points à risque coûte peu et évite de s’engager sur une impasse.
  • S’appuyer sur les standards préserve tout l’écosystème de clients existants.
  • Travailler en open source impose un code et une documentation lisibles par tous.
Entrons en communication

Un projet exigeant ? Parlons architecture.

Depuis Chaponost, à côté de Lyon, sur place ou à distance. Réponse rapide avec une première analyse de votre besoin.