Itse isännöity

Aloittaminen

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

  1. Täydellinen läpinäkyvyys: Jokainen sähköpostiasi käsittelevä koodirivi on julkisesti tarkasteltavissa.
  2. Yhteisön panokset: Kuka tahansa voi osallistua parannuksiin tai korjata ongelmia.
  3. Turvallisuus avoimuuden kautta: Haavoittuvuudet voidaan tunnistaa ja korjata globaalin yhteisön toimesta.
  4. Ei toimittajasidonnaisuutta: Et ole koskaan riippuvainen yrityksemme olemassaolosta.

Koko koodikanta on saatavilla GitHubissa osoitteessa https://github.com/forwardemail/forwardemail.net, MIT-lisenssin alaisuudessa.

Arkkitehtuuri sisältää säilöt seuraaville:

  • SMTP-palvelin lähtevälle sähköpostille
  • IMAP/POP3-palvelimet sähköpostin noutamiseen
  • Web-käyttöliittymä hallintaan
  • Tietokanta konfiguraation tallentamiseen
  • Redis välimuistin ja suorituskyvyn parantamiseen
  • SQLite turvalliseen ja salattuun postilaatikoiden tallennukseen

Note

Muista tutustua itse isännöity blogi-oppaaseemme

Ja jos olet kiinnostunut yksityiskohtaisemmasta vaiheittaisesta versiosta, katso Ubuntu- tai Debian-pohjaiset oppaamme.

Vaatimukset

Ennen asennusskriptin suorittamista varmista, että sinulla on seuraavat:

  • Käyttöjärjestelmä: Linux-pohjainen palvelin (tukee tällä hetkellä Ubuntu 22.04+).
  • Resurssit: 1 vCPU ja 2 Gt RAM-muistia
  • Pääkäyttäjän oikeudet: Järjestelmänvalvojan oikeudet komentojen suorittamiseen.
  • Verkkotunnus: Mukautettu verkkotunnus, joka on valmis DNS-konfigurointiin.
  • Puhdas IP-osoite: 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
  • Mahdollisuus asettaa käänteinen PTR
  • IPv4- ja IPv6-tuki

Tip

Katso luettelomme mahtavia sähköpostipalvelinten tarjoajia-kohteista

Pilvi-init / Käyttäjätiedot

Useimmat pilvipalveluntarjoajat tukevat pilvipohjaista init-määritystä virtuaalisen yksityispalvelimen (VPS) käyttöönottoa varten. Tämä on loistava tapa asettaa joitakin tiedostoja ja ympäristömuuttujia etukäteen skriptien alkuasennuslogiikan käyttöön, jolloin skriptiä ei tarvitse pyytää lisätietoja suorituksen aikana.

Asetukset

  • EMAIL - sähköpostiosoite, jota käytetään certbotin vanhenemismuistutuksiin
  • DOMAIN - mukautettu verkkotunnus (esim. example.com), jota käytetään omatoimisen ylläpidon määrittämiseen
  • AUTH_BASIC_USERNAME - käyttäjätunnus, jota käytettiin ensimmäisessä määrityksessä sivuston suojaamiseksi
  • AUTH_BASIC_PASSWORD - salasana, jota käytettiin ensimmäisessä määrityksessä sivuston suojaamiseksi
  • /root/.cloudflare.ini - (Vain Cloudflaren käyttäjille) cloudflaren määritystiedosto, jota certbot käyttää DNS-määritykseen. Se edellyttää API-tunnuksen asettamista dns_cloudflare_api_token:n kautta. Lue lisää tässä:stä.

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

Asenna

Suorita seuraava komento palvelimellasi ladataksesi ja suorittaaksesi asennusskriptin:

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

Virheenkorjausasennusskripti

Lisää DEBUG=true asennusskriptin eteen saadaksesi yksityiskohtaisen tulosteen:

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
  • Alkuasetukset: Lataa uusin sähköpostin edelleenlähetyskoodi, määritä ympäristö, kysy mukautettua verkkotunnustasi ja määritä kaikki tarvittavat varmenteet, avaimet ja salaisuudet.
  • Varmuuskopioinnin määrittäminen: Määrittää cronin varmuuskopioimaan mongoDB:n ja redisin S3-yhteensopivaan tallennustilaan turvallista etätallennusta varten. SQLite varmuuskopioidaan erikseen kirjautumisen yhteydessä, jos turvallisia, salattuja varmuuskopioita varten tehdään muutoksia.
  • Päivityksen määrittäminen: Määritä cron etsimään yöllisiä päivityksiä, jotka rakentavat infrastruktuurikomponentit uudelleen ja käynnistävät ne uudelleen turvallisesti.
  • Uusi varmenteet: Certbot /lets encrypt -komentoa käytetään SSL-varmenteille, ja avaimet vanhenevat 3 kuukauden välein. Tämä uusii verkkotunnuksesi varmenteet ja sijoittaa ne tarvittavaan kansioon, jotta niihin liittyvät komponentit voivat käyttää niitä. Katso tärkeät tiedostopolut
  • Palauta varmuuskopiosta: Käynnistää mongodb:n ja redisin palauttamaan tiedot varmuuskopiosta.

Alkuasetukset (vaihtoehto 1)

Aloita valitsemalla vaihtoehto 1. Initial setup.

Kun prosessi on valmis, sinun pitäisi nähdä onnistumisviesti. Voit jopa ajaa docker ps-komennon nähdäksesi komponenttien käynnistyvän. Lisätietoja komponenteista alla.

Palvelut

Palvelun nimi Oletusportti Kuvaus
Verkko 443 Verkkokäyttöliittymä kaikille järjestelmänvalvojan vuorovaikutuksille
API 4000 API-kerros abstrakteihin tietokantoihin
Bree Ei mitään Taustatyö ja tehtävien suorittaja
SMTP 465/587 SMTP-palvelin lähtevälle sähköpostille
SMTP Bree Ei mitään SMTP-taustatyö
MX 2525 Saapuvan sähköpostin vaihto ja sähköpostin edelleenlähetys
IMAP 993/2993 IMAP-palvelin saapuvan sähköpostin ja postilaatikon hallintaan
POP3 995/2995 POP3-palvelin saapuvan sähköpostin ja postilaatikon hallintaan
SQLite 3456 SQLite-palvelin SQLite-tietokantojen kanssa vuorovaikutukseen
SQLite Bree Ei mitään SQLite-taustatyö
CalDAV 5000 CalDAV-palvelin kalenterin hallintaan
CardDAV 6000 CardDAV-palvelin kalenterin hallintaan
MongoDB 27017 MongoDB-tietokanta useimpiin tiedonhallinnan tarpeisiin
Redis 6379 Redis välimuistiin ja tilanhallintaan
SQLite Ei mitään SQLite-tietokanta(t) salatuille postilaatikoille

Tärkeät tiedostopolut

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

Komponentti Isäntäpolku Säiliön polku
MongoDB ./mongo-backups /backups
Redis ./redis-data /data
Sqlite ./sqlite-data /mnt/{SQLITE_STORAGE_PATH}
Env-tiedosto ./.env /app/.env
SSL-varmenteet/avaimet ./ssl /app/ssl/
Yksityinen avain ./ssl/privkey.pem /app/ssl/privkey.pem
Koko ketjun sertifikaatti ./ssl/fullchain.pem /app/ssl/fullchain.pem
Sertifioidut varmentajat ./ssl/cert.pem /app/ssl/cert.pem
DKIM-yksityinen avain ./ssl/dkim.key /app/ssl/dkim.key

Important

Tallenna .env-tiedosto turvallisesti. Se on kriittinen palautusta varten mahdollisen virheen sattuessa. Löydät sen kansiosta /root/forwardemail.net/self-hosting/.env.

##-määritys

DNS-alkuasetukset

Määritä valitsemassasi DNS-palveluntarjoajassa asianmukaiset DNS-tietueet. Huomaa, että hakasulkeissa (<>) olevat tiedot ovat dynaamisia ja ne on päivitettävä määrittämälläsi arvolla.

Käänteinen DNS/PTR-tietue

Käänteisen DNS:n (rDNS) tai käänteisen osoittimen (PTR) tietueet ovat välttämättömiä sähköpostipalvelimille, koska ne auttavat varmistamaan sähköpostia lähettävän palvelimen oikeellisuuden. Jokainen pilvipalveluntarjoaja tekee tämän eri tavalla, joten sinun on etsittävä, miten "Käänteinen DNS" lisätään isännän ja IP-osoitteen yhdistämiseksi vastaavaan isäntänimeen. Todennäköisesti se löytyy palveluntarjoajan verkko-osiosta.

Portti 25 estetty

Jotkut internet-palveluntarjoajat ja pilvipalveluntarjoajat estävät portin 25 välttääkseen haitallisia toimijoita. Sinun on ehkä lähetettävä tukipyyntö avataksesi portin 25 SMTP:lle / lähtevälle sähköpostille.

Käyttöönotto

  1. Avaa aloitussivu Siirry osoitteeseen https://<verkkotunnus> ja korvaa <verkkotunnus> DNS-asetuksissasi määritetyllä verkkotunnuksella. Sinun pitäisi nähdä Sähköpostin välitys -aloitussivu.

  2. Kirjaudu sisään ja lisää verkkotunnuksesi

  • Kirjaudu sisään voimassa olevalla sähköpostiosoitteella ja salasanalla.
  • Anna verkkotunnus, jonka haluat määrittää (tämän on vastattava DNS-määritystä).
  • Lisää vaaditut MX- ja TXT-tietueet vahvistusta varten noudattamalla ohjeita.
  1. Suorita asennus loppuun
  • Kun olet vahvistanut aliaksesi, siirry Alias-sivulle luodaksesi ensimmäisen aliaksesi.

  • Voit halutessasi määrittää SMTP lähtevälle sähköpostille Verkkotunnuksen asetuksissa. Tämä vaatii lisää DNS-tietueita.

Note

Palvelimesi ulkopuolelle ei lähetetä tietoja. Itse isännöity vaihtoehto ja alkuperäinen tili on tarkoitettu vain järjestelmänvalvojan kirjautumiseen ja verkkonäkymään verkkotunnusten, aliasten ja niihin liittyvien sähköpostimääritysten hallintaan.

Testataan

Ensimmäisen aliaksen luominen

  1. Siirry Aliaksien sivulle Avaa aliasten hallintasivu:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
  1. Lisää uusi alias
  • Napsauta Lisää alias (oikeassa yläkulmassa).
  • Anna aliaksen nimi ja muuta sähköpostiasetuksia tarpeen mukaan.
  • (Valinnainen) Ota käyttöön IMAP/POP3/CalDAV/CardDAV-tuki valitsemalla valintaruutu.
  • Napsauta Luo alias.
  1. Aseta salasana
  • Luo turvallinen salasana napsauttamalla Luo salasana.
  • Tätä salasanaa tarvitaan sähköpostiohjelmaan kirjautumiseen.
  1. Sähköpostiohjelman määrittäminen
  • Käytä sähköpostiohjelmaa, kuten Thunderbirdiä.
  • Syötä alias ja luotu salasana.
  • Määritä IMAP- ja SMTP-asetukset vastaavasti.

Sähköpostipalvelimen asetukset

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

Tyyppi Nimi Sisältö TTL
A "@", "." tai tyhjä auto
CNAME API <verkkotunnuksen_nimi> auto
CNAME caldav <verkkotunnuksen_nimi> auto
CNAME carddav <verkkotunnuksen_nimi> auto
CNAME fe-pomppii <verkkotunnuksen_nimi> auto
CNAME IMAP <verkkotunnuksen_nimi> auto
CNAME mx <verkkotunnuksen_nimi> auto
CNAME pop3 <verkkotunnuksen_nimi> auto
CNAME smtp <verkkotunnuksen_nimi> auto
MX "@", "." tai tyhjä mx.<verkkotunnuksen_nimi> (prioriteetti 0) auto
TXT "@", "." tai tyhjä "v=spf1 a-all" auto
Tyyppi Isäntänimi Portti Yhteyden suojaus Todennus
SMTP smtp.<verkkotunnuksen_nimi> 465 SSL / TLS Normaali salasana
IMAP imap.<verkkotunnuksen_nimi> 993 SSL / TLS Normaali salasana

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

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

Vianmääritys

Miksi tämä ei toimi Ubuntun ja Debianin ulkopuolella

Etsimme parhaillaan tukea macOS:lle ja tulemme etsimään muita. Avaa keskustelu tai osallistu, jos haluat nähdä muita tuettuja.

Miksi certbot acme -haaste epäonnistuu

Yleisin sudenkuoppa on, että certbot / letsencrypt pyytää joskus 2-haastetta. Sinun on varmistettava, että lisäät MOLEMMAT tekstitietueet.

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

On myös mahdollista, että DNS-levitys 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 siitä, pitäisikö TXT-tietueesi muutosten näkyä. On myös mahdollista, että isäntäpalvelimesi paikallinen DNS-välimuisti käyttää edelleen vanhaa, vanhentunutta arvoa tai ei ole havainnut viimeisimpiä muutoksia.

Toinen vaihtoehto on käyttää cerbotin automatisoituja DNS-muutoksia asettamalla /root/.cloudflare.ini-tiedosto API-tokenilla cloud-init / user-data -hakemistoon VPS:n alkuasennuksen yhteydessä tai luomalla tämä tiedosto ja suorittamalla komentosarja uudelleen. Tämä hallitsee DNS-muutoksia ja haastepäivityksiä automaattisesti.

Mikä on perusvalidointikäyttäjätunnus ja -salasana

Omaa hostingia varten lisäämme ensimmäisellä käyttökerralla selaimen omaan todennusikkunaan yksinkertaisen käyttäjätunnuksen (admin) ja salasanan (luodaan satunnaisesti alkuasennuksen yhteydessä). Lisäämme tämän suojaksi siltä varalta, että automaatio tai tiedonkaappaajat jotenkin ehtivät ohittaa sinut rekisteröityessäsi verkkokokemukseen. Löydät tämän salasanan alkuasennuksen jälkeen .env-tiedostostasi kohdista AUTH_BASIC_USERNAME ja AUTH_BASIC_PASSWORD.

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

Voit suorittaa komennon docker ps nähdäksesi kaikki käynnissä olevat säilöt, jotka käynnistetään tiedostosta docker-compose-self-hosting.yml. Voit myös suorittaa komennon docker ps -a nähdäksesi kaiken (myös säilöt, jotka eivät ole käynnissä).

Mistä tiedän, että jokin ei ole käynnissä, vaikka sen pitäisi olla

Voit nähdä kaiken (myös säilöt, jotka eivät ole käynnissä) suorittamalla komennon docker ps -a. Saatat nähdä poistumislokin tai muistiinpanon.

Miten löydän lokit

Voit saada lisää lokeja docker logs -f <container_name>-tiedoston kautta. Jos jokin poistui, se liittyy todennäköisesti .env-tiedoston virheellisiin konfiguraatioihin.

Verkkokäyttöliittymässä voit tarkastella lähtevien sähköpostien lokeja /admin/emails:ssa ja virhelokeja /admin/logs:ssä.

Miksi lähtevien sähköpostien aikakatkaisu on käynnissä?

Jos näet viestin, kuten Yhteys aikakatkaistiin yhdistettäessä MX-palvelimeen..., sinun on ehkä tarkistettava, onko portti 25 estetty. On yleistä, että internet-palveluntarjoajat tai pilvipalveluntarjoajat estävät tämän oletusarvoisesti, jolloin sinun on ehkä otettava yhteyttä tukeen tai lähetettävä tukipyyntö avataksesi tämän.

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

Katso Usein kysytyt kysymykset täällä -paikkaamme.