Selbst gehostet
Erste Schritte
Unsere selbst gehostete E-Mail-Lösung ist, wie alle unsere Produkte, zu 100 % Open Source – sowohl im Frontend als auch im Backend. Das bedeutet:
- Vollständige Transparenz: Jede Codezeile, die Ihre E-Mails verarbeitet, ist öffentlich einsehbar
- Community-Beiträge: Jeder kann Verbesserungen beitragen oder Probleme beheben
- Sicherheit durch Offenheit: Schwachstellen können von einer globalen Community identifiziert und behoben werden
- Keine Abhängigkeit von einem Anbieter: Sie sind nie von der Existenz unseres Unternehmens abhängig
Der gesamte Code ist auf GitHub verfügbar unter https://github.com/forwardemail/forwardemail.net, lizenziert unter der MIT-Lizenz.
Die Architektur umfasst Container für:
- SMTP-Server für ausgehende E-Mails
- IMAP/POP3-Server zum E-Mail-Abruf
- Weboberfläche zur Administration
- Datenbank zur Konfigurationsspeicherung
- Redis für Caching und Leistung
- SQLite für sichere, verschlüsselte Postfachspeicherung
Anforderungen
Stellen Sie vor dem Ausführen des Installationsskripts sicher, dass Sie über Folgendes verfügen:
- Betriebssystem: Ein Linux-basierter Server (unterstützt derzeit 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.
- Öffentliche IP-Adresse mit Port 25-Unterstützung
- Fähigkeit zum Einstellen umgekehrter PTR
- IPv4- und IPv6-Unterstützung
[!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
- E-Mail-Adresse für Erinnerungen zum Ablauf des CertbotsDOMAIN
- benutzerdefinierte Domäne (z. B.example.com
) wird für die Einrichtung des Self-Hostings verwendetAUTH_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
Hinzufügen DEBUG=true
vor dem Installationsskript für ausführliche Ausgabe:
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!
Fehlerbehebung
Warum funktioniert das nicht außerhalb von Ubuntu?
Wir arbeiten derzeit an der Unterstützung von Debian und MacOS und werden uns auch um weitere kümmern. Bitte öffnen Sie ein Diskussion oder leisten Sie einen Beitrag, wenn Sie möchten, dass andere unterstützt werden.
Warum schlägt die Certbot Acme-Challenge fehl?
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.
Wie lauten der Benutzername und das Passwort für die grundlegende Authentifizierung?
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
.
Wie erkenne ich, was läuft
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).
Wie erkenne ich, dass etwas nicht läuft, was laufen sollte?
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.
Wie finde ich Protokolle
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.
Warum kommt es bei meinen ausgehenden E-Mails zu einer Zeitüberschreitung?
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.
Welche Tools sollte ich verwenden, um Best Practices für die E-Mail-Konfiguration und die IP-Reputation zu testen?
Schauen Sie sich unsere FAQ hier.