Autoalojado
Instalación
Requisitos
Antes de ejecutar el script de instalación, asegúrese de tener lo siguiente:
- Sistema operativo:Un servidor basado en Linux (por ejemplo, Ubuntu 22.04+).
- Recursos:1 vCPU y 2 GB de RAM
- Acceso raíz:Privilegios administrativos para ejecutar comandos.
- Nombre de dominio:Un dominio personalizado listo para la configuración de DNS.
- IP limpiaAsegúrese de que su servidor tenga una dirección IP limpia y sin reputación de spam revisando las listas negras. Más información. aquí.
[!TIP] Consulta nuestra lista de proveedores de servidores de correo increíbles
Cloud-init / Datos de usuario
La mayoría de los proveedores de nube admiten una configuración de cloud-init para cuando se aprovisiona el servidor privado virtual (VPS). Esta es una excelente manera de configurar algunos archivos y variables de entorno con antelación para su uso en la lógica de configuración inicial de los scripts, lo que evita la necesidad de solicitar información adicional mientras el script se ejecuta.
Opciones
EMAIL
-EMAIL
Variable de entorno utilizada para recordatorios de vencimiento de certbotDOMAIN
- dominio personalizado utilizado para la configuración de alojamiento propioAUTH_BASIC_USERNAME
- nombre de usuario utilizado en la primera configuración para proteger el sitioAUTH_BASIC_PASSWORD
- contraseña utilizada en la primera configuración para proteger el sitio/root/.cloudflare.ini
- (Solo para usuarios de CloudflareArchivo de configuración de Cloudflare utilizado por Certbot para la configuración de DNS. Requiere que configures tu token de API mediantedns_cloudflare_api_token
. Leer más aquí.
Ejemplo:
#cloud-config
write_files:
- path: /root/.cloudflare.ini
content: |
dns_cloudflare_api_token = "xxx"
owner: root:root
permissions: '0600'
- path: /etc/profile.d/env.sh
content: |
export EMAIL="test@myemail.com"
export DOMAIN="mydomain.com"
runcmd:
- chmod +x /etc/profile.d/env.sh
Instalar
Ejecute el siguiente comando en su servidor para descargar y ejecutar el script de instalación:
bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)
Script de instalación de depuración
Agregue DEBUG=true delante del script de instalación para obtener una salida detallada:
DEBUG=true bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)
Indicaciones
1. Initial setup
2. Setup Backups
3. Setup Auto Upgrades
4. Renew certificates
5. Restore from Backup
6. Help
7. Exit
- Configuración inicial:Descargue el último código de reenvío de correo electrónico, configure el entorno, solicite su dominio personalizado y configure todos los certificados, claves y secretos necesarios.
- Configurar copia de seguridadSe configurará un cron para realizar copias de seguridad de MongoDB y Redis mediante un almacén compatible con S3 para un almacenamiento remoto seguro. Además, se realizará una copia de seguridad de SQLite al iniciar sesión si se realizan cambios para copias de seguridad seguras y cifradas.
- Actualización de la configuración:Configure un cron para buscar actualizaciones nocturnas que reconstruirán y reiniciarán de forma segura los componentes de la infraestructura.
- Renovar certificadosCertbot/lets encrypt se utiliza para certificados SSL y las claves expiran cada 3 meses. Esto renovará los certificados de su dominio y los guardará en la carpeta correspondiente para que los componentes relacionados los consuman. Ver rutas de archivos importantes
- Restaurar desde una copia de seguridad:Activará mongodb y redis para restaurar desde los datos de respaldo.
Configuración inicial (Opción 1)
Elija una opción 1. Initial setup
Para empezar.
Una vez completado, debería ver un mensaje de éxito. Incluso puede ejecutar docker ps
Para ver el Componentes activados. Más información sobre los componentes a continuación.
Servicios
Nombre del servicio | Puerto predeterminado | Descripción |
---|---|---|
Web | 443 | Interfaz web para todas las interacciones de administración |
API | 4000 | Capa de API para abstraer bases de datos |
bree | Ninguna | Ejecutor de tareas y trabajos en segundo plano |
SMTP | 465/587 | Servidor SMTP para correo electrónico saliente |
SMTP Bree | Ninguna | Trabajo en segundo plano SMTP |
MX | 2525 | Intercambio de correo para correo electrónico entrante y reenvío de correo electrónico |
IMAP | 993/2993 | Servidor IMAP para la gestión de correo electrónico entrante y buzones de correo |
POP3 | 995/2995 | Servidor POP3 para la gestión de buzones y correo electrónico entrante |
SQLite | 3456 | Servidor SQLite para interacciones con bases de datos SQLite |
SQLite Bree | Ninguna | Trabajo en segundo plano de SQLite |
CalDAV | 5000 | Servidor CalDAV para la gestión del calendario |
MongoDB | 27017 | Base de datos MongoDB para la mayoría de las gestiones de datos |
Redis | 6379 | Redis para almacenamiento en caché y gestión de estado |
SQLite | Ninguna | Bases de datos SQLite para buzones de correo cifrados |
Rutas de archivos importantes
Nota: Ruta del host A continuación se muestra en relación con /root/forwardemail.net/self-hosting/
.
Componente | Ruta del host | Ruta del contenedor |
---|---|---|
MongoDB | ./mongo-backups | /backups |
Redis | ./redis-data | /data |
SQLite | ./sqlite-data | /mnt/{SQLITE_STORAGE_PATH} |
Archivo env | ./.env | /app/.env |
Certificados/claves SSL | ./ssl | /app/ssl/ |
Clave privada | ./ssl/privkey.pem | /app/ssl/privkey.pem |
Certificado de cadena completa | ./ssl/fullchain.pem | /app/ssl/fullchain.pem |
CA certificadas | ./ssl/cert.pem | /app/ssl/cert.pem |
Clave privada DKIM | ./ssl/dkim.key | /app/ssl/dkim.key |
[!IMPORTANTE] Guardar el
.env
Archivo seguro. Es fundamental para la recuperación en caso de fallo. Puede encontrarlo en/root/forwardemail.net/self-hosting/.env
.
Configuración
Configuración inicial de DNS
En el proveedor de DNS que prefiera, configure los registros DNS adecuados. Anote todo lo que esté entre paréntesis (<>
) es dinámico y necesita actualizarse con su valor.
Tipo | Nombre | Contenido | TTL |
---|---|---|---|
A | "@", ".", o en blanco | <dirección_ip> | auto |
CNAME | API | <nombre_de_dominio> | auto |
CNAME | Caldav | <nombre_de_dominio> | auto |
CNAME | rebotes de fe | <nombre_de_dominio> | auto |
CNAME | IMAP | <nombre_de_dominio> | auto |
CNAME | mx | <nombre_de_dominio> | auto |
CNAME | pop3 | <nombre_de_dominio> | auto |
CNAME | SMTP | <nombre_de_dominio> | auto |
MX | "@", ".", o en blanco | mx.<nombre_de_dominio> (prioridad 0) | auto |
TXT | "@", ".", o en blanco | "v=spf1 a -all" | auto |
Registro DNS/PTR inverso
El DNS inverso (rDNS) o los registros de puntero inverso (PTR) son esenciales para los servidores de correo electrónico, ya que ayudan a verificar la legitimidad del servidor que envía el correo electrónico. Cada proveedor de nube lo hace de forma diferente, por lo que deberá consultar cómo agregar "DNS inverso" para asignar el host y la IP a su nombre de host correspondiente. Probablemente se encuentre en la sección de redes del proveedor.
Puerto 25 bloqueado
Algunos ISP y proveedores de nube bloquean el puerto 25 para evitar ataques maliciosos. Es posible que deba enviar un ticket de soporte para abrir el puerto 25 para SMTP/correo electrónico saliente.
Incorporación
-
Abra la página de destino Vaya a https://<nombre_de_dominio> y reemplace <nombre_de_dominio> con el dominio configurado en su configuración de DNS. Debería ver la página de destino "Reenviar correo electrónico".
-
Iniciar sesión e incorporar su dominio
- Inicie sesión con un correo electrónico y contraseña válidos.
- Ingrese el nombre de dominio que desea configurar (este debe coincidir con la configuración de DNS).
- Siga las instrucciones para agregar lo requerido. MX y TXT registros para verificación.
- Configuración completa
- Una vez verificado, accede a la página de Alias para crear tu primer alias.
- Opcionalmente, configure SMTP para correo electrónico saliente en el Configuración del dominioEsto requiere registros DNS adicionales.
[!NOTA] No se envía información fuera de su servidor. La opción de alojamiento propio y la cuenta inicial son solo para el inicio de sesión de administrador y la vista web para gestionar dominios, alias y configuraciones de correo electrónico relacionadas.
Pruebas
Creando tu primer alias
- Accede a la página de alias. Abre la página de administración de alias:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
- Agregar un nuevo alias
- Hacer clic Agregar alias (arriba a la derecha).
- Ingrese el nombre del alias y ajuste la configuración del correo electrónico según sea necesario.
- (Opcional) Habilitar IMAP/POP3/CalDAV Apoye seleccionando la casilla de verificación.
- Hacer clic Crear alias.
- Establecer una contraseña
- Hacer clic Generar contraseña para crear una contraseña segura.
- Esta contraseña será necesaria para iniciar sesión en su cliente de correo electrónico.
- Configurar su cliente de correo electrónico
- Utilice un cliente de correo electrónico como Thunderbird.
- Introduzca el nombre de alias y la contraseña generada.
- Configurar el IMAP y SMTP ajustes en consecuencia.
Configuración del servidor de correo electrónico
Nombre de usuario: <alias name>
Tipo | nombre de host | Puerto | Seguridad de la conexión | Autenticación |
---|---|---|---|---|
SMTP | smtp.<nombre_de_dominio> | 465 | SSL / TLS | Contraseña normal |
IMAP | imap.<nombre_de_dominio> | 993 | SSL / TLS | Contraseña normal |
Enviar/Recibir su primer correo electrónico
Una vez configurado, ¡debería poder enviar y recibir correos electrónicos a su dirección de correo electrónico recién creada y alojada!
Mantenimiento
How do I backup my data
Sigue el script de instalación y elige option 2
en el aviso.
How do I renew my certificates
Sigue el script de instalación y elige option 3
en el aviso.
How do I upgrade to the latest forward email code
Sigue el script de instalación y elige option 4
en el aviso.
How do I restore from a backup
Sigue el script de instalación y elige option 6
en el aviso.
Solución de problemas
Why is the certbot acme challenge failing
El error más común es que certbot/letsencrypt a veces solicitará 2 desafíos. Debes asegurarte de agregar BOTH registros txt.
Ejemplo: Podrías ver dos desafíos como este: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"
También es posible que la propagación del DNS no se haya completado. Puedes usar herramientas como: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>
Esto te dará una idea de si los cambios en tu registro TXT deberían reflejarse. También es posible que la caché DNS local de tu host siga usando un valor antiguo y obsoleto o que no haya detectado los cambios recientes.
Otra opción es utilizar los cambios de DNS automatizados de cerbot configurando el /root/.cloudflare.ini
Archivo con el token de API en cloud-init/user-data al configurar el VPS o cree este archivo y vuelva a ejecutar el script. Esto gestionará automáticamente los cambios de DNS y las actualizaciones de desafío.
What is the basic auth username and password
Para el autohospedaje, agregamos una ventana emergente de autenticación nativa del navegador por primera vez con un nombre de usuario simple (admin
) y contraseña (generada aleatoriamente durante la configuración inicial). Solo la añadimos como protección en caso de que la automatización o los scrapers se adelanten a su primer registro en la experiencia web. Puede encontrar esta contraseña después de la configuración inicial en su... .env
archivar bajo AUTH_BASIC_USERNAME
y AUTH_BASIC_PASSWORD
.
How do I know what is running
Tu puedes correr docker ps
para ver todos los contenedores en funcionamiento que se están creando desde el docker-compose-self-hosting.yml
archivo. También puedes ejecutar docker ps -a
para ver todo (incluidos los contenedores que no están en ejecución).
How do I know if something isn't running that should be
Tu puedes correr docker ps -a
Para verlo todo (incluidos los contenedores que no se están ejecutando). Es posible que vea un registro de salida o una nota.
How do I find logs
Puede obtener más registros a través de docker logs -f <container_name>
Si algo salió, es probable que esté relacionado con el .env
El archivo está configurado incorrectamente.
Dentro de la interfaz web, puedes ver /admin/emails
y /admin/logs
para registros de correo electrónico saliente y registros de errores respectivamente.
Why are my outgoing emails timing out
Si ves un mensaje como "Tiempo de conexión agotado" al conectarte al servidor MX..., quizás debas verificar si el puerto 25 está bloqueado. Es común que los ISP o proveedores de nube lo bloqueen por defecto, por lo que podrías tener que contactar con soporte técnico o abrir un ticket para que lo abran.
What tool(s) should I use to test email configuration best practices and IP reputation
Echa un vistazo a nuestro Preguntas frecuentes aquí.
herramientas de administrador de correo de Google
Usa la dirección IP de tu servidor para comprobar si los siguientes sitios están en una lista negra. Lamentablemente, es frecuente que los proveedores de nube comunes tengan problemas de reputación de IP debido al uso de spam en el correo electrónico. Si ves que tu IP está en una lista negra, se recomienda configurar un nuevo servidor y comprobar la nueva dirección IP.