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:
- Täydellinen läpinäkyvyys: Jokainen sähköpostiasi käsittelevä koodirivi on julkisesti tarkasteltavissa.
- Yhteisön panokset: Kuka tahansa voi osallistua parannuksiin tai korjata ongelmia.
- Turvallisuus avoimuuden kautta: Haavoittuvuudet voidaan tunnistaa ja korjata globaalin yhteisön toimesta.
- 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 vanhenemismuistutuksiinDOMAIN
- mukautettu verkkotunnus (esim.example.com
), jota käytetään omatoimisen ylläpidon määrittämiseenAUTH_BASIC_USERNAME
- käyttäjätunnus, jota käytettiin ensimmäisessä määrityksessä sivuston suojaamiseksiAUTH_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 asettamistadns_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.
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.