AnnexGroup

Documentazione

Installazione

Questa pagina accompagna dal file scaricato al servizio in funzione. Poi si continua con Primi passi.

Calcoli circa mezz’ora, se database e DNS sono già pronti.


Prima di iniziare

Sistema operativo macOS 14 o più recente · Linux con systemd
Database MariaDB 11 o MySQL 8, raggiungibile (può girare sulla stessa macchina)
Memoria 2 GB bastano per installazioni piccole
Disco circa 33 MB ogni 1 000 messaggi, dati grezzi e indice di ricerca insieme
Rete un indirizzo fisso o DynDNS e un record DNS che punta alla macchina

Il database deve essere attivo prima che il servizio parta. Lo script di installazione non lo crea di proposito — non sa se Lei gestisce un’istanza propria, e non si azzarda a toccare i Suoi dati.


1. Controllare il pacchetto

Per ogni pacchetto, sulla pagina di download è indicato un checksum. Lo ricalcoli, prima di estrarre qualsiasi cosa:

shasum -a 256 annexgroup-<versione>-<piattaforma>.tar.gz

Se non coincide con quello indicato, interrompa e scarichi di nuovo. Poi estragga:

tar xzf annexgroup-<versione>-<piattaforma>.tar.gz
cd annexgroup-<versione>-<piattaforma>

Nel pacchetto ci sono: il programma come un unico file, una configurazione di esempio, la definizione del servizio e uno script che sa fare entrambe le cose — installare e, con --uninstall, rimuovere di nuovo.


2. Installare

Linux:

sudo ./install-linux.sh

macOS:

sudo ./install-macos.sh

È richiesto macOS 14 o più recente. Su un sistema più vecchio, il programma di installazione si ferma prima di scrivere qualsiasi cosa e ne indica la causa: «AnnexGroup richiede macOS 14 o più recente; questo Mac ha macOS …». L’installazione è verificata su Apple Silicon; il pacchetto Intel è compilato, notarizzato e ha funzionato sotto Rosetta, ma non è ancora stato misurato su un Mac Intel con macOS 14.

Lo script crea l’utente del servizio, le directory e il servizio di sistema e non avvia il servizio di proposito. Si conclude con i passaggi che seguono ora — gli stessi di questa pagina.

Dove scrive:

Linux macOS
Programma /usr/local/bin/annexgroup /usr/local/bin/annexgroup
Configurazione /etc/annexgroup/config.yaml /usr/local/etc/annexgroup/config.yaml
Dati /var/lib/annexgroup /usr/local/var/annexgroup
Log /var/log/annexgroup /usr/local/var/log/annexgroup
Servizio annexgroup.service biz.ma-kom.annexgroup.plist

Una config.yaml già esistente non viene sovrascritta.


3. Creare il database

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

utf8mb4 non è una raccomandazione, ma un prerequisito: senza di esso vanno in errore lettere accentate, emoji e molti nomi degli allegati.


4. Adattare la configurazione

Nella config.yaml servono due indicazioni, tutto il resto ha valori predefiniti sensati:

domain: suo-dominio.it
database_dsn: "annexgroup:<password>@tcp(127.0.0.1:3306)/annexgroup?parseTime=true&loc=UTC"

Dietro un proxy (nginx e simili): lo inserisca sotto trusted_proxies, altrimenti blocco di accesso, lista nera e log trattano sempre le richieste come provenienti da lui:

trusted_proxies:
  - 192.168.1.5      # l'indirizzo dell'nginx che inoltra a questo server
  - 10.0.0.0/24      # oppure una rete da cui provengono solo proxy

5. Avviare il servizio

Linux:

sudo systemctl enable --now annexgroup
systemctl status annexgroup

macOS:

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

6. Le porte — sotto macOS il punto in cui si inceppa

Sotto Linux il servizio ascolta sulle porte consuete: 25, 143, 993, 443 e 587.

Sotto macOS no. Il servizio gira come _annexgroup e per questo non può occupare porte sotto la 1024. Ascolta su porte alte, e il router mappa quelle pubbliche su di esse:

pubblica su questa macchina a cosa serve
25 1025 Consegna da server di posta esterni (MX)
587 1587 Invio, STARTTLS
465 1465 Invio, TLS immediato
143 1143 IMAP, STARTTLS
993 1993 IMAP, TLS immediato
443 8443 Interfaccia web

Senza questa mappatura non riceve posta dall’esterno — il server in sé funziona comunque e non segnala alcun errore. Questa è la causa più comune di «tutto verde, ma non arriva nulla».


6a. Il certificato — altrimenti due porte non partono

Tra «avviare il servizio» e l’assistente c’è un punto che il server non risolve da solo. Le porte con TLS immediato — 465 (invio) e 993 (IMAP) — senza certificato non partono. Una porta che i programmi di posta ritengono cifrata non può esserlo solo a volte.

Tre modi, e ne serve esattamente uno:

Modo Quando Cosa va nella config.yaml
Let’s Encrypt automatico Il server è raggiungibile da Internet con il suo nome, porte 80 e 443 aperte acme: true e acme_email: …
Certificato proprio Ne ha uno, o un’autorità di certificazione interna tls_cert: e tls_key: con percorso completo
Autofirmato solo per provare nella Sua rete non inserisca nulla — il server ne genera uno al primo avvio

Con un certificato autofirmato ogni programma di posta segnala un avviso, e la configurazione con il solo indirizzo non funziona: i percorsi autoconfig. e autodiscover. devono comparire nello stesso certificato, altrimenti il programma interrompe la connessione prima di leggere le informazioni.


7. Aprire l’assistente di configurazione

https://<suo-host>/setup          (Linux)
https://<suo-host>:8443/setup     (macOS)

Lì crea il primo dominio, il primo amministratore e una password di root separata. I primi 14 giorni girano con la piena funzionalità senza licenza.

Come si prosegue — record DNS, recapitabilità, configurazione con il solo indirizzo — è descritto in Primi passi.


Se qualcosa non funziona

Segno Probabile causa
Il servizio non parte, il log cita il database database_dsn errato, database non creato, oppure MariaDB non è in esecuzione
L’interfaccia web non risponde sotto macOS la mappatura delle porte (sezione 6); sotto Linux il firewall
465 e 993 non rispondono, 25 e 143 sì nessun certificato — veda 6a. Le porte con TLS immediato senza certificato non partono proprio
Il programma di posta segnala un avviso sul certificato certificato autofirmato, oppure autoconfig./autodiscover. vi mancano
I server di posta esterni non La raggiungono la porta 25 è bloccata da molti provider — la faccia sbloccare presso il provider
I programmi di posta non trovano i nomi dei server mancano le voci SRV e CNAME descritte in Primi passi

I log si trovano in /var/log/annexgroup (Linux) rispettivamente /usr/local/var/log/annexgroup (macOS).


Disinstallazione

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

Vengono rimossi solo il programma e il servizio. Configurazione, dati, log, il database e l’utente del servizio restano di proposito — uno script di disinstallazione che cancella le caselle di posta è un errore, non una funzione.

Qualcosa di poco chiaro o descritto male? Ce lo dica — lo correggeremo. La Sua domanda ci mostra dove il testo è carente.