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.etautodiscover.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.