Selvvert
Installasjon
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 certbotDOMAIN
- Egendefinert domene som brukes til oppsett av selvhostingAUTH_BASIC_USERNAME
- brukernavn brukt i førstegangsoppsett for å beskytte nettstedetAUTH_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 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ø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
Tjenestenavn | Standard port | Beskrivelse |
---|---|---|
Web | 443 | Webgrensesnitt for alle admin-interaksjoner |
API | 4000 | Api-lag til abstrakte databaser |
Bree | Ingen | Bakgrunnsjobb og oppgaveløper |
SMTP | 465/587 | SMTP-server for utgående e-post |
SMTP Bree | Ingen | SMTP bakgrunnsjobb |
MX | 2525 | E-postutveksling for innkommende e-post og videresending av e-post |
IMAP | 993/2993 | IMAP-server for innkommende e-post og postboksadministrasjon |
POP3 | 995/2995 | POP3-server for innkommende e-post og postboksadministrasjon |
SQLite | 3456 | SQLite-server for interaksjoner med sqlite-database(r) |
SQLite Bree | Ingen | SQLite bakgrunnsjobb |
CalDAV | 5000 | CalDAV-server for kalenderadministrasjon |
MongoDB | 27017 | MongoDB-database for det meste av databehandling |
Redis | 6379 | Redis for caching og tilstandsstyring |
SQLite | Ingen | SQLite-database(r) for krypterte postbokser |
Viktige filstier
Merk: Vertsbane nedenfor er i forhold til /root/forwardemail.net/self-hosting/
.
Komponent | Vertsbane | Containerbane |
---|---|---|
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.
Type | Navn | Innhold | TTL |
---|---|---|---|
A | "@", ".", eller blank | <ip_adresse> | auto |
CNAME | api | <domenenavn> | auto |
CNAME | caldav | <domenenavn> | auto |
CNAME | fe-spretter | <domenenavn> | auto |
CNAME | imap | <domenenavn> | auto |
CNAME | mx | <domenenavn> | auto |
CNAME | pop3 | <domenenavn> | auto |
CNAME | smtp | <domenenavn> | auto |
MX | "@", ".", eller blank | mx.<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
-
Å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.
-
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.
- 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
- Naviger til siden for aliaser Åpne aliasadministrasjonssiden:
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 støtte ved å merke av i avmerkingsboksen.
- Klikk Opprett alias.
- Angi et passord
- Klikk Generer passord for å lage et sikkert passord.
- Dette passordet kreves for å logge på e-postklienten din.
- 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>
Type | Vertsnavn | Havn | Tilkoblingssikkerhet | Godkjenning |
---|---|---|---|---|
SMTP | smtp.<domenenavn> | 465 | SSL / TLS | Normalt passord |
IMAP | imap.<domenenavn> | 993 | SSL / TLS | Normalt 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.
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.