Auto-ospitato
Installazione
Requisiti
Prima di eseguire lo script di installazione, assicurati di avere quanto segue:
- Sistema operativo: Un server basato su Linux (ad esempio Ubuntu 22.04+).
- risorse: 1 vCPU e 2 GB di RAM
- Accesso root: Privilegi amministrativi per eseguire comandi.
- Nome del dominio: Un dominio personalizzato pronto per la configurazione DNS.
- IP pulito: Assicurati che il tuo server abbia un indirizzo IP pulito senza precedenti reputazioni di spam controllando le blacklist. Ulteriori informazioni Qui.
[!TIP] Vedi la nostra lista di fantastici provider di server di posta
Cloud-init / Dati utente
La maggior parte dei fornitori cloud supporta una configurazione cloud-init per quando viene eseguito il provisioning del server privato virtuale (VPS). Questo è un ottimo modo per impostare in anticipo alcuni file e variabili di ambiente da utilizzare nella logica di configurazione iniziale degli script, che eviterà la necessità di richiedere informazioni aggiuntive durante l'esecuzione dello script.
Opzioni
EMAIL
-EMAIL
variabile di ambiente utilizzata per i promemoria di scadenza del certbotDOMAIN
- dominio personalizzato utilizzato per la configurazione dell'auto-hostingAUTH_BASIC_USERNAME
- nome utente utilizzato nella prima configurazione per proteggere il sitoAUTH_BASIC_PASSWORD
- passward utilizzato nella prima configurazione per proteggere il sito/root/.cloudflare.ini
- (Solo per gli utenti Cloudflare)file di configurazione cloudflare utilizzato da certbot per la configurazione DNS. Richiede di impostare il token API tramitedns_cloudflare_api_token
. Per saperne di più Qui.
Esempio:
#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
Installare
Esegui il seguente comando sul tuo server per scaricare ed eseguire lo script di installazione:
bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)
Script di installazione di debug
Aggiungere DEBUG=true davanti allo script di installazione per un output più dettagliato:
DEBUG=true bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)
Richiede
1. Initial setup
2. Setup Backups
3. Setup Auto Upgrades
4. Renew certificates
5. Restore from Backup
6. Help
7. Exit
- Configurazione iniziale: Scarica l'ultimo codice email di inoltro, configura l'ambiente, richiedi il tuo dominio personalizzato e imposta tutti i certificati, le chiavi e i segreti necessari.
- Backup delle impostazioni: imposterà un cron per eseguire il backup di mongoDB e redis usando un archivio compatibile con S3 per un'archiviazione remota sicura. Separatamente, sqlite verrà sottoposto a backup all'accesso se ci sono modifiche per backup sicuri e crittografati.
- Aggiornamento della configurazione: Imposta un cron per cercare aggiornamenti notturni che ricostruiranno e riavvieranno in modo sicuro i componenti dell'infrastruttura.
- Rinnovare i certificati: Certbot / lets encrypt viene utilizzato per i certificati SSL e le chiavi scadono ogni 3 mesi. Ciò rinnoverà i certificati per il tuo dominio e li inserirà nella cartella necessaria per i componenti correlati da utilizzare. Vedi percorsi di file importanti
- Ripristina dal backup: Innescherà MongoDB e Redis per ripristinare i dati di backup.
Configurazione iniziale (opzione 1)
Scegli l'opzione 1. Initial setup
per iniziare.
Una volta completato, dovresti vedere un messaggio di successo. Puoi anche eseguire docker ps
da vedere IL componenti avviati. Maggiori informazioni sui componenti di seguito.
Servizi
Nome del servizio | Porta predefinita | Descrizione |
---|---|---|
Sito web | 443 | Interfaccia web per tutte le interazioni amministrative |
API | 4000 | Livello API per database astratti |
Brezza | Nessuno | Esecuzione di attività e lavori in background |
SMTP | 465/587 | Server SMTP per la posta elettronica in uscita |
Bree SMTP | Nessuno | Lavoro in background SMTP |
MX | 2525 | Scambio di posta per posta in arrivo e inoltro di posta elettronica |
IMAP | 993/2993 | Server IMAP per la posta in arrivo e la gestione delle caselle di posta |
POP3 | 995/2995 | Server POP3 per la posta in arrivo e la gestione delle caselle di posta |
SQLite | 3456 | Server SQLite per interazioni con database SQLite |
SQLite Bree | Nessuno | Lavoro in background di SQLite |
CalDAV | 5000 | Server CalDAV per la gestione del calendario |
MongoDB | 27017 | Database MongoDB per la maggior parte della gestione dei dati |
Rosso | 6379 | Redis per la memorizzazione nella cache e la gestione dello stato |
SQLite | Nessuno | Database SQLite per cassette postali crittografate |
Percorsi di file importanti
Nota: Percorso host sotto è relativo a /root/forwardemail.net/self-hosting/
.
Componente | Percorso host | Percorso del contenitore |
---|---|---|
MongoDB | ./mongo-backups | /backups |
Rosso | ./redis-data | /data |
SQLite | ./sqlite-data | /mnt/{SQLITE_STORAGE_PATH} |
File di posta elettronica | ./.env | /app/.env |
Certificati/chiavi SSL | ./ssl | /app/ssl/ |
Chiave privata | ./ssl/privkey.pem | /app/ssl/privkey.pem |
Certificato di catena completa | ./ssl/fullchain.pem | /app/ssl/fullchain.pem |
CA certificate | ./ssl/cert.pem | /app/ssl/cert.pem |
Chiave privata DKIM | ./ssl/dkim.key | /app/ssl/dkim.key |
[!IMPORTANTE] Salva il
.env
file in modo sicuro. È fondamentale per il ripristino in caso di errore. Puoi trovarlo in/root/forwardemail.net/self-hosting/.env
.
Configurazione
Configurazione DNS iniziale
Nel tuo provider DNS preferito, configura i record DNS appropriati. Annota tutto ciò che è tra parentesi (<>
) è dinamico e deve essere aggiornato con il tuo valore.
genere | Nome | Contenuto | TTL |
---|---|---|---|
A | "@", "." o vuoto | <indirizzo_ip> | auto |
CNAME | api | <nome_dominio> | auto |
CNAME | caldav | <nome_dominio> | auto |
CNAME | fe-rimbalzi | <nome_dominio> | auto |
CNAME | mappa | <nome_dominio> | auto |
CNAME | permessi | <nome_dominio> | auto |
CNAME | pop3 | <nome_dominio> | auto |
CNAME | smtp | <nome_dominio> | auto |
MX | "@", "." o vuoto | mx.<nome_dominio> (priorità 0) | auto |
TXT | "@", "." o vuoto | "v=spf1 a -tutto" | auto |
Record DNS/PTR inverso
I record DNS inversi (rDNS) o i record puntatore inverso (record PTR) sono essenziali per i server di posta elettronica perché aiutano a verificare la legittimità del server che invia l'e-mail. Ogni provider cloud lo fa in modo diverso, quindi dovrai cercare come aggiungere "DNS inverso" per mappare l'host e l'IP al suo nome host corrispondente. Molto probabilmente nella sezione di rete del provider.
Porta 25 bloccata
Alcuni ISP e provider cloud bloccano la porta 25 per evitare malintenzionati. Potrebbe essere necessario inviare un ticket di supporto per aprire la porta 25 per SMTP/e-mail in uscita.
Inserimento
-
Apri la landing page Vai su https://<nome_dominio>, sostituendo <nome_dominio> con il dominio configurato nelle impostazioni DNS. Dovresti vedere la landing page di Inoltra email.
-
Accedi e aggiungi il tuo dominio
- Accedi con un indirizzo email e una password validi.
- Inserisci il nome di dominio che desideri impostare (deve corrispondere alla configurazione DNS).
- Seguire le istruzioni per aggiungere il necessario MX e TXT registrazioni per la verifica.
- Installazione completa
- Una volta verificato, accedi alla pagina Alias per creare il tuo primo alias.
- Facoltativamente, configurare SMTP per posta elettronica in uscita nel Impostazioni dominioPer questo sono necessari record DNS aggiuntivi.
[!NOTE] Nessuna informazione viene inviata all'esterno del tuo server. L'opzione self hosted e l'account iniziale sono solo per l'accesso amministratore e la visualizzazione web per gestire domini, alias e configurazioni email correlate.
Prova
Creazione del tuo primo alias
- Vai alla pagina Alias Apri la pagina di gestione degli alias:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
- Aggiungi un nuovo alias
- Clic Aggiungi alias (in alto a destra).
- Inserisci il nome dell'alias e modifica le impostazioni email in base alle tue esigenze.
- (Facoltativo) Abilita IMAP/POP3/CalDAV supporto selezionando la casella di controllo.
- Clic Crea alias.
- Imposta una password
- Clic Genera password per creare una password sicura.
- Questa password sarà necessaria per accedere al tuo client di posta elettronica.
- Configura il tuo client di posta elettronica
- Utilizzare un client di posta elettronica come Thunderbird.
- Inserisci il nome alias e la password generata.
- Configurare il IMAP e SMTP impostazioni di conseguenza.
Impostazioni del server di posta elettronica
Nome utente: <alias name>
genere | Nome host | Porta | Sicurezza della connessione | Autenticazione |
---|---|---|---|---|
SMTP | smtp.<nome_dominio> | 465 | SSL / TLS | Password normale |
IMAP | imap.<nome_dominio> | 993 | SSL / TLS | Password normale |
Invio/ricezione della prima email
Una volta configurata, dovresti essere in grado di inviare e ricevere email al tuo indirizzo email appena creato e auto-ospitato!
Manutenzione
How do I backup my data
Segui il script di installazione e scegli option 2
nel prompt.
How do I renew my certificates
Segui il script di installazione e scegli option 3
nel prompt.
How do I upgrade to the latest forward email code
Segui il script di installazione e scegli option 4
nel prompt.
How do I restore from a backup
Segui il script di installazione e scegli option 6
nel prompt.
Risoluzione dei problemi
Why is the certbot acme challenge failing
L'insidia più comune è che certbot/letsencrypt a volte richiederà 2 sfide. Devi essere sicuro di aggiungere BOTH record txt.
Esempio: Potresti vedere due sfide come questa: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"
È anche possibile che la propagazione DNS non sia stata completata. Puoi usare strumenti come: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>
. Questo ti darà un'idea se le modifiche al tuo record TXT debbano essere riflesse. È anche possibile che la cache DNS locale sul tuo host stia ancora utilizzando un valore vecchio e obsoleto o non abbia rilevato le modifiche recenti.
Un'altra opzione è quella di utilizzare le modifiche DNS automatizzate del cerbot impostando /root/.cloudflare.ini
file con il token API nel tuo cloud-init / user-data durante la configurazione iniziale del VPS oppure crea questo file ed esegui di nuovo lo script. In questo modo gestirai automaticamente le modifiche DNS e gli aggiornamenti di sfida.
What is the basic auth username and password
Per l'auto-hosting, aggiungiamo un pop-up di autenticazione nativa del browser per la prima volta con un semplice nome utente (admin
) e password (generata casualmente durante la configurazione iniziale). Aggiungiamo questo solo come protezione nel caso in cui l'automazione/gli scraper in qualche modo ti precedano alla prima registrazione sull'esperienza web. Puoi trovare questa password dopo la configurazione iniziale nel tuo .env
archiviare sotto AUTH_BASIC_USERNAME
e AUTH_BASIC_PASSWORD
.
How do I know what is running
Puoi correre docker ps
per vedere tutti i contenitori in esecuzione che vengono avviati dal docker-compose-self-hosting.yml
file. Puoi anche eseguire docker ps -a
per vedere tutto (inclusi i contenitori non in esecuzione).
How do I know if something isn't running that should be
Puoi correre docker ps -a
per vedere tutto (inclusi i contenitori che non sono in esecuzione). Potresti vedere un registro di uscita o una nota.
How do I find logs
Puoi ottenere più registri tramite docker logs -f <container_name>
Se qualcosa è esistito, è probabile che sia correlato al .env
file configurato in modo errato.
All'interno dell'interfaccia utente Web, è possibile visualizzare /admin/emails
e /admin/logs
rispettivamente per i registri delle e-mail in uscita e per i registri degli errori.
Why are my outgoing emails timing out
Se vedi un messaggio come Connection timed out when connecting to MX server... allora potresti dover controllare se la porta 25 è bloccata. È comune che gli ISP o i provider cloud blocchino questa porta di default, per cui potresti dover contattare l'assistenza/inviare un ticket per farla aprire.
What tool(s) should I use to test email configuration best practices and IP reputation
Dai un'occhiata al nostro Domande frequenti qui.
strumenti postmaster di google
Usa l'indirizzo IP del tuo server per controllare i seguenti siti se sono in una blacklist. Sfortunatamente, non è raro che i provider cloud comuni abbiano problemi di reputazione IP a causa dell'uso di spam via e-mail. Se vedi il tuo IP in una blacklist, è consigliabile avviare un nuovo server e controllare il nuovo indirizzo IP.