AnnexGroup

Documentación

Instalación

Esta página le guía desde el archivo descargado hasta el servicio en funcionamiento. A continuación continúe con Primeros pasos.

Calcule media hora, si la base de datos y el DNS ya están preparados.


Antes de empezar

Sistema operativo macOS 14 o posterior · Linux con systemd
Base de datos MariaDB 11 o MySQL 8, accesible (puede estar en el mismo equipo)
Memoria 2 GB bastan para instalaciones pequeñas
Disco unos 33 MB por cada 1 000 mensajes, datos en bruto e índice de búsqueda juntos
Red una dirección fija o DynDNS y un registro DNS que apunte al equipo

La base de datos debe estar en marcha antes de que el servicio arranque. El script de instalación no la configura deliberadamente: no sabe si usted opera una instancia propia y no especula con sus datos.


1. Comprobar el paquete

Cada paquete tiene una suma de comprobación en la página de descarga. Verifíquela antes de descomprimir nada:

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

Si no coincide con la indicada, interrumpa el proceso y descárguelo de nuevo. A continuación, descomprima:

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

El paquete contiene: el programa como un único archivo, una configuración de ejemplo, la definición del servicio y un script que puede hacer ambas cosas: instalar y, con --uninstall, desinstalar de nuevo.


2. Instalar

Linux:

sudo ./install-linux.sh

macOS:

sudo ./install-macos.sh

Se requiere macOS 14 o posterior. En un sistema anterior, el instalador se detiene antes de escribir nada e indica la causa: «AnnexGroup necesita macOS 14 o posterior; este Mac tiene macOS …». La instalación está comprobada en Apple Silicon; el paquete Intel está compilado, notarizado y ha funcionado bajo Rosetta, pero aún no se ha medido en un Mac Intel con macOS 14.

El script crea el usuario del servicio, los directorios y el servicio del sistema y a propósito aún no inicia el servicio. Termina con los pasos que siguen ahora, los mismos que aquí.

Dónde escribe:

Linux macOS
Programa /usr/local/bin/annexgroup /usr/local/bin/annexgroup
Configuración /etc/annexgroup/config.yaml /usr/local/etc/annexgroup/config.yaml
Datos /var/lib/annexgroup /usr/local/var/annexgroup
Registros /var/log/annexgroup /usr/local/var/log/annexgroup
Servicio annexgroup.service biz.ma-kom.annexgroup.plist

Una config.yaml ya existente no se sobrescribe.


3. Crear la base de datos

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

utf8mb4 no es una recomendación, sino un requisito: sin él fallan los acentos, los emojis y muchos nombres de adjuntos.


4. Ajustar la configuración

En la config.yaml se necesitan dos datos; todo lo demás tiene valores predeterminados utilizables:

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

Detrás de un proxy (nginx y similares): introdúzcalo en trusted_proxies; de lo contrario, el bloqueo de inicio de sesión, la lista negra y el registro siempre cuentan las peticiones como procedentes de él:

trusted_proxies:
  - 192.168.1.5      # la dirección del nginx que reenvía a este servidor
  - 10.0.0.0/24      # o una red de la que solo proceden proxies

5. Iniciar el servicio

Linux:

sudo systemctl enable --now annexgroup
systemctl status annexgroup

macOS:

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

6. Puertos — en macOS el punto donde suele fallar

En Linux, el servicio escucha en los puertos habituales: 25, 143, 993, 443 y 587.

En macOS no. El servicio se ejecuta como _annexgroup y por tanto no puede ocupar puertos por debajo de 1024. Escucha en puertos altos, y el router mapea los públicos sobre ellos:

público en este equipo para qué
25 1025 Entrega de servidores de correo ajenos (MX)
587 1587 Entrega, STARTTLS
465 1465 Entrega, TLS inmediato
143 1143 IMAP, STARTTLS
993 1993 IMAP, TLS inmediato
443 8443 Interfaz web

Sin este mapeo no le llega ningún correo del exterior — el servidor en sí sigue funcionando y no reporta ningún error. Es la causa más frecuente de «todo en verde, pero no llega nada».


6a. El certificado — sin él, dos puertos no arrancan

Entre «iniciar el servicio» y el asistente hay un punto que el servidor no resuelve por sí solo. Los puertos con TLS inmediato — 465 (entrega) y 993 (IMAP) — no arrancan sin certificado. Un puerto que los programas de correo consideran cifrado no puede serlo solo a veces.

Tres vías, y solo necesita una:

Vía Cuándo Qué entra en la config.yaml
Let's Encrypt automático El servidor es accesible desde Internet bajo su nombre, puertos 80 y 443 abiertos acme: true y acme_email: …
Certificado propio Ya tiene uno, o una autoridad de certificación propia en casa tls_cert: y tls_key: con ruta completa
Autofirmado solo para probar en la red propia no introducir nada — el servidor genera uno en el primer arranque

Con el certificado autofirmado, todo programa de correo muestra una advertencia, y la configuración con la sola dirección no funciona: las vías de autodetección autoconfig. y autodiscover. deben figurar en el mismo certificado; de lo contrario, el programa interrumpe la conexión antes de leer los datos.


7. Abrir el asistente de configuración

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

Allí crea el primer dominio, el primer administrador y una contraseña de root independiente. Los primeros 14 días funcionan con todas las funciones, sin licencia.

Cómo continuar — registros DNS, entregabilidad, la configuración con la sola dirección — se describe en Primeros pasos.


Si algo no funciona

Síntoma Causa probable
El servicio no arranca y el registro menciona la base de datos database_dsn incorrecto, base de datos no creada, o MariaDB no en marcha
La interfaz web no responde en macOS el mapeo de puertos (sección 6); en Linux el firewall
465 y 993 no responden, 25 y 143 sí sin certificado — véase 6a. Los puertos con TLS inmediato no arrancan sin uno
El programa de correo advierte del certificado certificado autofirmado, o faltan en él autoconfig./autodiscover.
Los servidores de correo ajenos no le alcanzan el puerto 25 está bloqueado en muchas conexiones — solicite su apertura al proveedor
Los programas de correo no encuentran los nombres de servidor faltan los registros SRV y CNAME de Primeros pasos

Los registros se encuentran en /var/log/annexgroup (Linux) o /usr/local/var/log/annexgroup (macOS).


Desinstalar

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

Solo se eliminan el programa y el servicio. La configuración, los datos, los registros, la base de datos y el usuario del servicio quedan deliberadamente intactos: un script de desinstalación que borra buzones es un error, no una característica.

¿Algo poco claro o mal descrito? Díganoslo — lo corregiremos. Su pregunta nos muestra dónde flojea el texto.