Itse isännöimä
Aloitus
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:
- Täydellinen läpinäkyvyys: Jokainen sähköpostisi käsittelevä koodirivi on saatavilla julkiseen tarkasteluun
- Yhteisön lahjoitukset: Kuka tahansa voi osallistua parannuksiin tai korjata ongelmia
- Turvallisuus avoimuuden kautta: Globaali yhteisö voi tunnistaa ja korjata haavoittuvuudet
- 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
Vaatimukset
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 vanhenemismuistutuksiinDOMAIN
- mukautettu verkkotunnus (esim.example.com
) käytetään itseisännöintiinAUTH_BASIC_USERNAME
- Käyttäjätunnus, jota käytettiin ensimmäisellä asennuksella sivuston suojaamiseksiAUTH_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 kauttadns_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
Asentaa
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.
Palvelut
Palvelun nimi | Oletusportti | Kuvaus |
---|---|---|
Web | 443 | Verkkokäyttöliittymä kaikkeen järjestelmänvalvojan vuorovaikutukseen |
API | 4000 | Api-kerros abstrakteihin tietokantoihin |
Bree | Ei mitään | Taustatyön ja tehtävien juoksija |
SMTP | 465/587 | SMTP-palvelin lähteville sähköpostiviesteille |
SMTP Bree | Ei mitään | SMTP-taustatyö |
MX | 2525 | Sähköpostin vaihto saapuvaan sähköpostiin ja sähköpostin edelleenlähetykseen |
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 vuorovaikutukseen sqlite-tietokantojen kanssa |
SQLite Bree | Ei mitään | SQLite-taustatyö |
CalDAV | 5000 | CalDAV-palvelin kalenterinhallintaan |
MongoDB | 27017 | MongoDB-tietokanta useimpiin tiedonhallintaan |
Redis | 6379 | Redis välimuistiin ja tilanhallintaan |
SQLite | Ei mitään | SQLite-tietokanta(t) salatuille postilaatikoille |
Tärkeitä tiedostopolkuja
Huomautus: Isäntäpolku alla on suhteessa /root/forwardemail.net/self-hosting/
.
Komponentti | Isäntäpolku | Kontin 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
.
Kokoonpano
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.
Tyyppi | Nimi | Sisältö | TTL |
---|---|---|---|
A | "@", "." tai tyhjä | <ip_osoite> | auto |
CNAME | api | <verkkotunnuksen_nimi> | auto |
CNAME | caldav | <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 |
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.
Käyttöönotto
-
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.
-
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.
- 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.
Testaus
Ensimmäisen aliaksen luominen
- Siirry Alias-sivulle Avaa aliaksen hallintasivu:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
- 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.
- Aseta salasana
- Napsauta Luo salasana luodaksesi suojatun salasanan.
- Tätä salasanaa tarvitaan kirjautuessasi sähköpostiohjelmaasi.
- 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>
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, sinun pitäisi pystyä lähettämään ja vastaanottamaan sähköpostia äskettäin luotuun ja itse isännöityyn sähköpostiosoitteeseesi!
Vianetsintä
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ä.