Self Hosted

Saját hosztolt e-mail megoldásunk, mint minden termékünk, 100%-ban nyílt forráskódú – előtérben és háttérben egyaránt. Ez azt jelenti:

  1. Teljes átláthatóság: Az e-mailjeit feldolgozó kód minden sora nyilvános ellenőrzésre elérhető
  2. Közösségi hozzájárulások: Bárki hozzájárulhat a fejlesztésekhez vagy a problémák megoldásához
  3. Biztonság a nyitottságon keresztül: A sebezhetőségeket egy globális közösség azonosíthatja és kijavíthatja
  4. Nincs szállítói bezárás: Soha nem függ a cégünk létezésétől

A teljes kódbázis elérhető a GitHubon a következő címen: https://github.com/forwardemail/forwardemail.net, az MIT License alapján engedélyezett.

Az architektúra konténereket tartalmaz:

  • SMTP szerver a kimenő e-mailekhez
  • IMAP/POP3 szerverek e-mailek lekéréséhez
  • Webes felület az adminisztrációhoz
  • Adatbázis a konfiguráció tárolására
  • Redis a gyorsítótárazáshoz és a teljesítményhez
  • SQLite a biztonságos, titkosított postafiók tároláshoz

A telepítő szkript futtatása előtt győződjön meg arról, hogy rendelkezik a következőkkel:

  • Operációs rendszer: Linux alapú szerver (jelenleg támogatja az Ubuntu 22.04+ verzióját).
  • Erőforrások: 1 vCPU és 2 GB RAM
  • Root Access: Adminisztrátori jogosultságok parancsok végrehajtásához.
  • Domain név: Egyéni tartomány, amely készen áll a DNS-konfigurációra.
  • Tiszta IP: A feketelisták ellenőrzésével győződjön meg arról, hogy szervere tiszta IP-címmel rendelkezik, és nincs előzetes spam hírnév. További információ itt.
  • Nyilvános IP-cím a 25-ös port támogatásával
  • Beállítási képesség fordított PTR
  • IPv4 és IPv6 támogatás

[!TIPP] Tekintse meg a listánkat fantasztikus levelezőszerver-szolgáltatók

Cloud-init / Felhasználói adatok

A legtöbb felhőszolgáltató támogatja a felhő-init konfigurációt a virtuális magánkiszolgáló (VPS) kiépítéséhez. Ez nagyszerű módja annak, hogy bizonyos fájlokat és környezeti változókat idő előtt beállítson a szkriptek kezdeti beállítási logikájának használatára, amely megkerüli a további információk kérését, miközben a szkript fut.

Opciók

  • EMAIL - certbot lejárati emlékeztetőkhöz használt e-mail
  • DOMAIN - egyéni domain (pl. example.com) saját hosting beállításhoz használják
  • AUTH_BASIC_USERNAME - az első alkalommal használt felhasználónév a webhely védelme érdekében
  • AUTH_BASIC_PASSWORD - az első beállításnál használt passward a webhely védelme érdekében
  • /root/.cloudflare.ini - (Csak Cloudflare felhasználók) cloudflare konfigurációs fájl, amelyet a certbot használ a DNS-konfigurációhoz. Ehhez be kell állítania az API tokent a következőn keresztül dns_cloudflare_api_token. Olvass tovább itt.

Példa:

#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

Futtassa a következő parancsot a kiszolgálón a telepítőszkript letöltéséhez és végrehajtásához:

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

Telepítési szkript hibakeresése

Hozzáadás DEBUG=true a telepítési szkript előtt a részletes kimenethez:

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

Kéri

1. Initial setup
2. Setup Backups
3. Setup Auto Upgrades
4. Renew certificates
5. Restore from Backup
6. Help
7. Exit
  • Kezdeti beállítás: Töltse le a legfrissebb továbbítási e-mail kódot, konfigurálja a környezetet, kérje le egyéni tartományát, és állítsa be az összes szükséges tanúsítványt, kulcsot és titkot.
  • Biztonsági mentés beállítása: Beállít egy cron-t a mongoDB biztonsági mentéséhez, és egy S3-kompatibilis tároló használatával újraindítja a biztonságos, távoli tárolást. Külön-külön, az sqlite biztonsági mentése bejelentkezéskor történik, ha a biztonságos, titkosított biztonsági mentések módosítása történik.
  • Frissítés beállítása: Állítson be egy cront az éjszakai frissítések kereséséhez, amelyek biztonságosan újraépítik és újraindítják az infrastruktúra-összetevőket.
  • Tanúsítványok megújítása: A Certbot / lets encrypt SSL-tanúsítványokhoz használatos, és a kulcsok 3 havonta lejárnak. Ez megújítja a domain tanúsítványait, és elhelyezi azokat a szükséges mappába, ahol a kapcsolódó összetevők felhasználhatók. Lásd fontos fájl útvonalak
  • Visszaállítás biztonsági másolatból: Elindítja a mongodb-t és a redis-t a biztonsági másolatból való visszaállításhoz.

Kezdeti beállítás (1. lehetőség)

Válasszon opciót 1. Initial setup kezdeni.

Ha elkészült, egy sikerüzenetet kell látnia. Még futni is tudsz docker ps látni a felpörögtek az alkatrészek. További információ a komponensekről alább.

Szolgáltatás neveAlapértelmezett portLeírás
Web443Webes felület minden adminisztrátori interakcióhoz
API4000Api réteg absztrakt adatbázisokhoz
BreeEgyik semHáttér munka és feladat futó
SMTP465/587SMTP szerver a kimenő e-mailekhez
SMTP BreeEgyik semSMTP háttérmunka
MX2525Levélváltás bejövő e-mailekhez és e-mail-továbbításhoz
IMAP993/2993IMAP szerver a bejövő e-mailek és postafiókok kezeléséhez
POP3995/2995POP3 szerver a bejövő e-mailek és postafiókok kezelésére
SQLite3456SQLite szerver az sqlite adatbázis(ok)kal való interakcióhoz
SQLite BreeEgyik semSQLite háttérmunka
CalDAV5000CalDAV szerver naptárkezeléshez
MongoDB27017MongoDB adatbázis a legtöbb adatkezeléshez
Redis6379Redis gyorsítótárazáshoz és állapotkezeléshez
SQLiteEgyik semSQLite adatbázis(ok) titkosított postafiókokhoz

Fontos fájl elérési utak

Jegyzet: Gazda útvonala alább relatív /root/forwardemail.net/self-hosting/.

ÖsszetevőGazda útvonalaKonténer útvonala
MongoDB./mongo-backups/backups
Redis./redis-data/data
Sqlite./sqlite-data/mnt/{SQLITE_STORAGE_PATH}
Env fájl./.env/app/.env
SSL-tanúsítványok/kulcsok./ssl/app/ssl/
Privát kulcs./ssl/privkey.pem/app/ssl/privkey.pem
Teljes lánc tanúsítvány./ssl/fullchain.pem/app/ssl/fullchain.pem
CA tanúsítványok./ssl/cert.pem/app/ssl/cert.pem
DKIM privát kulcs./ssl/dkim.key/app/ssl/dkim.key

[!FONTOS] Mentse el a .env fájl biztonságosan. Kritikus a helyreállításhoz hiba esetén. Ezt megtalálod itt /root/forwardemail.net/self-hosting/.env.

Kezdeti DNS-beállítás

A választott DNS-szolgáltatóban konfigurálja a megfelelő DNS-rekordokat. Ne jegyezzen semmit zárójelben (<>) dinamikus, és frissíteni kell az Ön értékével.

típusNévTartalomTTL
A"@", "." vagy üres<ip_cím>auto
CNAMEapi<domain_name>auto
CNAMEcaldav<domain_name>auto
CNAMEfe-pattan<domain_name>auto
CNAMEimap<domain_name>auto
CNAMEmx<domain_name>auto
CNAMEpop3<domain_name>auto
CNAMEsmtp<domain_name>auto
MX"@", "." vagy üresmx.<domain_name> (0. prioritás)auto
TXT"@", "." vagy üres"v=spf1 a -all"auto

Fordított DNS / PTR rekord

A fordított DNS (rDNS) vagy a fordított mutató rekordok (PTR rekordok) elengedhetetlenek az e-mail szerverek számára, mert segítenek ellenőrizni az e-mailt küldő szerver legitimitását. Minden felhőszolgáltató ezt másképp csinálja, ezért meg kell keresnie, hogyan adhatja hozzá a "Reverse DNS"-t, hogy a gazdagépet és az IP-t a megfelelő gazdagépnévhez rendelje. Valószínűleg a szolgáltató hálózati szakaszában.

A 25-ös port blokkolva

Egyes internetszolgáltatók és felhőszolgáltatók blokkolják a 25-öt, hogy elkerüljék a rossz szereplőket. Előfordulhat, hogy támogatási jegyet kell benyújtania a 25-ös port megnyitásához az SMTP / kimenő e-mailek számára.

  1. Nyissa meg a céloldalt Lépjen a https://<tartománynév> oldalra, és cserélje ki a <domain_name> helyére a DNS-beállításokban konfigurált tartományt. Látnia kell az E-mail továbbítása céloldalt.

  2. Jelentkezzen be, és lépjen be a domainbe

  • Jelentkezzen be érvényes e-mail címmel és jelszóval.
  • Adja meg a beállítani kívánt tartománynevet (ennek meg kell egyeznie a DNS-konfigurációval).
  • Kövesse az utasításokat a szükséges hozzáadásához MX és TXT feljegyzések ellenőrzésére.
  1. Teljes telepítés
  • Az ellenőrzés után nyissa meg az Aliasok oldalt az első alias létrehozásához.
  • Opcionálisan konfigurálja SMTP a kimenő e-mailekhez ban,-ben Domain beállítások. Ehhez további DNS-rekordokra van szükség.

[!JEGYZET] A szerveren kívülre nem küldenek információt. A saját hosztolt opció és a kezdeti fiók csak az adminisztrátori bejelentkezéshez és webes nézethez használható a tartományok, álnevek és kapcsolódó e-mail-konfigurációk kezeléséhez.

Az első alias létrehozása

  1. Lépjen az Aliasok oldalra Nyissa meg az alias kezelési oldalt:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
  1. Új alias hozzáadása
  • Kattintson Adjon hozzá álnevet (jobbra fent).
  • Adja meg az álnév nevét, és szükség szerint módosítsa az e-mail beállításokat.
  • (Opcionális) Engedélyezés IMAP/POP3/CalDAV támogatást a jelölőnégyzet bejelölésével.
  • Kattintson Alias létrehozása.
  1. Állítson be egy jelszót
  • Kattintson Jelszó generálása biztonságos jelszó létrehozásához.
  • Ez a jelszó szükséges az e-mail kliensbe való bejelentkezéshez.
  1. E-mail kliens konfigurálása
  • Használjon olyan levelezőprogramot, mint a Thunderbird.
  • Adja meg az álnév nevét és a generált jelszót.
  • Konfigurálja a IMAP és SMTP ennek megfelelő beállításokat.

E-mail szerver beállításai

Felhasználónév: <alias name>

típusGazdanévKikötőKapcsolatbiztonságHitelesítés
SMTPsmtp.<domain_name>465SSL / TLSNormál jelszó
IMAPimap.<domain_name>993SSL / TLSNormál jelszó

Az első e-mail küldése / fogadása

A konfigurálás után képesnek kell lennie arra, hogy e-maileket küldjön és fogadjon az újonnan létrehozott és saját e-mail címére!

Miért nem működik ez az Ubuntun kívül?

Jelenleg a Debian és a MacOS támogatására törekszünk, és keresni fogunk másokat is. Kérjük nyissa meg a vita vagy járuljon hozzá, ha szeretné látni mások támogatását.

Miért nem sikerül a certbot acme kihívás?

A leggyakoribb buktató az, hogy a certbot / letsencrypt néha kér 2 kihívásokat. Mindenképpen hozzá kell adnia BOTH txt rekordok.

Példa: Két ehhez hasonló kihívást láthat: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"

Az is lehetséges, hogy a DNS terjesztése nem fejeződött be. Ilyen eszközöket használhat: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>. Ez képet ad arról, hogy a TXT rekord változásainak tükröződniük kell-e. Az is lehetséges, hogy a gazdagép helyi DNS-gyorsítótára még mindig régi, elavult értéket használ, vagy nem vette fel a legutóbbi módosításokat.

Egy másik lehetőség az automatikus cerbot DNS-módosítások használata a /root/.cloudflare.ini fájl az api tokennel a felhő-init/felhasználói adatok között a VPS kezdeti beállításakor, vagy hozza létre ezt a fájlt, és futtassa újra a szkriptet. Ez automatikusan kezeli a DNS-módosításokat és megkérdőjelezi a frissítéseket.

Mi az alapvető hitelesítési felhasználónév és jelszó

Saját hosting esetén adunk hozzá egy böngésző natív hitelesítési előugró ablakot egy egyszerű felhasználónévvel (admin) és jelszó (a kezdeti beállításkor véletlenszerűen generálva). Ezt csak védelemként adjuk hozzá, arra az esetre, ha az automatizálás/lehúzó valahogy legyőzné Önt, és először regisztrálhat az internetes élményre. Ezt a jelszót a kezdeti beállítás után találhatja meg az Ön .env alatti fájl AUTH_BASIC_USERNAME és AUTH_BASIC_PASSWORD.

Honnan tudhatom, hogy mi fut

Futhatsz docker ps hogy megtekinthesse az összes futó tárolót, amely felpörgetett a docker-compose-self-hosting.yml fájlt. Futni is lehet docker ps -a mindent látni (beleértve a nem futó tárolókat is).

Honnan tudhatom, ha valami nem fut, annak lennie kellene

Futhatsz docker ps -a mindent látni (beleértve a nem futó tárolókat is). Láthat egy kilépési naplót vagy megjegyzést.

Hogyan találhatok naplókat

Több naplót kaphat a következőn keresztül docker logs -f <container_name>. Ha valami kilépett, az valószínűleg a .env a fájl nem megfelelően van konfigurálva.

A webes felhasználói felületen belül megtekintheti /admin/emails és /admin/logs a kimenő e-mail naplókhoz, illetve a hibanaplókhoz.

Miért lépnek túl a kimenő e-mailjeim

Ha az MX szerverhez való csatlakozáskor olyan üzenetet lát, mint a Connection time out..., akkor előfordulhat, hogy ellenőriznie kell, hogy a 25-ös port blokkolva van-e. Gyakori, hogy az internetszolgáltatók vagy a felhőszolgáltatók ezt alapértelmezés szerint blokkolják, ahol előfordulhat, hogy fel kell vennie a kapcsolatot a támogatással / jegyet kell benyújtania a megnyitáshoz.

Milyen eszközöket használjak az e-mail-konfiguráció bevált gyakorlatainak és az IP-hírnév teszteléséhez?

Vessen egy pillantást nálunk GYIK itt.