Modoboa 2.11.0 et 2.11.1 sont disponibles
9 octobre 2026 — Antoine Nguyen
Correctifs de sécurité de la 2.11.1
- Un administrateur de domaine pouvait prendre le contrôle des comptes SuperAdmin et Revendeur possédant une boîte dans son domaine. La commande migrate retire les accès déjà accordés.
- N'importe quel utilisateur authentifié, y compris un utilisateur simple, pouvait créer des domaines relais via l'import CSV. L'import vérifie désormais les permissions et les limites.
- Un revendeur pouvait donner à un alias de domaine le nom d'un domaine appartenant à un autre client, et ainsi perturber ou détourner une partie de son courrier entrant. Les noms de domaine et d'alias de domaine partagent désormais le même espace de noms.
- Les dépendances du frontend sont forcées sur des versions corrigées d'undici et d'adm-zip (#4263).
La 2.11.0 avait déjà renforcé d'autres contrôles d'accès :
- l'import CSV des administrateurs de domaine vérifie l'accès au domaine (#4214)
- l'import CSV des alias de domaine vérifie l'accès à la cible (#4217)
- l'authentification self-service d'Amavis respecte le paramètre self_service (#4215)
- le filtre Amavis sur les destinataires des utilisateurs simples est échappé et ancré (#4216)
Avant de mettre à jour
- Postfix (obligatoire si vous utilisez des limites d'envoi) : sans cette modification, les limites ne sont plus appliquées. Le démon de politique ne décrémente désormais les compteurs qu'une fois le message accepté : Postfix doit donc aussi l'interroger en fin de phase DATA.
- Recommandé : définir l'adresse des handlers syslog dans settings.py, et servir l'introspection OAuth2 avec une instance uWSGI dédiée pour éviter les blocages du webmail.
- Vérification des alias de domaine (2.11.1) : un nouveau contrôle système signale les incohérences laissées par les versions précédentes. Vérifiez à la main les alias de domaine qui utilisent un nom de domaine (modoboa.admin.W001). Les autres problèmes se corrigent avec la commande repair :
python manage.py check --database default
python manage.py modo repair --dry-run
python manage.py modo repair
Toutes les étapes sont dans le guide de mise à jour.
Webmail
- Vue en conversations : les messages peuvent être regroupés en fils de discussion (extension IMAP THREAD), avec un affichage des messages repensé. Elle s'active via une nouvelle préférence utilisateur ; la liste simple reste le mode par défaut (#4212)
- Liste des messages : barre d'outils et état de chargement améliorés (#4223)
- Performances : moins d'allers-retours IMAP et de requêtes redondantes (#4224), et un dialogue des abonnements plus rapide sur les grandes arborescences de dossiers (#4270)
- Messages : le corps des messages n'apparaît plus vide sous Chromium (#4244), les formats de message sont mieux gérés (#4265), et l'éditeur de messages reçoit plusieurs correctifs (#4254, #4266)
- Autres correctifs : les messages sans en-tête Date s'affichent (#4219), déplier une boîte ne risque plus de provoquer un timeout (#4220), la sélection est vidée après une suppression ou un déplacement en spam (#4221), et les sujets composés de mots encodés adjacents sont correctement décodés (#4222)
Agenda
- Calendriers partagés : les calendriers partagés avec vous s'affichent (#4242)
- Endpoint de droits : un nouvel endpoint pour le plugin radicale-modoboa-rights permet aux calendriers partagés de fonctionner même quand Radicale tourne sur un autre serveur (#4238). Les noms de calendrier sont désormais uniques par propriétaire : les doublons existants sont renommés (« Nom (2) ») et conservent leurs données.
- Événements récurrents : toutes les occurrences s'affichent, et vous choisissez si une modification s'applique à une occurrence ou à toute la série. Déplacer un événement vers un autre calendrier fonctionne désormais (#4234)
- Affichage : les heures de travail sont mises en évidence et les week-ends grisés (#4235)
- Performances : plus de délai d'authentification Radicale, et les calendriers se chargent en parallèle (#4233)
- Correctifs des règles d'accès : les règles sont rattachées à leur calendrier (#4225), le fichier de droits est régénéré à la suppression d'une règle (#4226), et la validation des règles est corrigée (#4241)
Administration et déploiement
- Modoboa Pro est mis en avant dans l'interface d'administration (#4253)
- Renommage de boîtes : une boîte n'est plus jamais bloquée par un renommage en attente (#4276)
- Sieve : les filtres à condition unique sont correctement gérés (#4256)
- Commande deploy : une nouvelle option --redisurl pour Redis sur socket unix (#4273), et les options de base de données passées dans --dburl (SSL par exemple) sont conservées dans settings.py (#4271)
- Autres correctifs : compteurs et journalisation du démon de politique (#4211), chargement de tous les domaines et pas seulement de la première page (#4227), et régénération d'une clé DKIM qu'elle existe ou non (#4243)
Dépendances, traductions et développement
- Dépendances : mysqlclient passe à <2.3.1 (#4210), caldav passe de 3.3.0 à 3.3.1 (#4213), les paquets du frontend sont mis à jour (#4257, #4259, #4267, #4268, #4269, #4272), et l'outillage de la documentation est mis à jour (#4231, #4232)
- Traductions : français et japonais mis à jour
- Développement : Amavis devient optionnel dans l'environnement de développement (#4228), l'environnement Docker reçoit des identifiants client Radicale (#4247), la CI est plus rapide et la suite de tests tourne en parallèle (#4255, #4258, #4260, #4261, #4262, #4264)
Merci
Bienvenue à nos nouveaux contributeurs Jah-yee, ScionOfDesign et raeesahmed77, et merci à kryskool pour le travail sur la documentation !
Mise à jour
Après les étapes spécifiques ci-dessus :
pip install -U modoboa
cd <modoboa_instance_dir>
python manage.py migrate
python manage.py collectstatic
python manage.py check --deploy
python manage.py load_initial_data
sudo systemctl restart uwsgi supervisor
Changelog complet : 2.10.1...2.11.1