Egen värd

Krav

Innan du kör installationsskriptet, se till att du har följande:

  • Operativsystem: En Linux-baserad server (t.ex. Ubuntu 22.04+).
  • Resurser: 1 vCPU och 2 GB RAM
  • Root Access: Administratörsbehörighet för att utföra kommandon.
  • Domän namn: En anpassad domän redo för DNS-konfiguration.
  • Rengör IP: Se till att din server har en ren IP-adress utan tidigare rykte om skräppost genom att kontrollera svarta listor. Mer info här.

[!DRICKS] Se vår lista över fantastiska e-postserverleverantörer

Cloud-init / Användardata

De flesta molnleverantörer stöder en cloud-init-konfiguration för när den virtuella privata servern (VPS) tillhandahålls. Detta är ett utmärkt sätt att ställa in vissa filer och miljövariabler i förväg för användning av skriptets initiala installationslogik, vilket kommer att kringgå behovet av att fråga medan skriptet körs för ytterligare information.

Alternativ

  • EMAIL - EMAIL miljövariabel som används för certbots utgångspåminnelser
  • DOMAIN - anpassad domän som används för installation av självvärd
  • AUTH_BASIC_USERNAME - Användarnamn som används i förstagångsinstallationen för att skydda webbplatsen
  • AUTH_BASIC_PASSWORD - Passward används i förstagångsinstallationen för att skydda webbplatsen
  • /root/.cloudflare.ini - (Endast Cloudflare-användare)cloudflare-konfigurationsfil som används av certbot för DNS-konfiguration. Det kräver att du ställer in din API-token via dns_cloudflare_api_token. Läs mer här.

Exempel:

#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

Installera

Kör följande kommando på din server för att ladda ner och köra installationsskriptet:

bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)

Felsök installationsskript

Lägg till DEBUG=true framför installationsskriptet för utförlig utdata:

DEBUG=true bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)

Uppmaningar

1. Initial setup
2. Setup Backups
3. Setup Auto Upgrades
4. Renew certificates
5. Restore from Backup
6. Help
7. Exit
  • Initial installation: Ladda ner den senaste e-postkoden för vidarebefordran, konfigurera miljön, fråga efter din anpassade domän och ställ in alla nödvändiga certifikat, nycklar och hemligheter.
  • Säkerhetskopiering: Kommer att ställa in en cron för att säkerhetskopiera mongoDB och göra om med en S3-kompatibel butik för säker fjärrlagring. Separat kommer sqlite att säkerhetskopieras vid inloggning om det finns ändringar för säkra, krypterade säkerhetskopior.
  • Installationsuppgradering: Ställ in en cron för att leta efter nattliga uppdateringar som säkert kommer att bygga om och starta om infrastrukturkomponenter.
  • Förnya certifikat: Certbot / lets encrypt används för SSL-certifikat och nycklar upphör att gälla var tredje månad. Detta kommer att förnya certifikaten för din domän och placera dem i den nödvändiga mappen för relaterade komponenter att konsumera. Se viktiga filsökvägar
  • Återställ från säkerhetskopia: Kommer att utlösa mongodb och redis för att återställa från säkerhetskopia.

Initial installation (alternativ 1)

Välj alternativ 1. Initial setup att börja.

När du är klar bör du se ett framgångsmeddelande. Du kan till och med springa docker ps att se de komponenter snurrade upp. Mer information om komponenter nedan.

Tjänster

Tjänstens namnStandardportBeskrivning
Web443Webbgränssnitt för alla admininteraktioner
API4000Api-lager till abstrakta databaser
BreeIngenBakgrundsjobb och uppgiftslöpare
SMTP465/587SMTP-server för utgående e-post
SMTP BreeIngenSMTP bakgrundsjobb
MX2525Mailutbyte för inkommande mail och vidarebefordran av mail
IMAP993/2993IMAP-server för inkommande e-post och postlådehantering
POP3995/2995POP3-server för inkommande e-post och postlådehantering
SQLite3456SQLite-server för interaktioner med SQLite-databas(er)
SQLite BreeIngenSQLite bakgrundsjobb
CalDAV5000CalDAV-server för kalenderhantering
MongoDB27017MongoDB-databas för de flesta datahantering
Redis6379Redis för cachning och tillståndshantering
SQLiteIngenSQLite-databas(er) för krypterade postlådor

Viktiga filsökvägar

Notera: Värdsväg nedan är i förhållande till /root/forwardemail.net/self-hosting/.

KomponentVärdsvägContainerbana
MongoDB./mongo-backups/backups
Redis./redis-data/data
Sqlite./sqlite-data/mnt/{SQLITE_STORAGE_PATH}
Env-fil./.env/app/.env
SSL-certifikat/nycklar./ssl/app/ssl/
Privat nyckel./ssl/privkey.pem/app/ssl/privkey.pem
Full kedja certifikat./ssl/fullchain.pem/app/ssl/fullchain.pem
CA-certifikat./ssl/cert.pem/app/ssl/cert.pem
DKIM privat nyckel./ssl/dkim.key/app/ssl/dkim.key

[!VIKTIG] Spara .env fil säkert. Det är avgörande för återhämtning vid fel. Du hittar detta i /root/forwardemail.net/self-hosting/.env.

Konfiguration

Initial DNS-inställning

Konfigurera lämpliga DNS-poster i din valda DNS-leverantör. Anteckna något inom parentes (<>) är dynamisk och måste uppdateras med ditt värde.

TypnamnInnehållTTL
A"@", "." eller tom<ip_adress>bil
CNAMEapi<domännamn>bil
CNAMEcaldav<domännamn>bil
CNAMEfe-studsar<domännamn>bil
CNAMEimap<domännamn>bil
CNAMEmx<domännamn>bil
CNAMEpop3<domännamn>bil
CNAMEsmtp<domännamn>bil
MX"@", "." eller tommx.<domännamn> (prioritet 0)bil
TXT"@", "." eller tom"v=spf1 a -all"bil
Omvänd DNS/PTR-post

Reverse DNS (rDNS) eller Reverse Pointer Records (PTR-poster) är viktiga för e-postservrar eftersom de hjälper till att verifiera legitimiteten hos servern som skickar e-postmeddelandet. Varje molnleverantör gör detta på olika sätt, så du måste leta upp hur du lägger till "Omvänd DNS" för att mappa värden och IP till dess motsvarande värdnamn. Mest troligt i nätverksdelen hos leverantören.

Port 25 blockerad

Vissa internetleverantörer och molnleverantörer blockerar 25 för att undvika dåliga aktörer. Du kan behöva lämna in ett supportärende för att öppna port 25 för SMTP/utgående e-post.

Onboarding

  1. Öppna målsidan Navigera till https://<domännamn> och ersätt <domännamn> med domänen som konfigurerats i dina DNS-inställningar. Du bör se landningssidan för vidarebefordra e-post.

  2. Logga in och ta med din domän

  • Logga in med en giltig e-postadress och lösenord.
  • Ange domännamnet du vill konfigurera (detta måste matcha DNS-konfigurationen).
  • Följ anvisningarna för att lägga till det nödvändiga MX och TXT register för verifiering.
  1. Komplett installation
  • När du har verifierat, gå till sidan Alias för att skapa ditt första alias.
  • Alternativt, konfigurera SMTP för utgående e-post i Domäninställningar. Detta kräver ytterligare DNS-poster.

[!NOTERA] Ingen information skickas utanför din server. Alternativet för självvärd och det första kontot är bara för administratörsinloggning och webbvy för att hantera domäner, alias och relaterade e-postkonfigurationer.

Testning

Skapa ditt första alias

  1. Navigera till sidan Alias Öppna sidan för aliashantering:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
  1. Lägg till ett nytt alias
  • Klick Lägg till Alias (överst till höger).
  • Ange aliasnamnet och justera e-postinställningarna efter behov.
  • (Valfritt) Aktivera IMAP/POP3/CalDAV stöd genom att markera kryssrutan.
  • Klick Skapa Alias.
  1. Ange ett lösenord
  • Klick Generera lösenord för att skapa ett säkert lösenord.
  • Detta lösenord kommer att krävas för att logga in på din e-postklient.
  1. Konfigurera din e-postklient
  • Använd en e-postklient som Thunderbird.
  • Ange aliasnamnet och det genererade lösenordet.
  • Konfigurera IMAP och SMTP inställningar i enlighet därmed.
E-postserverinställningar

Användarnamn: <alias name>

TypVärdnamnHamnAnslutningssäkerhetautentisering
SMTPsmtp.<domännamn>465SSL / TLSNormalt lösenord
IMAPimap.<domännamn>993SSL / TLSNormalt lösenord

Skickar / tar emot ditt första e-postmeddelande

När du väl har konfigurerat den bör du kunna skicka och ta emot e-post till din nyskapade e-postadress!

Underhåll

How do I backup my data

Följ installera skript och välj option 2 i prompten.

How do I renew my certificates

Följ installera skript och välj option 3 i prompten.

How do I upgrade to the latest forward email code

Följ installera skript och välj option 4 i prompten.

How do I restore from a backup

Följ installera skript och välj option 6 i prompten.

Felsökning

Why is the certbot acme challenge failing

Den vanligaste fallgropen är att certbot / letsencrypt ibland begär 2 utmaningar. Du måste vara säker på att lägga till BOTH txt-poster.

Exempel: Du kanske ser två utmaningar som denna: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"

Det är också möjligt att DNS-utbredning inte har slutförts. Du kan använda verktyg som: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>. Detta kommer att ge dig en uppfattning om dina TXT-poständringar bör återspeglas. Det är också möjligt att den lokala DNS-cachen på din värd fortfarande använder ett gammalt, inaktuellt värde eller inte har tagit upp de senaste ändringarna.

Ett annat alternativ är att använda de automatiska cerbot DNS-ändringarna genom att ställa in /root/.cloudflare.ini fil med api-token i din cloud-init/användardata vid initial VPS-installation eller skapa den här filen och kör skriptet igen. Detta kommer att hantera DNS-ändringarna och utmaningsuppdateringarna automatiskt.

What is the basic auth username and password

För egen värd lägger vi till en förstagångswebbläsarnative autentisering som popup upp med ett enkelt användarnamn (admin) och lösenord (genereras slumpmässigt vid den första installationen). Vi lägger bara till detta som ett skydd ifall automatisering/skrapor på något sätt slår dig för att först registrera dig på webbupplevelsen. Du kan hitta detta lösenord efter den första installationen i din .env fil under AUTH_BASIC_USERNAME och AUTH_BASIC_PASSWORD.

How do I know what is running

Du kan springa docker ps för att se alla löpande behållare som snurras upp från docker-compose-self-hosting.yml fil. Du kan också springa docker ps -a för att se allt (inklusive behållare som inte är igång).

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

Du kan springa docker ps -a för att se allt (inklusive behållare som inte är igång). Du kan se en utgångslogg eller anteckning.

How do I find logs

Du kan få fler loggar via docker logs -f <container_name>. Om något avslutades, är det troligtvis relaterat till .env filen är felaktigt konfigurerad.

Inom webbgränssnittet kan du visa /admin/emails och /admin/logs för utgående e-postloggar respektive felloggar.

Why are my outgoing emails timing out

Om du ser ett meddelande som Connection timeout när du ansluter till MX-servern... kan du behöva kontrollera om port 25 är blockerad. Det är vanligt att internetleverantörer eller molnleverantörer blockerar detta som standard där du kan behöva kontakta support/fila en ärende för att få detta öppnat.

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

Ta en titt på vår FAQ här.

mxtoolbox

google postmaster tools

Använd din server IP-adress för att kontrollera mot följande webbplatser om de finns på en svartlista. Det är tyvärr inte ovanligt att vanliga molnleverantörer har problem med IP-rykte för att använda skräppost. Om du ser din IP på en svartlista rekommenderas det att snurra upp en ny server och kontrollera den nya IP-adressen.

spamhaus

spamrats