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