Zelf gehost
Aan de slag
Onze zelfgehoste e-mailoplossing is, net als al onze producten, 100% open source – zowel frontend als backend. Dit betekent:
- Volledige transparantie: Elke regel code die uw e-mails verwerkt, is beschikbaar voor openbare controle.
- Bijdragen van de community: Iedereen kan verbeteringen bijdragen of problemen oplossen.
- Beveiliging door openheid: Kwetsbaarheden kunnen worden geïdentificeerd en opgelost door een wereldwijde community.
- Geen vendor lock-in: U bent nooit afhankelijk van het bestaan van ons bedrijf.
De volledige codebase is beschikbaar op GitHub op https://github.com/forwardemail/forwardemail.net, en valt onder de MIT-licentie.
De architectuur omvat containers voor:
- SMTP-server voor uitgaande e-mail
- IMAP/POP3-servers voor het ophalen van e-mail
- Webinterface voor beheer
- Database voor configuratieopslag
- Redis voor caching en prestaties
- SQLite voor veilige, versleutelde mailboxopslag
Note
Bekijk zeker onze zelf-gehoste blog
En voor degenen die geïnteresseerd zijn in een meer gedetailleerde stapsgewijze versie, zie onze handleidingen gebaseerd op Ubuntu of Debian.
Vereisten
Voordat u het installatiescript uitvoert, moet u ervoor zorgen dat u over het volgende beschikt:
- Besturingssysteem: Een Linux-server (momenteel met ondersteuning voor Ubuntu 22.04+).
- Resources: 1 vCPU en 2 GB RAM
- Root-toegang: Beheerdersrechten om opdrachten uit te voeren.
- Domeinnaam: Een aangepast domein, klaar voor DNS-configuratie.
- Schoon IP-adres: Zorg ervoor dat uw server een schoon IP-adres heeft zonder eerdere spamreputatie door zwarte lijsten te controleren. Meer informatie: hier.
- Openbaar IP-adres met ondersteuning voor poort 25
- Mogelijkheid om omgekeerde PTR in te stellen
- Ondersteuning voor IPv4 en IPv6
Tip
Bekijk onze lijst met geweldige mailserverproviders
Cloud-init / Gebruikersgegevens
De meeste cloudleveranciers ondersteunen een cloud-initconfiguratie voor wanneer de Virtual Private Server (VPS) wordt ingericht. Dit is een geweldige manier om vooraf een aantal bestanden en omgevingsvariabelen in te stellen voor gebruik door de initiële installatielogica van het script. Zo hoeft er tijdens de uitvoering van het script niet om aanvullende informatie te worden gevraagd.
Opties
EMAIL
- e-mailadres voor Certbot-vervaldatumherinneringenDOMAIN
- aangepast domein (bijv.example.com
) voor de installatie van zelfhostingAUTH_BASIC_USERNAME
- gebruikersnaam gebruikt bij de eerste installatie om de site te beveiligenAUTH_BASIC_PASSWORD
- wachtwoord gebruikt bij de eerste installatie om de site te beveiligen/root/.cloudflare.ini
- (Alleen voor Cloudflare-gebruikers) Cloudflare-configuratiebestand gebruikt door Certbot voor DNS-configuratie. Hiervoor moet u uw API-token instellen viadns_cloudflare_api_token
. Lees meer over hier.
Voorbeeld:
#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
Installeer
Voer de volgende opdracht uit op uw server om het installatiescript te downloaden en uit te voeren:
bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)
Debug-installatiescript
Voeg DEBUG=true
toe voor het installatiescript voor uitgebreide uitvoer:
DEBUG=true bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)
Vraagt
1. Initial setup
2. Setup Backups
3. Setup Auto Upgrades
4. Renew certificates
5. Restore from Backup
6. Help
7. Exit
- Eerste installatie: Download de nieuwste doorstuurcode, configureer de omgeving, vraag om uw aangepaste domein en stel alle benodigde certificaten, sleutels en geheimen in.
- Back-up instellen: Stelt een cron in om mongoDB en redis te back-uppen met behulp van een S3-compatibele opslag voor veilige, externe opslag. Daarnaast wordt sqlite bij het inloggen apart geback-upt als er wijzigingen zijn voor veilige, versleutelde back-ups.
- Upgrade instellen: Stelt een cron in om te zoeken naar nachtelijke updates die infrastructuurcomponenten veilig herbouwen en herstarten.
- Certificaten vernieuwen: Certbot / lets encrypt wordt gebruikt voor SSL-certificaten en sleutels verlopen elke 3 maanden. Hiermee worden de certificaten voor uw domein vernieuwd en in de benodigde map geplaatst zodat gerelateerde componenten deze kunnen gebruiken. Zie belangrijke bestandspaden
- Herstellen van back-up: Activeert mongoDB en redis om te herstellen van back-upgegevens.
Eerste installatie (optie 1)
Kies optie 1. Initial setup
om te beginnen.
Zodra de installatie is voltooid, ziet u een bericht dat de installatie is voltooid. U kunt zelfs docker ps
uitvoeren om te zien of de componenten zijn opgestart. Meer informatie over componenten vindt u hieronder.
Diensten
Servicenaam | Standaardpoort | Beschrijving |
---|---|---|
Web | 443 |
Webinterface voor alle beheerdersinteracties |
API | 4000 |
API-laag voor het abstraheren van databases |
Bree | Geen | Achtergrondtaak en taakrunner |
SMTP | 465/587 |
SMTP-server voor uitgaande e-mail |
SMTP Bree | Geen | SMTP-achtergrondtaak |
MX | 2525 |
Mailuitwisseling voor inkomende e-mail en e-maildoorsturing |
IMAP | 993/2993 |
IMAP-server voor inkomende e-mail en mailboxbeheer |
POP3 | 995/2995 |
POP3-server voor inkomende e-mail en mailboxbeheer |
SQLite | 3456 |
SQLite-server voor interacties met SQLite-database(s) |
SQLite Bree | Geen | SQLite achtergrondtaak |
CalDAV | 5000 |
CalDAV-server voor agendabeheer |
KaartDAV | 6000 |
CardDAV-server voor agendabeheer |
MongoDB | 27017 |
MongoDB-database voor de meeste gegevensbeheer |
Redis | 6379 |
Redis voor caching en statusbeheer |
SQLite | Geen | SQLite-database(s) voor versleutelde mailboxen |
Belangrijke bestandspaden
Let op: Hostpad hieronder is relatief ten opzichte van /root/forwardemail.net/self-hosting/
.
Onderdeel | Hostpad | Containerpad |
---|---|---|
MongoDB | ./mongo-backups |
/backups |
Redis | ./redis-data |
/data |
Sqlite | ./sqlite-data |
/mnt/{SQLITE_STORAGE_PATH} |
Env-bestand | ./.env |
/app/.env |
SSL-certificaten/sleutels | ./ssl |
/app/ssl/ |
Privésleutel | ./ssl/privkey.pem |
/app/ssl/privkey.pem |
Volledig ketencertificaat | ./ssl/fullchain.pem |
/app/ssl/fullchain.pem |
Gecertificeerde CA's | ./ssl/cert.pem |
/app/ssl/cert.pem |
DKIM-privésleutel | ./ssl/dkim.key |
/app/ssl/dkim.key |
Important
Sla het bestand .env
veilig op. Dit is essentieel voor herstel in geval van een storing.
U vindt dit bestand in /root/forwardemail.net/self-hosting/.env
.
Configuratie
Initiële DNS-instelling
Configureer de juiste DNS-records bij de DNS-provider van uw keuze. Let op: alles tussen haakjes (<>
) is dynamisch en moet worden bijgewerkt met uw waarde.
Type | Naam | Inhoud | TTL | |
---|---|---|---|---|
A | "@", ".", of leeg | <ip_adres> | auto | CNAME | api | auto | CNAME | caldav | auto | CNAME | kaartdatum | auto | CNAME | fe-stuitert | auto | CNAME | imap | auto | CNAME | mx | auto | CNAME | pop3 | auto | CNAME | smtp | auto | MX | "@", ".", of leeg | mx. (prioriteit 0)auto |
TXT | "@", ".", of leeg | "v=spf1 a -all" | auto | |
Type | Hostnaam | Haven | Verbindingsbeveiliging | Authenticatie | SMTP | smtp.465 | SSL / TLS | Normaal wachtwoord | IMAP | imap.993 | SSL / TLS | Normaal wachtwoord |