Auto-hébergé

Exigences

Avant d’exécuter le script d’installation, assurez-vous de disposer des éléments suivants :

  • Système opérateur:Un serveur basé sur Linux (par exemple Ubuntu 22.04+).
  • Ressources: 1 vCPU et 2 Go de RAM
  • Accès root: Privilèges administratifs pour exécuter des commandes.
  • Nom de domaine:Un domaine personnalisé prêt pour la configuration DNS.
  • IP propre: Assurez-vous que votre serveur dispose d'une adresse IP propre et sans réputation de spam en consultant les listes noires. Plus d'infos ici.

[!TIP] Consultez notre liste de fournisseurs de serveurs de messagerie impressionnants

Cloud-init / Données utilisateur

La plupart des fournisseurs de cloud prennent en charge une configuration cloud-init lors du provisionnement du serveur privé virtuel (VPS). C'est un excellent moyen de définir à l'avance certains fichiers et variables d'environnement à utiliser par la logique de configuration initiale des scripts, évitant ainsi de demander des informations supplémentaires pendant l'exécution du script.

Options

  • EMAIL - EMAIL variable d'environnement utilisée pour les rappels d'expiration de certbot
  • DOMAIN - domaine personnalisé utilisé pour la configuration de l'auto-hébergement
  • AUTH_BASIC_USERNAME - nom d'utilisateur utilisé lors de la première configuration pour protéger le site
  • AUTH_BASIC_PASSWORD - mot de passe utilisé lors de la première configuration pour protéger le site
  • /root/.cloudflare.ini - (Utilisateurs Cloudflare uniquementFichier de configuration Cloudflare utilisé par Certbot pour la configuration DNS. Il nécessite la définition de votre jeton API via dns_cloudflare_api_token. En savoir plus ici.

Exemple:

#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

Installer

Exécutez la commande suivante sur votre serveur pour télécharger et exécuter le script d'installation :

bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)

Script d'installation de débogage

Ajoutez DEBUG=true devant le script d'installation pour une sortie détaillée :

DEBUG=true bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)

Invites

1. Initial setup
2. Setup Backups
3. Setup Auto Upgrades
4. Renew certificates
5. Restore from Backup
6. Help
7. Exit
  • Configuration initiale: Téléchargez le dernier code de transfert de courrier électronique, configurez l'environnement, demandez votre domaine personnalisé et configurez tous les certificats, clés et secrets nécessaires.
  • Configuration de la sauvegarde: Configurera une tâche cron pour sauvegarder MongoDB et Redis à l'aide d'un stockage distant sécurisé compatible S3. Par ailleurs, SQLite sera sauvegardé à la connexion si des modifications sont apportées pour des sauvegardes sécurisées et chiffrées.
  • Mise à niveau de l'installation:Configurez un cron pour rechercher les mises à jour nocturnes qui reconstruiront et redémarreront en toute sécurité les composants de l'infrastructure.
  • Renouveler les certificatsCertbot / lets encrypt est utilisé pour les certificats SSL et les clés expirent tous les 3 mois. Cela renouvellera les certificats de votre domaine et les placera dans le dossier approprié pour leur utilisation par les composants associés. Voir chemins de fichiers importants
  • Restaurer à partir d'une sauvegarde:Déclenchera mongodb et redis pour restaurer à partir des données de sauvegarde.

Configuration initiale (option 1)

Choisissez l'option 1. Initial setup pour commencer.

Une fois l'opération terminée, un message de réussite devrait s'afficher. Vous pouvez même exécuter docker ps voir le Composants mis en rotation. Plus d'informations sur les composants ci-dessous.

Services

Nom du servicePort par défautDescription
Web443Interface Web pour toutes les interactions avec l'administrateur
API4000Couche API pour abstraire les bases de données
BréeAucunExécuteur de tâches et de tâches en arrière-plan
SMTP465/587Serveur SMTP pour les e-mails sortants
SMTP BreeAucunTâche d'arrière-plan SMTP
MX2525Échange de courrier pour les e-mails entrants et les transferts d'e-mails
IMAP993/2993Serveur IMAP pour la gestion des e-mails entrants et des boîtes aux lettres
POP3995/2995Serveur POP3 pour la gestion des e-mails entrants et des boîtes aux lettres
SQLite3456Serveur SQLite pour les interactions avec les bases de données SQLite
SQLite BreeAucunTâche d'arrière-plan SQLite
CalDAV5000Serveur CalDAV pour la gestion du calendrier
MongoDB27017Base de données MongoDB pour la plupart des gestions de données
Rédis6379Redis pour la mise en cache et la gestion de l'état
SQLiteAucunBase(s) de données SQLite pour boîtes aux lettres chiffrées

Chemins de fichiers importants

Note: Chemin de l'hôte ci-dessous est relatif à /root/forwardemail.net/self-hosting/.

ComposantChemin de l'hôteChemin du conteneur
MongoDB./mongo-backups/backups
Rédis./redis-data/data
Sqlite./sqlite-data/mnt/{SQLITE_STORAGE_PATH}
Fichier d'environnement./.env/app/.env
Certificats/clés SSL./ssl/app/ssl/
Clé privée./ssl/privkey.pem/app/ssl/privkey.pem
Certificat de chaîne complète./ssl/fullchain.pem/app/ssl/fullchain.pem
CA certifiés./ssl/cert.pem/app/ssl/cert.pem
Clé privée DKIM./ssl/dkim.key/app/ssl/dkim.key

[!IMPORTANT] Enregistrez le .env Conservez le fichier en toute sécurité. C'est essentiel pour la récupération en cas de panne. Vous trouverez cette information dans /root/forwardemail.net/self-hosting/.env.

Configuration

Configuration DNS initiale

Chez votre fournisseur DNS, configurez les enregistrements DNS appropriés. Notez tout ce qui est entre parenthèses (<>) est dynamique et doit être mis à jour avec votre valeur.

TaperNomContenuTTL
A"@", "." ou vide<adresse_ip>auto
CNAMEAPI<nom_de_domaine>auto
CNAMEcaldav<nom_de_domaine>auto
CNAMErebonds fe<nom_de_domaine>auto
CNAMEimap<nom_de_domaine>auto
CNAMEmx<nom_de_domaine>auto
CNAMEpop3<nom_de_domaine>auto
CNAMESMTP<nom_de_domaine>auto
MX"@", "." ou videmx.<nom_de_domaine> (priorité 0)auto
TXT"@", "." ou vide"v=spf1 a -all"auto
Enregistrement DNS / PTR inversé

Le DNS inversé (rDNS) ou les enregistrements de pointeur inversé (enregistrements PTR) sont essentiels pour les serveurs de messagerie, car ils permettent de vérifier la légitimité du serveur qui envoie l'e-mail. Chaque fournisseur de cloud procède différemment ; vous devrez donc rechercher comment ajouter un DNS inversé pour associer l'hôte et l'adresse IP au nom d'hôte correspondant. Probablement dans la section réseau du fournisseur.

Port 25 bloqué

Certains FAI et fournisseurs de cloud bloquent le port 25 pour éviter les acteurs malveillants. Vous devrez peut-être ouvrir un ticket d'assistance pour ouvrir le port 25 pour le SMTP et les e-mails sortants.

Intégration

  1. Ouvrez la page d'accueil Accédez à https://<nom_de_domaine>, en remplaçant <nom_de_domaine> par le domaine configuré dans vos paramètres DNS. La page d'accueil « Transférer un e-mail » devrait s'afficher.

  2. Connectez-vous et intégrez votre domaine

  • Connectez-vous avec un email et un mot de passe valides.
  • Saisissez le nom de domaine que vous souhaitez configurer (celui-ci doit correspondre à la configuration DNS).
  • Suivez les instructions pour ajouter les éléments requis MX et TXT enregistrements pour vérification.
  1. Configuration complète
  • Une fois vérifié, accédez à la page Alias pour créer votre premier alias.
  • En option, configurez SMTP pour les e-mails sortants dans le Paramètres du domaineCela nécessite des enregistrements DNS supplémentaires.

[!REMARQUE] Aucune information n'est transmise en dehors de votre serveur. L'option auto-hébergée et le compte initial servent uniquement à la connexion administrateur et à la vue web pour gérer les domaines, les alias et les configurations de messagerie associées.

Essai

Créer votre premier alias

  1. Accédez à la page Alias Ouvrez la page de gestion des alias :
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
  1. Ajouter un nouvel alias
  • Cliquez Ajouter un alias (en haut à droite).
  • Saisissez le nom d’alias et ajustez les paramètres de messagerie selon vos besoins.
  • (Facultatif) Activer IMAP/POP3/CalDAV support en cochant la case.
  • Cliquez Créer un alias.
  1. Définir un mot de passe
  • Cliquez Créer un mot de passe pour créer un mot de passe sécurisé.
  • Ce mot de passe sera requis pour vous connecter à votre client de messagerie.
  1. Configurez votre client de messagerie
  • Utilisez un client de messagerie comme Thunderbird.
  • Entrez le nom d'alias et le mot de passe généré.
  • Configurer le IMAP et SMTP paramètres en conséquence.
Paramètres du serveur de messagerie

Nom d'utilisateur: <alias name>

TaperNom d'hôtePortSécurité de la connexionAuthentification
SMTPsmtp.<nom_de_domaine>465SSL / TLSMot de passe normal
IMAPimap.<nom_de_domaine>993SSL / TLSMot de passe normal

Envoi / Réception de votre premier email

Une fois configuré, vous devriez pouvoir envoyer et recevoir des e-mails à votre adresse e-mail nouvellement créée et auto-hébergée !

Entretien

How do I backup my data

Suivez le script d'installation et choisissez option 2 dans l'invite.

How do I renew my certificates

Suivez le script d'installation et choisissez option 3 dans l'invite.

How do I upgrade to the latest forward email code

Suivez le script d'installation et choisissez option 4 dans l'invite.

How do I restore from a backup

Suivez le script d'installation et choisissez option 6 dans l'invite.

Dépannage

Why is the certbot acme challenge failing

Le piège le plus courant est que certbot / letsencrypt demandera parfois 2 défis. Vous devez vous assurer d'ajouter BOTH enregistrements txt.

Exemple : Vous pourriez voir deux défis comme celui-ci : _acme-challenge.example.com -> « randomstring1 » _acme-challenge.example.com -> « randomstring2 »

Il est également possible que la propagation DNS ne soit pas terminée. Vous pouvez utiliser des outils tels que : https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>Cela vous permettra de savoir si les modifications de votre enregistrement TXT doivent être prises en compte. Il est également possible que le cache DNS local de votre hébergeur utilise encore une valeur obsolète ou n'ait pas pris en compte les modifications récentes.

Une autre option consiste à utiliser les modifications DNS automatisées de Cerbot en définissant le /root/.cloudflare.ini Fichier contenant le jeton d'API dans votre fichier cloud-init / user-data lors de la configuration initiale du VPS, ou créez ce fichier et réexécutez le script. Cela gérera automatiquement les modifications DNS et les mises à jour des défis.

What is the basic auth username and password

Pour l'auto-hébergement, nous ajoutons une fenêtre contextuelle d'authentification native du navigateur pour la première fois avec un nom d'utilisateur simple (admin) et un mot de passe (généré aléatoirement lors de la configuration initiale). Nous l'ajoutons simplement comme protection au cas où des robots d'automatisation ou des scrapers vous devancent lors de votre première inscription en ligne. Vous trouverez ce mot de passe après la configuration initiale dans votre .env classer sous AUTH_BASIC_USERNAME et AUTH_BASIC_PASSWORD.

How do I know what is running

Tu peux courir docker ps pour voir tous les conteneurs en cours d'exécution qui sont en cours de création à partir du docker-compose-self-hosting.yml fichier. Vous pouvez également exécuter docker ps -a pour tout voir (y compris les conteneurs qui ne fonctionnent pas).

How do I know if something isn't running that should be

Tu peux courir docker ps -a pour tout voir (y compris les conteneurs inactifs). Vous pouvez voir un journal de sortie ou une note.

How do I find logs

Vous pouvez obtenir plus de journaux via docker logs -f <container_name>. Si quelque chose est sorti, c'est probablement lié à la .env fichier configuré de manière incorrecte.

Dans l'interface utilisateur Web, vous pouvez afficher /admin/emails et /admin/logs pour les journaux de courrier électronique sortant et les journaux d'erreurs respectivement.

Why are my outgoing emails timing out

Si vous voyez un message du type « Délai de connexion expiré lors de la connexion au serveur MX… », vérifiez si le port 25 est bloqué. Il est courant que les FAI et les fournisseurs de cloud bloquent ce port par défaut. Vous devrez alors contacter le support ou créer un ticket pour obtenir son ouverture.

What tool(s) should I use to test email configuration best practices and IP reputation

Jetez un oeil à notre FAQ ici.

boîte à outils mx

outils Google Postmaster

Utilisez l'adresse IP de votre serveur pour vérifier si les sites suivants sont sur liste noire. Malheureusement, il n'est pas rare que les fournisseurs de cloud rencontrent des problèmes de réputation IP liés à l'utilisation de spams. Si votre adresse IP figure sur une liste noire, il est recommandé de configurer un nouveau serveur et de vérifier la nouvelle adresse IP.

maison de spam

spammé