Selvvert

Krav

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

  • Operativsystem: En Linux-basert server (f.eks. 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.

[!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 - EMAIL miljøvariabel brukt for påminnelser om utløp av certbot
  • DOMAIN - Egendefinert domene som brukes til oppsett av selvhosting
  • 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-konfigurasjonsfilen 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="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øke 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)

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.

Tjenester

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.

Konfigurasjon

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.

Onboarding

  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.

Testing

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!

Vedlikehold

How do I backup my data

Følg installer skript og velg option 2 i ledeteksten.

How do I renew my certificates

Følg installer skript og velg option 3 i ledeteksten.

How do I upgrade to the latest forward email code

Følg installer skript og velg option 4 i ledeteksten.

How do I restore from a backup

Følg installer skript og velg option 6 i ledeteksten.

Feilsøking

Why is the certbot acme challenge failing

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.

What is the basic auth username and password

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.

How do I know what is running

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

How do I know if something isn't running that should be

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

How do I find logs

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.

Why are my outgoing emails timing out

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.

What tool(s) should I use to test email configuration best practices and IP reputation

Ta en titt på vår FAQ her.

mxtoolbox

google postmaster tools

Bruk serverens IP-adresse for å sjekke mot følgende nettsteder om de er på en svarteliste. Det er dessverre ikke uvanlig at vanlige nettskyleverandører har problemer med IP-omdømmet på grunn av bruk av spam via e-post. Hvis du ser IP-en din på en svarteliste, anbefales det å spinne opp en ny server og sjekke den nye IP-adressen.

spamhaus

spammet