AnnexGroup

Documentation

Installation

Cette page vous mène du fichier téléchargé au service en fonction. Ensuite, continuez avec Premiers pas.

Prévoyez une demi-heure, si la base de données et les DNS sont déjà en place.


Avant de commencer

Système d'exploitation macOS 14 ou plus récent · Linux avec systemd
Base de données MariaDB 11 ou MySQL 8, accessible (peut tourner sur la même machine)
Mémoire 2 GB suffisent pour les petites installations
Disque environ 33 MB par 1 000 messages, données brutes et index de recherche compris
Réseau une adresse fixe ou DynDNS et un enregistrement DNS qui pointe vers la machine

La base de données doit tourner avant que le service ne démarre. Le script d'installation ne la crée pas volontairement — il ne sait pas si vous exploitez votre propre instance, et il ne touche pas à vos données.


1. Vérifier le paquet

Chaque paquet dispose d'une somme de contrôle sur la page de téléchargement. Recalculez-la avant de décompresser quoi que ce soit :

shasum -a 256 annexgroup-<version>-<plateforme>.tar.gz

Si elle ne correspond pas à celle indiquée, interrompez et téléchargez à nouveau. Puis décompressez :

tar xzf annexgroup-<version>-<plateforme>.tar.gz
cd annexgroup-<version>-<plateforme>

Le paquet contient : le programme sous forme d'un seul fichier, un exemple de configuration, la définition du service et un script qui fait les deux — installer et, avec --uninstall, désinstaller.


2. Installer

Linux :

sudo ./install-linux.sh

macOS :

sudo ./install-macos.sh

macOS 14 ou plus récent est requis. Sur un système plus ancien, l’installateur s’arrête avant d’écrire quoi que ce soit et en nomme la cause : « AnnexGroup nécessite macOS 14 ou plus récent ; ce Mac a macOS … ». L’installation est vérifiée sur Apple Silicon ; le paquet Intel est compilé, notarisé et a fonctionné sous Rosetta, mais n’a pas encore été mesuré sur un Mac Intel avec macOS 14.

Le script crée l'utilisateur de service, les répertoires et le service système et ne démarre volontairement pas encore le service. Il se termine par les étapes qui suivent maintenant — les mêmes que celles-ci.

Où il écrit :

Linux macOS
Programme /usr/local/bin/annexgroup /usr/local/bin/annexgroup
Configuration /etc/annexgroup/config.yaml /usr/local/etc/annexgroup/config.yaml
Données /var/lib/annexgroup /usr/local/var/annexgroup
Journaux /var/log/annexgroup /usr/local/var/log/annexgroup
Service annexgroup.service biz.ma-kom.annexgroup.plist

Une config.yaml déjà présente n'est pas écrasée.


3. Créer la base de données

mariadb -e "CREATE DATABASE annexgroup CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mariadb -e "CREATE USER 'annexgroup'@'localhost' IDENTIFIED BY '<mot de passe>';"
mariadb -e "GRANT ALL ON annexgroup.* TO 'annexgroup'@'localhost';"

utf8mb4 n'est pas une recommandation, mais une condition : sans lui, les accents, les emoji et de nombreux noms de pièces jointes échouent.


4. Adapter la configuration

Dans la config.yaml, deux indications sont nécessaires, tout le reste a des valeurs par défaut utilisables :

domain: votre-domaine.fr
database_dsn: "annexgroup:<mot de passe>@tcp(127.0.0.1:3306)/annexgroup?parseTime=true&loc=UTC"

Derrière un proxy (nginx et similaires) : inscrivez-le sous trusted_proxies, sinon le blocage de connexion, la liste noire et la journalisation tiennent toujours les requêtes pour venant de lui :

trusted_proxies:
  - 192.168.1.5      # l'adresse du nginx qui transmet à ce serveur
  - 10.0.0.0/24      # ou un réseau duquel ne viennent que des proxies

5. Démarrer le service

Linux :

sudo systemctl enable --now annexgroup
systemctl status annexgroup

macOS :

sudo launchctl bootstrap system /Library/LaunchDaemons/biz.ma-kom.annexgroup.plist

6. Les ports — sous macOS, le point où cela bloque

Sous Linux, le service écoute sur les ports habituels : 25, 143, 993, 443 et 587.

Pas sous macOS. Le service tourne sous _annexgroup et n'a donc pas le droit d'occuper de ports inférieurs à 1024. Il écoute sur des ports élevés, et le routeur mappe les ports publics dessus :

public sur cette machine à quoi ça sert
25 1025 remise par les serveurs courriel extérieurs (MX)
587 1587 soumission, STARTTLS
465 1465 soumission, TLS immédiat
143 1143 IMAP, STARTTLS
993 1993 IMAP, TLS immédiat
443 8443 interface web

Sans cette correspondance, aucun courrier extérieur ne vous atteint — le serveur lui-même tourne quand même et ne signale aucune erreur. C'est la cause la plus fréquente du « tout est vert, mais rien n'arrive ».


6a. Le certificat — sinon deux ports ne démarrent pas

Entre « démarrer le service » et l'assistant se trouve un point que le serveur ne résout pas tout seul. Les ports à TLS immédiat — 465 (soumission) et 993 (IMAP) — ne démarrent pas sans certificat. Un port que les logiciels de courrier tiennent pour chiffré ne doit pas l'être seulement parfois.

Trois voies, et il n'en faut qu'une :

Voie Quand Ce qui va dans la config.yaml
Let's Encrypt automatique le serveur est joignable depuis Internet sous son nom, ports 80 et 443 ouverts acme: true et acme_email: …
Certificat propre vous en avez un, ou une autorité de certification interne tls_cert: et tls_key: avec chemin complet
Auto-signé seulement pour essayer dans votre propre réseau rien à saisir — le serveur en génère un au premier démarrage

Avec un certificat auto-signé, chaque logiciel de courriel avertit, et la configuration avec la seule adresse ne fonctionne pas : les voies d'information autoconfig. et autodiscover. doivent figurer dans le même certificat, sinon le logiciel interrompt la connexion avant de lire les indications.


7. Ouvrir l'assistant de configuration

https://<votre-hôte>/setup          (Linux)
https://<votre-hôte>:8443/setup     (macOS)

Vous y créez le premier domaine, le premier administrateur et un mot de passe root distinct. Les 14 premiers jours s'écoulent avec toutes les fonctions, sans licence.

La suite — entrées DNS, délivrabilité, la configuration avec la seule adresse — figure dans Premiers pas.


Si quelque chose ne tourne pas

Signe Cause probable
le service ne démarre pas, le journal nomme la base de données database_dsn faux, base de données non créée, ou MariaDB ne tourne pas
l'interface web ne répond pas sous macOS, la correspondance de ports (section 6) ; sous Linux, le pare-feu
465 et 993 ne répondent pas, 25 et 143 si pas de certificat — voir 6a. Les ports à TLS immédiat ne démarrent pas du tout sans lui
le logiciel de courriel avertit à propos du certificat certificat auto-signé, ou autoconfig./autodiscover. y manquent
les serveurs courriel extérieurs ne vous atteignent pas le port 25 est bloqué sur de nombreuses connexions — faites-le débloquer chez le fournisseur
les logiciels de courriel ne trouvent pas les noms de serveur les entrées SRV et CNAME de Premiers pas manquent

Les journaux se trouvent sous /var/log/annexgroup (Linux) respectivement /usr/local/var/log/annexgroup (macOS).


Désinstallation

sudo ./install-linux.sh --uninstall     # ou install-macos.sh

Seuls le programme et le service sont supprimés. La configuration, les données, les journaux, la base de données et l'utilisateur de service restent volontairement en place — un script de désinstallation qui supprime des boîtes courriel est une erreur, pas une fonctionnalité.

Quelque chose est peu clair ou mal décrit ? Dites-le-nous — nous corrigerons. Votre question nous montre où le texte est insuffisant.