Self Hosted
Kezdő lépések
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:
- Teljes átláthatóság: Az e-mailjeit feldolgozó kód minden sora nyilvános ellenőrzésre elérhető
- Közösségi hozzájárulások: Bárki hozzájárulhat a fejlesztésekhez vagy a problémák megoldásához
- Biztonság a nyitottságon keresztül: A sebezhetőségeket egy globális közösség azonosíthatja és kijavíthatja
- 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
[!MEGJEGYZÉS] Feltétlenül tekintse meg a következőt: saját tárhelyen tárolt blog
És akiket érdekel egy részletesebb, lépésről lépésre bemutatott verzió, tekintsék meg a következő oldalunkat: Ubuntu vagy Debian alapú útmutatók.
Követelmények
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-mailDOMAIN
- egyéni domain (pl.example.com
) saját hosting beállításhoz használjákAUTH_BASIC_USERNAME
- az első alkalommal használt felhasználónév a webhely védelme érdekébenAUTH_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üldns_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="[email protected]"
export DOMAIN="mydomain.com"
runcmd:
- chmod +x /etc/profile.d/env.sh
Telepítés
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ások
Szolgáltatás neve | Alapértelmezett port | Leírás |
---|---|---|
Web | 443 | Webes felület minden adminisztrátori interakcióhoz |
API | 4000 | Api réteg absztrakt adatbázisokhoz |
Bree | Egyik sem | Háttér munka és feladat futó |
SMTP | 465/587 | SMTP szerver a kimenő e-mailekhez |
SMTP Bree | Egyik sem | SMTP háttérmunka |
MX | 2525 | Levélváltás bejövő e-mailekhez és e-mail-továbbításhoz |
IMAP | 993/2993 | IMAP szerver a bejövő e-mailek és postafiókok kezeléséhez |
POP3 | 995/2995 | POP3 szerver a bejövő e-mailek és postafiókok kezelésére |
SQLite | 3456 | SQLite szerver az sqlite adatbázis(ok)kal való interakcióhoz |
SQLite Bree | Egyik sem | SQLite háttérmunka |
CalDAV | 5000 | CalDAV szerver naptárkezeléshez |
CardDAV | 6000 | CardDAV szerver naptárkezeléshez |
MongoDB | 27017 | MongoDB adatbázis a legtöbb adatkezeléshez |
Redis | 6379 | Redis gyorsítótárazáshoz és állapotkezeléshez |
SQLite | Egyik sem | SQLite 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 útvonala | Konté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
.
Konfiguráció
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ípus | Név | Tartalom | TTL |
---|---|---|---|
A | "@", "." vagy üres | <ip_cím> | auto |
CNAME | api | <domain_name> | auto |
CNAME | caldav | <domain_name> | auto |
CNAME | carddav | <domain_name> | auto |
CNAME | fe-pattan | <domain_name> | auto |
CNAME | imap | <domain_name> | auto |
CNAME | mx | <domain_name> | auto |
CNAME | pop3 | <domain_name> | auto |
CNAME | smtp | <domain_name> | auto |
MX | "@", "." vagy üres | mx.<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.
Felvétel
-
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.
-
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.
- 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.
Tesztelés
Az első alias létrehozása
- Lépjen az Aliasok oldalra Nyissa meg az alias kezelési oldalt:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
- Ú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/CardDAV támogatást a jelölőnégyzet bejelölésével.
- Kattintson Alias létrehozása.
- Á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.
- 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ípus | Gazdanév | Kikötő | Kapcsolatbiztonság | Hitelesítés |
---|---|---|---|---|
SMTP | smtp.<domain_name> | 465 | SSL / TLS | Normál jelszó |
IMAP | imap.<domain_name> | 993 | SSL / TLS | Normá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!
Hibaelhárítás
Miért nem működik ez Ubuntun és Debianon kívül?
Jelenleg MacOS támogatást keresünk, és továbbiakat is keresünk. Kérjük, nyisson meg egy 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.