Itse Isännöity
Aloittaminen
Itse isännöity sähköpostiratkaisumme, kuten kaikki tuotteemme, on 100 % avoimen lähdekoodin – sekä käyttöliittymä että taustajärjestelmä. Tämä tarkoittaa:
- Täydellinen läpinäkyvyys: Jokainen koodirivi, joka käsittelee sähköpostejasi, on julkisesti tarkasteltavissa
- Yhteisön panokset: Kuka tahansa voi tehdä parannuksia tai korjata ongelmia
- Turvallisuus avoimuuden kautta: Haavoittuvuudet voidaan tunnistaa ja korjata globaalin yhteisön toimesta
- Ei toimittajalukkoa: Et ole koskaan riippuvainen yrityksemme olemassaolosta
Koko koodikanta on saatavilla GitHubissa osoitteessa https://github.com/forwardemail/forwardemail.net, lisensoitu MIT-lisenssillä.
Arkkitehtuuri sisältää kontit:
- SMTP-palvelin lähtevälle sähköpostille
- IMAP/POP3-palvelimet sähköpostin noutamiseen
- Verkkokäyttöliittymä hallinnointiin
- Tietokanta konfiguraation tallennukseen
- Redis välimuistiin ja suorituskykyyn
- SQLite turvalliseen, salattuun postilaatikon tallennukseen
Note
Muista tutustua itse isännöityyn blogiimme
Ja niille, jotka haluavat yksityiskohtaisemman vaiheittaisen version, katso Ubuntu tai Debian -pohjaiset oppaamme.
Vaatimukset
Ennen asennusskriptin suorittamista varmista, että sinulla on seuraavat:
- Käyttöjärjestelmä: Linux-pohjainen palvelin (tällä hetkellä tuetaan Ubuntu 22.04+).
- Resurssit: 1 vCPU ja 2GB RAM
- Root-oikeudet: Hallinnolliset oikeudet komentojen suorittamiseen.
- Verkkotunnus: Oma verkkotunnus DNS-konfiguraatiota varten.
- Puhdas IP: Varmista, että palvelimellasi on puhdas IP-osoite ilman aiempaa roskapostimaineetta tarkistamalla mustalistat. Lisätietoja tästä.
- Julkinen IP-osoite, jossa portti 25 on käytössä
- Mahdollisuus asettaa käänteinen PTR
- IPv4- ja IPv6-tuki
Tip
Katso listaamme mahtavista sähköpostipalveluntarjoajista
Cloud-init / Käyttäjätiedot
Useimmat pilvipalveluntarjoajat tukevat cloud-init-konfiguraatiota, kun virtuaalipalvelin (VPS) otetaan käyttöön. Tämä on erinomainen tapa asettaa tiedostoja ja ympäristömuuttujia etukäteen skriptin alkuasetusten käyttöä varten, jolloin skripti ei kysy lisätietoja suorituksen aikana.
Vaihtoehdot
EMAIL- sähköpostiosoite, jota käytetään certbotin vanhenemismuistutuksiinDOMAIN- oma verkkotunnus (esim.example.com), jota käytetään itseisännöintiasetuksissaAUTH_BASIC_USERNAME- käyttäjätunnus, jota käytetään ensimmäisessä asennuksessa sivuston suojaamiseenAUTH_BASIC_PASSWORD- salasana, jota käytetään ensimmäisessä asennuksessa sivuston suojaamiseen/root/.cloudflare.ini- (vain Cloudflare-käyttäjille) cloudflare-konfiguraatiotiedosto, jota certbot käyttää DNS-konfiguraatioon. Vaatii API-tokenin asettamisendns_cloudflare_api_token-kenttään. Lue lisää täältä. Esimerkki:
#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
Asennus
Suorita seuraava komento palvelimellasi ladataksesi ja suorittaaksesi asennusskriptin:
bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)
Vianmäärityksen asennusskripti
Lisää DEBUG=true asennusskriptin eteen saadaksesi yksityiskohtaisemman tulosteen:
DEBUG=true bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)
Kehotevalinnat
1. Alkuasetukset
2. Varmuuskopioiden asetukset
3. Automaattiset päivitykset
4. Uudista sertifikaatit
5. Palauta varmuuskopiosta
6. Ohje
7. Poistu
- Alkuasetukset: Lataa uusin forward email -koodi, määritä ympäristö, kysy oma mukautettu domain ja asenna kaikki tarvittavat sertifikaatit, avaimet ja salaisuudet.
- Varmuuskopioiden asetukset: Asettaa cron-tehtävän varmuuskopioimaan mongoDB ja redis S3-yhteensopivaan tallennustilaan turvallista, etävarastointia varten. Erillisesti sqlite varmuuskopioidaan kirjautumisen yhteydessä, jos muutoksia on, turvallisia ja salattuja varmuuskopioita varten.
- Automaattiset päivitykset: Asettaa cron-tehtävän etsimään yöpäivityksiä, jotka turvallisesti rakentavat uudelleen ja käynnistävät infrastruktuurin komponentit.
- Uudista sertifikaatit: Certbot / lets encrypt -työkaluja käytetään SSL-sertifikaattien hallintaan, ja avaimet vanhenevat kolmen kuukauden välein. Tämä uudistaa domainisi sertifikaatit ja sijoittaa ne tarvittavaan kansioon, jotta siihen liittyvät komponentit voivat käyttää niitä. Katso tärkeät tiedostopolut
- Palauta varmuuskopiosta: Käynnistää mongodb:n ja redisin palauttamaan varmuuskopiotiedot.
Alkuasetukset (Vaihtoehto 1)
Valitse vaihtoehto 1. Alkuasetukset aloittaaksesi.
Kun prosessi on valmis, näet onnistumisviestin. Voit myös suorittaa docker ps nähdäksesi käynnistetyt komponentit. Lisätietoja komponenteista alla.
Palvelut
| Palvelun nimi | Oletusportti | Kuvaus |
|---|---|---|
| Web | 443 |
Verkkokäyttöliittymä kaikille hallintatoiminnoille |
| API | 4000 |
API-kerros tietokantojen abstraktointiin |
| Bree | Ei ole | Taustatyö- ja tehtävien suorittaja |
| SMTP | 465 (suositeltu) / 587 |
SMTP-palvelin lähtevälle sähköpostille |
| SMTP Bree | Ei ole | SMTP-taustatyö |
| MX | 2525 |
Postinvaihtopalvelin saapuville sähköposteille ja edelleenlähetykselle |
| IMAP | 993/2993 |
IMAP-palvelin saapuville sähköposteille ja postilaatikon hallintaan |
| POP3 | 995/2995 |
POP3-palvelin saapuville sähköposteille ja postilaatikon hallintaan |
| SQLite | 3456 |
SQLite-palvelin vuorovaikutukseen sqlite-tietokantojen kanssa |
| SQLite Bree | Ei ole | SQLite-taustatyö |
| CalDAV | 5000 |
CalDAV-palvelin kalenterinhallintaan |
| CardDAV | 6000 |
CardDAV-palvelin kalenterinhallintaan |
| MongoDB | 27017 |
MongoDB-tietokanta suurimpaan osaan datanhallintaa |
| Redis | 6379 |
Redis välimuistiin ja tilanhallintaan |
| SQLite | Ei ole | SQLite-tietokanta(t) salattuja postilaatikoita varten |
Tärkeät tiedostopolut
Huom: Isäntäkansio alla on suhteessa polkuun /root/forwardemail.net/self-hosting/.
| Komponentti | Isäntäkansio | Konttikansio |
|---|---|---|
| MongoDB | ./mongo-backups |
/backups |
| Redis | ./redis-data |
/data |
| Sqlite | ./sqlite-data |
/mnt/{SQLITE_STORAGE_PATH} |
| Env-tiedosto | ./.env |
/app/.env |
| SSL-sertifikaatit/avaimet | ./ssl |
/app/ssl/ |
| Yksityisavain | ./ssl/privkey.pem |
/app/ssl/privkey.pem |
| Täydellinen ketju | ./ssl/fullchain.pem |
/app/ssl/fullchain.pem |
| CA-sertifikaatti | ./ssl/cert.pem |
/app/ssl/cert.pem |
| DKIM-yksityisavain | ./ssl/dkim.key |
/app/ssl/dkim.key |
Important
Tallenna .env-tiedosto turvallisesti. Se on kriittinen palautuksen kannalta vikatilanteessa.
Löydät tämän polusta /root/forwardemail.net/self-hosting/.env.
Konfigurointi
Alkuperäinen DNS-asetus
Valitsemasi DNS-palveluntarjoajan hallintapaneelissa määritä sopivat DNS-tietueet. Huomaa, että kaikki hakasulkeissa (<>) olevat kohdat ovat dynaamisia ja ne tulee päivittää omilla arvoillasi.
| Tyyppi | Nimi | Sisältö | TTL |
|---|---|---|---|
| A | "@", ".", tai tyhjä | <ip_address> | auto |
| CNAME | api | <domain_name> | auto |
| CNAME | caldav | <domain_name> | auto |
| CNAME | carddav | <domain_name> | auto |
| CNAME | fe-bounces | <domain_name> | auto |
| CNAME | imap | <domain_name> | auto |
| CNAME | mx | <domain_name> | auto |
| CNAME | pop3 | <domain_name> | auto |
| CNAME | smtp | <domain_name> | auto |
| MX | "@", ".", tai tyhjä | mx.<domain_name> (prioriteetti 0) | auto |
| TXT | "@", ".", tai tyhjä | "v=spf1 a -all" | auto |
Käänteinen DNS / PTR-tietue
Käänteinen DNS (rDNS) tai käänteiset osoitetietueet (PTR-tietueet) ovat tärkeitä sähköpostipalvelimille, koska ne auttavat varmistamaan sähköpostia lähettävän palvelimen aitouden. Jokainen pilvipalveluntarjoaja hoitaa tämän eri tavalla, joten sinun tulee etsiä ohjeet "Reverse DNS" -asetuksen lisäämiseksi, jolla isäntä ja IP osoitetaan vastaavaan isäntänimeen. Todennäköisesti tämä löytyy palveluntarjoajan verkkoasetuksista.
Portti 25 estetty
Jotkut internet-palveluntarjoajat ja pilvipalvelut estävät portin 25 estääkseen haitallista toimintaa. Saatat joutua avaamaan tukipyynnön portin 25 avaamiseksi SMTP:lle / lähtevälle sähköpostille.
Käyttöönotto
-
Avaa aloitussivu Siirry osoitteeseen https://<domain_name>, korvaten <domain_name> DNS-asetuksissa määritellyllä verkkotunnuksella. Näet Forward Email -aloitussivun.
-
Kirjaudu sisään ja ota verkkotunnus käyttöön
- Kirjaudu sisään kelvollisella sähköpostilla ja salasanalla.
- Syötä verkkotunnus, jonka haluat määrittää (tämän on vastattava DNS-konfiguraatiota).
- Seuraa ohjeita lisätäksesi vaaditut MX- ja TXT-tietueet vahvistusta varten.
- Viimeistele asennus
- Kun vahvistus on suoritettu, siirry Aliases-sivulle luodaksesi ensimmäisen aliaksesi.
- Halutessasi määritä SMTP lähtevälle sähköpostille Domain Settings -osiossa. Tämä vaatii lisä-DNS-tietueita.
Note
Mitään tietoja ei lähetetä palvelimesi ulkopuolelle. Itse isännöity vaihtoehto ja alkuperäinen tili ovat vain ylläpitäjän kirjautumista ja verkkonäkymää varten hallinnoimaan verkkotunnuksia, aliaksia ja niihin liittyviä sähköpostiasetuksia.
Testaus
Ensimmäisen aliaksen luominen
- Siirry Aliases-sivulle Avaa alias-hallintasivu:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
- Lisää uusi alias
- Klikkaa Add Alias (yläoikealla).
- Syötä aliaksen nimi ja säädä sähköpostiasetuksia tarpeen mukaan.
- (Valinnainen) Ota käyttöön IMAP/POP3/CalDAV/CardDAV -tuki valitsemalla valintaruutu.
- Klikkaa Create Alias.
- Aseta salasana
- Klikkaa Generate Password luodaksesi turvallisen salasanan.
- Tätä salasanaa tarvitaan kirjautuessa sähköpostiohjelmaan.
- Määritä sähköpostiohjelmasi
- Käytä sähköpostiohjelmaa kuten Thunderbird.
- Syötä aliaksen nimi ja luotu salasana.
- Määritä IMAP- ja SMTP-asetukset vastaavasti.
Sähköpostipalvelimen asetukset
Käyttäjätunnus: <alias name>
| Tyyppi | Isäntänimi | Portti | Yhteyden suojaus | Todennus |
|---|---|---|---|---|
| SMTP | smtp.<domain_name> | 465 | SSL / TLS | Normaali salasana |
| IMAP | imap.<domain_name> | 993 | SSL / TLS | Normaali salasana |
Ensimmäisen sähköpostin lähetys / vastaanotto
Kun asetukset on tehty, sinun pitäisi pystyä lähettämään ja vastaanottamaan sähköpostia juuri luomaasi ja itse isännöimääsi sähköpostiosoitteeseen!
Vianmääritys
Miksi tämä ei toimi Ubuntu- ja Debian-järjestelmien ulkopuolella
Tällä hetkellä pyrimme tukemaan MacOS:ää ja tulevaisuudessa muita järjestelmiä. Avaa keskustelu tai osallistu, jos haluat nähdä muiden järjestelmien tuen.
Miksi certbotin acme-haaste epäonnistuu
Yleisin sudenkuoppa on, että certbot / letsencrypt pyytää joskus kahta haastetta. Sinun täytyy varmistaa, että lisäät MOLEMMAT txt-tietueet.
Esimerkki: Saatat nähdä kaksi haastetta näin: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"
On myös mahdollista, että DNS:n levitys ei ole vielä valmis. Voit käyttää työkaluja kuten: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>. Tämä antaa sinulle käsityksen siitä, näkyvätkö TXT-tietueen muutokset. On myös mahdollista, että paikallinen DNS-välimuisti isäntäjärjestelmässäsi käyttää vielä vanhaa, vanhentunutta arvoa tai ei ole vielä hakenut viimeisimpiä muutoksia.
Toinen vaihtoehto on käyttää automaattisia certbotin DNS-muutoksia asettamalla /root/.cloudflare.ini -tiedosto API-tokenilla cloud-init / user-data -asetuksissa VPS:n alkuperäisessä asennuksessa tai luoda tämä tiedosto ja ajaa skripti uudelleen. Tämä hallinnoi DNS-muutoksia ja haastepäivityksiä automaattisesti.
Mikä on perusautentikoinnin käyttäjätunnus ja salasana
Itse isännöinnissä lisäämme ensimmäisellä kerralla selaimen natiivin autentikointiponnahdusikkunan, jossa on yksinkertainen käyttäjätunnus (admin) ja salasana (satunnaisesti luotu alkuasetuksessa). Lisäämme tämän suojaukseksi siltä varalta, että automaatio / skriptit ehtisivät ensin rekisteröityä web-kokemukseen. Löydät tämän salasanan alkuasetuksen jälkeen .env-tiedostostasi kohdasta AUTH_BASIC_USERNAME ja AUTH_BASIC_PASSWORD.
Miten tiedän, mitä on käynnissä
Voit ajaa docker ps nähdäksesi kaikki käynnissä olevat kontit, jotka käynnistetään docker-compose-self-hosting.yml -tiedostosta. Voit myös ajaa docker ps -a nähdäksesi kaiken (myös kontit, jotka eivät ole käynnissä).
Miten tiedän, jos jokin, joka pitäisi olla käynnissä, ei ole
Voit ajaa docker ps -a nähdäksesi kaiken (myös kontit, jotka eivät ole käynnissä). Saatat nähdä poistumislokin tai huomautuksen.
Miten löydän lokit
Saat lisää lokitietoja komennolla docker logs -f <container_name>. Jos jokin on poistunut, se liittyy todennäköisesti .env-tiedoston virheelliseen konfigurointiin.
Web-käyttöliittymässä voit tarkastella /admin/emails ja /admin/logs ulospäin menevien sähköpostien lokeja ja virhelokeja.
Miksi lähtevät sähköpostini aikakatkaisevat
Jos näet viestin kuten Connection timed out when connecting to MX server..., sinun kannattaa tarkistaa, onko portti 25 estetty. On yleistä, että internet-palveluntarjoajat tai pilvipalveluntarjoajat estävät tämän oletuksena, jolloin sinun täytyy ottaa yhteyttä tukeen / tehdä tukipyyntö portin avaamiseksi.
Mitä työkaluja minun tulisi käyttää sähköpostin konfiguraation parhaiden käytäntöjen ja IP-maineen testaamiseen
Tutustu UKK-osioomme täällä.