Autoalojado

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 certbot
  • DOMAIN - dominio personalizado utilizado para la configuración de alojamiento propio
  • AUTH_BASIC_USERNAME - nombre de usuario utilizado en la primera configuración para proteger el sitio
  • AUTH_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 mediante dns_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 servicioPuerto predeterminadoDescripción
Web443Interfaz web para todas las interacciones de administración
API4000Capa de API para abstraer bases de datos
breeNingunaEjecutor de tareas y trabajos en segundo plano
SMTP465/587Servidor SMTP para correo electrónico saliente
SMTP BreeNingunaTrabajo en segundo plano SMTP
MX2525Intercambio de correo para correo electrónico entrante y reenvío de correo electrónico
IMAP993/2993Servidor IMAP para la gestión de correo electrónico entrante y buzones de correo
POP3995/2995Servidor POP3 para la gestión de buzones y correo electrónico entrante
SQLite3456Servidor SQLite para interacciones con bases de datos SQLite
SQLite BreeNingunaTrabajo en segundo plano de SQLite
CalDAV5000Servidor CalDAV para la gestión del calendario
MongoDB27017Base de datos MongoDB para la mayoría de las gestiones de datos
Redis6379Redis para almacenamiento en caché y gestión de estado
SQLiteNingunaBases 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/.

ComponenteRuta del hostRuta 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.

TipoNombreContenidoTTL
A"@", ".", o en blanco<dirección_ip>auto
CNAMEAPI<nombre_de_dominio>auto
CNAMECaldav<nombre_de_dominio>auto
CNAMErebotes de fe<nombre_de_dominio>auto
CNAMEIMAP<nombre_de_dominio>auto
CNAMEmx<nombre_de_dominio>auto
CNAMEpop3<nombre_de_dominio>auto
CNAMESMTP<nombre_de_dominio>auto
MX"@", ".", o en blancomx.<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

  1. 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".

  2. 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.
  1. 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

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

Tiponombre de hostPuertoSeguridad de la conexiónAutenticación
SMTPsmtp.<nombre_de_dominio>465SSL / TLSContraseña normal
IMAPimap.<nombre_de_dominio>993SSL / TLSContraseñ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í.

caja de herramientas mx

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.

spamhaus

enviado spam