Dokumentation
Installation
Diese Seite führt von der heruntergeladenen Datei bis zum laufenden Dienst. Danach geht es weiter mit Erste Schritte.
Rechnen Sie mit einer halben Stunde, wenn Datenbank und DNS schon stehen.
Bevor Sie anfangen
| Betriebssystem | macOS 14 oder neuer · Linux mit systemd |
| Datenbank | MariaDB 11 oder MySQL 8, erreichbar (darf auf demselben Rechner laufen) |
| Arbeitsspeicher | 2 GB genügen für kleine Installationen |
| Platte | rund 33 MB je 1 000 Nachrichten, Rohdaten und Suchindex zusammen |
| Netz | eine feste Adresse oder DynDNS und ein DNS-Eintrag, der auf den Rechner zeigt |
Die Datenbank muss laufen, bevor der Dienst startet. Das Installationsskript richtet sie bewusst nicht ein — es weiß nicht, ob Sie eine eigene Instanz betreiben, und es rät nicht an Ihren Daten herum.
1. Paket prüfen
Zu jedem Paket steht auf der Download-Seite eine Prüfsumme. Rechnen Sie sie nach, bevor Sie etwas auspacken:
shasum -a 256 annexgroup-<fassung>-<plattform>.tar.gz
Stimmt sie nicht mit der angegebenen überein, brechen Sie ab und laden Sie erneut. Danach auspacken:
tar xzf annexgroup-<fassung>-<plattform>.tar.gz
cd annexgroup-<fassung>-<plattform>
Im Paket liegen: das Programm als eine einzige Datei, eine
Beispielkonfiguration, die Dienstdefinition und ein Skript, das beides
kann — installieren und, mit --uninstall, wieder entfernen.
2. Installieren
Linux:
sudo ./install-linux.sh
macOS:
sudo ./install-macos.sh
macOS 14 oder neuer ist Voraussetzung. Auf einem älteren System bricht der Installer ab, bevor er etwas ablegt, und nennt die Ursache: „AnnexGroup braucht macOS 14 oder neuer; dieser Mac hat macOS …". Geprüft ist die Installation auf Apple Silicon; das Intel-Paket ist gebaut, notarisiert und unter Rosetta gelaufen, an einem Intel-Mac mit macOS 14 aber noch nicht gemessen.
Das Skript legt den Dienstbenutzer, die Verzeichnisse und den Systemdienst an und startet den Dienst absichtlich noch nicht. Es endet mit den Schritten, die jetzt folgen — dieselben wie hier.
Wohin es schreibt:
| Linux | macOS | |
|---|---|---|
| Programm | /usr/local/bin/annexgroup |
/usr/local/bin/annexgroup |
| Konfiguration | /etc/annexgroup/config.yaml |
/usr/local/etc/annexgroup/config.yaml |
| Daten | /var/lib/annexgroup |
/usr/local/var/annexgroup |
| Protokolle | /var/log/annexgroup |
/usr/local/var/log/annexgroup |
| Dienst | annexgroup.service |
biz.ma-kom.annexgroup.plist |
Eine bereits vorhandene config.yaml wird nicht überschrieben.
3. Datenbank anlegen
mariadb -e "CREATE DATABASE annexgroup CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mariadb -e "CREATE USER 'annexgroup'@'localhost' IDENTIFIED BY '<passwort>';"
mariadb -e "GRANT ALL ON annexgroup.* TO 'annexgroup'@'localhost';"
utf8mb4 ist keine Empfehlung, sondern Voraussetzung: Ohne sie brechen
Umlaute, Emoji und viele Anhangsnamen.
4. Konfiguration anpassen
In der config.yaml sind zwei Angaben nötig, alles andere hat brauchbare
Vorgaben:
domain: ihre-domain.de
database_dsn: "annexgroup:<passwort>@tcp(127.0.0.1:3306)/annexgroup?parseTime=true&loc=UTC"
Hinter einem Vorschaltrechner (nginx und ähnliche): Tragen Sie ihn
unter trusted_proxies ein, sonst gelten Anmeldesperre, Sperrliste und
Protokoll immer als von ihm kommend:
trusted_proxies:
- 192.168.1.5 # die Adresse des nginx, der auf diesen Server weiterleitet
- 10.0.0.0/24 # oder ein Netz, aus dem nur Vorschaltrechner kommen
5. Dienst starten
Linux:
sudo systemctl enable --now annexgroup
systemctl status annexgroup
macOS:
sudo launchctl bootstrap system /Library/LaunchDaemons/biz.ma-kom.annexgroup.plist
6. Ports — unter macOS der Punkt, an dem es klemmt
Unter Linux lauscht der Dienst auf den üblichen Ports: 25, 143, 993, 443 und 587.
Unter macOS nicht. Der Dienst läuft als _annexgroup und darf deshalb
keine Ports unterhalb von 1024 belegen. Er lauscht auf hohen Ports, und der
Router bildet die öffentlichen darauf ab:
| öffentlich | auf diesem Rechner | wofür |
|---|---|---|
| 25 | 1025 | Zustellung von fremden Mailservern (MX) |
| 587 | 1587 | Einlieferung, STARTTLS |
| 465 | 1465 | Einlieferung, sofortiges TLS |
| 143 | 1143 | IMAP, STARTTLS |
| 993 | 1993 | IMAP, sofortiges TLS |
| 443 | 8443 | Weboberfläche |
Ohne diese Abbildung erreicht Sie keine Post von außen — der Server selbst läuft trotzdem und meldet keinen Fehler. Das ist der häufigste Grund für „alles grün, aber es kommt nichts an".
6a. Das Zertifikat — sonst starten zwei Ports nicht
Zwischen „Dienst starten" und dem Assistenten liegt eine Stelle, die der Server nicht von allein löst. Die Ports mit sofortigem TLS — 465 (Einlieferung) und 993 (IMAP) — starten ohne Zertifikat nicht. Ein Port, den Mail-Programme für verschlüsselt halten, darf es nicht nur manchmal sein.
Drei Wege, und Sie brauchen genau einen:
| Weg | Wann | Was in die config.yaml gehört |
|---|---|---|
| Let's Encrypt automatisch | Der Server ist aus dem Internet unter seinem Namen erreichbar, Port 80 und 443 offen | acme: true und acme_email: … |
| Eigenes Zertifikat | Sie haben eines, oder eine eigene Zertifizierungsstelle im Haus | tls_cert: und tls_key: mit vollem Pfad |
| Selbstsigniert | nur zum Ausprobieren im eigenen Netz | nichts eintragen — der Server erzeugt eines beim ersten Start |
Beim selbstsignierten Zertifikat warnt jedes Mail-Programm, und die Einrichtung mit bloßer Adresse funktioniert nicht: Die Auskunftswege
autoconfig.undautodiscover.müssen im selben Zertifikat stehen, sonst bricht das Programm die Verbindung ab, bevor es die Angaben liest.
7. Einrichtungsassistent öffnen
https://<ihr-host>/setup (Linux)
https://<ihr-host>:8443/setup (macOS)
Dort legen Sie die erste Domain, den ersten Administrator und ein getrenntes Root-Kennwort an. Die ersten 14 Tage laufen mit vollem Funktionsumfang ohne Lizenz.
Wie es weitergeht — DNS-Einträge, Zustellbarkeit, die Einrichtung mit bloßer Adresse — steht in Erste Schritte.
Wenn etwas nicht läuft
| Zeichen | Wahrscheinliche Ursache |
|---|---|
| Dienst startet nicht, Protokoll nennt die Datenbank | database_dsn falsch, Datenbank nicht angelegt, oder MariaDB läuft nicht |
| Weboberfläche antwortet nicht | unter macOS die Portabbildung (Abschnitt 6); unter Linux die Firewall |
| 465 und 993 antworten nicht, 25 und 143 schon | kein Zertifikat — siehe 6a. Die Ports mit sofortigem TLS starten ohne eines gar nicht |
| Mail-Programm warnt vor dem Zertifikat | selbstsigniertes Zertifikat, oder autoconfig./autodiscover. fehlen darin |
| Fremde Mailserver erreichen Sie nicht | Port 25 ist bei vielen Anschlüssen gesperrt — beim Anbieter freischalten lassen |
| Mail-Programme finden die Servernamen nicht | die SRV- und CNAME-Einträge aus Erste Schritte fehlen |
Protokolle liegen unter /var/log/annexgroup (Linux) beziehungsweise
/usr/local/var/log/annexgroup (macOS).
Deinstallieren
sudo ./install-linux.sh --uninstall # bzw. install-macos.sh
Entfernt werden nur Programm und Dienst. Konfiguration, Daten, Protokolle, die Datenbank und der Dienstbenutzer bleiben absichtlich stehen — ein Deinstallationsskript, das Postfächer löscht, ist ein Fehler, kein Merkmal.
Etwas unklar oder falsch beschrieben? Sagen Sie uns Bescheid — wir korrigieren es. Ihre Frage zeigt uns, wo der Text nicht trägt.