Selvvert

Vår selvhostede e-postløsning, som alle produktene våre, er 100 % åpen kildekode – både frontend og backend. Dette betyr:

  1. Fullstendig åpenhet: Hver linje med kode som behandler e-postene dine er tilgjengelig for offentlig gransking
  2. Fellesskapsbidrag: Alle kan bidra med forbedringer eller fikse problemer
  3. Trygghet gjennom åpenhet: Sårbarheter kan identifiseres og fikses av et globalt fellesskap
  4. Ingen leverandørlåsing: Du er aldri avhengig av selskapets eksistens

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 henting av e-post
  • Webgrensesnitt for administrasjon
  • Database for konfigurasjonslagring
  • Redis for caching og ytelse
  • SQLite for sikker, kryptert postbokslagring

Før du kjører installasjonsskriptet, sørg for at du har følgende:

  • Operativsystem: En Linux-basert server (støtter for tiden Ubuntu 22.04+).
  • ressurser: 1 vCPUer og 2 GB RAM
  • Rottilgang: Administrative rettigheter for å utføre kommandoer.
  • Domenenavn: Et tilpasset domene klart for DNS-konfigurasjon.
  • Ren IP: Sørg for at serveren din har en ren IP-adresse uten tidligere spam-rykte ved å sjekke svartelister. Mer info her.
  • Offentlig IP-adresse med port 25-støtte
  • Evne til å stille omvendt PTR
  • IPv4- og IPv6-støtte

[!TUPP] Se vår liste over fantastiske e-postserverleverandører

Cloud-init / Bruker-data

De fleste skyleverandører støtter en sky-init-konfigurasjon for når den virtuelle private serveren (VPS) er klargjort. Dette er en fin måte å sette noen filer og miljøvariabler på på forhånd for bruk av skriptets innledende oppsettlogikk som vil omgå behovet for å spørre mens skriptet kjører for ytterligere informasjon.

Alternativer

  • EMAIL - e-post brukt for påminnelser om utløp av certbot
  • DOMAIN - tilpasset domene (f.eks. example.com) brukes til oppsett for selv hosting
  • AUTH_BASIC_USERNAME - brukernavn brukt i førstegangsoppsett for å beskytte nettstedet
  • AUTH_BASIC_PASSWORD - Passward brukt i førstegangsoppsett for å beskytte nettstedet
  • /root/.cloudflare.ini - (Bare Cloudflare-brukere) cloudflare-konfigurasjonsfil brukt av certbot for DNS-konfigurasjon. Det krever at du angir API-tokenet ditt via dns_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="[email protected]"
      export DOMAIN="mydomain.com"

runcmd:

  • chmod +x /etc/profile.d/env.sh

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øke installasjonsskript

Legge 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)

Forespørsler

1. Initial setup
2. Setup Backups
3. Setup Auto Upgrades
4. Renew certificates
5. Restore from Backup
6. Help
7. Exit
  • Innledende oppsett: Last ned den siste videresendingskoden, konfigurer miljøet, be om ditt tilpassede domene og konfigurer alle nødvendige sertifikater, nøkler og hemmeligheter.
  • Setup Backup: Vil sette opp en cron for å sikkerhetskopiere mongoDB og redis ved hjelp av en S3-kompatibel butikk for sikker, ekstern lagring. Separat vil sqlite sikkerhetskopieres ved pålogging hvis det er endringer for sikre, krypterte sikkerhetskopier.
  • Oppgradering av oppsett: Sett opp en cron for å se etter nattlige oppdateringer som trygt vil gjenoppbygge og starte infrastrukturkomponenter på nytt.
  • Forny sertifikater: Certbot / lets encrypt brukes for SSL-sertifikater og nøkler vil utløpe hver 3. måned. Dette vil fornye sertifikatene for domenet ditt og plassere dem i den nødvendige mappen for at relaterte komponenter kan konsumeres. Se viktige filstier
  • Gjenopprett fra sikkerhetskopi: Vil utløse mongodb og redis for å gjenopprette fra sikkerhetskopidata.

Første oppsett (alternativ 1)

Velg alternativ 1. Initial setup å begynne.

Når du er ferdig, bør du se en suksessmelding. Du kan til og med løpe docker ps å se de komponenter spunnet opp. Mer informasjon om komponentene nedenfor.

TjenestenavnStandard portBeskrivelse
Web443Webgrensesnitt for alle admin-interaksjoner
API4000Api-lag til abstrakte databaser
BreeIngenBakgrunnsjobb og oppgaveløper
SMTP465/587SMTP-server for utgående e-post
SMTP BreeIngenSMTP bakgrunnsjobb
MX2525E-postutveksling for innkommende e-post og videresending av e-post
IMAP993/2993IMAP-server for innkommende e-post og postboksadministrasjon
POP3995/2995POP3-server for innkommende e-post og postboksadministrasjon
SQLite3456SQLite-server for interaksjoner med sqlite-database(r)
SQLite BreeIngenSQLite bakgrunnsjobb
CalDAV5000CalDAV-server for kalenderadministrasjon
MongoDB27017MongoDB-database for det meste av databehandling
Redis6379Redis for caching og tilstandsstyring
SQLiteIngenSQLite-database(r) for krypterte postbokser

Viktige filstier

Merk: Vertsbane nedenfor er i forhold til /root/forwardemail.net/self-hosting/.

KomponentVertsbaneContainerbane
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 kjedesertifikat./ssl/fullchain.pem/app/ssl/fullchain.pem
CA-sertifikater./ssl/cert.pem/app/ssl/cert.pem
DKIM privat nøkkel./ssl/dkim.key/app/ssl/dkim.key

[!VIKTIG] Lagre .env fil sikkert. Det er kritisk for gjenoppretting i tilfelle feil. Du finner dette i /root/forwardemail.net/self-hosting/.env.

Innledende DNS-oppsett

Konfigurer de riktige DNS-postene i din valgte DNS-leverandør. Noter noe i parentes (<>) er dynamisk og må oppdateres med verdien din.

TypeNavnInnholdTTL
A"@", ".", eller blank<ip_adresse>auto
CNAMEapi<domenenavn>auto
CNAMEcaldav<domenenavn>auto
CNAMEfe-spretter<domenenavn>auto
CNAMEimap<domenenavn>auto
CNAMEmx<domenenavn>auto
CNAMEpop3<domenenavn>auto
CNAMEsmtp<domenenavn>auto
MX"@", ".", eller blankmx.<domenenavn> (prioritet 0)auto
TXT"@", ".", eller blank"v=spf1 a -all"auto

Omvendt DNS / PTR-post

Reverse DNS (rDNS) eller reverse pointer records (PTR-poster) er avgjørende for e-postservere fordi de hjelper til med å bekrefte legitimiteten til serveren som sender e-posten. Hver skyleverandør gjør dette forskjellig, så du må slå opp hvordan du legger til "Reverse DNS" for å kartlegge verten og IP-en til dets tilsvarende vertsnavn. Mest sannsynlig i nettverksdelen til leverandøren.

Port 25 blokkert

Noen Internett-leverandører og skyleverandører blokkerer 25 for å unngå dårlige aktører. Det kan hende du må sende inn en støttebillett for å åpne port 25 for SMTP / utgående e-post.

  1. Åpne landingssiden Naviger til https://<domenenavn>, og bytt ut <domenenavn> med domenet som er konfigurert i DNS-innstillingene. Du bør se landingssiden for videresend e-post.

  2. Logg inn og ta med domenet ditt

  • Logg på med gyldig e-post og passord.
  • Skriv inn domenenavnet du ønsker å sette opp (dette må samsvare med DNS-konfigurasjonen).
  • Følg instruksjonene for å legge til det nødvendige MX og TXT poster for verifisering.
  1. Fullstendig oppsett
  • Når du er verifisert, gå til Alias-siden for å opprette ditt første alias.
  • Konfigurer eventuelt SMTP for utgående e-post i Domeneinnstillinger. Dette krever ytterligere DNS-poster.

[!NOTE] Ingen informasjon sendes utenfor serveren din. Alternativet selvvert og den første kontoen er kun for administratorinnlogging og webvisning for å administrere domener, aliaser og relaterte e-postkonfigurasjoner.

Oppretter ditt første alias

  1. Naviger til siden for aliaser Åpne aliasadministrasjonssiden:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
  1. 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 støtte ved å merke av i avmerkingsboksen.
  • Klikk Opprett alias.
  1. Angi et passord
  • Klikk Generer passord for å lage et sikkert passord.
  • Dette passordet kreves for å logge på e-postklienten din.
  1. Konfigurer e-postklienten din
  • Bruk en e-postklient som Thunderbird.
  • Skriv inn aliasnavnet og det genererte passordet.
  • Konfigurer IMAP og SMTP innstillinger tilsvarende.

Innstillinger for e-postserver

Brukernavn: <alias name>

TypeVertsnavnHavnTilkoblingssikkerhetGodkjenning
SMTPsmtp.<domenenavn>465SSL / TLSNormalt passord
IMAPimap.<domenenavn>993SSL / TLSNormalt passord

Sender/mottar din første e-post

Når du er konfigurert, bør du kunne sende og motta e-post til din nyopprettede og selvverterte e-postadresse!

Hvorfor fungerer ikke dette utenfor Ubuntu

Vi ser for øyeblikket etter å støtte Debian, MacOS og vil se til andre. Vennligst åpne en diskusjon eller bidra hvis du ønsker å se andre støttet.

Hvorfor mislykkes certbot acme-utfordringen

Den vanligste fallgruven er at certbot / letsencrypt noen ganger vil be om 2 utfordringer. Du må være sikker på å legge til BOTH txt-poster.

Eksempel: Du kan se to utfordringer som dette: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"

Det er også mulig at DNS-utbredelsen ikke er fullført. Du kan bruke verktøy som: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>. Dette vil gi deg en idé om endringene i TXT-posten bør gjenspeiles. Det er også mulig at lokal DNS-cache på verten din fortsatt bruker en gammel, gammel verdi eller ikke har fanget opp de siste endringene.

Et annet alternativ er å bruke de automatiserte cerbot DNS-endringene ved å angi /root/.cloudflare.ini fil med api-tokenet i cloud-init/brukerdataene dine ved første VPS-oppsett eller opprett denne filen og kjør skriptet på nytt. Dette vil administrere DNS-endringene og utfordringsoppdateringene automatisk.

Hva er det grunnleggende autentiske brukernavnet og passordet

For selvhosting legger vi til en førstegangs-nettlesernative autentiseringspoppopp med et enkelt brukernavn (admin) og passord (generert tilfeldig ved første oppsett). Vi legger bare til dette som en beskyttelse i tilfelle automatisering/skrapere på en eller annen måte slår deg for å først registrere deg på nettopplevelsen. Du kan finne 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 løpe docker ps for å se alle løpende containere som blir snurret opp fra docker-compose-self-hosting.yml fil. Du kan også løpe docker ps -a for å se alt (inkludert beholdere som ikke kjører).

Hvordan vet jeg at det er noe som ikke kjører

Du kan løpe docker ps -a for å se alt (inkludert beholdere som ikke kjører). Du kan se en utgangslogg eller notat.

Hvordan finner jeg logger

Du kan få flere logger via docker logs -f <container_name>. Hvis noe forlot, er det sannsynligvis relatert til .env filen er konfigurert feil.

Innenfor nettgrensesnittet kan du se /admin/emails og /admin/logs for henholdsvis utgående e-postlogger og feillogger.

Hvorfor tar de utgående e-postene mine timeout

Hvis du ser en melding som Tidsavbrudd for tilkobling når du kobler til MX-serveren... så må du kanskje sjekke om port 25 er blokkert. Det er vanlig at Internett-leverandører eller skyleverandører blokkerer dette som standard, der du kanskje må kontakte support/file en billett for å få dette å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.