Selbst gehostet
Installation
Anforderungen
Stellen Sie vor dem Ausführen des Installationsskripts sicher, dass Sie über Folgendes verfügen:
- Betriebssystem: Ein Linux-basierter Server (z. B. Ubuntu 22.04+).
- Ressourcen: 1 vCPU und 2 GB RAM
- Root-Zugriff: Administratorrechte zum Ausführen von Befehlen.
- Domänenname: Eine benutzerdefinierte Domäne, bereit für die DNS-Konfiguration.
- Saubere IP: Stellen Sie sicher, dass Ihr Server eine saubere IP-Adresse ohne Spam-Ruf hat, indem Sie Blacklists überprüfen. Weitere Informationen Hier.
[!TIP] Siehe unsere Liste mit tolle Mailserver-Anbieter
Cloud-Init / Benutzerdaten
Die meisten Cloud-Anbieter unterstützen eine Cloud-Init-Konfiguration für die Bereitstellung des virtuellen privaten Servers (VPS). Dies ist eine hervorragende Möglichkeit, einige Dateien und Umgebungsvariablen vorab für die anfängliche Einrichtungslogik des Skripts festzulegen. Dadurch entfällt die Notwendigkeit, während der Ausführung des Skripts zusätzliche Informationen abzufragen.
Optionen
EMAIL
-EMAIL
Umgebungsvariable, die für Certbot-Ablauferinnerungen verwendet wirdDOMAIN
- benutzerdefinierte Domäne für die Einrichtung des Self-HostingsAUTH_BASIC_USERNAME
- Benutzername, der bei der Ersteinrichtung zum Schutz der Site verwendet wirdAUTH_BASIC_PASSWORD
- Passwort, das bei der Ersteinrichtung zum Schutz der Site verwendet wird/root/.cloudflare.ini
- (Nur für Cloudflare-Benutzer)Cloudflare-Konfigurationsdatei, die von Certbot für die DNS-Konfiguration verwendet wird. Dazu müssen Sie Ihr API-Token überdns_cloudflare_api_token
. Mehr lesen Hier.
Beispiel:
#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
Installieren
Führen Sie den folgenden Befehl auf Ihrem Server aus, um das Installationsskript herunterzuladen und auszuführen:
bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)
Debug-Installationsskript
Fügen Sie DEBUG=true vor dem Installationsskript hinzu, um eine ausführliche Ausgabe zu erhalten:
DEBUG=true bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)
Eingabeaufforderungen
1. Initial setup
2. Setup Backups
3. Setup Auto Upgrades
4. Renew certificates
5. Restore from Backup
6. Help
7. Exit
- Ersteinrichtung: Laden Sie den neuesten Code zum Weiterleiten von E-Mails herunter, konfigurieren Sie die Umgebung, fragen Sie nach Ihrer benutzerdefinierten Domäne und richten Sie alle erforderlichen Zertifikate, Schlüssel und Geheimnisse ein.
- Backup einrichten: Richtet einen Cron-Befehl ein, um MongoDB und Redis mithilfe eines S3-kompatiblen Speichers für sichere Remote-Speicherung zu sichern. SQLite wird beim Login separat gesichert, wenn Änderungen für sichere, verschlüsselte Backups vorgenommen werden.
- Setup-Upgrade: Richten Sie einen Cron ein, um nach nächtlichen Updates zu suchen, die Infrastrukturkomponenten sicher neu erstellen und neu starten.
- Zertifikate erneuern: Certbot / lets encrypt wird für SSL-Zertifikate verwendet, deren Schlüssel alle 3 Monate ablaufen. Dadurch werden die Zertifikate für Ihre Domain erneuert und im entsprechenden Ordner abgelegt, damit die zugehörigen Komponenten sie nutzen können. Siehe wichtige Dateipfade
- Wiederherstellen aus einer Sicherung: Löst bei MongoDB und Redis die Wiederherstellung aus Sicherungsdaten aus.
Ersteinrichtung (Option 1)
Option wählen 1. Initial setup
um zu beginnen.
Sobald der Vorgang abgeschlossen ist, sollten Sie eine Erfolgsmeldung erhalten. Sie können sogar docker ps
um zu sehen Die Komponenten hochgefahren. Weitere Informationen zu den Komponenten finden Sie weiter unten.
Leistungen
Dienstname | Standardport | Beschreibung |
---|---|---|
Web | 443 | Weboberfläche für alle Administratorinteraktionen |
API | 4000 | API-Schicht zum Abstraktion von Datenbanken |
Bree | Keiner | Hintergrundjob und Task-Runner |
SMTP | 465/587 | SMTP-Server für ausgehende E-Mails |
SMTP Bree | Keiner | SMTP-Hintergrundjob |
MX | 2525 | Mail-Austausch für eingehende E-Mails und E-Mail-Weiterleitung |
IMAP | 993/2993 | IMAP-Server für eingehende E-Mails und Postfachverwaltung |
POP3 | 995/2995 | POP3-Server für eingehende E-Mails und Postfachverwaltung |
SQLite | 3456 | SQLite-Server für Interaktionen mit SQLite-Datenbank(en) |
SQLite Bree | Keiner | SQLite-Hintergrundjob |
CalDAV | 5000 | CalDAV-Server zur Kalenderverwaltung |
MongoDB | 27017 | MongoDB-Datenbank für die meisten Datenverwaltungen |
Redis | 6379 | Redis für Caching und Statusverwaltung |
SQLite | Keiner | SQLite-Datenbank(en) für verschlüsselte Postfächer |
Wichtige Dateipfade
Notiz: Hostpfad unten ist relativ zu /root/forwardemail.net/self-hosting/
.
Komponente | Hostpfad | Containerpfad |
---|---|---|
MongoDB | ./mongo-backups | /backups |
Redis | ./redis-data | /data |
SQLite | ./sqlite-data | /mnt/{SQLITE_STORAGE_PATH} |
Env-Datei | ./.env | /app/.env |
SSL-Zertifikate/Schlüssel | ./ssl | /app/ssl/ |
Privater Schlüssel | ./ssl/privkey.pem | /app/ssl/privkey.pem |
Vollständiges Kettenzertifikat | ./ssl/fullchain.pem | /app/ssl/fullchain.pem |
Zertifizierte Zertifizierungsstellen | ./ssl/cert.pem | /app/ssl/cert.pem |
Privater DKIM-Schlüssel | ./ssl/dkim.key | /app/ssl/dkim.key |
[!WICHTIG] Speichern Sie die
.env
Datei sicher speichern. Dies ist für die Wiederherstellung im Fehlerfall von entscheidender Bedeutung. Sie finden dies in/root/forwardemail.net/self-hosting/.env
.
Konfiguration
Erste DNS-Einrichtung
Konfigurieren Sie bei Ihrem DNS-Anbieter die entsprechenden DNS-Einträge. Beachten Sie alle Angaben in Klammern (<>
) ist dynamisch und muss mit Ihrem Wert aktualisiert werden.
Typ | Name | Inhalt | TTL |
---|---|---|---|
A | „@“, „.“ oder leer | <IP-Adresse> | Auto |
CNAME | API | <Domänenname> | Auto |
CNAME | caldav | <Domänenname> | Auto |
CNAME | Fe-Bounces | <Domänenname> | Auto |
CNAME | imap | <Domänenname> | Auto |
CNAME | mx | <Domänenname> | Auto |
CNAME | pop3 | <Domänenname> | Auto |
CNAME | SMTP | <Domänenname> | Auto |
MX | „@“, „.“ oder leer | mx.<Domänenname> (Priorität 0) | Auto |
TXT | „@“, „.“ oder leer | „v=spf1 a -all“ | Auto |
Reverse-DNS-/PTR-Eintrag
Reverse DNS (rDNS) oder Reverse Pointer Records (PTR-Records) sind für E-Mail-Server unerlässlich, da sie die Legitimität des Servers, der die E-Mail sendet, bestätigen. Jeder Cloud-Anbieter handhabt dies anders. Sie müssen daher nachschauen, wie Sie „Reverse DNS“ hinzufügen, um Host und IP dem entsprechenden Hostnamen zuzuordnen. Meistens finden Sie dies im Netzwerkbereich des Anbieters.
Port 25 blockiert
Einige ISPs und Cloud-Anbieter blockieren Port 25, um böswillige Akteure zu verhindern. Möglicherweise müssen Sie ein Support-Ticket einreichen, um Port 25 für SMTP/ausgehende E-Mails freizugeben.
Onboarding
-
Öffnen Sie die Landingpage. Navigieren Sie zu https://<Domänenname> und ersetzen Sie <Domänenname> durch die in Ihren DNS-Einstellungen konfigurierte Domäne. Die Landingpage „E-Mail weiterleiten“ sollte angezeigt werden.
-
Anmelden und Ihre Domäne einbinden
- Melden Sie sich mit einer gültigen E-Mail-Adresse und einem gültigen Passwort an.
- Geben Sie den Domänennamen ein, den Sie einrichten möchten (dieser muss mit der DNS-Konfiguration übereinstimmen).
- Folgen Sie den Anweisungen, um die erforderlichen MX und TXT Aufzeichnungen zur Überprüfung.
- Komplette Einrichtung
- Rufen Sie nach der Überprüfung die Seite „Aliase“ auf, um Ihren ersten Alias zu erstellen.
- Optional konfigurieren SMTP für ausgehende E-Mails im Domäneneinstellungen. Dies erfordert zusätzliche DNS-Einträge.
[!HINWEIS] Es werden keine Informationen außerhalb Ihres Servers gesendet. Die selbst gehostete Option und das Startkonto dienen lediglich dem Administrator-Login und der Webansicht zur Verwaltung von Domänen, Aliasen und zugehörigen E-Mail-Konfigurationen.
Testen
Erstellen Ihres ersten Alias
- Navigieren Sie zur Alias-Seite. Öffnen Sie die Alias-Verwaltungsseite:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
- Einen neuen Alias hinzufügen
- Klicken Alias hinzufügen (oben rechts).
- Geben Sie den Aliasnamen ein und passen Sie die E-Mail-Einstellungen nach Bedarf an.
- (Optional) Aktivieren IMAP/POP3/CalDAV Support, indem Sie das Kontrollkästchen aktivieren.
- Klicken Alias erstellen.
- Legen Sie ein Passwort fest
- Klicken Generiere Passwort um ein sicheres Passwort zu erstellen.
- Dieses Passwort wird für die Anmeldung bei Ihrem E-Mail-Client benötigt.
- Konfigurieren Sie Ihren E-Mail-Client
- Verwenden Sie einen E-Mail-Client wie Thunderbird.
- Geben Sie den Aliasnamen und das generierte Passwort ein.
- Konfigurieren Sie die IMAP und SMTP Einstellungen entsprechend.
E-Mail-Servereinstellungen
Benutzername: <alias name>
Typ | Hostname | Hafen | Verbindungssicherheit | Authentifizierung |
---|---|---|---|---|
SMTP | smtp.<Domänenname> | 465 | SSL / TLS | Normales Passwort |
IMAP | imap.<Domänenname> | 993 | SSL / TLS | Normales Passwort |
Senden/Empfangen Ihrer ersten E-Mail
Nach der Konfiguration sollten Sie in der Lage sein, E-Mails an Ihre neu erstellte und selbst gehostete E-Mail-Adresse zu senden und zu empfangen!
Wartung
How do I backup my data
Folgen Sie den Installationsskript und wählen Sie option 2
in der Eingabeaufforderung.
How do I renew my certificates
Folgen Sie den Installationsskript und wählen Sie option 3
in der Eingabeaufforderung.
How do I upgrade to the latest forward email code
Folgen Sie den Installationsskript und wählen Sie option 4
in der Eingabeaufforderung.
How do I restore from a backup
Folgen Sie den Installationsskript und wählen Sie option 6
in der Eingabeaufforderung.
Fehlerbehebung
Why is the certbot acme challenge failing
Die häufigste Falle ist, dass certbot / letsencrypt manchmal anfordert 2 Herausforderungen. Sie müssen unbedingt hinzufügen BOTH txt-Datensätze.
Beispiel: Sie sehen möglicherweise zwei Herausforderungen wie diese: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"
Es ist auch möglich, dass die DNS-Verbreitung nicht abgeschlossen wurde. Sie können Tools wie diese verwenden: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>
. So erhalten Sie eine Vorstellung davon, ob Ihre TXT-Eintragsänderungen berücksichtigt werden sollten. Es ist auch möglich, dass der lokale DNS-Cache auf Ihrem Host noch einen alten, veralteten Wert verwendet oder die letzten Änderungen nicht übernommen hat.
Eine weitere Möglichkeit besteht darin, die automatisierten Cerbot-DNS-Änderungen zu verwenden, indem Sie die /root/.cloudflare.ini
Datei mit dem API-Token in Ihren Cloud-Init-/Benutzerdaten bei der ersten VPS-Einrichtung oder erstellen Sie diese Datei und führen Sie das Skript erneut aus. Dadurch werden die DNS-Änderungen und Challenge-Updates automatisch verwaltet.
What is the basic auth username and password
Für das Self-Hosting fügen wir beim ersten Mal ein natives Browser-Authentifizierungs-Popup mit einem einfachen Benutzernamen hinzu (admin
) und Passwort (zufällig generiert bei der Ersteinrichtung). Wir fügen dies nur als Schutz hinzu, falls Automatisierungs-/Scraper Sie bei der ersten Anmeldung im Web-Erlebnis überrumpeln. Sie finden dieses Passwort nach der Ersteinrichtung in Ihrem .env
Ablage unter AUTH_BASIC_USERNAME
und AUTH_BASIC_PASSWORD
.
How do I know what is running
Du kannst rennen docker ps
um alle laufenden Container anzuzeigen, die von der docker-compose-self-hosting.yml
Datei. Sie können auch docker ps -a
um alles zu sehen (einschließlich Container, die nicht ausgeführt werden).
How do I know if something isn't running that should be
Du kannst rennen docker ps -a
um alles anzuzeigen (einschließlich Container, die nicht ausgeführt werden). Möglicherweise wird ein Exit-Protokoll oder eine Notiz angezeigt.
How do I find logs
Weitere Protokolle erhalten Sie über docker logs -f <container_name>
. Wenn etwas herauskam, dann wahrscheinlich im Zusammenhang mit der .env
Datei ist falsch konfiguriert.
Innerhalb der Web-Benutzeroberfläche können Sie /admin/emails
und /admin/logs
für ausgehende E-Mail-Protokolle bzw. Fehlerprotokolle.
Why are my outgoing emails timing out
Wenn beim Verbinden mit dem MX-Server die Meldung „Verbindungs-Timeout“ angezeigt wird, prüfen Sie, ob Port 25 blockiert ist. ISPs oder Cloud-Anbieter blockieren diesen Port häufig standardmäßig. Sie müssen sich dann an den Support wenden oder ein Ticket erstellen, um die Sperre zu öffnen.
What tool(s) should I use to test email configuration best practices and IP reputation
Schauen Sie sich unsere FAQ hier.
Überprüfen Sie anhand Ihrer Server-IP-Adresse, ob die folgenden Websites auf einer schwarzen Liste stehen. Leider kommt es bei gängigen Cloud-Anbietern aufgrund von E-Mail-Spam häufig zu Problemen mit der IP-Reputation. Wenn Ihre IP-Adresse auf einer schwarzen Liste steht, empfiehlt es sich, einen neuen Server zu installieren und die neue IP-Adresse zu überprüfen.