Itse isännöimä

Itse isännöity sähköpostiratkaisumme, kuten kaikki tuotteemme, on 100-prosenttisesti avoimen lähdekoodin – sekä käyttöliittymä että taustajärjestelmä. Tämä tarkoittaa:

  1. Täydellinen läpinäkyvyys: Jokainen sähköpostisi käsittelevä koodirivi on saatavilla julkiseen tarkasteluun
  2. Yhteisön lahjoitukset: Kuka tahansa voi osallistua parannuksiin tai korjata ongelmia
  3. Turvallisuus avoimuuden kautta: Globaali yhteisö voi tunnistaa ja korjata haavoittuvuudet
  4. Ei myyjän lukitusta: Et ole koskaan riippuvainen yrityksemme olemassaolosta

Koko koodikanta on saatavilla GitHubissa osoitteessa https://github.com/forwardemail/forwardemail.net, lisensoitu MIT-lisenssillä.

Arkkitehtuuri sisältää säiliöitä:

  • SMTP-palvelin lähtevään sähköpostiin
  • IMAP/POP3-palvelimet sähköpostin hakua varten
  • Verkkokäyttöliittymä hallintaan
  • Tietokanta asetusten tallentamista varten
  • Redis välimuistiin ja suorituskykyyn
  • SQLite suojattua, salattua postilaatikon tallennusta varten

Ennen kuin suoritat asennusohjelman, varmista, että sinulla on seuraavat asiat:

  • Käyttöjärjestelmä: Linux-pohjainen palvelin (tukee tällä hetkellä Ubuntu 22.04+).
  • Resurssit: 1 vCPU ja 2 Gt RAM-muistia
  • Root Access: Järjestelmänvalvojan oikeudet komentojen suorittamiseen.
  • Verkkotunnus: Muokattu verkkotunnus, joka on valmis DNS-määritykseen.
  • Puhdas IP: Varmista, että palvelimellasi on puhdas IP-osoite, jolla ei ole aiempaa roskapostimainetta, tarkistamalla mustat listat. Lisätietoja tässä.
  • Julkinen IP-osoite portin 25 tuella
  • Kyky asettaa käänteinen PTR
  • IPv4- ja IPv6-tuki

[!KÄRKI] Katso luettelomme mahtavia sähköpostipalvelintarjoajia

Cloud-init / User-data

Useimmat pilvipalvelun toimittajat tukevat pilvi-init-kokoonpanoa, kun virtuaalinen yksityinen palvelin (VPS) on käytössä. Tämä on loistava tapa asettaa tiedostoja ja ympäristömuuttujia etukäteen käytettäväksi komentosarjojen alkuasetuslogiikassa, mikä ohittaa tarpeen pyytää lisätietoa komentosarjan ollessa käynnissä.

Vaihtoehdot

  • EMAIL - sähköposti, jota käytetään certbotin vanhenemismuistutuksiin
  • DOMAIN - mukautettu verkkotunnus (esim. example.com) käytetään itseisännöintiin
  • AUTH_BASIC_USERNAME - Käyttäjätunnus, jota käytettiin ensimmäisellä asennuksella sivuston suojaamiseksi
  • AUTH_BASIC_PASSWORD - passward, jota käytetään ensimmäisen asennuksen yhteydessä sivuston suojaamiseen
  • /root/.cloudflare.ini - (Vain Cloudflare-käyttäjät) cloudflare-määritystiedosto, jota certbot käyttää DNS-määrityksessä. Se edellyttää, että asetat API-tunnuksesi kautta dns_cloudflare_api_token. Lue lisää tässä.

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

Lataa ja suorita asennuskomentosarja suorittamalla seuraava komento palvelimellasi:

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

Debug asennusskripti

Lisätä DEBUG=true asennuskomentosarjan edessä monisanaista tulosta varten:

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

Kehotteet

1. Initial setup
2. Setup Backups
3. Setup Auto Upgrades
4. Renew certificates
5. Restore from Backup
6. Help
7. Exit
  • Alkuasetus: Lataa uusin edelleenlähetyskoodi, määritä ympäristö, pyydä mukautettua verkkotunnustasi ja määritä kaikki tarvittavat varmenteet, avaimet ja salaisuudet.
  • Asenna varmuuskopio: Asettaa cronin varmuuskopioimaan mongoDB:n ja käyttää uudelleen S3-yhteensopivaa tallennustilaa turvalliseen etätallennustilaan. Erikseen sqlite varmuuskopioidaan sisäänkirjautumisen yhteydessä, jos suojattuja, salattuja varmuuskopioita koskevia muutoksia tehdään.
  • Asenna päivitys: Määritä cron etsimään iltaisin päivityksiä, jotka rakentavat ja käynnistävät infrastruktuurikomponentit turvallisesti uudelleen.
  • Uusia sertifikaatit: Certbot / lets encrypt käytetään SSL-varmenteissa ja avaimet vanhenevat 3 kuukauden välein. Tämä uusii verkkotunnuksesi varmenteet ja sijoittaa ne tarvittavaan kansioon liittyvien komponenttien kulutukseen. Katso tärkeitä tiedostopolkuja
  • Palauta varmuuskopiosta: laukaisee mongodb ja redis palauttaakseen varmuuskopiotiedoista.

Alkuasetukset (vaihtoehto 1)

Valitse vaihtoehto 1. Initial setup aloittaaksesi.

Kun olet valmis, sinun pitäisi nähdä onnistumisviesti. Voit jopa juosta docker ps nähdä the komponentit pyörivät ylös. Lisätietoa komponenteista alla.

Palvelun nimiOletusporttiKuvaus
Web443Verkkokäyttöliittymä kaikkeen järjestelmänvalvojan vuorovaikutukseen
API4000Api-kerros abstrakteihin tietokantoihin
BreeEi mitäänTaustatyön ja tehtävien juoksija
SMTP465/587SMTP-palvelin lähteville sähköpostiviesteille
SMTP BreeEi mitäänSMTP-taustatyö
MX2525Sähköpostin vaihto saapuvaan sähköpostiin ja sähköpostin edelleenlähetykseen
IMAP993/2993IMAP-palvelin saapuvan sähköpostin ja postilaatikon hallintaan
POP3995/2995POP3-palvelin saapuvan sähköpostin ja postilaatikon hallintaan
SQLite3456SQLite-palvelin vuorovaikutukseen sqlite-tietokantojen kanssa
SQLite BreeEi mitäänSQLite-taustatyö
CalDAV5000CalDAV-palvelin kalenterinhallintaan
MongoDB27017MongoDB-tietokanta useimpiin tiedonhallintaan
Redis6379Redis välimuistiin ja tilanhallintaan
SQLiteEi mitäänSQLite-tietokanta(t) salatuille postilaatikoille

Tärkeitä tiedostopolkuja

Huomautus: Isäntäpolku alla on suhteessa /root/forwardemail.net/self-hosting/.

KomponenttiIsäntäpolkuKontin polku
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/
Yksityinen avain./ssl/privkey.pem/app/ssl/privkey.pem
Koko ketjun sertifikaatti./ssl/fullchain.pem/app/ssl/fullchain.pem
CA-varmenteita./ssl/cert.pem/app/ssl/cert.pem
DKIM yksityinen avain./ssl/dkim.key/app/ssl/dkim.key

[!TÄRKEÄÄ] Tallenna .env tiedosto turvallisesti. Se on kriittinen palautumiselle epäonnistumisen sattuessa. Löydät tämän osoitteesta /root/forwardemail.net/self-hosting/.env.

Alkuperäinen DNS-asetus

Määritä sopivat DNS-tietueet valitsemassasi DNS-palveluntarjoajassa. Älä merkitse mitään suluissa (<>) on dynaaminen ja se on päivitettävä arvosi mukaan.

TyyppiNimiSisältöTTL
A"@", "." tai tyhjä<ip_osoite>auto
CNAMEapi<verkkotunnuksen_nimi>auto
CNAMEcaldav<verkkotunnuksen_nimi>auto
CNAMEfe-pomppii<verkkotunnuksen_nimi>auto
CNAMEimap<verkkotunnuksen_nimi>auto
CNAMEmx<verkkotunnuksen_nimi>auto
CNAMEpop3<verkkotunnuksen_nimi>auto
CNAMEsmtp<verkkotunnuksen_nimi>auto
MX"@", "." tai tyhjämx.<verkkotunnuksen_nimi> (prioriteetti 0)auto
TXT"@", "." tai tyhjä"v=spf1 a -all"auto

Käänteinen DNS / PTR-tietue

Reverse DNS (rDNS) tai käänteiset osoitintietueet (PTR-tietueet) ovat tärkeitä sähköpostipalvelimille, koska ne auttavat varmistamaan sähköpostin lähettävän palvelimen laillisuuden. Jokainen pilvipalveluntarjoaja tekee tämän eri tavalla, joten sinun on etsittävä, kuinka "käänteinen DNS" lisätään, jotta isäntä ja IP voidaan yhdistää sitä vastaavaan isäntänimeen. Todennäköisesti palveluntarjoajan verkko-osiossa.

Portti 25 estetty

Jotkut Internet-palveluntarjoajat ja pilvipalveluntarjoajat estävät 25:n huonojen toimijoiden välttämiseksi. Saatat joutua lähettämään tukipyynnön avataksesi portin 25 SMTP:lle / lähtevälle sähköpostille.

  1. Avaa aloitussivu Siirry kohtaan https://<domain_name> ja korvaa <domain_name> DNS-asetuksissa määritetyllä toimialueella. Sinun pitäisi nähdä Lähetä sähköpostin aloitussivu.

  2. Kirjaudu sisään ja liity verkkotunnukseesi

  • Kirjaudu sisään voimassa olevalla sähköpostiosoitteella ja salasanalla.
  • Syötä verkkotunnuksen nimi, jonka haluat määrittää (tämän on vastattava DNS-kokoonpanoa).
  • Lisää tarvittava seuraamalla ohjeita MX ja TXT tietueita todentamista varten.
  1. Viimeistele asennus
  • Kun olet vahvistanut, siirry Alias-sivulle luodaksesi ensimmäinen aliaksesi.
  • Valinnaisesti määritä SMTP lähtevälle sähköpostille in Verkkotunnuksen asetukset. Tämä vaatii lisää DNS-tietueita.

[!HUOM] Palvelimesi ulkopuolelle ei lähetetä tietoja. Itseisännöity vaihtoehto ja alkuperäinen tili on tarkoitettu vain järjestelmänvalvojan kirjautumiseen ja verkkonäkymään verkkotunnuksien, aliasten ja niihin liittyvien sähköpostimäärittelyjen hallintaan.

Ensimmäisen aliaksen luominen

  1. Siirry Alias-sivulle Avaa aliaksen hallintasivu:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
  1. Lisää uusi alias
  • Napsauta Lisää Alias (oikea yläkulma).
  • Anna aliaksen nimi ja säädä sähköpostiasetuksia tarpeen mukaan.
  • (Valinnainen) Ota käyttöön IMAP/POP3/CalDAV tukea valitsemalla valintaruutu.
  • Napsauta Luo alias.
  1. Aseta salasana
  • Napsauta Luo salasana luodaksesi suojatun salasanan.
  • Tätä salasanaa tarvitaan kirjautuessasi sähköpostiohjelmaasi.
  1. Määritä sähköpostiohjelmasi
  • Käytä sähköpostiohjelmaa, kuten Thunderbird.
  • Anna aliaksen nimi ja luotu salasana.
  • Konfiguroi IMAP ja SMTP asetukset vastaavasti.

Sähköpostipalvelimen asetukset

Käyttäjätunnus: <alias name>

TyyppiIsäntänimiPorttiYhteyden suojausTodennus
SMTPsmtp.<verkkotunnuksen_nimi>465SSL / TLSNormaali salasana
IMAPimap.<verkkotunnuksen_nimi>993SSL / TLSNormaali salasana

Ensimmäisen sähköpostin lähettäminen / vastaanottaminen

Kun olet määrittänyt, sinun pitäisi pystyä lähettämään ja vastaanottamaan sähköpostia äskettäin luotuun ja itse isännöityyn sähköpostiosoitteeseesi!

Miksi tämä ei toimi Ubuntun ulkopuolella

Etsimme parhaillaan tukea Debianille, MacOS:lle ja katsomme myös muita. Ole hyvä ja avaa a keskustelua tai osallistu, jos haluat nähdä muiden tuen.

Miksi certbot acme -haaste epäonnistuu

Yleisin ongelma on se, että certbot / letsencrypt pyytää joskus 2 haasteita. Sinun on ehdottomasti lisättävä BOTH txt-tietueita.

Esimerkki: Saatat nähdä kaksi tällaista haastetta: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"

On myös mahdollista, että DNS-lisäys ei ole valmis. Voit käyttää työkaluja, kuten: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>. Tämä antaa sinulle käsityksen, pitäisikö TXT-tietueen muutosten näkyä. On myös mahdollista, että isäntäsi paikallinen DNS-välimuisti käyttää edelleen vanhaa, vanhentunutta arvoa tai se ei ole havainnut viimeaikaisia muutoksia.

Toinen vaihtoehto on käyttää automaattisia cerbot DNS -muutoksia asettamalla /root/.cloudflare.ini tiedosto api-tunnuksella pilvi-init-/käyttäjätiedoissasi VPS:n alkuasennuksessa tai luo tämä tiedosto ja suorita komentosarja uudelleen. Tämä hallitsee DNS-muutokset ja haastaa päivitykset automaattisesti.

Mikä on perusauth-käyttäjätunnus ja salasana

Itsepalvelua varten lisäämme ensimmäisen selaimen alkuperäisen todennusponnahdusikkunan yksinkertaisella käyttäjätunnuksella (admin) ja salasana (satunnaisesti luotu alkuasennuksen yhteydessä). Lisäämme tämän vain suojaksi siltä varalta, että automaatio / kaavin päihittää sinut kirjautuessasi ensin verkkokokemukseen. Löydät tämän salasanan alkuperäisen asennuksen jälkeen .env tiedosto alla AUTH_BASIC_USERNAME ja AUTH_BASIC_PASSWORD.

Mistä tiedän, mikä on käynnissä

Voit juosta docker ps nähdäksesi kaikki käynnissä olevat säiliöt, joita kehrätään ylös docker-compose-self-hosting.yml tiedosto. Voit myös juosta docker ps -a nähdäksesi kaiken (mukaan lukien säilöt, jotka eivät ole käynnissä).

Mistä tiedän, jos jokin ei toimi, sen pitäisi olla?

Voit juosta docker ps -a nähdäksesi kaiken (mukaan lukien säilöt, jotka eivät ole käynnissä). Saatat nähdä poistumislokin tai huomautuksen.

Miten löydän lokit

Voit saada lisää lokeja kautta docker logs -f <container_name>. Jos jokin poistui, se todennäköisesti liittyy .env tiedosto on määritetty väärin.

Verkkokäyttöliittymässä voit tarkastella /admin/emails ja /admin/logs lähtevän sähköpostin lokeille ja virhelokeille.

Miksi lähtevien sähköpostini aikakatkaisu?

Jos näet viestin, kuten Yhteys aikakatkaistiin, kun muodostat yhteyden MX-palvelimeen..., sinun on ehkä tarkistettava, onko portti 25 tukossa. On yleistä, että Internet-palveluntarjoajat tai pilvipalveluntarjoajat estävät tämän oletusarvoisesti, jolloin saatat joutua ottamaan yhteyttä tukeen / jättämään lippusi tämän avaamiseksi.

Mitä työkaluja minun tulee käyttää sähköpostin määritysten parhaiden käytäntöjen ja IP-maineen testaamiseen

Katso meidän FAQ täällä.