Selvhostet
Kom i gang
Vår selvhostede e-postløsning, som alle våre produkter, er 100 % åpen kildekode—både frontend og backend. Dette betyr:
- Fullstendig åpenhet: Hver linje med kode som behandler e-postene dine er tilgjengelig for offentlig gjennomgang
- Bidrag fra fellesskapet: Alle kan bidra med forbedringer eller fikse problemer
- Sikkerhet gjennom åpenhet: Sårbarheter kan identifiseres og fikses av et globalt fellesskap
- Ingen leverandørlås: Du er aldri avhengig av at vårt selskap eksisterer
Hele kodebasen er tilgjengelig på GitHub på https://github.com/forwardemail/forwardemail.net, lisensiert under MIT-lisensen.
Arkitekturen inkluderer containere for:
- SMTP-server for utgående e-post
- IMAP/POP3-servere for e-posthenting
- Webgrensesnitt for administrasjon
- Database for lagring av konfigurasjon
- Redis for caching og ytelse
- SQLite for sikker, kryptert postkasselagring
Note
Sørg for å sjekke ut vår selvhostede blogg
Og for de som er interessert i en mer detaljert steg-for-steg versjon, se våre Ubuntu eller Debian baserte guider.
Krav
Før du kjører installasjonsskriptet, sørg for at du har følgende:
- Operativsystem: En Linux-basert server (støtter for øyeblikket Ubuntu 22.04+).
- Ressurser: 1 vCPU og 2GB RAM
- Root-tilgang: Administrative rettigheter for å kjøre kommandoer.
- Domenenavn: Et egendefinert domene klart for DNS-konfigurasjon.
- Ren IP: Sørg for at serveren din har en ren IP-adresse uten tidligere spam-reputasjon ved å sjekke svartelister. Mer info her.
- Offentlig IP-adresse med støtte for port 25
- Mulighet til å sette reverse PTR
- Støtte for IPv4 og IPv6
Tip
Se vår liste over fantastiske mailserver-leverandører
Cloud-init / Brukerdata
De fleste skyleverandører støtter en cloud-init-konfigurasjon for når den virtuelle private serveren (VPS) blir provisjonert. Dette er en flott måte å sette noen filer og miljøvariabler på forhånd for bruk av skriptets første oppsettslogikk, som vil omgå behovet for å spørre om tilleggsinformasjon mens skriptet kjører.
Alternativer
EMAIL- e-post brukt for certbot-utløpspåminnelserDOMAIN- egendefinert domene (f.eks.example.com) brukt for selvhostet oppsettAUTH_BASIC_USERNAME- brukernavn brukt i første oppsett for å beskytte sidenAUTH_BASIC_PASSWORD- passord brukt i første oppsett for å beskytte siden/root/.cloudflare.ini- (Kun for Cloudflare-brukere) Cloudflare-konfigurasjonsfil brukt av certbot for DNS-konfigurasjon. Den krever at du setter API-token viadns_cloudflare_api_token. Les mer her. Eksempel:
#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
Kjør følgende kommando på serveren din for å laste ned og kjøre installasjonsskriptet:
bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)
Feilsøk installasjonsskript
Legg til DEBUG=true foran installasjonsskriptet for detaljert utdata:
DEBUG=true bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)
Valg
1. Initial oppsett
2. Sett opp sikkerhetskopier
3. Sett opp automatiske oppgraderinger
4. Forny sertifikater
5. Gjenopprett fra sikkerhetskopi
6. Hjelp
7. Avslutt
- Initial oppsett: Last ned den nyeste forward email-koden, konfigurer miljøet, spør etter ditt egendefinerte domene og sett opp alle nødvendige sertifikater, nøkler og hemmeligheter.
- Sett opp sikkerhetskopi: Setter opp en cron for å sikkerhetskopiere mongoDB og redis ved bruk av en S3-kompatibel lagring for sikker, ekstern lagring. Separat vil sqlite sikkerhetskopieres ved pålogging hvis det er endringer for sikre, krypterte sikkerhetskopier.
- Sett opp oppgradering: Setter opp en cron for å se etter nattlige oppdateringer som trygt vil bygge om og starte infrastrukturkomponenter på nytt.
- Forny sertifikater: Certbot / lets encrypt brukes for SSL-sertifikater og nøkler som utløper hver 3. måned. Dette vil fornye sertifikatene for domenet ditt og plassere dem i nødvendig mappe for at relaterte komponenter skal kunne bruke dem. Se viktige filbaner
- Gjenopprett fra sikkerhetskopi: Vil trigge mongodb og redis til å gjenopprette fra sikkerhetskopidata.
Initial oppsett (Valg 1)
Velg alternativ 1. Initial oppsett for å starte.
Når det er fullført, bør du se en suksessmelding. Du kan til og med kjøre docker ps for å se de komponentene som er startet. Mer informasjon om komponenter nedenfor.
Tjenester
| Tjenestenavn | Standardport | Beskrivelse |
|---|---|---|
| Web | 443 |
Webgrensesnitt for all administrasjon |
| API | 4000 |
API-lag for å abstrahere databaser |
| Bree | Ingen | Bakgrunnsjobb og oppgavekjører |
| SMTP | 465 (anbefalt) / 587 |
SMTP-server for utgående e-post |
| SMTP Bree | Ingen | SMTP bakgrunnsjobb |
| MX | 2525 |
Mail exchange for innkommende e-post og videresending |
| IMAP | 993/2993 |
IMAP-server for innkommende e-post og postkassehåndtering |
| POP3 | 995/2995 |
POP3-server for innkommende e-post og postkassehåndtering |
| SQLite | 3456 |
SQLite-server for interaksjoner med sqlite-database(r) |
| SQLite Bree | Ingen | SQLite bakgrunnsjobb |
| CalDAV | 5000 |
CalDAV-server for kalenderhåndtering |
| CardDAV | 6000 |
CardDAV-server for kalenderhåndtering |
| MongoDB | 27017 |
MongoDB-database for mest databehandling |
| Redis | 6379 |
Redis for caching og tilstandshåndtering |
| SQLite | Ingen | SQLite-database(r) for krypterte postkasser |
Viktige filbaner
Merk: Vertssti nedenfor er relativ til /root/forwardemail.net/self-hosting/.
| Komponent | Vertssti | Containersti |
|---|---|---|
| MongoDB | ./mongo-backups |
/backups |
| Redis | ./redis-data |
/data |
| Sqlite | ./sqlite-data |
/mnt/{SQLITE_STORAGE_PATH} |
| Env-fil | ./.env |
/app/.env |
| SSL-sertifikater/nøkler | ./ssl |
/app/ssl/ |
| Privat nøkkel | ./ssl/privkey.pem |
/app/ssl/privkey.pem |
| Full kjede-sertifikat | ./ssl/fullchain.pem |
/app/ssl/fullchain.pem |
| CA-sertifikat | ./ssl/cert.pem |
/app/ssl/cert.pem |
| DKIM privat nøkkel | ./ssl/dkim.key |
/app/ssl/dkim.key |
Important
Lagre .env-filen sikkert. Den er kritisk for gjenoppretting ved feil.
Du finner den i /root/forwardemail.net/self-hosting/.env.
Konfigurasjon
Initial DNS-oppsett
Hos din foretrukne DNS-leverandør, konfigurer de riktige DNS-postene. Merk at alt i parenteser (<>) er dynamisk og må oppdateres med din verdi.
| Type | Navn | Innhold | TTL |
|---|---|---|---|
| A | "@", ".", eller tom | <ip_address> | auto |
| CNAME | api | <domain_name> | auto |
| CNAME | caldav | <domain_name> | auto |
| CNAME | carddav | <domain_name> | auto |
| CNAME | fe-bounces | <domain_name> | auto |
| CNAME | imap | <domain_name> | auto |
| CNAME | mx | <domain_name> | auto |
| CNAME | pop3 | <domain_name> | auto |
| CNAME | smtp | <domain_name> | auto |
| MX | "@", ".", eller tom | mx.<domain_name> (prioritet 0) | auto |
| TXT | "@", ".", eller tom | "v=spf1 a -all" | auto |
Reverse DNS / PTR-post
Reverse DNS (rDNS) eller reverse pointer-poster (PTR-poster) er essensielle for e-postservere fordi de hjelper med å verifisere legitimiteten til serveren som sender e-posten. Hver skyleverandør gjør dette forskjellig, så du må undersøke hvordan du legger til "Reverse DNS" for å koble vert og IP til tilsvarende vertsnavn. Mest sannsynlig i nettverksseksjonen hos leverandøren.
Port 25 blokkert
Noen ISP-er og skyleverandører blokkerer port 25 for å unngå misbruk. Du må kanskje sende inn en supportsak for å åpne port 25 for SMTP / utgående e-post.
Oppstart
-
Åpne landingssiden Naviger til https://<domain_name>, og erstatt <domain_name> med domenet konfigurert i dine DNS-innstillinger. Du skal se Forward Email landingssiden.
-
Logg inn og registrer domenet ditt
- Logg inn med en gyldig e-postadresse og passord.
- Skriv inn domenenavnet du ønsker å sette opp (dette må samsvare med DNS-konfigurasjonen).
- Følg instruksjonene for å legge til nødvendige MX og TXT poster for verifisering.
- Fullfør oppsettet
- Når verifisert, gå til Alias-siden for å opprette ditt første alias.
- Valgfritt: konfigurer SMTP for utgående e-post i Domeneinnstillinger. Dette krever ekstra DNS-poster.
Note
Ingen informasjon sendes utenfor din server. Selvhostet alternativ og initial konto er kun for admin-innlogging og webvisning for å administrere domener, aliaser og relaterte e-postkonfigurasjoner.
Testing
Opprette ditt første alias
- Gå til Alias-siden Åpne alias-administrasjonssiden:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
- Legg til et nytt alias
- Klikk Legg til alias (øverst til høyre).
- Skriv inn aliasnavnet og juster e-postinnstillingene etter behov.
- (Valgfritt) Aktiver IMAP/POP3/CalDAV/CardDAV støtte ved å krysse av i boksen.
- Klikk Opprett alias.
- Sett et passord
- Klikk Generer passord for å lage et sikkert passord.
- Dette passordet kreves for å logge inn i e-postklienten din.
- Konfigurer e-postklienten din
- Bruk en e-postklient som Thunderbird.
- Skriv inn aliasnavnet og det genererte passordet.
- Konfigurer IMAP og SMTP innstillingene deretter.
E-postserverinnstillinger
Brukernavn: <alias name>
| Type | Vertnavn | Port | Tilkoblingssikkerhet | Autentisering |
|---|---|---|---|---|
| SMTP | smtp.<domain_name> | 465 | SSL / TLS | Vanlig passord |
| IMAP | imap.<domain_name> | 993 | SSL / TLS | Vanlig passord |
Sende / motta din første e-post
Når konfigurert, skal du kunne sende og motta e-post til din nylig opprettede og selvhostede e-postadresse!
Feilsøking
Hvorfor fungerer ikke dette utenfor Ubuntu og Debian
Vi jobber for øyeblikket med å støtte MacOS og vil se på andre plattformer. Vennligst åpne en diskusjon eller bidra hvis du ønsker å se støtte for andre.
Hvorfor feiler certbot acme-utfordringen
Den vanligste feilen er at certbot / letsencrypt noen ganger vil be om 2 utfordringer. Du må være sikker på å legge til BEGGE txt-postene.
Eksempel: Du kan se to utfordringer som dette: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"
Det er også mulig at DNS-propagasjonen ikke er fullført. Du kan bruke verktøy som: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>. Dette gir deg en indikasjon på om TXT-postendringene dine skal være synlige. Det er også mulig at lokal DNS-cache på verten din fortsatt bruker en gammel, utdatert verdi eller ikke har plukket opp de siste endringene.
Et annet alternativ er å bruke de automatiserte cerbot DNS-endringene ved å sette /root/.cloudflare.ini-filen med API-token i din cloud-init / user-data ved første VPS-oppsett eller opprette denne filen og kjøre skriptet på nytt. Dette vil håndtere DNS-endringene og utfordringsoppdateringene automatisk.
Hva er brukernavn og passord for basic auth
For selvhosting legger vi til en første gang nettleserinnfødt autentiserings-popup med et enkelt brukernavn (admin) og passord (tilfeldig generert ved første oppsett). Vi legger dette til som beskyttelse i tilfelle automatisering / skriptere på en eller annen måte er raskere til å registrere seg på webopplevelsen. Du finner dette passordet etter første oppsett i din .env-fil under AUTH_BASIC_USERNAME og AUTH_BASIC_PASSWORD.
Hvordan vet jeg hva som kjører
Du kan kjøre docker ps for å se alle kjørende containere som startes fra docker-compose-self-hosting.yml-filen. Du kan også kjøre docker ps -a for å se alt (inkludert containere som ikke kjører).
Hvordan vet jeg om noe ikke kjører som det burde
Du kan kjøre docker ps -a for å se alt (inkludert containere som ikke kjører). Du kan se en exit-logg eller notat.
Hvordan finner jeg logger
Du kan få flere logger via docker logs -f <container_name>. Hvis noe har avsluttet, er det sannsynligvis relatert til at .env-filen er feil konfigurert.
Innenfor webgrensesnittet kan du se /admin/emails og /admin/logs for utgående e-postlogger og feillogger henholdsvis.
Hvorfor tidsavbrytes mine utgående e-poster
Hvis du ser en melding som Connection timed out when connecting to MX server... må du kanskje sjekke om port 25 er blokkert. Det er vanlig at ISP-er eller skyleverandører blokkerer denne som standard, og du må kanskje kontakte support / sende inn en sak for å få den åpnet.
Hvilke verktøy bør jeg bruke for å teste beste praksis for e-postkonfigurasjon og IP-omdømme
Ta en titt på vår FAQ her.